/*
- * Copyright © 2018 Damyan Ivanov.
+ * Copyright © 2019 Damyan Ivanov.
* This file is part of Mobile-Ledger.
* Mobile-Ledger is free software: you can distribute it and/or modify it
* under the term of the GNU General Public License as published by
import net.ktnx.mobileledger.model.LedgerAccount;
import net.ktnx.mobileledger.ui.account_summary.AccountSummaryFragment;
import net.ktnx.mobileledger.ui.transaction_list.TransactionListFragment;
+import net.ktnx.mobileledger.utils.MLDB;
+
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
public class MainActivity extends AppCompatActivity {
DrawerLayout drawer;
private TransactionListFragment transactionListFragment;
private Fragment currentFragment = null;
private FragmentManager fragmentManager;
+ private TextView tvLastUpdate;
@Override
protected void onCreate(Bundle savedInstanceState) {
e.printStackTrace();
}
+ tvLastUpdate = findViewById(R.id.transactions_last_update);
+ updateLastUpdateText();
+ long last_update = MLDB.get_option_value(MLDB.OPT_TRANSACTION_LIST_STAMP, 0L);
+ Log.d("transactions", String.format("Last update = %d", last_update));
+
+
fragmentManager = getSupportFragmentManager();
onAccountSummaryClicked(null);
super.onBackPressed();
}
}
+ public void updateLastUpdateText() {
+ {
+ long last_update = MLDB.get_option_value(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());
+ }
+ }
+ }
+ }
}
/*
- * Copyright © 2018 Damyan Ivanov.
+ * Copyright © 2019 Damyan Ivanov.
* This file is part of Mobile-Ledger.
* Mobile-Ledger is free software: you can distribute it and/or modify it
* under the term of the GNU General Public License as published by
import android.widget.AutoCompleteTextView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
-import android.widget.TextView;
import net.ktnx.mobileledger.R;
import net.ktnx.mobileledger.async.RetrieveTransactionsTask;
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 static android.content.Context.INPUT_METHOD_SERVICE;
private RecyclerView root;
private ProgressBar progressBar;
private LinearLayout progressLayout;
- private TextView tvLastUpdate;
private TransactionListAdapter modelAdapter;
private RetrieveTransactionsTask retrieveTransactionsTask;
private AutoCompleteTextView accNameFilter;
progressLayout = mActivity.findViewById(R.id.transaction_progress_layout);
if (progressLayout == null) throw new RuntimeException(
"Can't get hold on the transaction list progress bar layout");
- tvLastUpdate = mActivity.findViewById(R.id.transactions_last_update);
- updateLastUpdateText();
model = ViewModelProviders.of(this).get(TransactionListViewModel.class);
modelAdapter = new TransactionListAdapter(model);
}
});
- updateLastUpdateText();
- long last_update = MLDB.get_option_value(mActivity, MLDB.OPT_TRANSACTION_LIST_STAMP, 0L);
- Log.d("transactions", String.format("Last update = %d", last_update));
-
if (mShowOnlyAccountName != null) {
accNameFilter.setText(mShowOnlyAccountName, false);
onShowFilterClick(null);
Log.d("flow", String.format("Account filter set to '%s'", mShowOnlyAccountName));
}
- if (last_update == 0) {
- update_transactions();
- }
- else {
- model.reloadTransactions(this);
- }
+ model.reloadTransactions(this);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
public void onRetrieveDone(boolean success) {
progressLayout.setVisibility(View.GONE);
swiper.setRefreshing(false);
- updateLastUpdateText();
+ mActivity.updateLastUpdateText();
if (success) {
Log.d("transactions", "calling notifyDataSetChanged()");
modelAdapter.notifyDataSetChanged();
}
}
- private void updateLastUpdateText() {
- {
- long last_update =
- MLDB.get_option_value(mActivity, 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());
- }
- }
- }
- }
public void onClearAccountNameClick(View view) {
vAccountFilter.setVisibility(View.GONE);
if (menuTransactionListFilter != null) menuTransactionListFilter.setVisible(true);
<?xml version="1.0" encoding="utf-8"?><!--
- ~ Copyright © 2018 Damyan Ivanov.
+ ~ Copyright © 2019 Damyan Ivanov.
~ This file is part of Mobile-Ledger.
~ Mobile-Ledger is free software: you can distribute it and/or modify it
~ under the term of the GNU General Public License as published by
android:layout_height="match_parent"
tools:openDrawer="start">
- <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:id="@+id/root_frame"
+ <android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_margin="@dimen/fab_margin"
android:onClick="fab_new_transaction_clicked"
app:backgroundTint="@color/colorPrimary"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
app:srcCompat="@drawable/svg_thick_plus_white" />
- </FrameLayout>
+
+ <LinearLayout
+ android:id="@+id/main_header"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:elevation="24dp"
+ android:orientation="horizontal">
+
+ <TextView
+ android:id="@+id/transaction_last_update_label"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:paddingEnd="8dp"
+ android:text="@string/transactions_last_update_label"
+ android:textColor="@android:color/tertiary_text_light" />
+
+ <TextView
+ android:id="@+id/transactions_last_update"
+ style="@android:style/Widget.DeviceDefault.Light.TextView"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:text="\?"
+ android:textColor="@android:color/tertiary_text_light"
+ tools:ignore="HardcodedText" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/transaction_progress_layout"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center_vertical"
+ android:orientation="horizontal"
+ android:visibility="gone">
+
+ <ProgressBar
+ android:id="@+id/transaction_list_progress_bar"
+ style="?android:attr/progressBarStyleHorizontal"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="-8dp"
+ android:layout_marginBottom="-7dp"
+ android:layout_weight="1"
+ android:indeterminate="true"
+ android:padding="0dp"
+ android:progressTint="@color/colorPrimary"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/transaction_list_head" />
+
+ <TextView
+ android:id="@+id/transaction_list_cancel_download"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:background="@drawable/ic_clear_black_24dp"
+ android:clickable="true"
+ android:focusable="auto"
+ android:onClick="onStopTransactionRefreshClick" />
+ </LinearLayout>
+
+ </LinearLayout>
+
+ <FrameLayout
+ android:id="@+id/root_frame"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/main_header">
+
+ </FrameLayout>
+
+ <View
+ android:layout_width="0dp"
+ android:layout_height="4dp"
+ android:background="@drawable/drop_shadow"
+ app:layout_constraintTop_toBottomOf="@id/main_header" />
+
+ </android.support.constraint.ConstraintLayout>
<android.support.design.widget.NavigationView
<?xml version="1.0" encoding="utf-8"?><!--
- ~ Copyright © 2018 Damyan Ivanov.
+ ~ Copyright © 2019 Damyan Ivanov.
~ This file is part of Mobile-Ledger.
~ Mobile-Ledger is free software: you can distribute it and/or modify it
~ under the term of the GNU General Public License as published by
tools:context="net.ktnx.mobileledger.ui.activity.MainActivity">
<LinearLayout
- android:id="@+id/last_update_row"
+ android:id="@+id/transaction_list_head"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_height="wrap_content"
android:background="@drawable/ic_clear_black_24dp"
android:clickable="true"
- android:onClick="onViewClicked"
- android:focusable="true" />
+ android:focusable="true"
+ android:onClick="onViewClicked" />
</LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:elevation="24dp"
- android:orientation="horizontal">
-
- <TextView
- android:id="@+id/transaction_last_update_label"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:paddingEnd="8dp"
- android:text="@string/transactions_last_update_label"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent" />
-
- <TextView
- android:id="@+id/transactions_last_update"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="\?"
- tools:ignore="HardcodedText" />
- </LinearLayout>
-
- <LinearLayout
- android:id="@+id/transaction_progress_layout"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center_vertical"
- android:orientation="horizontal"
- android:visibility="gone">
-
- <ProgressBar
- android:id="@+id/transaction_list_progress_bar"
- style="?android:attr/progressBarStyleHorizontal"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_marginTop="-8dp"
- android:layout_marginBottom="-7dp"
- android:layout_weight="1"
- android:indeterminate="true"
- android:padding="0dp"
- android:progressTint="@color/colorPrimary"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/last_update_row" />
-
- <TextView
- android:id="@+id/transaction_list_cancel_download"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/ic_clear_black_24dp"
- android:clickable="true"
- android:onClick="onStopTransactionRefreshClick" />
- </LinearLayout>
-
</LinearLayout>
<android.support.v4.widget.SwipeRefreshLayout
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/last_update_row">
+ app:layout_constraintTop_toBottomOf="@+id/transaction_list_head">
<android.support.v7.widget.RecyclerView
android:id="@+id/transaction_root"
android:scrollbars="vertical" />
</android.support.v4.widget.SwipeRefreshLayout>
- <View
- android:layout_width="0dp"
- android:layout_height="4dp"
- android:background="@drawable/drop_shadow"
- app:layout_constraintTop_toBottomOf="@+id/last_update_row" />
</android.support.constraint.ConstraintLayout>