From 0c91287588a6704ea44531d277614125f8343d9e Mon Sep 17 00:00:00 2001 From: Matthew Hague Date: Thu, 9 Oct 2014 22:38:32 +0100 Subject: [PATCH 1/8] added check to input formatter to only update the text if it changed since the last update --- app/src/org/gnucash/android/ui/util/AmountInputFormatter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/org/gnucash/android/ui/util/AmountInputFormatter.java b/app/src/org/gnucash/android/ui/util/AmountInputFormatter.java index 5e90b50da..abead0c4b 100644 --- a/app/src/org/gnucash/android/ui/util/AmountInputFormatter.java +++ b/app/src/org/gnucash/android/ui/util/AmountInputFormatter.java @@ -47,7 +47,7 @@ public AmountInputFormatter(EditText amountInput) { @Override public void afterTextChanged(Editable s) { - if (s.length() == 0) + if (s.length() == 0 || s.toString().equals(current)) return; //make sure that the sign of the input is in line with the type button state BigDecimal amount = TransactionFormFragment.parseInputToDecimal(s.toString()); From ade07dd6339597d8f1b4358710ae52afbb61d35e Mon Sep 17 00:00:00 2001 From: Yongxin Wang Date: Sat, 18 Oct 2014 10:01:39 +0800 Subject: [PATCH 2/8] Correct double account condition --- .../android/ui/transaction/TransactionFormFragment.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/org/gnucash/android/ui/transaction/TransactionFormFragment.java b/app/src/org/gnucash/android/ui/transaction/TransactionFormFragment.java index 2a413acc9..4e2f46129 100644 --- a/app/src/org/gnucash/android/ui/transaction/TransactionFormFragment.java +++ b/app/src/org/gnucash/android/ui/transaction/TransactionFormFragment.java @@ -343,15 +343,15 @@ private void initializeViewsWithTransaction(){ //if there are more than two splits (which is the default for one entry), then //disable editing of the transfer account. User should open editor - if (mTransaction.getSplits().size() > 2) { - setAmountEditViewVisible(View.GONE); - } else { + if (mSplitsList.size() == 2 && mSplitsList.get(0).isPairOf(mSplitsList.get(1))) { for (Split split : mTransaction.getSplits()) { //two splits, one belongs to this account and the other to another account if (mUseDoubleEntry && !split.getAccountUID().equals(mAccountUID)) { setSelectedTransferAccount(mAccountsDbAdapter.getAccountID(split.getAccountUID())); } } + } else { + setAmountEditViewVisible(View.GONE); } mSplitsList = new ArrayList(mTransaction.getSplits()); //we need a copy so we can modify with impunity mAmountEditText.setEnabled(mSplitsList.size() <= 2); From 8eba403570f695a672e440503401b5562e58384d Mon Sep 17 00:00:00 2001 From: Yongxin Wang Date: Sat, 18 Oct 2014 10:12:43 +0800 Subject: [PATCH 3/8] remove toggle button when double entry is enabled --- .../android/ui/transaction/TransactionFormFragment.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/org/gnucash/android/ui/transaction/TransactionFormFragment.java b/app/src/org/gnucash/android/ui/transaction/TransactionFormFragment.java index 4e2f46129..e54cd5427 100644 --- a/app/src/org/gnucash/android/ui/transaction/TransactionFormFragment.java +++ b/app/src/org/gnucash/android/ui/transaction/TransactionFormFragment.java @@ -351,7 +351,9 @@ private void initializeViewsWithTransaction(){ } } } else { - setAmountEditViewVisible(View.GONE); + if (mUseDoubleEntry) { + setAmountEditViewVisible(View.GONE); + } } mSplitsList = new ArrayList(mTransaction.getSplits()); //we need a copy so we can modify with impunity mAmountEditText.setEnabled(mSplitsList.size() <= 2); From f4624eecb51f74ed0db496f4eda9bf76299b59f6 Mon Sep 17 00:00:00 2001 From: Yongxin Wang Date: Sun, 9 Nov 2014 10:05:52 +0800 Subject: [PATCH 4/8] Correct escape strrings. --- app/src/org/gnucash/android/db/TransactionsDbAdapter.java | 8 ++------ .../android/ui/transaction/TransactionFormFragment.java | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/app/src/org/gnucash/android/db/TransactionsDbAdapter.java b/app/src/org/gnucash/android/db/TransactionsDbAdapter.java index e27d7269d..5820adf9f 100644 --- a/app/src/org/gnucash/android/db/TransactionsDbAdapter.java +++ b/app/src/org/gnucash/android/db/TransactionsDbAdapter.java @@ -546,14 +546,10 @@ public Cursor fetchRecord(long rowId) { * @return Cursor to the data set containing all matching transactions */ public Cursor fetchTransactionsStartingWith(String prefix){ - StringBuffer stringBuffer = new StringBuffer(TransactionEntry.COLUMN_DESCRIPTION) - .append(" LIKE '").append(prefix).append("%'"); - String selection = stringBuffer.toString(); - return mDb.query(TransactionEntry.TABLE_NAME, new String[]{TransactionEntry._ID, TransactionEntry.COLUMN_DESCRIPTION}, - selection, - null, null, null, + TransactionEntry.COLUMN_DESCRIPTION + " LIKE ?", + new String[]{prefix+"%"}, null, null, TransactionEntry.COLUMN_DESCRIPTION + " ASC"); } diff --git a/app/src/org/gnucash/android/ui/transaction/TransactionFormFragment.java b/app/src/org/gnucash/android/ui/transaction/TransactionFormFragment.java index e54cd5427..f31827f7a 100644 --- a/app/src/org/gnucash/android/ui/transaction/TransactionFormFragment.java +++ b/app/src/org/gnucash/android/ui/transaction/TransactionFormFragment.java @@ -284,7 +284,7 @@ public CharSequence convertToString(Cursor cursor) { adapter.setFilterQueryProvider(new FilterQueryProvider() { @Override public Cursor runQuery(CharSequence name) { - return mTransactionsDbAdapter.fetchTransactionsStartingWith(name.toString()); + return mTransactionsDbAdapter.fetchTransactionsStartingWith(name==null?"":name.toString()); } }); From 0f121edb68f2f04e957bc9433e7531140a0bbe16 Mon Sep 17 00:00:00 2001 From: Yongxin Wang Date: Sun, 9 Nov 2014 11:03:45 +0800 Subject: [PATCH 5/8] Update full name when account name changed --- .../ui/account/AccountFormFragment.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/app/src/org/gnucash/android/ui/account/AccountFormFragment.java b/app/src/org/gnucash/android/ui/account/AccountFormFragment.java index 91d5136ad..eb7f58716 100644 --- a/app/src/org/gnucash/android/ui/account/AccountFormFragment.java +++ b/app/src/org/gnucash/android/ui/account/AccountFormFragment.java @@ -554,10 +554,10 @@ private void loadParentAccountList(AccountType accountType){ if (mAccount != null){ //if editing an account mDescendantAccountUIDs = mAccountsDbAdapter.getDescendantAccountUIDs(mAccount.getUID(), null, null); - mDescendantAccountUIDs.add(mAccountUID); //cannot set self as parent // limit cyclic account hierarchies. condition += " AND (" + DatabaseSchema.AccountEntry.COLUMN_PARENT_ACCOUNT_UID + " IS NULL " - + " OR " + DatabaseSchema.AccountEntry.COLUMN_UID + " NOT IN ( '" + TextUtils.join("','", mDescendantAccountUIDs) + "' ) )"; + + " OR " + DatabaseSchema.AccountEntry.COLUMN_UID + " NOT IN ( '" + + TextUtils.join("','", mDescendantAccountUIDs) + "','" + mAccountUID + "' ) )"; } //if we are reloading the list, close the previous cursor first @@ -684,6 +684,7 @@ public void onDestroy() { private void saveAccount() { // accounts to update, in case we're updating full names of a sub account tree ArrayList accountsToUpdate = new ArrayList(); + boolean nameChanged = false; if (mAccount == null){ String name = getEnteredName(); if (name == null || name.length() == 0){ @@ -694,8 +695,10 @@ private void saveAccount() { } mAccount = new Account(getEnteredName()); } - else - mAccount.setName(getEnteredName()); + else { + nameChanged = !mAccount.getName().equals(getEnteredName()); + mAccount.setName(getEnteredName()); + } String curCode = mCurrencyCodes.get(mCurrencySpinner .getSelectedItemPosition()); @@ -730,8 +733,8 @@ private void saveAccount() { long parentAccountId = mAccountsDbAdapter.getID(mParentAccountUID); // update full names - if (mDescendantAccountUIDs == null || newParentAccountId != parentAccountId) { - // new Account or parent account changed + if (nameChanged || mDescendantAccountUIDs == null || newParentAccountId != parentAccountId) { + // current account name changed or new Account or parent account changed String newAccountFullName; if (newParentAccountId == mRootAccountId){ newAccountFullName = mAccount.getName(); @@ -742,8 +745,8 @@ private void saveAccount() { } mAccount.setFullName(newAccountFullName); if (mDescendantAccountUIDs != null) { - // modifying existing account - if (parentAccountId != newParentAccountId && mDescendantAccountUIDs.size() > 0) { + // modifying existing account, e.t. name changed and/or parent changed + if ((nameChanged || parentAccountId != newParentAccountId) && mDescendantAccountUIDs.size() > 0) { // parent change, update all full names of descent accounts accountsToUpdate.addAll(mAccountsDbAdapter.getSimpleAccountList( DatabaseSchema.AccountEntry.COLUMN_UID + " IN ('" + From 33e4267919ff29071c24135633b6f2d41bc6a9b2 Mon Sep 17 00:00:00 2001 From: Ngewi Fet Date: Fri, 23 Jan 2015 10:32:31 +0100 Subject: [PATCH 6/8] Added support for trading accounts Should fix crashes during import due to trading account missing - closes #272 --- app/res/values-de/strings.xml | 1 + app/res/values-el/strings.xml | 1 + app/res/values-es-rMX/strings.xml | 1 + app/res/values-es/strings.xml | 1 + app/res/values-fr/strings.xml | 1 + app/res/values-hu/strings.xml | 1 + app/res/values-it/strings.xml | 1 + app/res/values-nb/strings.xml | 1 + app/res/values-nl/strings.xml | 1 + app/res/values-pt-rBR/strings.xml | 1 + app/res/values-ru/strings.xml | 1 + app/res/values-zh/strings.xml | 1 + app/res/values/key_strings.xml | 1 + app/res/values/strings.xml | 1 + app/src/org/gnucash/android/model/AccountType.java | 2 +- .../gnucash/android/ui/util/TransactionTypeToggleButton.java | 1 + 16 files changed, 16 insertions(+), 1 deletion(-) diff --git a/app/res/values-de/strings.xml b/app/res/values-de/strings.xml index 8bb64a179..fcd0d7d4d 100644 --- a/app/res/values-de/strings.xml +++ b/app/res/values-de/strings.xml @@ -364,6 +364,7 @@ WÄHRUNG AKTIENKONTO INVESTMENTFONDS + TRADING QIF diff --git a/app/res/values-el/strings.xml b/app/res/values-el/strings.xml index 001b3eb86..7ecd03097 100644 --- a/app/res/values-el/strings.xml +++ b/app/res/values-el/strings.xml @@ -379,6 +379,7 @@ ΝΟΜΙΣΜΑ ΜΕΤΟΧΗ ΑΜΟΙΒΑΙΟ ΚΕΦΑΛΑΙΟ + TRADING QIF diff --git a/app/res/values-es-rMX/strings.xml b/app/res/values-es-rMX/strings.xml index 478058cda..a1a311d8e 100644 --- a/app/res/values-es-rMX/strings.xml +++ b/app/res/values-es-rMX/strings.xml @@ -364,6 +364,7 @@ DIVISA ACCIONES FONDOS + TRADING QIF diff --git a/app/res/values-es/strings.xml b/app/res/values-es/strings.xml index 9ff3b5934..1fd5b2bf7 100644 --- a/app/res/values-es/strings.xml +++ b/app/res/values-es/strings.xml @@ -364,6 +364,7 @@ DIVISA ACCIONES FONDOS + TRADING QIF diff --git a/app/res/values-fr/strings.xml b/app/res/values-fr/strings.xml index afa76eda5..df6536761 100644 --- a/app/res/values-fr/strings.xml +++ b/app/res/values-fr/strings.xml @@ -362,6 +362,7 @@ DEVISES ACTIONS FONDS COMMUNS + TRADING QIF diff --git a/app/res/values-hu/strings.xml b/app/res/values-hu/strings.xml index 34f1c293a..9fc0013e4 100644 --- a/app/res/values-hu/strings.xml +++ b/app/res/values-hu/strings.xml @@ -366,6 +366,7 @@ CURRENCY STOCK MUTUAL FUND + TRADING QIF diff --git a/app/res/values-it/strings.xml b/app/res/values-it/strings.xml index dd4a4b39a..d635b32fb 100644 --- a/app/res/values-it/strings.xml +++ b/app/res/values-it/strings.xml @@ -366,6 +366,7 @@ VALUTA AZIONE FONDO COMUNE + TRADING QIF diff --git a/app/res/values-nb/strings.xml b/app/res/values-nb/strings.xml index edbb061c9..a503fd154 100644 --- a/app/res/values-nb/strings.xml +++ b/app/res/values-nb/strings.xml @@ -365,6 +365,7 @@ VALUTA AKSJE AKSJEFOND + TRADING QIF diff --git a/app/res/values-nl/strings.xml b/app/res/values-nl/strings.xml index 701593649..7ebd8f30e 100644 --- a/app/res/values-nl/strings.xml +++ b/app/res/values-nl/strings.xml @@ -366,6 +366,7 @@ CURRENCY STOCK MUTUAL FUND + TRADING QIF diff --git a/app/res/values-pt-rBR/strings.xml b/app/res/values-pt-rBR/strings.xml index 06e1aef42..c1a814ac7 100644 --- a/app/res/values-pt-rBR/strings.xml +++ b/app/res/values-pt-rBR/strings.xml @@ -364,6 +364,7 @@ CURRENCY AÇÕES FUNDO MÚTUO + TRADING QIF diff --git a/app/res/values-ru/strings.xml b/app/res/values-ru/strings.xml index 876309c1e..941c12134 100644 --- a/app/res/values-ru/strings.xml +++ b/app/res/values-ru/strings.xml @@ -362,6 +362,7 @@ СОБСТВЕННЫЕ СРЕДСТВА ТОРГОВЛЯ ВЗАИМНЫЙ ФОНД + TRADING QIF diff --git a/app/res/values-zh/strings.xml b/app/res/values-zh/strings.xml index 23a3a9310..343f2e3e6 100644 --- a/app/res/values-zh/strings.xml +++ b/app/res/values-zh/strings.xml @@ -362,6 +362,7 @@ 货币 股票 共同基金 + TRADING QIF diff --git a/app/res/values/key_strings.xml b/app/res/values/key_strings.xml index 6a716b600..0d580e1f4 100644 --- a/app/res/values/key_strings.xml +++ b/app/res/values/key_strings.xml @@ -41,6 +41,7 @@ CURRENCY STOCK MUTUAL + TRADING QIF diff --git a/app/res/values/strings.xml b/app/res/values/strings.xml index 94988cebe..96b93b257 100644 --- a/app/res/values/strings.xml +++ b/app/res/values/strings.xml @@ -376,6 +376,7 @@ CURRENCY STOCK MUTUAL FUND + TRADING QIF diff --git a/app/src/org/gnucash/android/model/AccountType.java b/app/src/org/gnucash/android/model/AccountType.java index ea41c89d8..171156cdc 100644 --- a/app/src/org/gnucash/android/model/AccountType.java +++ b/app/src/org/gnucash/android/model/AccountType.java @@ -8,7 +8,7 @@ public enum AccountType { CASH(TransactionType.DEBIT), BANK(TransactionType.DEBIT), CREDIT, ASSET(TransactionType.DEBIT), LIABILITY, INCOME, EXPENSE(TransactionType.DEBIT), PAYABLE, RECEIVABLE(TransactionType.DEBIT), EQUITY, CURRENCY, - STOCK(TransactionType.DEBIT), MUTUAL(TransactionType.DEBIT), ROOT; + STOCK(TransactionType.DEBIT), MUTUAL(TransactionType.DEBIT), TRADING, ROOT; /** * Indicates that this type of normal balance the account type has diff --git a/app/src/org/gnucash/android/ui/util/TransactionTypeToggleButton.java b/app/src/org/gnucash/android/ui/util/TransactionTypeToggleButton.java index 23dba92ca..022141e61 100644 --- a/app/src/org/gnucash/android/ui/util/TransactionTypeToggleButton.java +++ b/app/src/org/gnucash/android/ui/util/TransactionTypeToggleButton.java @@ -93,6 +93,7 @@ public void setAccountType(AccountType accountType){ break; case CURRENCY: case ROOT: + default: setTextOn(context.getString(R.string.label_debit)); setTextOff(context.getString(R.string.label_credit)); break; From e4e1fb39f6d8bdbed91835f041d789a31b27127c Mon Sep 17 00:00:00 2001 From: Ngewi Fet Date: Fri, 23 Jan 2015 10:52:59 +0100 Subject: [PATCH 7/8] Updated version strings, changelog & contributors list --- CHANGELOG.md | 7 +++++++ CONTRIBUTORS | 5 ++++- app/AndroidManifest.xml | 2 +- app/pom.xml | 2 +- app/res/values/strings.xml | 2 +- integration-tests/pom.xml | 2 +- pom.xml | 2 +- 7 files changed, 16 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 481f7a9be..d0f90fd4a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ Change Log =============================================================================== +Version 1.5.2 *(2015-01-26)* +---------------------------- +* Fixed: Crash when importing XML with TRADING accounts +* Fixed: Full name not updated when account name is changed +* Fixed: Toggle button shown when double-entry is disabled +* Fixed: Amount input problems on some devices or keyboards + Version 1.5.1 *(2014-10-08)* ---------------------------- * Fixed: Crash when upgrading from v1.4.x to v1.5.x diff --git a/CONTRIBUTORS b/CONTRIBUTORS index ac8d111d0..914ec14b7 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -18,4 +18,7 @@ Pedro Abel windwarrior Oleksandr Tyshkovets Lei Xiao Bao -Yongxin Wang \ No newline at end of file +Yongxin Wang +Matthew Hague +Spanti Nicola +Jesse Shieh \ No newline at end of file diff --git a/app/AndroidManifest.xml b/app/AndroidManifest.xml index bb5e85fb3..d906340af 100644 --- a/app/AndroidManifest.xml +++ b/app/AndroidManifest.xml @@ -17,7 +17,7 @@ diff --git a/app/pom.xml b/app/pom.xml index 1d5b95158..943109fba 100644 --- a/app/pom.xml +++ b/app/pom.xml @@ -22,7 +22,7 @@ Gnucash Android companion application - 1.5.1-SNAPSHOT + 1.5.2-SNAPSHOT org.gnucash.android gnucash-android-parent diff --git a/app/res/values/strings.xml b/app/res/values/strings.xml index 96b93b257..5b1ea7688 100644 --- a/app/res/values/strings.xml +++ b/app/res/values/strings.xml @@ -17,7 +17,7 @@ GnuCash - 1.5.1 + 1.5.2 Create Account Edit Account Info diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml index b58439508..8c766e7a6 100644 --- a/integration-tests/pom.xml +++ b/integration-tests/pom.xml @@ -17,7 +17,7 @@ 4.0.0 - 1.5.1-SNAPSHOT + 1.5.2-SNAPSHOT org.gnucash.android gnucash-android-parent diff --git a/pom.xml b/pom.xml index 18ad16716..b66000058 100644 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,7 @@ 4.0.0 - 1.5.1-SNAPSHOT + 1.5.2-SNAPSHOT org.gnucash.android gnucash-android-parent GnuCash Android parent From 8eeb0c8e445aff86612f9060aaae7694ff3a080c Mon Sep 17 00:00:00 2001 From: Ngewi Fet Date: Fri, 23 Jan 2015 13:25:53 +0100 Subject: [PATCH 8/8] Delete whole transaction when transaction is deleted, not just the split of the relevant account. Update version code and changelog --- CHANGELOG.md | 2 ++ app/AndroidManifest.xml | 2 +- .../android/ui/transaction/TransactionsListFragment.java | 4 +--- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d0f90fd4a..c2247b57f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ Version 1.5.2 *(2015-01-26)* * Fixed: Full name not updated when account name is changed * Fixed: Toggle button shown when double-entry is disabled * Fixed: Amount input problems on some devices or keyboards +* Fixed: Crash when changing the parent of an account +* Fixed: Deleting a transaction only deletes some splits, not the whole. Version 1.5.1 *(2014-10-08)* ---------------------------- diff --git a/app/AndroidManifest.xml b/app/AndroidManifest.xml index d906340af..e8b95b82f 100644 --- a/app/AndroidManifest.xml +++ b/app/AndroidManifest.xml @@ -17,7 +17,7 @@ diff --git a/app/src/org/gnucash/android/ui/transaction/TransactionsListFragment.java b/app/src/org/gnucash/android/ui/transaction/TransactionsListFragment.java index 337262b80..8cf642f85 100644 --- a/app/src/org/gnucash/android/ui/transaction/TransactionsListFragment.java +++ b/app/src/org/gnucash/android/ui/transaction/TransactionsListFragment.java @@ -117,11 +117,9 @@ public boolean onActionItemClicked(ActionMode mode, MenuItem item) { return true; case R.id.context_menu_delete: - SplitsDbAdapter splitsDbAdapter = new SplitsDbAdapter(getActivity()); for (long id : getListView().getCheckedItemIds()) { - splitsDbAdapter.deleteSplitsForTransactionAndAccount(mTransactionsDbAdapter.getUID(id), mAccountUID); + mTransactionsDbAdapter.deleteRecord(id); } - splitsDbAdapter.close(); refresh(); mode.finish(); WidgetConfigurationActivity.updateAllWidgets(getActivity());