X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Factivity%2FMainActivity.java;h=c4d5c24a9f38016ac413373fa8e3eb5c74827874;hb=d63a611dce420b30fa0c0711eea1d02603945a43;hp=291ad7c4bb459a87fb5e0063530d45c6c3e4d43f;hpb=d95839304defead7c7d605cab2e612f1227cbfed;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 291ad7c4..c4d5c24a 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 @@ -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,6 +53,7 @@ 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; @@ -74,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; @@ -88,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(); @@ -148,7 +154,8 @@ public class MainActivity extends ProfileThemedActivity { Data.backgroundTasksRunning.observe(this, this::onRetrieveRunningChanged); if (barDrawerToggle == null) { - barDrawerToggle = new ActionBarDrawerToggle(this, b.drawerLayout, b.toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); + barDrawerToggle = new ActionBarDrawerToggle(this, b.drawerLayout, b.toolbar, + R.string.navigation_drawer_open, R.string.navigation_drawer_close); b.drawerLayout.addDrawerListener(barDrawerToggle); } barDrawerToggle.syncState(); @@ -157,7 +164,8 @@ public class MainActivity extends ProfileThemedActivity { PackageInfo pi = getApplicationContext().getPackageManager() .getPackageInfo(getPackageName(), 0); ((TextView) b.navUpper.findViewById(R.id.drawer_version_text)).setText(pi.versionName); - ((TextView) b.noProfilesLayout.findViewById(R.id.drawer_version_text)).setText(pi.versionName); + ((TextView) b.noProfilesLayout.findViewById(R.id.drawer_version_text)).setText( + pi.versionName); } catch (Exception e) { e.printStackTrace(); @@ -200,11 +208,13 @@ public class MainActivity extends ProfileThemedActivity { .setValue(savedInstanceState.getString(STATE_ACC_FILTER, null)); } - b.btnNoProfilesAdd.setOnClickListener(v -> MobileLedgerProfile.startEditProfileActivity(this, null)); + b.btnNoProfilesAdd.setOnClickListener( + v -> MobileLedgerProfile.startEditProfileActivity(this, null)); b.btnAddTransaction.setOnClickListener(this::fabNewTransactionClicked); - b.navNewProfileButton.setOnClickListener(v -> MobileLedgerProfile.startEditProfileActivity(this, null)); + b.navNewProfileButton.setOnClickListener( + v -> MobileLedgerProfile.startEditProfileActivity(this, null)); b.transactionListCancelDownload.setOnClickListener(this::onStopTransactionRefreshClick); @@ -243,20 +253,24 @@ public class MainActivity extends ProfileThemedActivity { mProfileListAdapter.notifyDataSetChanged(); }); + fabManager = new FabManager(b.btnAddTransaction); + LinearLayoutManager llm = new LinearLayoutManager(this); llm.setOrientation(RecyclerView.VERTICAL); b.navProfileList.setLayoutManager(llm); b.navProfilesStartEdit.setOnClickListener((v) -> mProfileListAdapter.flipEditingProfiles()); - b.navProfilesCancelEdit.setOnClickListener((v) -> mProfileListAdapter.flipEditingProfiles()); - b.navProfileListHeadButtons.setOnClickListener((v) -> mProfileListAdapter.flipEditingProfiles()); + b.navProfilesCancelEdit.setOnClickListener( + (v) -> mProfileListAdapter.flipEditingProfiles()); + b.navProfileListHeadButtons.setOnClickListener( + (v) -> mProfileListAdapter.flipEditingProfiles()); if (drawerListener == null) { drawerListener = new DrawerLayout.SimpleDrawerListener() { @Override public void onDrawerSlide(@NonNull View drawerView, float slideOffset) { if (slideOffset > 0.2) - fabHide(); + fabManager.hideFab(); } @Override public void onDrawerClosed(View drawerView) { @@ -271,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); @@ -625,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) {