From ade07dd6339597d8f1b4358710ae52afbb61d35e Mon Sep 17 00:00:00 2001 From: Yongxin Wang Date: Sat, 18 Oct 2014 10:01:39 +0800 Subject: [PATCH 1/4] 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 2/4] 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 3/4] 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 4/4] 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 ('" +