X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Factivity%2FMainActivity.java;h=25efe111e255aa4b8f82fdcaad5be83af6285ac0;hb=93545c6fbf1244fbd96ecfc50e1115dbdc25f9ae;hp=2fc09379873faa8d030c094c709a9451270f568e;hpb=b520c878635649cce634b9a0f133691a59d8290f;p=mobile-ledger.git 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 2fc09379..25efe111 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 © 2020 Damyan Ivanov. + * Copyright © 2021 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 @@ -17,6 +17,7 @@ package net.ktnx.mobileledger.ui.activity; +import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.ShortcutInfo; @@ -52,9 +53,12 @@ import net.ktnx.mobileledger.async.RetrieveTransactionsTask; import net.ktnx.mobileledger.databinding.ActivityMainBinding; import net.ktnx.mobileledger.model.Data; import net.ktnx.mobileledger.model.MobileLedgerProfile; +import net.ktnx.mobileledger.ui.FabManager; import net.ktnx.mobileledger.ui.MainModel; import net.ktnx.mobileledger.ui.account_summary.AccountSummaryFragment; +import net.ktnx.mobileledger.ui.new_transaction.NewTransactionActivity; import net.ktnx.mobileledger.ui.profiles.ProfilesRecyclerViewAdapter; +import net.ktnx.mobileledger.ui.templates.TemplatesActivity; import net.ktnx.mobileledger.ui.transaction_list.TransactionListFragment; import net.ktnx.mobileledger.utils.Colors; import net.ktnx.mobileledger.utils.Logger; @@ -72,10 +76,12 @@ import java.util.Objects; * TODO: reports * */ -public class MainActivity extends ProfileThemedActivity { +public class MainActivity extends ProfileThemedActivity implements FabManager.FabHandler { 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 boolean FAB_HIDDEN = false; + private static final boolean FAB_SHOWN = true; private SectionsPagerAdapter mSectionsPagerAdapter; private ProfilesRecyclerViewAdapter mProfileListAdapter; private int mCurrentPage; @@ -86,6 +92,8 @@ public class MainActivity extends ProfileThemedActivity { private MobileLedgerProfile profile; private MainModel mainModel; private ActivityMainBinding b; + private int fabVerticalOffset; + private FabManager fabManager; @Override protected void onStart() { super.onStart(); @@ -245,6 +253,8 @@ public class MainActivity extends ProfileThemedActivity { mProfileListAdapter.notifyDataSetChanged(); }); + fabManager = new FabManager(b.btnAddTransaction); + LinearLayoutManager llm = new LinearLayoutManager(this); llm.setOrientation(RecyclerView.VERTICAL); @@ -260,7 +270,7 @@ public class MainActivity extends ProfileThemedActivity { @Override public void onDrawerSlide(@NonNull View drawerView, float slideOffset) { if (slideOffset > 0.2) - fabHide(); + fabManager.hideFab(); } @Override public void onDrawerClosed(View drawerView) { @@ -275,7 +285,7 @@ public class MainActivity extends ProfileThemedActivity { super.onDrawerOpened(drawerView); mProfileListAdapter.setAnimationsEnabled(true); Data.drawerOpen.setValue(true); - fabHide(); + fabManager.hideFab(); } }; b.drawerLayout.addDrawerListener(drawerListener); @@ -293,7 +303,7 @@ public class MainActivity extends ProfileThemedActivity { if (error == null) return; - Snackbar.make(b.mainPager, error, Snackbar.LENGTH_LONG) + Snackbar.make(b.mainPager, error, Snackbar.LENGTH_INDEFINITE) .show(); mainModel.clearUpdateError(); }); @@ -301,6 +311,13 @@ public class MainActivity extends ProfileThemedActivity { Data.lastUpdateDate.observe(this, date -> refreshLastUpdateInfo()); Data.lastUpdateTransactionCount.observe(this, date -> refreshLastUpdateInfo()); Data.lastUpdateAccountCount.observe(this, date -> refreshLastUpdateInfo()); + b.navAccountSummary.setOnClickListener(this::onAccountSummaryClicked); + b.navLatestTransactions.setOnClickListener(this::onLatestTransactionsClicked); + b.navPatterns.setOnClickListener(this::onPatternsClick); + } + private void onPatternsClick(View view) { + Intent intent = new Intent(this, TemplatesActivity.class); + startActivity(intent); } private void scheduleDataRetrievalIfStale(long lastUpdate) { long now = new Date().getTime(); @@ -330,13 +347,13 @@ public class MainActivity extends ProfileThemedActivity { continue; final ShortcutInfo.Builder builder = - new ShortcutInfo.Builder(this, "new_transaction_" + p.getUuid()); + new ShortcutInfo.Builder(this, "new_transaction_" + p.getId()); 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())) + NewTransactionActivity.class).putExtra("profile_id", + p.getId())) .setRank(i) .build(); shortcuts.add(si); @@ -622,14 +639,20 @@ public class MainActivity extends ProfileThemedActivity { } public void fabShouldShow() { if ((profile != null) && profile.isPostingPermitted() && !b.drawerLayout.isOpen()) - b.btnAddTransaction.show(); - else - fabHide(); + fabManager.showFab(); } - public void fabHide() { - b.btnAddTransaction.hide(); + @Override + public Context getContext() { + return this; + } + @Override + public void showManagedFab() { + fabShouldShow(); + } + @Override + public void hideManagedFab() { + fabManager.hideFab(); } - public static class SectionsPagerAdapter extends FragmentStateAdapter { public SectionsPagerAdapter(@NonNull FragmentActivity fragmentActivity) {