From 9b531e55a5ad2f5e914ebbe45f7a563ebecb7a1e Mon Sep 17 00:00:00 2001 From: Ngewi Fet Date: Wed, 17 Aug 2016 23:20:53 +0200 Subject: [PATCH] Display book statistics in Book list (BookManager) Fix: crash when switching books due to refresh of non-attached fragment Fix warning string when creating default accounts to say existing accounts will not be deleted --- .../android/ui/account/AccountsActivity.java | 5 ++++- .../ui/account/AccountsListFragment.java | 4 +--- .../ui/settings/BookManagerFragment.java | 21 ++++++++++++++++++- app/src/main/res/values/strings.xml | 12 ++++++++++- 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/gnucash/android/ui/account/AccountsActivity.java b/app/src/main/java/org/gnucash/android/ui/account/AccountsActivity.java index f32dfe62b..0591ccc2d 100644 --- a/app/src/main/java/org/gnucash/android/ui/account/AccountsActivity.java +++ b/app/src/main/java/org/gnucash/android/ui/account/AccountsActivity.java @@ -350,7 +350,10 @@ protected void onNewIntent(Intent intent) { setIntent(intent); setCurrentTab(); - getCurrentAccountListFragment().refresh(); + int index = mViewPager.getCurrentItem(); + Fragment fragment = (Fragment) mFragmentPageReferenceMap.get(index); + if (fragment != null) + ((Refreshable)fragment).refresh(); handleOpenFileIntent(intent); } diff --git a/app/src/main/java/org/gnucash/android/ui/account/AccountsListFragment.java b/app/src/main/java/org/gnucash/android/ui/account/AccountsListFragment.java index 6004729e9..9a4b0a9d9 100644 --- a/app/src/main/java/org/gnucash/android/ui/account/AccountsListFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/account/AccountsListFragment.java @@ -303,9 +303,7 @@ public void refresh(String parentAccountUID) { */ @Override public void refresh() { - if (!isDetached()) { - getLoaderManager().restartLoader(0, null, this); - } + getLoaderManager().restartLoader(0, null, this); } @Override diff --git a/app/src/main/java/org/gnucash/android/ui/settings/BookManagerFragment.java b/app/src/main/java/org/gnucash/android/ui/settings/BookManagerFragment.java index 0b9d4c4b3..6d7e391ad 100644 --- a/app/src/main/java/org/gnucash/android/ui/settings/BookManagerFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/settings/BookManagerFragment.java @@ -19,6 +19,7 @@ import android.content.Context; import android.content.DialogInterface; import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.ListFragment; @@ -43,8 +44,12 @@ import org.gnucash.android.R; import org.gnucash.android.app.GnuCashApplication; import org.gnucash.android.db.DatabaseCursorLoader; +import org.gnucash.android.db.DatabaseHelper; import org.gnucash.android.db.DatabaseSchema.BookEntry; +import org.gnucash.android.db.adapter.AccountsDbAdapter; import org.gnucash.android.db.adapter.BooksDbAdapter; +import org.gnucash.android.db.adapter.SplitsDbAdapter; +import org.gnucash.android.db.adapter.TransactionsDbAdapter; import org.gnucash.android.ui.account.AccountsActivity; import org.gnucash.android.ui.common.Refreshable; import org.gnucash.android.util.PreferencesHelper; @@ -159,8 +164,22 @@ public void bindView(View view, final Context context, Cursor cursor) { TextView labelLastSync = (TextView) view.findViewById(R.id.label_last_sync); labelLastSync.setText(R.string.label_last_export_time); - ImageView optionsMenu = (ImageView) view.findViewById(R.id.options_menu); + //retrieve some book statistics + DatabaseHelper dbHelper = new DatabaseHelper(GnuCashApplication.getAppContext(), bookUID); + SQLiteDatabase db = dbHelper.getReadableDatabase(); + TransactionsDbAdapter trnAdapter = new TransactionsDbAdapter(db, new SplitsDbAdapter(db)); + int transactionCount = (int) trnAdapter.getRecordsCount(); + String transactionStats = getResources().getQuantityString(R.plurals.book_transaction_stats, transactionCount, transactionCount); + + AccountsDbAdapter accountsDbAdapter = new AccountsDbAdapter(db, trnAdapter); + int accountsCount = (int) accountsDbAdapter.getRecordsCount(); + String accountStats = getResources().getQuantityString(R.plurals.book_account_stats, accountsCount, accountsCount); + String stats = accountStats + ", " + transactionStats; + TextView statsText = (TextView) view.findViewById(R.id.secondary_text); + statsText.setText(stats); + + ImageView optionsMenu = (ImageView) view.findViewById(R.id.options_menu); optionsMenu.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 91f67153e..2d3a874af 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -215,7 +215,7 @@ All Creates default GnuCash commonly-used account structure Create default accounts - All existing accounts and transactions on the device will be deleted.\n\nAre you sure you want to proceed? + A new book will be opened with the default accounts\n\nYour current accounts and transactions will not be modified! Scheduled Transactions Welcome to GnuCash Android! \nYou can either create a hierarchy of commonly-used accounts, or import your own GnuCash account structure. \n\nBoth options are also @@ -457,4 +457,14 @@ The selected transaction has no splits and cannot be opened %1$d splits in %1$s + + + %d account + %d accounts + + + + %d transaction + %d transactions +