- Data.profile.addObserver((o, arg) -> {
- MobileLedgerProfile profile = Data.profile.get();
- runOnUiThread(() -> {
- if (profile == null) setTitle(R.string.app_name);
- else setTitle(profile.getName());
- updateLastUpdateTextFromDB();
- if (profile.isPostingPermitted()) {
- toolbar.setSubtitle(null);
- fab.show();
- }
- else {
- toolbar.setSubtitle(R.string.profile_subitlte_read_only);
- fab.hide();
- }
+ if (profileObserver == null) {
+ profileObserver = (o, arg) -> {
+ MobileLedgerProfile profile = Data.profile.get();
+ MainActivity.this.runOnUiThread(() -> {
+
+ Data.transactions.clear();
+ Log.d("transactions", "requesting list reload");
+ TransactionListViewModel.scheduleTransactionListReload();
+
+ Data.accounts.clear();
+ AccountSummaryViewModel.scheduleAccountListReload();
+
+ if (profile == null) MainActivity.this.setTitle(R.string.app_name);
+ else MainActivity.this.setTitle(profile.getName());
+ MainActivity.this.updateLastUpdateTextFromDB();
+ int old_index = -1;
+ int new_index = -1;
+ if (arg != null) {
+ MobileLedgerProfile old = (MobileLedgerProfile) arg;
+ old_index = Data.getProfileIndex(old);
+ new_index = Data.getProfileIndex(profile);
+ }