X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Factivity%2FMainActivity.java;h=e9ce686a520bd380ea0b4be3c13689c000bfa400;hb=87a1e58f79757bb0257c911e9bd77eb5d77a3e40;hp=490471d9cbdb84e9725a7697680ee8f480198b05;hpb=0ef53a968c083b3c4d054eed72febf3610538dc2;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 490471d9..e9ce686a 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,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(); @@ -146,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(); @@ -155,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(); @@ -198,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); @@ -241,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) { @@ -269,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); @@ -287,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(); }); @@ -300,7 +316,7 @@ public class MainActivity extends ProfileThemedActivity { b.navPatterns.setOnClickListener(this::onPatternsClick); } private void onPatternsClick(View view) { - Intent intent = new Intent(this, PatternsActivity.class); + Intent intent = new Intent(this, TemplatesActivity.class); startActivity(intent); } private void scheduleDataRetrievalIfStale(long lastUpdate) { @@ -331,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); @@ -436,6 +452,7 @@ public class MainActivity extends ProfileThemedActivity { Data.lastUpdateAccountCount.removeObservers(this); Data.lastUpdateDate.removeObservers(this); + Logger.debug("MainActivity", "profileThemeChanged(): recreating activity"); recreate(); } public void fabNewTransactionClicked(View view) { @@ -623,14 +640,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) {