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=88cc39d0c03f6ae25134ea879d31403e6a7cef35;hp=24784ffd4ec39956b9f961b1e2ddd32bbb7fb3d4;hb=23b8360d4f884bbdb20cc2de1825486ef42f37d6;hpb=7c2040dd059867ce7303594868abe8fa9598ddd7 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 24784ffd..88cc39d0 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 @@ -56,6 +56,7 @@ import net.ktnx.mobileledger.ui.transaction_list.TransactionListFragment; import net.ktnx.mobileledger.ui.transaction_list.TransactionListViewModel; import net.ktnx.mobileledger.utils.Colors; import net.ktnx.mobileledger.utils.LockHolder; +import net.ktnx.mobileledger.utils.Logger; import net.ktnx.mobileledger.utils.MLDB; import org.jetbrains.annotations.NotNull; @@ -65,6 +66,7 @@ import java.text.DateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Locale; import java.util.Observer; import androidx.appcompat.app.ActionBarDrawerToggle; @@ -88,9 +90,7 @@ public class MainActivity extends ProfileThemedActivity { DrawerLayout drawer; private LinearLayout profileListContainer; private View profileListHeadArrow, profileListHeadMore, profileListHeadCancel; - private LinearLayout profileListHeadMoreAndCancel; private FragmentManager fragmentManager; - private TextView tvLastUpdate; private RetrieveTransactionsTask retrieveTransactionsTask; private View bTransactionListCancelDownload; private ProgressBar progressBar; @@ -98,7 +98,6 @@ public class MainActivity extends ProfileThemedActivity { private SectionsPagerAdapter mSectionsPagerAdapter; private ViewPager mViewPager; private FloatingActionButton fab; - private boolean profileModificationEnabled = false; private boolean profileListExpanded = false; private ProfilesRecyclerViewAdapter mProfileListAdapter; private int mCurrentPage; @@ -122,7 +121,7 @@ public class MainActivity extends ProfileThemedActivity { } @Override - protected void onSaveInstanceState(Bundle outState) { + protected void onSaveInstanceState(@NotNull Bundle outState) { super.onSaveInstanceState(outState); outState.putInt(STATE_CURRENT_PAGE, mViewPager.getCurrentItem()); if (mAccountFilter != null) outState.putString(STATE_ACC_FILTER, mAccountFilter); @@ -161,9 +160,9 @@ public class MainActivity extends ProfileThemedActivity { profileListHeadArrow = findViewById(R.id.nav_profiles_arrow); profileListHeadMore = findViewById(R.id.nav_profiles_start_edit); profileListHeadCancel = findViewById(R.id.nav_profiles_cancel_edit); - profileListHeadMoreAndCancel = findViewById(R.id.nav_profile_list_head_buttons); + LinearLayout profileListHeadMoreAndCancel = + findViewById(R.id.nav_profile_list_head_buttons); drawer = findViewById(R.id.drawer_layout); - tvLastUpdate = findViewById(R.id.transactions_last_update); bTransactionListCancelDownload = findViewById(R.id.transaction_list_cancel_download); progressBar = findViewById(R.id.transaction_list_progress_bar); progressLayout = findViewById(R.id.transaction_progress_layout); @@ -267,8 +266,6 @@ public class MainActivity extends ProfileThemedActivity { if (editingProfilesObserver == null) { editingProfilesObserver = (o, arg) -> { if (mProfileListAdapter.isEditingProfiles()) { - profileListHeadArrow.clearAnimation(); - profileListHeadArrow.setVisibility(View.GONE); profileListHeadMore.setVisibility(View.GONE); profileListHeadMore .startAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_out)); @@ -277,8 +274,6 @@ public class MainActivity extends ProfileThemedActivity { .startAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_in)); } else { - profileListHeadArrow.setRotation(180f); - profileListHeadArrow.setVisibility(View.VISIBLE); profileListHeadCancel.setVisibility(View.GONE); profileListHeadCancel .startAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_out)); @@ -328,9 +323,9 @@ public class MainActivity extends ProfileThemedActivity { long now = new Date().getTime(); if ((lastUpdate == null) || (now > (lastUpdate.getTime() + (24 * 3600 * 1000)))) { if (lastUpdate == null) debug("db::", "WEB data never fetched. scheduling a fetch"); - else debug("db", - String.format("WEB data last fetched at %1.3f and now is %1.3f. re-fetching", - lastUpdate.getTime() / 1000f, now / 1000f)); + else debug("db", String.format(Locale.ENGLISH, + "WEB data last fetched at %1.3f and now is %1.3f. re-fetching", + lastUpdate.getTime() / 1000f, now / 1000f)); scheduleTransactionListRetrieval(); } @@ -339,7 +334,7 @@ public class MainActivity extends ProfileThemedActivity { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) return; List shortcuts = new ArrayList<>(); - try (LockHolder lh = Data.profiles.lockForReading()) { + try (LockHolder ignored = Data.profiles.lockForReading()) { for (int i = 0; i < Data.profiles.size(); i++) { MobileLedgerProfile p = Data.profiles.get(i); if (!p.isPostingPermitted()) continue; @@ -535,43 +530,18 @@ public class MainActivity extends ProfileThemedActivity { private void showAccountSummaryFragment() { mViewPager.setCurrentItem(0, true); Data.accountFilter.setValue(null); -// FragmentTransaction ft = fragmentManager.beginTransaction(); -// accountSummaryFragment = new AccountSummaryFragment(); -// ft.replace(R.id.root_frame, accountSummaryFragment); -// ft.commit(); -// currentFragment = accountSummaryFragment; } public void onLatestTransactionsClicked(View view) { drawer.closeDrawers(); showTransactionsFragment((String) null); } - private void resetFragmentBackStack() { -// fragmentManager.popBackStack(0, FragmentManager.POP_BACK_STACK_INCLUSIVE); - } private void showTransactionsFragment(String accName) { Data.accountFilter.setValue(accName); mViewPager.setCurrentItem(1, true); } private void showTransactionsFragment(LedgerAccount account) { - showTransactionsFragment((account == null) ? (String) null : account.getName()); -// FragmentTransaction ft = fragmentManager.beginTransaction(); -// if (transactionListFragment == null) { -// debug("flow", "MainActivity creating TransactionListFragment"); -// transactionListFragment = new TransactionListFragment(); -// } -// Bundle bundle = new Bundle(); -// if (account != null) { -// bundle.putString(TransactionListFragment.BUNDLE_KEY_FILTER_ACCOUNT_NAME, -// account.getName()); -// } -// transactionListFragment.setArguments(bundle); -// ft.replace(R.id.root_frame, transactionListFragment); -// if (account != null) -// ft.addToBackStack(getResources().getString(R.string.title_activity_transaction_list)); -// ft.commit(); -// -// currentFragment = transactionListFragment; + showTransactionsFragment((account == null) ? null : account.getName()); } public void showAccountTransactions(LedgerAccount account) { mBackMeansToAccountList = true; @@ -590,7 +560,7 @@ public class MainActivity extends ProfileThemedActivity { mBackMeansToAccountList = false; } else { - debug("fragments", String.format("manager stack: %d", + debug("fragments", String.format(Locale.ENGLISH, "manager stack: %d", fragmentManager.getBackStackEntryCount())); super.onBackPressed(); @@ -601,7 +571,7 @@ public class MainActivity extends ProfileThemedActivity { final MobileLedgerProfile profile = Data.profile.get(); long last_update = (profile != null) ? profile.getLongOption(MLDB.OPT_LAST_SCRAPE, 0L) : 0; - debug("transactions", String.format("Last update = %d", last_update)); + debug("transactions", String.format(Locale.ENGLISH, "Last update = %d", last_update)); if (last_update == 0) { Data.lastUpdateDate.postValue(null); } @@ -663,6 +633,9 @@ public class MainActivity extends ProfileThemedActivity { MobileLedgerProfile profile = Data.profile.get(); if ((profile != null) && profile.isPostingPermitted()) fab.show(); } + public void fabHide() { + fab.hide(); + } public void navProfilesHeadClicked(View view) { if (profileListExpanded) { collapseProfileList(); @@ -685,41 +658,51 @@ public class MainActivity extends ProfileThemedActivity { Data.profiles.size())); } private void collapseProfileList() { + boolean wasExpanded = profileListExpanded; profileListExpanded = false; - final Animation animation = AnimationUtils.loadAnimation(this, R.anim.slide_up); - animation.setAnimationListener(new Animation.AnimationListener() { - @Override - public void onAnimationStart(Animation animation) { + if (wasExpanded) { + final Animation animation = AnimationUtils.loadAnimation(this, R.anim.slide_up); + animation.setAnimationListener(new Animation.AnimationListener() { + @Override + public void onAnimationStart(Animation animation) { - } - @Override - public void onAnimationEnd(Animation animation) { - profileListContainer.setVisibility(View.GONE); - } - @Override - public void onAnimationRepeat(Animation animation) { + } + @Override + public void onAnimationEnd(Animation animation) { + profileListContainer.setVisibility(View.GONE); + } + @Override + public void onAnimationRepeat(Animation animation) { - } - }); - mProfileListAdapter.stopEditingProfiles(); - - profileListContainer.startAnimation(animation); - profileListHeadArrow.setRotation(0f); - profileListHeadArrow - .startAnimation(AnimationUtils.loadAnimation(this, R.anim.rotate_180_back)); - final Animation moreAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_out); - moreAnimation.setAnimationListener(new Animation.AnimationListener() { - @Override - public void onAnimationStart(Animation animation) {} - @Override - public void onAnimationEnd(Animation animation) { - profileListHeadMore.setVisibility(View.GONE); - } - @Override - public void onAnimationRepeat(Animation animation) {} - }); - profileListHeadMore.startAnimation(moreAnimation); + } + }); + mProfileListAdapter.stopEditingProfiles(); + + profileListContainer.startAnimation(animation); + profileListHeadArrow.setRotation(0f); + profileListHeadArrow + .startAnimation(AnimationUtils.loadAnimation(this, R.anim.rotate_180_back)); + final Animation moreAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_out); + moreAnimation.setAnimationListener(new Animation.AnimationListener() { + @Override + public void onAnimationStart(Animation animation) { + } + @Override + public void onAnimationEnd(Animation animation) { + profileListHeadMore.setVisibility(View.GONE); + } + @Override + public void onAnimationRepeat(Animation animation) { + } + }); + profileListHeadMore.startAnimation(moreAnimation); + } + else { + profileListContainer.setVisibility(View.GONE); + profileListHeadArrow.setRotation(0f); + profileListHeadMore.setVisibility(View.GONE); + } } public void onAccountSummaryRowViewClicked(View view) { ViewGroup row; @@ -753,7 +736,7 @@ public class MainActivity extends ProfileThemedActivity { // removing all child accounts from the view int start = -1, count = 0; - try (LockHolder lh = Data.accounts.lockForWriting()) { + try (LockHolder ignored = Data.accounts.lockForWriting()) { for (int i = 0; i < Data.accounts.size(); i++) { if (acc.isParentOf(Data.accounts.get(i))) { // debug("accounts", String.format("Found a child '%s' at position %d", @@ -791,7 +774,7 @@ public class MainActivity extends ProfileThemedActivity { animator.rotationBy(-180); List children = Data.profile.get().loadVisibleChildAccountsOf(acc); - try (LockHolder lh = Data.accounts.lockForWriting()) { + try (LockHolder ignored = Data.accounts.lockForWriting()) { int parentPos = Data.accounts.indexOf(acc); if (parentPos != -1) { // may have disappeared in a concurrent refresh operation @@ -818,14 +801,14 @@ public class MainActivity extends ProfileThemedActivity { public class SectionsPagerAdapter extends FragmentPagerAdapter { - public SectionsPagerAdapter(FragmentManager fm) { + SectionsPagerAdapter(FragmentManager fm) { super(fm); } @NotNull @Override public Fragment getItem(int position) { - debug("main", String.format("Switching to fragment %d", position)); + debug("main", String.format(Locale.ENGLISH, "Switching to fragment %d", position)); switch (position) { case 0: // debug("flow", "Creating account summary fragment");