/*
- * 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
package net.ktnx.mobileledger.ui.activity;
+import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.ShortcutInfo;
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;
* 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;
private MobileLedgerProfile profile;
private MainModel mainModel;
private ActivityMainBinding b;
+ private int fabVerticalOffset;
+ private FabManager fabManager;
@Override
protected void onStart() {
super.onStart();
mProfileListAdapter.notifyDataSetChanged();
});
+ fabManager = new FabManager(b.btnAddTransaction);
+
LinearLayoutManager llm = new LinearLayoutManager(this);
llm.setOrientation(RecyclerView.VERTICAL);
@Override
public void onDrawerSlide(@NonNull View drawerView, float slideOffset) {
if (slideOffset > 0.2)
- fabHide();
+ fabManager.hideFab();
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerOpened(drawerView);
mProfileListAdapter.setAnimationsEnabled(true);
Data.drawerOpen.setValue(true);
- fabHide();
+ fabManager.hideFab();
}
};
b.drawerLayout.addDrawerListener(drawerListener);
if (error == null)
return;
- Snackbar.make(b.mainPager, error, Snackbar.LENGTH_LONG)
+ Snackbar.make(b.mainPager, error, Snackbar.LENGTH_INDEFINITE)
.show();
mainModel.clearUpdateError();
});
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();
}
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) {