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=cad021770fa25866bb17b1705a527606c0d30504;hp=dace5c41b19cb854aa5728ff6a5b30a820aba96a;hb=d4f0bff6d1d4ed421b5a4eb07bb672bccd6d254d;hpb=eca29dbfd4cae7b051f79ce3cb93f7c55bf092aa 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 dace5c41..cad02177 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 @@ -1,5 +1,5 @@ /* - * Copyright © 2019 Damyan Ivanov. + * Copyright © 2020 Damyan Ivanov. * This file is part of MoLe. * MoLe is free software: you can distribute it and/or modify it * under the term of the GNU General Public License as published by @@ -185,24 +185,6 @@ public class MainActivity extends ProfileThemedActivity { drawer.addDrawerListener(barDrawerToggle); } barDrawerToggle.syncState(); - drawer.addDrawerListener(new DrawerLayout.DrawerListener() { - @Override - public void onDrawerSlide(@NonNull View drawerView, float slideOffset) { - if (slideOffset > 0.2) - fabHide(); - } - @Override - public void onDrawerOpened(@NonNull View drawerView) { - fabHide(); - } - @Override - public void onDrawerClosed(@NonNull View drawerView) { - fabShouldShow(); - } - @Override - public void onDrawerStateChanged(int newState) {} - }); - try { PackageInfo pi = getApplicationContext().getPackageManager() @@ -312,21 +294,36 @@ public class MainActivity extends ProfileThemedActivity { (v) -> mProfileListAdapter.flipEditingProfiles()); if (drawerListener == null) { drawerListener = new DrawerLayout.SimpleDrawerListener() { + @Override + public void onDrawerSlide(@NonNull View drawerView, float slideOffset) { + if (slideOffset > 0.2) + fabHide(); + } @Override public void onDrawerClosed(View drawerView) { super.onDrawerClosed(drawerView); mProfileListAdapter.setAnimationsEnabled(false); mProfileListAdapter.editingProfiles.setValue(false); + Data.drawerOpen.setValue(false); + fabShouldShow(); } @Override public void onDrawerOpened(View drawerView) { super.onDrawerOpened(drawerView); mProfileListAdapter.setAnimationsEnabled(true); + Data.drawerOpen.setValue(true); + fabHide(); } }; drawer.addDrawerListener(drawerListener); } - setupProfile(); + + Data.drawerOpen.observe(this, open -> { + if (open) + drawer.open(); + else + drawer.close(); + }); } private void scheduleDataRetrievalIfStale(Date lastUpdate) { long now = new Date().getTime(); @@ -355,23 +352,16 @@ public class MainActivity extends ProfileThemedActivity { if (!p.isPostingPermitted()) continue; - ShortcutInfo si = - new ShortcutInfo.Builder(this, "new_transaction_" + p.getUuid()).setShortLabel( - p.getName()) - .setIcon( - Icon.createWithResource( - this, - R.drawable.svg_thick_plus_white)) - .setIntent( - new Intent( - Intent.ACTION_VIEW, - null, - this, - NewTransactionActivity.class).putExtra( - "profile_uuid", - p.getUuid())) - .setRank(i) - .build(); + final ShortcutInfo.Builder builder = + new ShortcutInfo.Builder(this, "new_transaction_" + p.getUuid()); + ShortcutInfo si = builder.setShortLabel(p.getName()) + .setIcon(Icon.createWithResource(this, + R.drawable.thick_plus_icon)) + .setIntent(new Intent(Intent.ACTION_VIEW, null, this, + NewTransactionActivity.class).putExtra("profile_uuid", + p.getUuid())) + .setRank(i) + .build(); shortcuts.add(si); i++; } @@ -410,8 +400,6 @@ public class MainActivity extends ProfileThemedActivity { */ private void onProfileChanged(MobileLedgerProfile profile) { boolean haveProfile = profile != null; - findViewById(R.id.no_profiles_layout).setVisibility(haveProfile ? View.GONE : View.VISIBLE); - findViewById(R.id.pager_layout).setVisibility(haveProfile ? View.VISIBLE : View.VISIBLE); if (haveProfile) setTitle(profile.getName()); @@ -420,21 +408,22 @@ public class MainActivity extends ProfileThemedActivity { this.profile = profile; - mProfileListAdapter.notifyDataSetChanged(); - int newProfileTheme = haveProfile ? profile.getThemeHue() : -1; if (newProfileTheme != Colors.profileThemeId) { debug("profiles", String.format(Locale.ENGLISH, "profile theme %d → %d", Colors.profileThemeId, newProfileTheme)); - MainActivity.this.profileThemeChanged(); Colors.profileThemeId = newProfileTheme; + profileThemeChanged(); // profileThemeChanged would restart the activity, so no need to reload the // data sets below return; } - drawer.closeDrawers(); + 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(); Data.transactions.clear(); debug("transactions", "requesting list reload"); @@ -647,17 +636,29 @@ public class MainActivity extends ProfileThemedActivity { public void fabShouldShow() { if ((profile != null) && profile.isPostingPermitted() && !drawer.isOpen()) fab.show(); + else + fabHide(); } public void fabHide() { fab.hide(); } public void onAccountSummaryRowViewClicked(View view) { ViewGroup row; - if (view.getId() == R.id.account_expander) - row = (ViewGroup) view.getParent() - .getParent(); - else - row = (ViewGroup) view.getParent(); + switch (view.getId()) { + case R.id.account_expander: + row = (ViewGroup) view.getParent() + .getParent() + .getParent(); + break; + case R.id.account_expander_container: + case R.id.account_row_acc_name: + row = (ViewGroup) view.getParent() + .getParent(); + break; + default: + row = (ViewGroup) view.getParent(); + break; + } LedgerAccount acc = (LedgerAccount) row.getTag(); switch (view.getId()) {