package net.ktnx.mobileledger.ui.activity;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.ShortcutInfo;
import android.content.pm.ShortcutManager;
import net.ktnx.mobileledger.ui.transaction_list.TransactionListFragment;
import net.ktnx.mobileledger.ui.transaction_list.TransactionListViewModel;
import net.ktnx.mobileledger.utils.Colors;
+import net.ktnx.mobileledger.utils.GetOptCallback;
import net.ktnx.mobileledger.utils.LockHolder;
import net.ktnx.mobileledger.utils.MLDB;
public static final String STATE_CURRENT_PAGE = "current_page";
public static final String BUNDLE_SAVED_STATE = "bundle_savedState";
public static final String STATE_ACC_FILTER = "account_filter";
+ private static final String PREF_THEME_ID = "themeId";
public AccountSummaryFragment mAccountSummaryFragment;
DrawerLayout drawer;
private LinearLayout profileListContainer;
}
@Override
protected void setupProfileColors() {
- int profileColor = Data.retrieveCurrentThemeIdFromDb();
+ SharedPreferences prefs = getPreferences(MODE_PRIVATE);
+ int profileColor = prefs.getInt(PREF_THEME_ID, -2);
+ if (profileColor == -2) profileColor = Data.retrieveCurrentThemeIdFromDb();
Colors.setupTheme(this, profileColor);
Colors.profileThemeId = profileColor;
+ storeThemeIdInPrefs(profileColor);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
sm.setDynamicShortcuts(shortcuts);
}
private void onProfileListChanged(List<MobileLedgerProfile> newList) {
+ if (newList == null) {
+ // profiles not yet loaded from DB
+ findViewById(R.id.loading_layout).setVisibility(View.VISIBLE);
+ findViewById(R.id.no_profiles_layout).setVisibility(View.GONE);
+ findViewById(R.id.pager_layout).setVisibility(View.GONE);
+ return;
+ }
+
if (newList.isEmpty()) {
findViewById(R.id.no_profiles_layout).setVisibility(View.VISIBLE);
findViewById(R.id.pager_layout).setVisibility(View.GONE);
createShortcuts(newList);
}
- /** called when the current profile has changed */
+ /**
+ * called when the current profile has changed
+ */
private void onProfileChanged(MobileLedgerProfile profile) {
boolean haveProfile = profile != null;
findViewById(R.id.no_profiles_layout).setVisibility(haveProfile ? View.GONE : View.VISIBLE);
private void profileThemeChanged() {
Bundle bundle = new Bundle();
onSaveInstanceState(bundle);
+
+ storeThemeIdInPrefs(profile.getThemeId());
+
// restart activity to reflect theme change
finish();
intent.putExtra(BUNDLE_SAVED_STATE, bundle);
startActivity(intent);
}
+ private void storeThemeIdInPrefs(int themeId) {
+ // store the new theme id in the preferences
+ SharedPreferences prefs = getPreferences(MODE_PRIVATE);
+ SharedPreferences.Editor e = prefs.edit();
+ e.putInt(PREF_THEME_ID, themeId);
+ e.apply();
+ }
public void startEditProfileActivity(MobileLedgerProfile profile) {
Intent intent = new Intent(this, ProfileDetailActivity.class);
Bundle args = new Bundle();
startActivity(intent, args);
}
private void setupProfile() {
- String profileUUID = MLDB.getOption(MLDB.OPT_PROFILE_UUID, null);
- MobileLedgerProfile startupProfile;
+ MLDB.getOption(MLDB.OPT_PROFILE_UUID, null, new GetOptCallback() {
+ @Override
+ protected void onResult(String profileUUID) {
+ MobileLedgerProfile startupProfile;
- startupProfile = Data.getProfile(profileUUID);
- Data.setCurrentProfile(startupProfile);
+ startupProfile = Data.getProfile(profileUUID);
+ Data.setCurrentProfile(startupProfile);
+ }
+ });
}
public void fabNewTransactionClicked(View view) {
Intent intent = new Intent(this, NewTransactionActivity.class);
}
}
public void updateLastUpdateTextFromDB() {
- long last_update = (profile != null) ? profile.getLongOption(MLDB.OPT_LAST_SCRAPE, 0L) : 0;
+ if (profile == null) return;
+
+ long last_update = profile.getLongOption(MLDB.OPT_LAST_SCRAPE, 0L);
debug("transactions", String.format(Locale.ENGLISH, "Last update = %d", last_update));
if (last_update == 0) {