X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2FTransactionListActivity.java;h=6a9c24d9a5dbbc78bc0be5f153922514026c7da1;hp=9a4ef74eade66afa671cbb9ab5f7104b3a80b60d;hb=12665a6fba07ee914b2fe7931704b904d8d2e85d;hpb=c10b34f9400df467483d915b57778884b874ec6f diff --git a/app/src/main/java/net/ktnx/mobileledger/TransactionListActivity.java b/app/src/main/java/net/ktnx/mobileledger/TransactionListActivity.java index 9a4ef74e..6a9c24d9 100644 --- a/app/src/main/java/net/ktnx/mobileledger/TransactionListActivity.java +++ b/app/src/main/java/net/ktnx/mobileledger/TransactionListActivity.java @@ -29,11 +29,11 @@ import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.View; +import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.TextView; import net.ktnx.mobileledger.async.RetrieveTransactionsTask; -import net.ktnx.mobileledger.model.LedgerTransaction; import net.ktnx.mobileledger.ui.transaction_list.TransactionListViewModel; import net.ktnx.mobileledger.utils.MLDB; @@ -41,15 +41,16 @@ import java.lang.ref.WeakReference; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.Date; -import java.util.List; public class TransactionListActivity extends AppCompatActivity { public TransactionListViewModel model; private SwipeRefreshLayout swiper; private RecyclerView root; private ProgressBar progressBar; + private LinearLayout progressLayout; private TextView tvLastUpdate; private TransactionListAdapter modelAdapter; + private RetrieveTransactionsTask retrieveTransactionsTask; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -64,14 +65,16 @@ public class TransactionListActivity extends AppCompatActivity { if (swiper == null) throw new RuntimeException("Can't get hold on the swipe layout"); root = findViewById(R.id.transaction_root); if (root == null) throw new RuntimeException("Can't get hold on the transaction list view"); - progressBar = findViewById(R.id.transaction_progress_bar); + progressBar = findViewById(R.id.transaction_list_progress_bar); if (progressBar == null) throw new RuntimeException("Can't get hold on the transaction list progress bar"); + progressLayout = findViewById(R.id.transaction_progress_layout); + if (progressLayout == null) throw new RuntimeException( + "Can't get hold on the transaction list progress bar layout"); tvLastUpdate = findViewById(R.id.transactions_last_update); updateLastUpdateText(); model = ViewModelProviders.of(this).get(TransactionListViewModel.class); - List transactions = model.getTransactions(getApplicationContext()); - modelAdapter = new TransactionListAdapter(transactions); + modelAdapter = new TransactionListAdapter(model); RecyclerView root = findViewById(R.id.transaction_root); root.setAdapter(modelAdapter); @@ -88,7 +91,15 @@ public class TransactionListActivity extends AppCompatActivity { swiper.setColorSchemeResources(R.color.colorPrimary, R.color.colorAccent); -// update_transactions(); + updateLastUpdateText(); + long last_update = MLDB.get_option_value(this, MLDB.OPT_TRANSACTION_LIST_STAMP, 0L); + Log.d("transactions", String.format("Last update = %d", last_update)); + if (last_update == 0) { + update_transactions(); + } + else { + model.reloadTransactions(this); + } } private void setupActionBar() { ActionBar actionBar = getSupportActionBar(); @@ -104,19 +115,20 @@ public class TransactionListActivity extends AppCompatActivity { overridePendingTransition(R.anim.dummy, R.anim.slide_out_right); } private void update_transactions() { - RetrieveTransactionsTask task = new RetrieveTransactionsTask(new WeakReference<>(this)); + retrieveTransactionsTask = new RetrieveTransactionsTask(new WeakReference<>(this)); RetrieveTransactionsTask.Params params = new RetrieveTransactionsTask.Params( PreferenceManager.getDefaultSharedPreferences(this)); - task.execute(params); + retrieveTransactionsTask.execute(params); + findViewById(R.id.transaction_list_cancel_download).setEnabled(true); } public void onRetrieveStart() { progressBar.setIndeterminate(true); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) progressBar.setProgress(0, false); else progressBar.setProgress(0); - progressBar.setVisibility(View.VISIBLE); + progressLayout.setVisibility(View.VISIBLE); } public void onRetrieveProgress(RetrieveTransactionsTask.Progress progress) { if ((progress.getTotal() == RetrieveTransactionsTask.Progress.INDETERMINATE) || @@ -138,10 +150,11 @@ public class TransactionListActivity extends AppCompatActivity { } public void onRetrieveDone(boolean success) { - progressBar.setVisibility(View.GONE); + progressLayout.setVisibility(View.GONE); swiper.setRefreshing(false); updateLastUpdateText(); if (success) { + Log.d("transactions", "calling notifyDataSetChanged()"); modelAdapter.notifyDataSetChanged(); } } @@ -149,7 +162,9 @@ public class TransactionListActivity extends AppCompatActivity { { long last_update = MLDB.get_option_value(this, MLDB.OPT_TRANSACTION_LIST_STAMP, 0L); Log.d("transactions", String.format("Last update = %d", last_update)); - if (last_update == 0) tvLastUpdate.setText("never"); + if (last_update == 0) { + tvLastUpdate.setText(getString(R.string.transaction_last_update_never)); + } else { Date date = new Date(last_update); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { @@ -162,4 +177,9 @@ public class TransactionListActivity extends AppCompatActivity { } } } + public void onStopTransactionRefreshClick(View view) { + Log.d("interactive", "Cancelling transactions refresh"); + if (retrieveTransactionsTask != null) retrieveTransactionsTask.cancel(false); + findViewById(R.id.transaction_list_cancel_download).setEnabled(false); + } }