]> git.ktnx.net Git - mobile-ledger-staging.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/ui/activity/MainActivity.java
static Logger reference
[mobile-ledger-staging.git] / app / src / main / java / net / ktnx / mobileledger / ui / activity / MainActivity.java
index 72ace25ba1077159a79df6a64ceafe21d7ddc7df..88ab8090cfc4d86bc805c2270076d11d44362dff 100644 (file)
@@ -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);
@@ -174,6 +171,8 @@ public class MainActivity extends ProfileThemedActivity {
         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<MobileLedgerProfile> 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);
@@ -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");