X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Factivity%2FMainActivity.java;h=00b26525ad59597ba54febf31e1295d56001ba41;hp=e43970d229594a7a3377fd25b8ca6f14f6305219;hb=42a7a36fcd870c6bd22d1a407f51ff0ea3ca5260;hpb=558fbcc35918d8fb106a3f7e5cad7c70650dfb59 diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/activity/MainActivity.java b/app/src/main/java/net/ktnx/mobileledger/ui/activity/MainActivity.java index e43970d2..00b26525 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/activity/MainActivity.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/activity/MainActivity.java @@ -18,6 +18,7 @@ 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; @@ -31,7 +32,6 @@ import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.view.ViewPropertyAnimator; -import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.LinearLayout; import android.widget.ProgressBar; @@ -85,10 +85,10 @@ public class MainActivity extends ProfileThemedActivity { 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; - private View profileListHeadArrow, profileListHeadMore, profileListHeadCancel; + private View profileListHeadMore, profileListHeadCancel, profileListHeadAddProfile; private FragmentManager fragmentManager; private View bTransactionListCancelDownload; private ProgressBar progressBar; @@ -141,9 +141,12 @@ public class MainActivity extends ProfileThemedActivity { } @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) { @@ -152,12 +155,11 @@ public class MainActivity extends ProfileThemedActivity { setContentView(R.layout.activity_main); fab = findViewById(R.id.btn_add_transaction); - profileListContainer = findViewById(R.id.nav_profile_list_container); - profileListHeadArrow = findViewById(R.id.nav_profiles_arrow); profileListHeadMore = findViewById(R.id.nav_profiles_start_edit); profileListHeadCancel = findViewById(R.id.nav_profiles_cancel_edit); LinearLayout profileListHeadMoreAndCancel = findViewById(R.id.nav_profile_list_head_buttons); + profileListHeadAddProfile = findViewById(R.id.nav_new_profile_button); drawer = findViewById(R.id.drawer_layout); bTransactionListCancelDownload = findViewById(R.id.transaction_list_cancel_download); progressBar = findViewById(R.id.transaction_list_progress_bar); @@ -262,18 +264,20 @@ public class MainActivity extends ProfileThemedActivity { profileListHeadCancel.setVisibility(View.VISIBLE); profileListHeadCancel .startAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_in)); + profileListHeadAddProfile.setVisibility(View.VISIBLE); + profileListHeadAddProfile + .startAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_in)); } else { profileListHeadCancel.setVisibility(View.GONE); profileListHeadCancel .startAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_out)); - profileListHeadMore.setVisibility(View.GONE); - if (profileListExpanded) { - profileListHeadMore.setVisibility(View.VISIBLE); - profileListHeadMore - .startAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_in)); - } - else profileListHeadMore.setVisibility(View.GONE); + profileListHeadMore.setVisibility(View.VISIBLE); + profileListHeadMore + .startAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_in)); + profileListHeadAddProfile.setVisibility(View.GONE); + profileListHeadAddProfile + .startAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_out)); } }; mProfileListAdapter.addEditingProfilesObserver(editingProfilesObserver); @@ -289,20 +293,6 @@ public class MainActivity extends ProfileThemedActivity { profileListHeadMoreAndCancel .setOnClickListener((v) -> mProfileListAdapter.flipEditingProfiles()); - if (drawerListener == null) { - drawerListener = new DrawerLayout.SimpleDrawerListener() { - @Override - public void onDrawerClosed(View drawerView) { - super.onDrawerClosed(drawerView); - collapseProfileList(); - } - }; - drawer.addDrawerListener(drawerListener); - } - - findViewById(R.id.nav_profile_list_head_layout) - .setOnClickListener(this::navProfilesHeadClicked); - findViewById(R.id.nav_profiles_label).setOnClickListener(this::navProfilesHeadClicked); setupProfile(); } private void scheduleDataRetrievalIfStale(Date lastUpdate) { @@ -337,6 +327,14 @@ public class MainActivity extends ProfileThemedActivity { sm.setDynamicShortcuts(shortcuts); } private void onProfileListChanged(List 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); @@ -356,7 +354,9 @@ public class MainActivity extends ProfileThemedActivity { 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); @@ -380,7 +380,6 @@ public class MainActivity extends ProfileThemedActivity { // data sets below return; } - collapseProfileList(); drawer.closeDrawers(); @@ -427,6 +426,9 @@ public class MainActivity extends ProfileThemedActivity { private void profileThemeChanged() { Bundle bundle = new Bundle(); onSaveInstanceState(bundle); + + storeThemeIdInPrefs(profile.getThemeId()); + // restart activity to reflect theme change finish(); @@ -438,6 +440,13 @@ public class MainActivity extends ProfileThemedActivity { 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(); @@ -449,7 +458,7 @@ public class MainActivity extends ProfileThemedActivity { startActivity(intent, args); } private void setupProfile() { - MLDB.getOption(MLDB.OPT_PROFILE_UUID, null, new GetOptCallback(){ + MLDB.getOption(MLDB.OPT_PROFILE_UUID, null, new GetOptCallback() { @Override protected void onResult(String profileUUID) { MobileLedgerProfile startupProfile; @@ -527,7 +536,9 @@ public class MainActivity extends ProfileThemedActivity { } } 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) { @@ -587,75 +598,6 @@ public class MainActivity extends ProfileThemedActivity { public void fabHide() { fab.hide(); } - public void navProfilesHeadClicked(View view) { - if (profileListExpanded) { - collapseProfileList(); - } - else { - expandProfileList(); - } - } - private void expandProfileList() { - profileListExpanded = true; - - - profileListContainer.setVisibility(View.VISIBLE); - profileListContainer.startAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_down)); - profileListHeadArrow.startAnimation(AnimationUtils.loadAnimation(this, R.anim.rotate_180)); - profileListHeadMore.setVisibility(View.VISIBLE); - profileListHeadMore.startAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_in)); - final ArrayList profiles = Data.profiles.getValue(); - findViewById(R.id.nav_profile_list).setMinimumHeight( - (int) (getResources().getDimension(R.dimen.thumb_row_height) * - (profiles != null ? profiles.size() : 0))); - } - private void collapseProfileList() { - boolean wasExpanded = profileListExpanded; - profileListExpanded = false; - - if (wasExpanded) { - final Animation animation = AnimationUtils.loadAnimation(this, R.anim.slide_up); - animation.setAnimationListener(new Animation.AnimationListener() { - @Override - public void onAnimationStart(Animation animation) { - - } - @Override - public void onAnimationEnd(Animation animation) { - profileListContainer.setVisibility(View.GONE); - } - @Override - public void onAnimationRepeat(Animation animation) { - - } - }); - mProfileListAdapter.stopEditingProfiles(); - - profileListContainer.startAnimation(animation); - profileListHeadArrow.setRotation(0f); - profileListHeadArrow - .startAnimation(AnimationUtils.loadAnimation(this, R.anim.rotate_180_back)); - final Animation moreAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_out); - moreAnimation.setAnimationListener(new Animation.AnimationListener() { - @Override - public void onAnimationStart(Animation animation) { - } - @Override - public void onAnimationEnd(Animation animation) { - profileListHeadMore.setVisibility(View.GONE); - } - @Override - public void onAnimationRepeat(Animation animation) { - } - }); - profileListHeadMore.startAnimation(moreAnimation); - } - else { - profileListContainer.setVisibility(View.GONE); - profileListHeadArrow.setRotation(0f); - profileListHeadMore.setVisibility(View.GONE); - } - } public void onAccountSummaryRowViewClicked(View view) { ViewGroup row; if (view.getId() == R.id.account_expander) row = (ViewGroup) view.getParent().getParent();