+ private void onProfileListChanged(List<MobileLedgerProfile> newList) {
+ if ((newList == null) || newList.isEmpty()) {
+ findViewById(R.id.no_profiles_layout).setVisibility(View.VISIBLE);
+ findViewById(R.id.main_app_layout).setVisibility(View.GONE);
+ return;
+ }
+
+ findViewById(R.id.main_app_layout).setVisibility(View.VISIBLE);
+ findViewById(R.id.no_profiles_layout).setVisibility(View.GONE);
+
+ findViewById(R.id.nav_profile_list).setMinimumHeight(
+ (int) (getResources().getDimension(R.dimen.thumb_row_height) * newList.size()));
+
+ Logger.debug("profiles", "profile list changed");
+ mProfileListAdapter.notifyDataSetChanged();
+
+ createShortcuts(newList);
+ }
+ /**
+ * called when the current profile has changed
+ */
+ private void onProfileChanged(MobileLedgerProfile profile) {
+ if (this.profile == null) {
+ if (profile == null)
+ return;
+ }
+ else {
+ if (this.profile.equals(profile))
+ return;
+ }
+
+ boolean haveProfile = profile != null;
+
+ if (haveProfile)
+ setTitle(profile.getName());
+ else
+ setTitle(R.string.app_name);
+
+ mainModel.setProfile(profile);
+
+ this.profile = profile;
+
+ int newProfileTheme = haveProfile ? profile.getThemeHue() : -1;
+ if (newProfileTheme != Colors.profileThemeId) {
+ Logger.debug("profiles",
+ String.format(Locale.ENGLISH, "profile theme %d → %d", Colors.profileThemeId,
+ newProfileTheme));
+ Colors.profileThemeId = newProfileTheme;
+ profileThemeChanged();
+ // profileThemeChanged would restart the activity, so no need to reload the
+ // data sets below
+ return;
+ }
+
+ findViewById(R.id.no_profiles_layout).setVisibility(haveProfile ? View.GONE : View.VISIBLE);
+ findViewById(R.id.pager_layout).setVisibility(haveProfile ? View.VISIBLE : View.VISIBLE);
+
+ mProfileListAdapter.notifyDataSetChanged();
+
+ mainModel.clearTransactions();
+
+ if (haveProfile) {
+ mainModel.scheduleAccountListReload();
+ Logger.debug("transactions", "requesting list reload");
+ mainModel.scheduleTransactionListReload();
+
+ if (profile.isPostingPermitted()) {
+ mToolbar.setSubtitle(null);
+ fab.show();
+ }
+ else {
+ mToolbar.setSubtitle(R.string.profile_subtitle_read_only);
+ fab.hide();
+ }