From 80cc6d987620f5ce5adac6d89100ecff1818dbcc Mon Sep 17 00:00:00 2001 From: Ngewi Fet Date: Sat, 6 Aug 2016 16:21:11 +0200 Subject: [PATCH 1/6] Code refactoring - no functional changes Cleanup imports and remove redundant code --- .../org/gnucash/android/model/BudgetAmount.java | 2 -- .../java/org/gnucash/android/model/Price.java | 1 - .../android/ui/account/AccountFormFragment.java | 2 +- .../android/ui/account/AccountsListFragment.java | 3 +-- .../ui/account/DeleteAccountDialogFragment.java | 2 +- .../ui/budget/BudgetAmountEditorFragment.java | 1 - .../android/ui/budget/BudgetDetailFragment.java | 2 +- .../android/ui/budget/BudgetFormFragment.java | 3 --- .../android/ui/budget/BudgetListFragment.java | 2 +- .../android/ui/budget/BudgetsActivity.java | 4 ---- .../android/ui/common/BaseDrawerActivity.java | 1 - .../gnucash/android/ui/common/FormActivity.java | 2 +- .../android/ui/export/ExportFormFragment.java | 1 - .../homescreen/WidgetConfigurationActivity.java | 5 +---- .../android/ui/report/ReportsActivity.java | 2 -- .../report/barchart/StackedBarChartFragment.java | 1 - .../linechart/CashFlowLineChartFragment.java | 1 - .../ui/report/piechart/PieChartFragment.java | 1 - .../ui/report/sheet/BalanceSheetFragment.java | 6 +----- .../ui/settings/AboutPreferenceFragment.java | 2 -- .../ui/settings/BackupPreferenceFragment.java | 1 - .../android/ui/settings/BookManagerFragment.java | 3 +-- .../ui/settings/GeneralPreferenceFragment.java | 4 ---- .../settings/TransactionsPreferenceFragment.java | 3 --- .../settings/dialog/OwnCloudDialogFragment.java | 4 ++-- .../ui/transaction/ScheduledActionsActivity.java | 1 - .../ui/transaction/SplitEditorFragment.java | 2 +- .../ui/transaction/TransactionFormFragment.java | 16 +++------------- .../ui/transaction/TransactionsActivity.java | 13 +++++-------- .../ui/transaction/TransactionsListFragment.java | 4 ++-- .../dialog/BulkMoveDialogFragment.java | 4 ++-- ...sactionsDeleteConfirmationDialogFragment.java | 2 +- .../dialog/TransferFundsDialogFragment.java | 2 +- .../android/ui/util/AccountBalanceTask.java | 1 - .../ui/util/widget/CalculatorEditText.java | 3 --- .../ui/util/widget/TransactionTypeSwitch.java | 1 - .../ui/wizard/FirstRunWizardActivity.java | 5 ----- 37 files changed, 26 insertions(+), 87 deletions(-) diff --git a/app/src/main/java/org/gnucash/android/model/BudgetAmount.java b/app/src/main/java/org/gnucash/android/model/BudgetAmount.java index 714e44789..42efb56d9 100644 --- a/app/src/main/java/org/gnucash/android/model/BudgetAmount.java +++ b/app/src/main/java/org/gnucash/android/model/BudgetAmount.java @@ -18,8 +18,6 @@ import android.os.Parcel; import android.os.Parcelable; -import org.gnucash.android.app.GnuCashApplication; - import java.math.BigDecimal; /** diff --git a/app/src/main/java/org/gnucash/android/model/Price.java b/app/src/main/java/org/gnucash/android/model/Price.java index 7fde8683f..6c02e8d5e 100644 --- a/app/src/main/java/org/gnucash/android/model/Price.java +++ b/app/src/main/java/org/gnucash/android/model/Price.java @@ -2,7 +2,6 @@ import org.gnucash.android.util.TimestampHelper; - import java.math.BigDecimal; import java.math.MathContext; import java.sql.Timestamp; diff --git a/app/src/main/java/org/gnucash/android/ui/account/AccountFormFragment.java b/app/src/main/java/org/gnucash/android/ui/account/AccountFormFragment.java index d714dd150..d407db82c 100644 --- a/app/src/main/java/org/gnucash/android/ui/account/AccountFormFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/account/AccountFormFragment.java @@ -53,9 +53,9 @@ import android.widget.Spinner; import org.gnucash.android.R; +import org.gnucash.android.db.DatabaseSchema; import org.gnucash.android.db.adapter.AccountsDbAdapter; import org.gnucash.android.db.adapter.CommoditiesDbAdapter; -import org.gnucash.android.db.DatabaseSchema; import org.gnucash.android.db.adapter.DatabaseAdapter; import org.gnucash.android.model.Account; import org.gnucash.android.model.AccountType; 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 39fe510e4..b641ec659 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 @@ -51,7 +51,6 @@ import org.gnucash.android.R; import org.gnucash.android.app.GnuCashApplication; - import org.gnucash.android.db.DatabaseCursorLoader; import org.gnucash.android.db.DatabaseSchema; import org.gnucash.android.db.adapter.AccountsDbAdapter; @@ -60,10 +59,10 @@ import org.gnucash.android.model.Budget; import org.gnucash.android.model.Money; import org.gnucash.android.ui.common.FormActivity; +import org.gnucash.android.ui.common.Refreshable; import org.gnucash.android.ui.common.UxArgument; import org.gnucash.android.ui.util.AccountBalanceTask; import org.gnucash.android.ui.util.CursorRecyclerAdapter; -import org.gnucash.android.ui.common.Refreshable; import org.gnucash.android.ui.util.widget.EmptyRecyclerView; import java.util.List; diff --git a/app/src/main/java/org/gnucash/android/ui/account/DeleteAccountDialogFragment.java b/app/src/main/java/org/gnucash/android/ui/account/DeleteAccountDialogFragment.java index d2d6d7735..bc84ac4e1 100644 --- a/app/src/main/java/org/gnucash/android/ui/account/DeleteAccountDialogFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/account/DeleteAccountDialogFragment.java @@ -32,8 +32,8 @@ import org.gnucash.android.R; import org.gnucash.android.app.GnuCashApplication; -import org.gnucash.android.db.adapter.AccountsDbAdapter; import org.gnucash.android.db.DatabaseSchema; +import org.gnucash.android.db.adapter.AccountsDbAdapter; import org.gnucash.android.db.adapter.SplitsDbAdapter; import org.gnucash.android.db.adapter.TransactionsDbAdapter; import org.gnucash.android.model.AccountType; diff --git a/app/src/main/java/org/gnucash/android/ui/budget/BudgetAmountEditorFragment.java b/app/src/main/java/org/gnucash/android/ui/budget/BudgetAmountEditorFragment.java index 522ab0db7..776e1073a 100644 --- a/app/src/main/java/org/gnucash/android/ui/budget/BudgetAmountEditorFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/budget/BudgetAmountEditorFragment.java @@ -40,7 +40,6 @@ import org.gnucash.android.R; import org.gnucash.android.db.DatabaseSchema; import org.gnucash.android.db.adapter.AccountsDbAdapter; -import org.gnucash.android.db.adapter.BudgetsDbAdapter; import org.gnucash.android.model.BudgetAmount; import org.gnucash.android.model.Commodity; import org.gnucash.android.model.Money; diff --git a/app/src/main/java/org/gnucash/android/ui/budget/BudgetDetailFragment.java b/app/src/main/java/org/gnucash/android/ui/budget/BudgetDetailFragment.java index 1b783bbfb..195476f24 100644 --- a/app/src/main/java/org/gnucash/android/ui/budget/BudgetDetailFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/budget/BudgetDetailFragment.java @@ -51,9 +51,9 @@ import org.gnucash.android.model.BudgetAmount; import org.gnucash.android.model.Money; import org.gnucash.android.ui.common.FormActivity; +import org.gnucash.android.ui.common.Refreshable; import org.gnucash.android.ui.common.UxArgument; import org.gnucash.android.ui.transaction.TransactionsActivity; -import org.gnucash.android.ui.common.Refreshable; import org.gnucash.android.ui.util.widget.EmptyRecyclerView; import java.math.BigDecimal; diff --git a/app/src/main/java/org/gnucash/android/ui/budget/BudgetFormFragment.java b/app/src/main/java/org/gnucash/android/ui/budget/BudgetFormFragment.java index 18f1ff9cc..e727912f2 100644 --- a/app/src/main/java/org/gnucash/android/ui/budget/BudgetFormFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/budget/BudgetFormFragment.java @@ -21,7 +21,6 @@ import android.database.Cursor; import android.inputmethodservice.KeyboardView; import android.os.Bundle; -import android.os.Parcelable; import android.support.annotation.Nullable; import android.support.design.widget.TextInputLayout; import android.support.v4.app.Fragment; @@ -70,8 +69,6 @@ import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; -import java.util.IllegalFormatCodePointException; -import java.util.List; import butterknife.Bind; import butterknife.ButterKnife; diff --git a/app/src/main/java/org/gnucash/android/ui/budget/BudgetListFragment.java b/app/src/main/java/org/gnucash/android/ui/budget/BudgetListFragment.java index 2eacfd798..cc784ea29 100644 --- a/app/src/main/java/org/gnucash/android/ui/budget/BudgetListFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/budget/BudgetListFragment.java @@ -53,9 +53,9 @@ import org.gnucash.android.model.BudgetAmount; import org.gnucash.android.model.Money; import org.gnucash.android.ui.common.FormActivity; +import org.gnucash.android.ui.common.Refreshable; import org.gnucash.android.ui.common.UxArgument; import org.gnucash.android.ui.util.CursorRecyclerAdapter; -import org.gnucash.android.ui.common.Refreshable; import org.gnucash.android.ui.util.widget.EmptyRecyclerView; import java.math.BigDecimal; diff --git a/app/src/main/java/org/gnucash/android/ui/budget/BudgetsActivity.java b/app/src/main/java/org/gnucash/android/ui/budget/BudgetsActivity.java index ca4fa4da5..a53ac8131 100644 --- a/app/src/main/java/org/gnucash/android/ui/budget/BudgetsActivity.java +++ b/app/src/main/java/org/gnucash/android/ui/budget/BudgetsActivity.java @@ -19,8 +19,6 @@ import android.os.Bundle; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; -import android.support.v7.app.ActionBar; -import android.support.v7.widget.Toolbar; import android.view.View; import org.gnucash.android.R; @@ -29,8 +27,6 @@ import org.gnucash.android.ui.common.FormActivity; import org.gnucash.android.ui.common.UxArgument; -import butterknife.ButterKnife; - /** * Activity for managing display and editing of budgets */ diff --git a/app/src/main/java/org/gnucash/android/ui/common/BaseDrawerActivity.java b/app/src/main/java/org/gnucash/android/ui/common/BaseDrawerActivity.java index 40bc5efc8..5229c2768 100644 --- a/app/src/main/java/org/gnucash/android/ui/common/BaseDrawerActivity.java +++ b/app/src/main/java/org/gnucash/android/ui/common/BaseDrawerActivity.java @@ -46,7 +46,6 @@ import org.gnucash.android.db.DatabaseSchema; import org.gnucash.android.db.adapter.BooksDbAdapter; import org.gnucash.android.ui.account.AccountsActivity; -import org.gnucash.android.ui.budget.BudgetsActivity; import org.gnucash.android.ui.passcode.PasscodeLockActivity; import org.gnucash.android.ui.report.ReportsActivity; import org.gnucash.android.ui.settings.PreferenceActivity; diff --git a/app/src/main/java/org/gnucash/android/ui/common/FormActivity.java b/app/src/main/java/org/gnucash/android/ui/common/FormActivity.java index f6abfed8a..e078ba187 100644 --- a/app/src/main/java/org/gnucash/android/ui/common/FormActivity.java +++ b/app/src/main/java/org/gnucash/android/ui/common/FormActivity.java @@ -34,8 +34,8 @@ import org.gnucash.android.ui.budget.BudgetFormFragment; import org.gnucash.android.ui.export.ExportFormFragment; import org.gnucash.android.ui.passcode.PasscodeLockActivity; -import org.gnucash.android.ui.transaction.TransactionFormFragment; import org.gnucash.android.ui.transaction.SplitEditorFragment; +import org.gnucash.android.ui.transaction.TransactionFormFragment; import org.gnucash.android.ui.util.widget.CalculatorKeyboard; /** diff --git a/app/src/main/java/org/gnucash/android/ui/export/ExportFormFragment.java b/app/src/main/java/org/gnucash/android/ui/export/ExportFormFragment.java index b6ef46032..ea09b0e8c 100644 --- a/app/src/main/java/org/gnucash/android/ui/export/ExportFormFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/export/ExportFormFragment.java @@ -63,7 +63,6 @@ import org.gnucash.android.ui.account.AccountsActivity; import org.gnucash.android.ui.common.UxArgument; import org.gnucash.android.ui.settings.BackupPreferenceFragment; -import org.gnucash.android.ui.settings.PreferenceActivity; import org.gnucash.android.ui.settings.dialog.OwnCloudDialogFragment; import org.gnucash.android.ui.transaction.TransactionFormFragment; import org.gnucash.android.ui.util.RecurrenceParser; diff --git a/app/src/main/java/org/gnucash/android/ui/homescreen/WidgetConfigurationActivity.java b/app/src/main/java/org/gnucash/android/ui/homescreen/WidgetConfigurationActivity.java index ffd38c277..f2d40c545 100644 --- a/app/src/main/java/org/gnucash/android/ui/homescreen/WidgetConfigurationActivity.java +++ b/app/src/main/java/org/gnucash/android/ui/homescreen/WidgetConfigurationActivity.java @@ -25,7 +25,6 @@ import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.database.Cursor; -import android.os.AsyncTask; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v4.widget.SimpleCursorAdapter; @@ -41,15 +40,13 @@ import org.gnucash.android.model.Account; import org.gnucash.android.model.Money; import org.gnucash.android.receivers.TransactionAppWidgetProvider; +import org.gnucash.android.ui.account.AccountsActivity; import org.gnucash.android.ui.common.FormActivity; import org.gnucash.android.ui.common.UxArgument; -import org.gnucash.android.ui.account.AccountsActivity; import org.gnucash.android.ui.transaction.TransactionsActivity; import org.gnucash.android.util.QualifiedAccountNameCursorAdapter; import java.util.Locale; -import java.util.concurrent.Executor; -import java.util.concurrent.Executors; /** * Activity for configuration which account to display on a widget. diff --git a/app/src/main/java/org/gnucash/android/ui/report/ReportsActivity.java b/app/src/main/java/org/gnucash/android/ui/report/ReportsActivity.java index 0be7918cd..59e4a72c6 100644 --- a/app/src/main/java/org/gnucash/android/ui/report/ReportsActivity.java +++ b/app/src/main/java/org/gnucash/android/ui/report/ReportsActivity.java @@ -27,7 +27,6 @@ import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.ActionBar; -import android.support.v7.widget.Toolbar; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; @@ -52,7 +51,6 @@ import java.util.List; import butterknife.Bind; -import butterknife.ButterKnife; /** * Activity for displaying report fragments (which must implement {@link BaseReportFragment}) diff --git a/app/src/main/java/org/gnucash/android/ui/report/barchart/StackedBarChartFragment.java b/app/src/main/java/org/gnucash/android/ui/report/barchart/StackedBarChartFragment.java index 3297b2302..7408fb738 100644 --- a/app/src/main/java/org/gnucash/android/ui/report/barchart/StackedBarChartFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/report/barchart/StackedBarChartFragment.java @@ -50,7 +50,6 @@ import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; -import java.util.Locale; import java.util.Map; import butterknife.Bind; diff --git a/app/src/main/java/org/gnucash/android/ui/report/linechart/CashFlowLineChartFragment.java b/app/src/main/java/org/gnucash/android/ui/report/linechart/CashFlowLineChartFragment.java index 69670658f..40e7b18dc 100644 --- a/app/src/main/java/org/gnucash/android/ui/report/linechart/CashFlowLineChartFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/report/linechart/CashFlowLineChartFragment.java @@ -49,7 +49,6 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; -import java.util.Locale; import java.util.Map; import butterknife.Bind; diff --git a/app/src/main/java/org/gnucash/android/ui/report/piechart/PieChartFragment.java b/app/src/main/java/org/gnucash/android/ui/report/piechart/PieChartFragment.java index 7f20203f3..fab2e24be 100644 --- a/app/src/main/java/org/gnucash/android/ui/report/piechart/PieChartFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/report/piechart/PieChartFragment.java @@ -41,7 +41,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.Locale; import butterknife.Bind; diff --git a/app/src/main/java/org/gnucash/android/ui/report/sheet/BalanceSheetFragment.java b/app/src/main/java/org/gnucash/android/ui/report/sheet/BalanceSheetFragment.java index 7321f9454..ad459e301 100644 --- a/app/src/main/java/org/gnucash/android/ui/report/sheet/BalanceSheetFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/report/sheet/BalanceSheetFragment.java @@ -19,19 +19,16 @@ import android.graphics.Typeface; import android.os.Bundle; import android.support.annotation.Nullable; -import android.support.v4.app.Fragment; -import android.support.v7.app.AppCompatActivity; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.Menu; import android.view.View; -import android.view.ViewGroup; import android.widget.TableLayout; import android.widget.TextView; import org.gnucash.android.R; -import org.gnucash.android.db.adapter.AccountsDbAdapter; import org.gnucash.android.db.DatabaseSchema; +import org.gnucash.android.db.adapter.AccountsDbAdapter; import org.gnucash.android.model.AccountType; import org.gnucash.android.model.Money; import org.gnucash.android.ui.report.BaseReportFragment; @@ -42,7 +39,6 @@ import java.util.List; import butterknife.Bind; -import butterknife.ButterKnife; /** * Balance sheet report fragment diff --git a/app/src/main/java/org/gnucash/android/ui/settings/AboutPreferenceFragment.java b/app/src/main/java/org/gnucash/android/ui/settings/AboutPreferenceFragment.java index 805a44cb4..72dedf2f1 100644 --- a/app/src/main/java/org/gnucash/android/ui/settings/AboutPreferenceFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/settings/AboutPreferenceFragment.java @@ -16,7 +16,6 @@ package org.gnucash.android.ui.settings; -import android.annotation.TargetApi; import android.os.Bundle; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; @@ -25,7 +24,6 @@ import org.gnucash.android.BuildConfig; import org.gnucash.android.R; -import org.gnucash.android.db.adapter.BooksDbAdapter; import org.gnucash.android.ui.account.AccountsActivity; diff --git a/app/src/main/java/org/gnucash/android/ui/settings/BackupPreferenceFragment.java b/app/src/main/java/org/gnucash/android/ui/settings/BackupPreferenceFragment.java index f1017b550..c522c1802 100644 --- a/app/src/main/java/org/gnucash/android/ui/settings/BackupPreferenceFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/settings/BackupPreferenceFragment.java @@ -46,7 +46,6 @@ import org.gnucash.android.R; import org.gnucash.android.app.GnuCashApplication; -import org.gnucash.android.db.adapter.BooksDbAdapter; import org.gnucash.android.export.Exporter; import org.gnucash.android.export.xml.GncXmlExporter; import org.gnucash.android.importer.ImportAsyncTask; 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 40bf63069..a40749ab3 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 @@ -43,9 +43,8 @@ import org.gnucash.android.R; import org.gnucash.android.app.GnuCashApplication; import org.gnucash.android.db.DatabaseCursorLoader; -import org.gnucash.android.db.adapter.BooksDbAdapter; - import org.gnucash.android.db.DatabaseSchema.BookEntry; +import org.gnucash.android.db.adapter.BooksDbAdapter; import org.gnucash.android.ui.account.AccountsActivity; import org.gnucash.android.ui.common.Refreshable; import org.gnucash.android.util.PreferencesHelper; diff --git a/app/src/main/java/org/gnucash/android/ui/settings/GeneralPreferenceFragment.java b/app/src/main/java/org/gnucash/android/ui/settings/GeneralPreferenceFragment.java index effd9aba4..26f14fad2 100644 --- a/app/src/main/java/org/gnucash/android/ui/settings/GeneralPreferenceFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/settings/GeneralPreferenceFragment.java @@ -16,12 +16,10 @@ package org.gnucash.android.ui.settings; -import android.annotation.TargetApi; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; -import android.preference.PreferenceManager; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.support.v7.preference.CheckBoxPreference; @@ -30,8 +28,6 @@ import android.widget.Toast; import org.gnucash.android.R; -import org.gnucash.android.app.GnuCashApplication; -import org.gnucash.android.db.adapter.BooksDbAdapter; import org.gnucash.android.ui.common.UxArgument; import org.gnucash.android.ui.passcode.PasscodeLockScreenActivity; import org.gnucash.android.ui.passcode.PasscodePreferenceActivity; diff --git a/app/src/main/java/org/gnucash/android/ui/settings/TransactionsPreferenceFragment.java b/app/src/main/java/org/gnucash/android/ui/settings/TransactionsPreferenceFragment.java index 197401095..b047430cb 100644 --- a/app/src/main/java/org/gnucash/android/ui/settings/TransactionsPreferenceFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/settings/TransactionsPreferenceFragment.java @@ -16,18 +16,15 @@ package org.gnucash.android.ui.settings; -import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceFragmentCompat; -import android.support.v7.preference.PreferenceManager; import android.support.v7.preference.SwitchPreferenceCompat; import org.gnucash.android.R; -import org.gnucash.android.app.GnuCashApplication; import org.gnucash.android.db.DatabaseSchema; import org.gnucash.android.db.adapter.AccountsDbAdapter; import org.gnucash.android.db.adapter.BooksDbAdapter; diff --git a/app/src/main/java/org/gnucash/android/ui/settings/dialog/OwnCloudDialogFragment.java b/app/src/main/java/org/gnucash/android/ui/settings/dialog/OwnCloudDialogFragment.java index 26cc24b44..aa64c05c4 100644 --- a/app/src/main/java/org/gnucash/android/ui/settings/dialog/OwnCloudDialogFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/settings/dialog/OwnCloudDialogFragment.java @@ -16,15 +16,15 @@ import android.widget.EditText; import android.widget.TextView; -import com.owncloud.android.lib.common.OwnCloudClientFactory; import com.owncloud.android.lib.common.OwnCloudClient; +import com.owncloud.android.lib.common.OwnCloudClientFactory; import com.owncloud.android.lib.common.OwnCloudCredentialsFactory; import com.owncloud.android.lib.common.operations.OnRemoteOperationListener; import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.lib.common.operations.RemoteOperationResult; +import com.owncloud.android.lib.resources.files.FileUtils; import com.owncloud.android.lib.resources.status.GetRemoteStatusOperation; import com.owncloud.android.lib.resources.users.GetRemoteUserNameOperation; -import com.owncloud.android.lib.resources.files.FileUtils; import org.gnucash.android.R; diff --git a/app/src/main/java/org/gnucash/android/ui/transaction/ScheduledActionsActivity.java b/app/src/main/java/org/gnucash/android/ui/transaction/ScheduledActionsActivity.java index 87af86369..3a14b6658 100644 --- a/app/src/main/java/org/gnucash/android/ui/transaction/ScheduledActionsActivity.java +++ b/app/src/main/java/org/gnucash/android/ui/transaction/ScheduledActionsActivity.java @@ -22,7 +22,6 @@ import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; -import android.support.v7.widget.Toolbar; import org.gnucash.android.R; import org.gnucash.android.model.ScheduledAction; diff --git a/app/src/main/java/org/gnucash/android/ui/transaction/SplitEditorFragment.java b/app/src/main/java/org/gnucash/android/ui/transaction/SplitEditorFragment.java index 210a34089..8339c6bfc 100644 --- a/app/src/main/java/org/gnucash/android/ui/transaction/SplitEditorFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/transaction/SplitEditorFragment.java @@ -47,9 +47,9 @@ import net.objecthunter.exp4j.ExpressionBuilder; import org.gnucash.android.R; +import org.gnucash.android.db.DatabaseSchema; import org.gnucash.android.db.adapter.AccountsDbAdapter; import org.gnucash.android.db.adapter.CommoditiesDbAdapter; -import org.gnucash.android.db.DatabaseSchema; import org.gnucash.android.model.AccountType; import org.gnucash.android.model.BaseModel; import org.gnucash.android.model.Commodity; diff --git a/app/src/main/java/org/gnucash/android/ui/transaction/TransactionFormFragment.java b/app/src/main/java/org/gnucash/android/ui/transaction/TransactionFormFragment.java index 126bf5f19..d1ed70f90 100644 --- a/app/src/main/java/org/gnucash/android/ui/transaction/TransactionFormFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/transaction/TransactionFormFragment.java @@ -24,7 +24,6 @@ import android.database.Cursor; import android.inputmethodservice.KeyboardView; import android.os.Bundle; -import android.os.Parcelable; import android.support.annotation.NonNull; import android.support.v4.app.Fragment; import android.support.v4.widget.SimpleCursorAdapter; @@ -59,9 +58,9 @@ import org.gnucash.android.R; import org.gnucash.android.app.GnuCashApplication; -import org.gnucash.android.db.adapter.CommoditiesDbAdapter; import org.gnucash.android.db.DatabaseSchema; import org.gnucash.android.db.adapter.AccountsDbAdapter; +import org.gnucash.android.db.adapter.CommoditiesDbAdapter; import org.gnucash.android.db.adapter.DatabaseAdapter; import org.gnucash.android.db.adapter.PricesDbAdapter; import org.gnucash.android.db.adapter.ScheduledActionDbAdapter; @@ -69,7 +68,6 @@ import org.gnucash.android.model.AccountType; import org.gnucash.android.model.Commodity; import org.gnucash.android.model.Money; -import org.gnucash.android.model.Price; import org.gnucash.android.model.Recurrence; import org.gnucash.android.model.ScheduledAction; import org.gnucash.android.model.Split; @@ -87,7 +85,6 @@ import org.gnucash.android.util.QualifiedAccountNameCursorAdapter; import java.math.BigDecimal; -import java.math.RoundingMode; import java.text.DateFormat; import java.text.ParseException; import java.util.ArrayList; @@ -821,12 +818,11 @@ private void saveNewTransaction() { Transaction transaction = extractTransactionFromView(); if (mEditMode) { //if editing an existing transaction transaction.setUID(mTransaction.getUID()); - mTransaction = transaction; - } else { - mTransaction = transaction; } + mTransaction = transaction; mAccountsDbAdapter.beginTransaction(); + try { // 1) mTransactions may be existing or non-existing // 2) when mTransactions exists in the db, the splits may exist or not exist in the db @@ -956,12 +952,6 @@ public void setSplitList(List splitList){ mAmountEditText.setValue(balance.asBigDecimal()); mTransactionTypeSwitch.setChecked(balance.isNegative()); - //once we set the split list, do not allow direct editing of the total - if (mSplitsList.size() > 1){ - toggleAmountInputEntryMode(false); - setDoubleEntryViewsVisibility(View.GONE); - mOpenSplitEditor.setVisibility(View.VISIBLE); - } } diff --git a/app/src/main/java/org/gnucash/android/ui/transaction/TransactionsActivity.java b/app/src/main/java/org/gnucash/android/ui/transaction/TransactionsActivity.java index 437267507..7a071296f 100644 --- a/app/src/main/java/org/gnucash/android/ui/transaction/TransactionsActivity.java +++ b/app/src/main/java/org/gnucash/android/ui/transaction/TransactionsActivity.java @@ -25,7 +25,6 @@ import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; -import android.support.design.widget.AppBarLayout; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; @@ -33,7 +32,6 @@ import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; -import android.support.v7.widget.Toolbar; import android.text.format.DateUtils; import android.util.Log; import android.util.SparseArray; @@ -48,19 +46,19 @@ import org.gnucash.android.R; import org.gnucash.android.app.GnuCashApplication; -import org.gnucash.android.db.adapter.AccountsDbAdapter; import org.gnucash.android.db.DatabaseSchema; +import org.gnucash.android.db.adapter.AccountsDbAdapter; import org.gnucash.android.db.adapter.TransactionsDbAdapter; import org.gnucash.android.model.Account; import org.gnucash.android.model.Money; -import org.gnucash.android.ui.common.BaseDrawerActivity; -import org.gnucash.android.ui.common.FormActivity; -import org.gnucash.android.ui.common.UxArgument; import org.gnucash.android.ui.account.AccountsActivity; import org.gnucash.android.ui.account.AccountsListFragment; -import org.gnucash.android.ui.util.AccountBalanceTask; import org.gnucash.android.ui.account.OnAccountClickedListener; +import org.gnucash.android.ui.common.BaseDrawerActivity; +import org.gnucash.android.ui.common.FormActivity; import org.gnucash.android.ui.common.Refreshable; +import org.gnucash.android.ui.common.UxArgument; +import org.gnucash.android.ui.util.AccountBalanceTask; import org.gnucash.android.util.QualifiedAccountNameCursorAdapter; import org.joda.time.LocalDate; @@ -69,7 +67,6 @@ import java.util.Date; import butterknife.Bind; -import butterknife.ButterKnife; /** * Activity for displaying, creating and editing transactions diff --git a/app/src/main/java/org/gnucash/android/ui/transaction/TransactionsListFragment.java b/app/src/main/java/org/gnucash/android/ui/transaction/TransactionsListFragment.java index 00bf65843..bf1bcc5ba 100644 --- a/app/src/main/java/org/gnucash/android/ui/transaction/TransactionsListFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/transaction/TransactionsListFragment.java @@ -43,9 +43,9 @@ import org.gnucash.android.R; import org.gnucash.android.app.GnuCashApplication; -import org.gnucash.android.db.adapter.AccountsDbAdapter; import org.gnucash.android.db.DatabaseCursorLoader; import org.gnucash.android.db.DatabaseSchema; +import org.gnucash.android.db.adapter.AccountsDbAdapter; import org.gnucash.android.db.adapter.DatabaseAdapter; import org.gnucash.android.db.adapter.SplitsDbAdapter; import org.gnucash.android.db.adapter.TransactionsDbAdapter; @@ -53,12 +53,12 @@ import org.gnucash.android.model.Split; import org.gnucash.android.model.Transaction; import org.gnucash.android.ui.common.FormActivity; +import org.gnucash.android.ui.common.Refreshable; import org.gnucash.android.ui.common.UxArgument; import org.gnucash.android.ui.homescreen.WidgetConfigurationActivity; import org.gnucash.android.ui.settings.PreferenceActivity; import org.gnucash.android.ui.transaction.dialog.BulkMoveDialogFragment; import org.gnucash.android.ui.util.CursorRecyclerAdapter; -import org.gnucash.android.ui.common.Refreshable; import org.gnucash.android.ui.util.widget.EmptyRecyclerView; import java.util.List; diff --git a/app/src/main/java/org/gnucash/android/ui/transaction/dialog/BulkMoveDialogFragment.java b/app/src/main/java/org/gnucash/android/ui/transaction/dialog/BulkMoveDialogFragment.java index ca85b50e9..9771537f8 100644 --- a/app/src/main/java/org/gnucash/android/ui/transaction/dialog/BulkMoveDialogFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/transaction/dialog/BulkMoveDialogFragment.java @@ -29,13 +29,13 @@ import android.widget.Toast; import org.gnucash.android.R; -import org.gnucash.android.db.adapter.AccountsDbAdapter; import org.gnucash.android.db.DatabaseSchema; +import org.gnucash.android.db.adapter.AccountsDbAdapter; import org.gnucash.android.db.adapter.TransactionsDbAdapter; +import org.gnucash.android.ui.common.Refreshable; import org.gnucash.android.ui.common.UxArgument; import org.gnucash.android.ui.homescreen.WidgetConfigurationActivity; import org.gnucash.android.ui.transaction.TransactionsActivity; -import org.gnucash.android.ui.common.Refreshable; import org.gnucash.android.util.QualifiedAccountNameCursorAdapter; /** diff --git a/app/src/main/java/org/gnucash/android/ui/transaction/dialog/TransactionsDeleteConfirmationDialogFragment.java b/app/src/main/java/org/gnucash/android/ui/transaction/dialog/TransactionsDeleteConfirmationDialogFragment.java index 274aed6f7..7c6f04cd0 100644 --- a/app/src/main/java/org/gnucash/android/ui/transaction/dialog/TransactionsDeleteConfirmationDialogFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/transaction/dialog/TransactionsDeleteConfirmationDialogFragment.java @@ -29,8 +29,8 @@ import org.gnucash.android.db.adapter.TransactionsDbAdapter; import org.gnucash.android.export.xml.GncXmlExporter; import org.gnucash.android.model.Transaction; -import org.gnucash.android.ui.common.UxArgument; import org.gnucash.android.ui.common.Refreshable; +import org.gnucash.android.ui.common.UxArgument; import org.gnucash.android.ui.homescreen.WidgetConfigurationActivity; import java.util.ArrayList; diff --git a/app/src/main/java/org/gnucash/android/ui/transaction/dialog/TransferFundsDialogFragment.java b/app/src/main/java/org/gnucash/android/ui/transaction/dialog/TransferFundsDialogFragment.java index 3c7f3e91f..fcbe8766b 100644 --- a/app/src/main/java/org/gnucash/android/ui/transaction/dialog/TransferFundsDialogFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/transaction/dialog/TransferFundsDialogFragment.java @@ -40,8 +40,8 @@ import org.gnucash.android.model.Commodity; import org.gnucash.android.model.Money; import org.gnucash.android.model.Price; -import org.gnucash.android.ui.transaction.TransactionsActivity; import org.gnucash.android.ui.transaction.OnTransferFundsListener; +import org.gnucash.android.ui.transaction.TransactionsActivity; import org.gnucash.android.util.AmountParser; import java.math.BigDecimal; diff --git a/app/src/main/java/org/gnucash/android/ui/util/AccountBalanceTask.java b/app/src/main/java/org/gnucash/android/ui/util/AccountBalanceTask.java index 3fe905032..e16b21da3 100644 --- a/app/src/main/java/org/gnucash/android/ui/util/AccountBalanceTask.java +++ b/app/src/main/java/org/gnucash/android/ui/util/AccountBalanceTask.java @@ -23,7 +23,6 @@ import com.crashlytics.android.Crashlytics; -import org.gnucash.android.app.GnuCashApplication; import org.gnucash.android.db.adapter.AccountsDbAdapter; import org.gnucash.android.model.Money; import org.gnucash.android.ui.transaction.TransactionsActivity; diff --git a/app/src/main/java/org/gnucash/android/ui/util/widget/CalculatorEditText.java b/app/src/main/java/org/gnucash/android/ui/util/widget/CalculatorEditText.java index f3f3b5c60..69a778906 100644 --- a/app/src/main/java/org/gnucash/android/ui/util/widget/CalculatorEditText.java +++ b/app/src/main/java/org/gnucash/android/ui/util/widget/CalculatorEditText.java @@ -30,7 +30,6 @@ import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; -import android.widget.TextView; import com.crashlytics.android.Crashlytics; @@ -39,8 +38,6 @@ import org.gnucash.android.R; import org.gnucash.android.app.GnuCashApplication; -import org.gnucash.android.model.Money; -import org.gnucash.android.db.adapter.CommoditiesDbAdapter; import org.gnucash.android.model.Commodity; import org.gnucash.android.ui.common.FormActivity; import org.gnucash.android.util.AmountParser; diff --git a/app/src/main/java/org/gnucash/android/ui/util/widget/TransactionTypeSwitch.java b/app/src/main/java/org/gnucash/android/ui/util/widget/TransactionTypeSwitch.java index c8fc18840..ead7c15b6 100644 --- a/app/src/main/java/org/gnucash/android/ui/util/widget/TransactionTypeSwitch.java +++ b/app/src/main/java/org/gnucash/android/ui/util/widget/TransactionTypeSwitch.java @@ -20,7 +20,6 @@ import android.support.v7.widget.SwitchCompat; import android.util.AttributeSet; import android.widget.CompoundButton; -import android.widget.EditText; import android.widget.TextView; import org.gnucash.android.R; diff --git a/app/src/main/java/org/gnucash/android/ui/wizard/FirstRunWizardActivity.java b/app/src/main/java/org/gnucash/android/ui/wizard/FirstRunWizardActivity.java index d6ffd8cf7..04b67ecad 100644 --- a/app/src/main/java/org/gnucash/android/ui/wizard/FirstRunWizardActivity.java +++ b/app/src/main/java/org/gnucash/android/ui/wizard/FirstRunWizardActivity.java @@ -37,9 +37,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.Button; -import android.widget.Toast; -import com.crashlytics.android.Crashlytics; import com.tech.freak.wizardpager.model.AbstractWizardModel; import com.tech.freak.wizardpager.model.ModelCallbacks; import com.tech.freak.wizardpager.model.Page; @@ -51,12 +49,9 @@ import org.gnucash.android.R; import org.gnucash.android.app.GnuCashApplication; import org.gnucash.android.db.adapter.BooksDbAdapter; -import org.gnucash.android.importer.ImportAsyncTask; import org.gnucash.android.ui.account.AccountsActivity; import org.gnucash.android.ui.util.TaskDelegate; -import java.io.FileNotFoundException; -import java.io.InputStream; import java.util.ArrayList; import java.util.List; From 0415d936683f416a2bb778a949961defd0fbc12b Mon Sep 17 00:00:00 2001 From: Ngewi Fet Date: Tue, 9 Aug 2016 10:37:12 +0200 Subject: [PATCH 2/6] Fixes #536 - bug where a new scheduled export is automatically created with every export Ensure that wakelock gets released when scheduler service is destroyed, regardless of export outcome - #535 --- .../android/model/ScheduledAction.java | 4 ++- .../android/service/SchedulerService.java | 26 +++++++++++++------ .../android/ui/export/ExportFormFragment.java | 17 +++++++----- 3 files changed, 32 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/org/gnucash/android/model/ScheduledAction.java b/app/src/main/java/org/gnucash/android/model/ScheduledAction.java index e3a9a15d6..55dc5656a 100644 --- a/app/src/main/java/org/gnucash/android/model/ScheduledAction.java +++ b/app/src/main/java/org/gnucash/android/model/ScheduledAction.java @@ -15,6 +15,8 @@ */ package org.gnucash.android.model; +import android.support.annotation.NonNull; + import org.joda.time.LocalDate; import java.sql.Timestamp; @@ -430,7 +432,7 @@ public Recurrence getRecurrence() { *

This also sets the start period of the recurrence object, if there is one

* @param recurrence {@link Recurrence} object */ - public void setRecurrence(Recurrence recurrence) { + public void setRecurrence(@NonNull Recurrence recurrence) { this.mRecurrence = recurrence; //if we were parsing XML and parsed the start and end date from the scheduled action first, //then use those over the values which might be gotten from the recurrence diff --git a/app/src/main/java/org/gnucash/android/service/SchedulerService.java b/app/src/main/java/org/gnucash/android/service/SchedulerService.java index dd4802c3c..39172109d 100644 --- a/app/src/main/java/org/gnucash/android/service/SchedulerService.java +++ b/app/src/main/java/org/gnucash/android/service/SchedulerService.java @@ -51,20 +51,32 @@ public class SchedulerService extends IntentService { public static final String LOG_TAG = "SchedulerService"; /** - * Creates an IntentService - * + * Wake lock for keeping the CPU on while export is in progress */ + PowerManager.WakeLock mWakeLock; + public SchedulerService() { super(LOG_TAG); } + @Override + public void onCreate() { + super.onCreate(); + PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); + mWakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, LOG_TAG); + mWakeLock.acquire(); + } + + @Override + public void onDestroy() { + super.onDestroy(); + if (mWakeLock.isHeld()) + mWakeLock.release(); //whenever this service is destroyed, release the lock + } + @Override protected void onHandleIntent(Intent intent) { Log.i(LOG_TAG, "Starting scheduled action service"); - PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); - PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, - LOG_TAG); - wakeLock.acquire(); ScheduledActionDbAdapter scheduledActionDbAdapter = GnuCashApplication.getScheduledEventDbAdapter(); List scheduledActions = scheduledActionDbAdapter.getAllEnabledScheduledActions(); @@ -87,8 +99,6 @@ protected void onHandleIntent(Intent intent) { } Log.i(LOG_TAG, "Completed service @ " + SystemClock.elapsedRealtime()); - - wakeLock.release(); } /** diff --git a/app/src/main/java/org/gnucash/android/ui/export/ExportFormFragment.java b/app/src/main/java/org/gnucash/android/ui/export/ExportFormFragment.java index ea09b0e8c..5ff639421 100644 --- a/app/src/main/java/org/gnucash/android/ui/export/ExportFormFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/export/ExportFormFragment.java @@ -273,15 +273,17 @@ private void startExport(){ exportParameters.setExportTarget(mExportTarget); exportParameters.setDeleteTransactionsAfterExport(mDeleteAllCheckBox.isChecked()); - ScheduledAction scheduledAction = new ScheduledAction(ScheduledAction.ActionType.BACKUP); - scheduledAction.setRecurrence(RecurrenceParser.parse(mEventRecurrence)); - scheduledAction.setTag(exportParameters.toCsv()); - scheduledAction.setActionUID(BaseModel.generateUID()); - ScheduledActionDbAdapter.getInstance().addRecord(scheduledAction, DatabaseAdapter.UpdateMethod.insert); - Log.i(TAG, "Commencing async export of transactions"); new ExportAsyncTask(getActivity()).execute(exportParameters); + if (mRecurrenceRule != null) { + ScheduledAction scheduledAction = new ScheduledAction(ScheduledAction.ActionType.BACKUP); + scheduledAction.setRecurrence(RecurrenceParser.parse(mEventRecurrence)); + scheduledAction.setTag(exportParameters.toCsv()); + scheduledAction.setActionUID(BaseModel.generateUID()); + ScheduledActionDbAdapter.getInstance().addRecord(scheduledAction, DatabaseAdapter.UpdateMethod.insert); + } + int position = mDestinationSpinner.getSelectedItemPosition(); PreferenceManager.getDefaultSharedPreferences(getActivity()) .edit().putInt(getString(R.string.key_last_export_destination), position) @@ -292,6 +294,9 @@ private void startExport(){ //getActivity().finish(); } + /** + * Bind views to actions when initializing the export form + */ private void bindViewListeners(){ // export destination bindings ArrayAdapter adapter = ArrayAdapter.createFromResource(getActivity(), From d3e9dcee9fe857c7f385427120ba8921a448138a Mon Sep 17 00:00:00 2001 From: Ngewi Fet Date: Tue, 9 Aug 2016 12:44:34 +0200 Subject: [PATCH 3/6] Bugfix #534 - "787 foreign key constraint" error during importing GnuCash XML Caused by imbalance splits generated from scheduled transactions not being assigned the correct imbalance accounts fixes #534 --- .../main/java/org/gnucash/android/importer/GncXmlHandler.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/java/org/gnucash/android/importer/GncXmlHandler.java b/app/src/main/java/org/gnucash/android/importer/GncXmlHandler.java index 4a610ea6a..f77eacf9c 100644 --- a/app/src/main/java/org/gnucash/android/importer/GncXmlHandler.java +++ b/app/src/main/java/org/gnucash/android/importer/GncXmlHandler.java @@ -1097,6 +1097,10 @@ private int generateMissedScheduledTransactions(ScheduledAction scheduledAction) transaction.setTime(lastRuntime); transaction.setScheduledActionUID(scheduledAction.getUID()); mTransactionList.add(transaction); + //autobalance splits are generated with the currency of the transactions as the GUID + //so we add them to the mAutoBalanceSplits which will be updated to real GUIDs before saving + List autoBalanceSplits = transaction.getSplits(transaction.getCurrencyCode()); + mAutoBalanceSplits.addAll(autoBalanceSplits); scheduledAction.setExecutionCount(scheduledAction.getExecutionCount() + 1); ++generatedTransactionCount; break; From b522690da10fe1f7922ebad85df85f894f438891 Mon Sep 17 00:00:00 2001 From: Ngewi Fet Date: Tue, 9 Aug 2016 15:58:04 +0200 Subject: [PATCH 4/6] Fix: transfer account selector not shown when new book is created - fixes #537 Fix: book database file not deleted when book is deleted (only the entry was deleted) --- .../org/gnucash/android/importer/ImportAsyncTask.java | 11 +++++++---- .../android/ui/settings/BookManagerFragment.java | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/gnucash/android/importer/ImportAsyncTask.java b/app/src/main/java/org/gnucash/android/importer/ImportAsyncTask.java index b6b2231d2..6f1656d24 100644 --- a/app/src/main/java/org/gnucash/android/importer/ImportAsyncTask.java +++ b/app/src/main/java/org/gnucash/android/importer/ImportAsyncTask.java @@ -19,8 +19,8 @@ import android.app.Activity; import android.app.ProgressDialog; import android.content.ContentValues; +import android.content.Context; import android.database.Cursor; -import android.database.sqlite.SQLiteDatabase; import android.net.Uri; import android.os.AsyncTask; import android.os.Build; @@ -32,14 +32,11 @@ import org.gnucash.android.R; import org.gnucash.android.app.GnuCashApplication; -import org.gnucash.android.db.DatabaseHelper; import org.gnucash.android.db.DatabaseSchema; -import org.gnucash.android.db.adapter.AccountsDbAdapter; import org.gnucash.android.db.adapter.BooksDbAdapter; import org.gnucash.android.ui.account.AccountsActivity; import org.gnucash.android.ui.util.TaskDelegate; -import java.io.File; import java.io.InputStream; /** @@ -122,6 +119,12 @@ public void run() { cursor.close(); } + //set the preferences to their default values + mContext.getSharedPreferences(bookUID, Context.MODE_PRIVATE) + .edit() + .putBoolean(mContext.getString(R.string.key_use_double_entry), true) + .apply(); + ((GnuCashApplication)mContext.getApplication()).loadBook(bookUID); return true; 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 a40749ab3..d0a11d0e1 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 @@ -200,6 +200,7 @@ public void onClick(View v) { @Override public void onClick(DialogInterface dialog, int which) { BooksDbAdapter.getInstance().deleteRecord(bookUID); + mContext.deleteDatabase(bookUID); refresh(); } }); From 0fd12f92d7c0101b231d45bc2607cac904bacc9f Mon Sep 17 00:00:00 2001 From: Ngewi Fet Date: Tue, 9 Aug 2016 17:23:33 +0200 Subject: [PATCH 5/6] Fix: accounts list not updated after initial creation of default accounts Make code more robust against "no active book" database state errors Improve transaction test reliability --- .../test/ui/TransactionsActivityTest.java | 4 +++- .../android/app/GnuCashApplication.java | 2 +- .../android/db/adapter/BooksDbAdapter.java | 9 +++++++- .../android/importer/ImportAsyncTask.java | 21 +++++++------------ .../android/ui/account/AccountsActivity.java | 3 ++- .../ui/account/AccountsListFragment.java | 4 ++++ .../android/ui/common/BaseDrawerActivity.java | 4 ++-- 7 files changed, 27 insertions(+), 20 deletions(-) diff --git a/app/src/androidTest/java/org/gnucash/android/test/ui/TransactionsActivityTest.java b/app/src/androidTest/java/org/gnucash/android/test/ui/TransactionsActivityTest.java index e2813839b..2766da8ec 100644 --- a/app/src/androidTest/java/org/gnucash/android/test/ui/TransactionsActivityTest.java +++ b/app/src/androidTest/java/org/gnucash/android/test/ui/TransactionsActivityTest.java @@ -591,13 +591,15 @@ public void testMoveTransaction(){ @Test public void editingSplit_shouldNotSetAmountToZero(){ setDoubleEntryEnabled(true); + setDefaultTransactionType(TransactionType.DEBIT); + mTransactionsDbAdapter.deleteAllRecords(); Account account = new Account("Z Account", Commodity.getInstance(CURRENCY_CODE)); mAccountsDbAdapter.addRecord(account, DatabaseAdapter.UpdateMethod.insert); + //create new transaction "Transaction Acct" --> "Transfer Account" onView(withId(R.id.fab_create_transaction)).perform(click()); - onView(withId(R.id.input_transaction_name)).perform(typeText("Test Split")); onView(withId(R.id.input_transaction_amount)).perform(typeText("1024")); diff --git a/app/src/main/java/org/gnucash/android/app/GnuCashApplication.java b/app/src/main/java/org/gnucash/android/app/GnuCashApplication.java index 518de619d..3f5b228db 100644 --- a/app/src/main/java/org/gnucash/android/app/GnuCashApplication.java +++ b/app/src/main/java/org/gnucash/android/app/GnuCashApplication.java @@ -210,7 +210,7 @@ public static BooksDbAdapter getBooksDbAdapter(){ * Loads the book with GUID {@code bookUID} * @param bookUID GUID of the book to be loaded */ - public static void loadBook(String bookUID){ + public static void loadBook(@NonNull String bookUID){ mBooksDbAdapter.setActive(bookUID); initDatabaseAdapters(); AccountsActivity.start(getAppContext()); diff --git a/app/src/main/java/org/gnucash/android/db/adapter/BooksDbAdapter.java b/app/src/main/java/org/gnucash/android/db/adapter/BooksDbAdapter.java index 4306dc17a..bc6116e76 100644 --- a/app/src/main/java/org/gnucash/android/db/adapter/BooksDbAdapter.java +++ b/app/src/main/java/org/gnucash/android/db/adapter/BooksDbAdapter.java @@ -94,9 +94,14 @@ public Book buildModelInstance(@NonNull Cursor cursor) { /** * Sets the book with unique identifier {@code uid} as active and all others as inactive + *

If the parameter is null, then the currently active book is not changed

* @param bookUID Unique identifier of the book + * @return GUID of the currently active book */ - public void setActive(String bookUID){ + public String setActive(@NonNull String bookUID){ + if (bookUID == null) + return BooksDbAdapter.getInstance().getActiveBookUID(); + ContentValues contentValues = new ContentValues(); contentValues.put(BookEntry.COLUMN_ACTIVE, 0); mDb.update(mTableName, contentValues, null, null); //disable all @@ -104,6 +109,8 @@ public void setActive(String bookUID){ contentValues.clear(); contentValues.put(BookEntry.COLUMN_ACTIVE, 1); mDb.update(mTableName, contentValues, BookEntry.COLUMN_UID + " = ?", new String[]{bookUID}); + + return bookUID; } /** diff --git a/app/src/main/java/org/gnucash/android/importer/ImportAsyncTask.java b/app/src/main/java/org/gnucash/android/importer/ImportAsyncTask.java index 6f1656d24..0e3891aed 100644 --- a/app/src/main/java/org/gnucash/android/importer/ImportAsyncTask.java +++ b/app/src/main/java/org/gnucash/android/importer/ImportAsyncTask.java @@ -34,7 +34,6 @@ import org.gnucash.android.app.GnuCashApplication; import org.gnucash.android.db.DatabaseSchema; import org.gnucash.android.db.adapter.BooksDbAdapter; -import org.gnucash.android.ui.account.AccountsActivity; import org.gnucash.android.ui.util.TaskDelegate; import java.io.InputStream; @@ -48,6 +47,8 @@ public class ImportAsyncTask extends AsyncTask { private TaskDelegate mDelegate; private ProgressDialog mProgressDialog; + private String mImportedBookUID; + public ImportAsyncTask(Activity context){ this.mContext = context; } @@ -76,10 +77,9 @@ protected void onPreExecute() { @Override protected Boolean doInBackground(Uri... uris) { - String bookUID = null; try { InputStream accountInputStream = mContext.getContentResolver().openInputStream(uris[0]); - bookUID = GncXmlImporter.parse(accountInputStream); + mImportedBookUID = GncXmlImporter.parse(accountInputStream); } catch (Exception exception){ Log.e(ImportAsyncTask.class.getName(), "" + exception.getMessage()); @@ -98,12 +98,6 @@ public void run() { } }); - //a database is always created at the beginning of import - //if there was an error during import, delete the created database - if (bookUID != null) { - mContext.deleteDatabase(bookUID); - } - return false; } @@ -114,19 +108,17 @@ public void run() { ContentValues contentValues = new ContentValues(); contentValues.put(DatabaseSchema.BookEntry.COLUMN_DISPLAY_NAME, displayName); contentValues.put(DatabaseSchema.BookEntry.COLUMN_SOURCE_URI, uris[0].toString()); - BooksDbAdapter.getInstance().updateRecord(bookUID, contentValues); + BooksDbAdapter.getInstance().updateRecord(mImportedBookUID, contentValues); cursor.close(); } //set the preferences to their default values - mContext.getSharedPreferences(bookUID, Context.MODE_PRIVATE) + mContext.getSharedPreferences(mImportedBookUID, Context.MODE_PRIVATE) .edit() .putBoolean(mContext.getString(R.string.key_use_double_entry), true) .apply(); - ((GnuCashApplication)mContext.getApplication()).loadBook(bookUID); - return true; } @@ -148,6 +140,7 @@ protected void onPostExecute(Boolean importSuccess) { int message = importSuccess ? R.string.toast_success_importing_accounts : R.string.toast_error_importing_accounts; Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show(); - AccountsActivity.start(mContext); + if (mImportedBookUID != null) + GnuCashApplication.loadBook(mImportedBookUID); } } 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 827c91dc1..f32dfe62b 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 @@ -377,10 +377,11 @@ private void init() { boolean firstRun = prefs.getBoolean(getString(R.string.key_first_run), true); if (firstRun){ - startActivity(new Intent(this, FirstRunWizardActivity.class)); + startActivity(new Intent(GnuCashApplication.getAppContext(), FirstRunWizardActivity.class)); //default to using double entry and save the preference explicitly prefs.edit().putBoolean(getString(R.string.key_use_double_entry), true).apply(); + finish(); } else { getSDWritePermission(); } 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 b641ec659..6004729e9 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 @@ -288,6 +288,10 @@ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { @Override + /** + * Refresh the account list as a sublist of another account + * @param parentAccountUID GUID of the parent account + */ public void refresh(String parentAccountUID) { getArguments().putString(UxArgument.PARENT_ACCOUNT_UID, parentAccountUID); refresh(); diff --git a/app/src/main/java/org/gnucash/android/ui/common/BaseDrawerActivity.java b/app/src/main/java/org/gnucash/android/ui/common/BaseDrawerActivity.java index 5229c2768..eee5966c3 100644 --- a/app/src/main/java/org/gnucash/android/ui/common/BaseDrawerActivity.java +++ b/app/src/main/java/org/gnucash/android/ui/common/BaseDrawerActivity.java @@ -297,7 +297,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) { case AccountsActivity.REQUEST_PICK_ACCOUNTS_FILE: AccountsActivity.importXmlFileFromIntent(this, data, null); break; - case BaseDrawerActivity.REQUEST_OPEN_DOCUMENT: + case BaseDrawerActivity.REQUEST_OPEN_DOCUMENT: //this uses the Storage Access Framework final int takeFlags = data.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION); AccountsActivity.importXmlFileFromIntent(this, data, null); @@ -322,7 +322,7 @@ public boolean onMenuItemClick(MenuItem item) { BooksDbAdapter booksDbAdapter = BooksDbAdapter.getInstance(); String bookUID = booksDbAdapter.getUID(id); if (!bookUID.equals(booksDbAdapter.getActiveBookUID())){ - ((GnuCashApplication) getApplication()).loadBook(bookUID); + GnuCashApplication.loadBook(bookUID); finish(); } AccountsActivity.start(GnuCashApplication.getAppContext()); From 1b4ce12e0dc6b5beeac56b77717899a383030752 Mon Sep 17 00:00:00 2001 From: Ngewi Fet Date: Tue, 9 Aug 2016 18:12:27 +0200 Subject: [PATCH 6/6] Update version string for v2.1.0-beta2 release --- CONTRIBUTORS | 1 + app/build.gradle | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 2c70b48bf..a2db1919b 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -30,3 +30,4 @@ Spanti Nicola Jesse Shieh Terry Chung Caesar Wirth +Alceu Rodrigues Neto diff --git a/app/build.gradle b/app/build.gradle index d6bc5717c..2ec111a7e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -7,7 +7,7 @@ apply plugin: 'io.fabric' def versionMajor = 2 def versionMinor = 1 def versionPatch = 0 -def versionBuild = 1 +def versionBuild = 2 def buildTime() { def df = new SimpleDateFormat("yyyyMMdd HH:mm 'UTC'")