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=1a74eaad5031da20664c7aa72fb0a7b980a44532;hp=1dc5f026d900cb9961805e5465855dbc93febf40;hb=023539ae4b017c80b2b28978d701e05354d265df;hpb=a983099d6150044a08a1fbc601d9af9bd8d0c0a8 diff --git a/app/src/main/java/net/ktnx/mobileledger/TransactionListActivity.java b/app/src/main/java/net/ktnx/mobileledger/TransactionListActivity.java index 1dc5f026..1a74eaad 100644 --- a/app/src/main/java/net/ktnx/mobileledger/TransactionListActivity.java +++ b/app/src/main/java/net/ktnx/mobileledger/TransactionListActivity.java @@ -33,21 +33,19 @@ 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.MobileLedgerDatabase; +import net.ktnx.mobileledger.utils.MLDB; 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 TransactionListViewModel model; private TextView tvLastUpdate; private TransactionListAdapter modelAdapter; @Override @@ -68,39 +66,31 @@ public class TransactionListActivity extends AppCompatActivity { if (progressBar == null) throw new RuntimeException("Can't get hold on the transaction list progress bar"); tvLastUpdate = findViewById(R.id.transactions_last_update); - { - long last_update = (new MobileLedgerDatabase(this)) - .get_option_value("transaction_list_last_update", 0); - if (last_update == 0) tvLastUpdate.setText("never"); - else { - Date date = new Date(last_update); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - tvLastUpdate.setText(date.toInstant().atZone(ZoneId.systemDefault()) - .format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)); - } - else { - tvLastUpdate.setText(date.toLocaleString()); - } - } - } + updateLastUpdateText(); model = ViewModelProviders.of(this).get(TransactionListViewModel.class); - List transactions = - model.getTransactions(new MobileLedgerDatabase(this)); - modelAdapter = new TransactionListAdapter(transactions); + modelAdapter = new TransactionListAdapter(model); RecyclerView root = findViewById(R.id.transaction_root); root.setAdapter(modelAdapter); LinearLayoutManager llm = new LinearLayoutManager(this); + llm.setOrientation(LinearLayoutManager.VERTICAL); root.setLayoutManager(llm); - ((SwipeRefreshLayout) findViewById(R.id.transaction_swipe)).setOnRefreshListener(() -> { + swiper.setOnRefreshListener(() -> { Log.d("ui", "refreshing transactions via swipe"); update_transactions(); }); -// update_transactions(); + swiper.setColorSchemeResources(R.color.colorPrimary, R.color.colorAccent); + + 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(); + } } private void setupActionBar() { ActionBar actionBar = getSupportActionBar(); @@ -126,6 +116,8 @@ public class TransactionListActivity extends AppCompatActivity { 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); } public void onRetrieveProgress(RetrieveTransactionsTask.Progress progress) { @@ -135,7 +127,6 @@ public class TransactionListActivity extends AppCompatActivity { progressBar.setIndeterminate(true); } else { - progressBar.setIndeterminate(false); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { progressBar.setMin(0); } @@ -144,26 +135,36 @@ public class TransactionListActivity extends AppCompatActivity { progressBar.setProgress(progress.getProgress(), true); } else progressBar.setProgress(progress.getProgress()); + progressBar.setIndeterminate(false); } } public void onRetrieveDone(boolean success) { - progressBar.setVisibility(View.GONE); - SwipeRefreshLayout srl = findViewById(R.id.transaction_swipe); - srl.setRefreshing(false); + progressBar.setVisibility(View.INVISIBLE); + swiper.setRefreshing(false); + updateLastUpdateText(); if (success) { - MobileLedgerDatabase dbh = new MobileLedgerDatabase(this); - Date now = new Date(); - dbh.set_option_value("transaction_list_last_update", now.getTime()); - updateLastUpdateText(now); + Log.d("transactions", "calling notifyDataSetChanged()"); + modelAdapter.notifyDataSetChanged(); } } - private void updateLastUpdateText(Date now) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - tvLastUpdate.setText(now.toInstant().atZone(ZoneId.systemDefault()).toString()); - } - else { - tvLastUpdate.setText(now.toLocaleString()); + private void 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) { + 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) { + tvLastUpdate.setText(date.toInstant().atZone(ZoneId.systemDefault()) + .format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)); + } + else { + tvLastUpdate.setText(date.toLocaleString()); + } + } } } }