- int newProfileTheme = profile.getThemeId();
- if (newProfileTheme != Colors.profileThemeId) {
- Log.d("profiles", String.format("profile theme %d → %d", Colors.profileThemeId,
- newProfileTheme));
- profileThemeChanged();
- Colors.profileThemeId = newProfileTheme;
- }
- });
- });
- Data.profiles.addObserver((o, arg) -> {
- findViewById(R.id.nav_profile_list).setMinimumHeight(
- (int) (getResources().getDimension(R.dimen.thumb_row_height) *
- Data.profiles.size()));
- mProfileListAdapter.notifyDataSetChanged();
- });
+ if ((old_index != -1) && (new_index != -1)) {
+ mProfileListAdapter.notifyItemChanged(old_index);
+ mProfileListAdapter.notifyItemChanged(new_index);
+ }
+ else mProfileListAdapter.notifyDataSetChanged();
+
+ MainActivity.this.collapseProfileList();
+
+ int newProfileTheme = (profile == null) ? -1 : profile.getThemeId();
+ if (newProfileTheme != Colors.profileThemeId) {
+ Log.d("profiles",
+ String.format("profile theme %d → %d", Colors.profileThemeId,
+ newProfileTheme));
+ MainActivity.this.profileThemeChanged();
+ Colors.profileThemeId = newProfileTheme;
+ // profileThemeChanged would restart the activity, so no need to reload the
+ // data sets below
+ return;
+ }
+ drawer.closeDrawers();
+
+ if (profile == null) {
+ toolbar.setSubtitle(null);
+ fab.hide();
+ }
+ else {
+ if (profile.isPostingPermitted()) {
+ toolbar.setSubtitle(null);
+ fab.show();
+ }
+ else {
+ toolbar.setSubtitle(R.string.profile_subitlte_read_only);
+ fab.hide();
+ }
+ }
+ });
+ };
+ Data.profile.addObserver(profileObserver);
+ }
+
+ if (profilesObserver == null) {
+ profilesObserver = (o, arg) -> {
+ findViewById(R.id.nav_profile_list).setMinimumHeight(
+ (int) (getResources().getDimension(R.dimen.thumb_row_height) *
+ Data.profiles.size()));
+
+ Log.d("profiles", "profile list changed");
+ if (arg == null) mProfileListAdapter.notifyDataSetChanged();
+ else mProfileListAdapter.notifyItemChanged((int) arg);
+ };
+ Data.profiles.addObserver(profilesObserver);
+ }