X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Factivity%2FMainActivity.java;h=88ab8090cfc4d86bc805c2270076d11d44362dff;hb=88c92dfd48b023ee9eea01e30a798f841d207ef2;hp=33bcbb005c32a855819091f4bedebf21b4a1d802;hpb=0a73337c99e2074aa7e7228204289896342ec636;p=mobile-ledger-staging.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 33bcbb00..88ab8090 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 @@ -61,7 +61,6 @@ 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.GetOptCallback; import net.ktnx.mobileledger.utils.Logger; import net.ktnx.mobileledger.utils.MLDB; @@ -73,8 +72,6 @@ import java.util.Date; import java.util.List; import java.util.Locale; -import static net.ktnx.mobileledger.utils.Logger.debug; - /* * TODO: reports * */ @@ -147,9 +144,9 @@ public class MainActivity extends ProfileThemedActivity { } @Override protected void onCreate(Bundle savedInstanceState) { - debug("MainActivity", "onCreate()/entry"); + Logger.debug("MainActivity", "onCreate()/entry"); super.onCreate(savedInstanceState); - debug("MainActivity", "onCreate()/after super"); + Logger.debug("MainActivity", "onCreate()/after super"); setContentView(R.layout.activity_main); fab = findViewById(R.id.btn_add_transaction); @@ -171,9 +168,11 @@ public class MainActivity extends ProfileThemedActivity { mToolbar = findViewById(R.id.toolbar); setSupportActionBar(mToolbar); - Data.profile.observe(this, this::onProfileChanged); + Data.observeProfile(this, this::onProfileChanged); Data.profiles.observe(this, this::onProfileListChanged); + Data.backgroundTaskProgress.observe(this, this::onRetrieveProgress); + Data.backgroundTasksRunning.observe(this, this::onRetrieveRunningChanged); if (barDrawerToggle == null) { barDrawerToggle = new ActionBarDrawerToggle(this, drawer, mToolbar, @@ -325,15 +324,18 @@ 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"); + Logger.debug("db::", "WEB data never fetched. scheduling a fetch"); else - debug("db", String.format(Locale.ENGLISH, + Logger.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)); - Data.scheduleTransactionListRetrieval(this); + scheduleDataRetrieval(); } } + public void scheduleDataRetrieval() { + Data.scheduleTransactionListRetrieval(); + } private void createShortcuts(List list) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) return; @@ -376,7 +378,7 @@ public class MainActivity extends ProfileThemedActivity { findViewById(R.id.nav_profile_list).setMinimumHeight( (int) (getResources().getDimension(R.dimen.thumb_row_height) * newList.size())); - debug("profiles", "profile list changed"); + Logger.debug("profiles", "profile list changed"); mProfileListAdapter.notifyDataSetChanged(); createShortcuts(newList); @@ -409,7 +411,7 @@ public class MainActivity extends ProfileThemedActivity { int newProfileTheme = haveProfile ? profile.getThemeHue() : -1; if (newProfileTheme != Colors.profileThemeId) { - debug("profiles", + Logger.debug("profiles", String.format(Locale.ENGLISH, "profile theme %d → %d", Colors.profileThemeId, newProfileTheme)); Colors.profileThemeId = newProfileTheme; @@ -425,7 +427,7 @@ public class MainActivity extends ProfileThemedActivity { mProfileListAdapter.notifyDataSetChanged(); Data.transactions.clear(); - debug("transactions", "requesting list reload"); + Logger.debug("transactions", "requesting list reload"); TransactionListViewModel.scheduleTransactionListReload(); if (haveProfile) { @@ -452,14 +454,14 @@ public class MainActivity extends ProfileThemedActivity { TextView v = findViewById(R.id.transactions_last_update); if (newValue == null) { l.setVisibility(View.INVISIBLE); - debug("main", "no last update date :("); + Logger.debug("main", "no last update date :("); } else { final String text = DateFormat.getDateTimeInstance() .format(newValue); v.setText(text); l.setVisibility(View.VISIBLE); - debug("main", String.format("Date formatted: %s", text)); + Logger.debug("main", String.format("Date formatted: %s", text)); } scheduleDataRetrievalIfStale(newValue); @@ -468,7 +470,7 @@ public class MainActivity extends ProfileThemedActivity { storeThemeIdInPrefs(profile.getThemeHue()); // un-hook all observed LiveData - Data.profile.removeObservers(this); + Data.removeProfileObservers(this); Data.profiles.removeObservers(this); Data.lastUpdateDate.removeObservers(this); @@ -492,17 +494,6 @@ public class MainActivity extends ProfileThemedActivity { intent.putExtras(args); startActivity(intent, args); } - private void setupProfile() { - MLDB.getOption(MLDB.OPT_PROFILE_UUID, null, new GetOptCallback() { - @Override - protected void onResult(String profileUUID) { - MobileLedgerProfile startupProfile; - - startupProfile = Data.getProfile(profileUUID); - Data.setCurrentProfile(startupProfile); - } - }); - } public void fabNewTransactionClicked(View view) { Intent intent = new Intent(this, NewTransactionActivity.class); startActivity(intent); @@ -555,7 +546,7 @@ public class MainActivity extends ProfileThemedActivity { mBackMeansToAccountList = false; } else { - debug("fragments", String.format(Locale.ENGLISH, "manager stack: %d", + Logger.debug("fragments", String.format(Locale.ENGLISH, "manager stack: %d", getSupportFragmentManager().getBackStackEntryCount())); super.onBackPressed(); @@ -568,7 +559,7 @@ public class MainActivity extends ProfileThemedActivity { long last_update = profile.getLongOption(MLDB.OPT_LAST_SCRAPE, 0L); - debug("transactions", String.format(Locale.ENGLISH, "Last update = %d", last_update)); + Logger.debug("transactions", String.format(Locale.ENGLISH, "Last update = %d", last_update)); if (last_update == 0) { Data.lastUpdateDate.postValue(null); } @@ -577,55 +568,82 @@ public class MainActivity extends ProfileThemedActivity { } } public void onStopTransactionRefreshClick(View view) { - debug("interactive", "Cancelling transactions refresh"); + Logger.debug("interactive", "Cancelling transactions refresh"); Data.stopTransactionsRetrieval(); bTransactionListCancelDownload.setEnabled(false); } - public void onRetrieveDone(String error) { - Data.transactionRetrievalDone(); - findViewById(R.id.transaction_progress_layout).setVisibility(View.GONE); + public void onRetrieveRunningChanged(Boolean running) { + final View progressLayout = findViewById(R.id.transaction_progress_layout); + if (running) { + ProgressBar progressBar = findViewById(R.id.transaction_list_progress_bar); + bTransactionListCancelDownload.setEnabled(true); + ColorStateList csl = Colors.getColorStateList(); + progressBar.setIndeterminateTintList(csl); + progressBar.setProgressTintList(csl); + progressBar.setIndeterminate(true); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + progressBar.setProgress(0, false); + } + else { + progressBar.setProgress(0); + } + progressLayout.setVisibility(View.VISIBLE); + } + else { + progressLayout.setVisibility(View.GONE); + } + } + public void onRetrieveProgress(RetrieveTransactionsTask.Progress progress) { + ProgressBar progressBar = findViewById(R.id.transaction_list_progress_bar); + + if (progress.getState() == RetrieveTransactionsTask.ProgressState.FINISHED) { + Logger.debug("progress", "Done"); + findViewById(R.id.transaction_progress_layout).setVisibility(View.GONE); + + Data.transactionRetrievalDone(); + + if (progress.getError() != null) { + Snackbar.make(mViewPager, progress.getError(), Snackbar.LENGTH_LONG) + .show(); + return; + } - if (error == null) { updateLastUpdateTextFromDB(); new RefreshDescriptionsTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); TransactionListViewModel.scheduleTransactionListReload(); + + return; } - else - Snackbar.make(mViewPager, error, Snackbar.LENGTH_LONG) - .show(); - } - public void onRetrieveStart() { - ProgressBar progressBar = findViewById(R.id.transaction_list_progress_bar); + + bTransactionListCancelDownload.setEnabled(true); - ColorStateList csl = Colors.getColorStateList(); - progressBar.setIndeterminateTintList(csl); - progressBar.setProgressTintList(csl); - progressBar.setIndeterminate(true); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) - progressBar.setProgress(0, false); - else - progressBar.setProgress(0); +// ColorStateList csl = Colors.getColorStateList(); +// progressBar.setIndeterminateTintList(csl); +// progressBar.setProgressTintList(csl); +// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) +// progressBar.setProgress(0, false); +// else +// progressBar.setProgress(0); findViewById(R.id.transaction_progress_layout).setVisibility(View.VISIBLE); - } - public void onRetrieveProgress(RetrieveTransactionsTask.Progress progress) { - ProgressBar progressBar = findViewById(R.id.transaction_list_progress_bar); - if ((progress.getTotal() == RetrieveTransactionsTask.Progress.INDETERMINATE) || - (progress.getTotal() == 0)) - { + + if (progress.isIndeterminate() || (progress.getTotal() <= 0)) { progressBar.setIndeterminate(true); + Logger.debug("progress", "indeterminate"); } else { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - progressBar.setMin(0); + if (progressBar.isIndeterminate()) { + progressBar.setIndeterminate(false); } + Logger.debug("progress", + String.format(Locale.US, "%d/%d", progress.getProgress(), progress.getTotal())); progressBar.setMax(progress.getTotal()); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - progressBar.setProgress(progress.getProgress(), true); - } + // for some reason animation doesn't work - no progress is shown (stick at 0) + // on lineageOS 14.1 (Nougat, 7.1.2) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) + progressBar.setProgress(progress.getProgress(), false); else progressBar.setProgress(progress.getProgress()); - progressBar.setIndeterminate(false); } } public void fabShouldShow() { @@ -647,7 +665,7 @@ public class MainActivity extends ProfileThemedActivity { @NotNull @Override public Fragment getItem(int position) { - debug("main", String.format(Locale.ENGLISH, "Switching to fragment %d", position)); + Logger.debug("main", String.format(Locale.ENGLISH, "Switching to fragment %d", position)); switch (position) { case 0: // debug("flow", "Creating account summary fragment");