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=ecd78167354df9b5bc046381476e27ba16186535;hp=558ca691da3a49ec8e3b1132a70b1d0e9481b8b0;hb=ae668e7470adf8eefb0fd2bb5905f9c6ebebfc36;hpb=e5e4785fe33ae777c966b5f5baf507a1074c3176 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 558ca691..ecd78167 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 @@ -21,6 +21,7 @@ import android.content.Intent; import android.content.pm.PackageInfo; import android.content.res.ColorStateList; import android.graphics.Color; +import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; import android.util.Log; @@ -45,12 +46,15 @@ import net.ktnx.mobileledger.ui.account_summary.AccountSummaryFragment; import net.ktnx.mobileledger.ui.profiles.ProfileDetailFragment; import net.ktnx.mobileledger.ui.profiles.ProfilesRecyclerViewAdapter; 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.MLDB; import java.lang.ref.WeakReference; import java.text.DateFormat; import java.util.Date; +import java.util.Observable; +import java.util.Observer; import androidx.appcompat.app.ActionBarDrawerToggle; import androidx.appcompat.widget.Toolbar; @@ -63,12 +67,13 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.viewpager.widget.ViewPager; -public class MainActivity extends CrashReportingActivity { +public class MainActivity extends ProfileThemedActivity { private static final String STATE_CURRENT_PAGE = "current_page"; private static final String BUNDLE_SAVED_STATE = "bundle_savedState"; DrawerLayout drawer; private LinearLayout profileListContainer; - private View profileListHeadArrow; + private View profileListHeadArrow, profileListHeadMore, profileListHeadCancel; + private LinearLayout profileListHeadMoreAndCancel; private FragmentManager fragmentManager; private TextView tvLastUpdate; private RetrieveTransactionsTask retrieveTransactionsTask; @@ -86,7 +91,6 @@ public class MainActivity extends CrashReportingActivity { protected void onStart() { super.onStart(); - Data.lastUpdateDate.set(null); updateLastUpdateTextFromDB(); Date lastUpdate = Data.lastUpdateDate.get(); @@ -114,6 +118,9 @@ public class MainActivity extends CrashReportingActivity { fab = findViewById(R.id.btn_add_transaction); profileListContainer = findViewById(R.id.nav_profile_list_container); 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); drawer = findViewById(R.id.drawer_layout); tvLastUpdate = findViewById(R.id.transactions_last_update); bTransactionListCancelDownload = findViewById(R.id.transaction_list_cancel_download); @@ -235,10 +242,43 @@ public class MainActivity extends CrashReportingActivity { mProfileListAdapter = new ProfilesRecyclerViewAdapter(); root.setAdapter(mProfileListAdapter); + mProfileListAdapter.addEditingProfilesObserver(new Observer() { + @Override + public void update(Observable o, Object arg) { + if (mProfileListAdapter.isEditingProfiles()) { + profileListHeadArrow.clearAnimation(); + profileListHeadArrow.setVisibility(View.GONE); + profileListHeadMore.setVisibility(View.GONE); + profileListHeadCancel.setVisibility(View.VISIBLE); + } + else { + profileListHeadArrow.setRotation(180f); + profileListHeadArrow.setVisibility(View.VISIBLE); + profileListHeadCancel.setVisibility(View.GONE); + profileListHeadMore.setVisibility(View.GONE); + profileListHeadMore + .setVisibility(profileListExpanded ? View.VISIBLE : View.GONE); + } + } + }); + LinearLayoutManager llm = new LinearLayoutManager(this); llm.setOrientation(RecyclerView.VERTICAL); root.setLayoutManager(llm); + + profileListHeadMore.setOnClickListener((v) -> mProfileListAdapter.flipEditingProfiles()); + profileListHeadCancel.setOnClickListener((v) -> mProfileListAdapter.flipEditingProfiles()); + profileListHeadMoreAndCancel + .setOnClickListener((v) -> mProfileListAdapter.flipEditingProfiles()); + + drawer.addDrawerListener(new DrawerLayout.SimpleDrawerListener() { + @Override + public void onDrawerClosed(View drawerView) { + super.onDrawerClosed(drawerView); + collapseProfileList(); + } + }); } private void profileThemeChanged() { setupProfileColors(); @@ -401,7 +441,8 @@ public class MainActivity extends CrashReportingActivity { if (error == null) { updateLastUpdateTextFromDB(); - new RefreshDescriptionsTask().execute(); + new RefreshDescriptionsTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + TransactionListViewModel.scheduleTransactionListReload(); } else Toast.makeText(this, error, Toast.LENGTH_LONG).show(); } @@ -451,6 +492,11 @@ public class MainActivity extends CrashReportingActivity { profileListContainer.setVisibility(View.VISIBLE); profileListContainer.startAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_down)); profileListHeadArrow.startAnimation(AnimationUtils.loadAnimation(this, R.anim.rotate_180)); + profileListHeadMore.setVisibility(View.VISIBLE); + profileListHeadMore.startAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_in)); + findViewById(R.id.nav_profile_list).setMinimumHeight( + (int) (getResources().getDimension(R.dimen.thumb_row_height) * + Data.profiles.size())); } private void collapseProfileList() { profileListExpanded = false; @@ -470,11 +516,13 @@ public class MainActivity extends CrashReportingActivity { } }); + mProfileListAdapter.stopEditingProfiles(); + profileListContainer.startAnimation(animation); + profileListHeadArrow.setRotation(0f); profileListHeadArrow .startAnimation(AnimationUtils.loadAnimation(this, R.anim.rotate_180_back)); - - mProfileListAdapter.stopEditingProfiles(); + profileListHeadMore.setVisibility(View.GONE); } public void onProfileRowClicked(View v) { Data.setCurrentProfile((MobileLedgerProfile) v.getTag()); @@ -496,7 +544,7 @@ public class MainActivity extends CrashReportingActivity { for (int i = 0; i < profileList.getChildCount(); i++) { View aRow = profileList.getChildAt(i); aRow.findViewById(R.id.profile_list_edit_button).setVisibility(View.GONE); - aRow.findViewById(R.id.profile_list_rearrange_handle).setVisibility(View.GONE); + aRow.findViewById(R.id.profile_list_rearrange_handle).setVisibility(View.INVISIBLE); } // FIXME disable rearranging