From e9d89625cf7b2ce8210cfaaaa7ecabe30b502f90 Mon Sep 17 00:00:00 2001 From: David Landry Date: Sat, 3 Dec 2016 18:48:47 -0500 Subject: [PATCH 1/6] Added a method to sort by favorite first --- .../android/db/adapter/AccountsDbAdapter.java | 15 +++++++++++++++ .../ui/transaction/TransactionFormFragment.java | 2 +- gradle/wrapper/gradle-wrapper.properties.orig | 10 ++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 gradle/wrapper/gradle-wrapper.properties.orig diff --git a/app/src/main/java/org/gnucash/android/db/adapter/AccountsDbAdapter.java b/app/src/main/java/org/gnucash/android/db/adapter/AccountsDbAdapter.java index 651f1a73d..3bdeafe1c 100644 --- a/app/src/main/java/org/gnucash/android/db/adapter/AccountsDbAdapter.java +++ b/app/src/main/java/org/gnucash/android/db/adapter/AccountsDbAdapter.java @@ -763,6 +763,21 @@ public Cursor fetchAccountsOrderedByFullName(String where, String[] whereArgs) { AccountEntry.COLUMN_FULL_NAME + " ASC"); } + /** + * Returns a Cursor set of accounts which fulfill where + *

This method returns the favorite accounts first, sorted by name, and then the other accounts, + * sorted by name.

+ * @param where SQL WHERE statement without the 'WHERE' itself + * @param whereArgs where args + * @return Cursor set of accounts which fulfill where + */ + public Cursor fetchAccountsOrderedByFavoriteAndFullName(String where, String[] whereArgs) { + Log.v(LOG_TAG, "Fetching all accounts from db where " + where + " order by Favorite then Name"); + return mDb.query(AccountEntry.TABLE_NAME, + null, where, whereArgs, null, null, + AccountEntry.COLUMN_FAVORITE + " DESC " + AccountEntry.COLUMN_FULL_NAME); + } + /** * Returns the balance of an account while taking sub-accounts into consideration * @return Account Balance of an account including sub-accounts 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 9689b5b80..885993356 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 @@ -579,7 +579,7 @@ private void updateTransferAccountsList(){ if (mCursor != null) { mCursor.close(); } - mCursor = mAccountsDbAdapter.fetchAccountsOrderedByFullName(conditions, new String[]{mAccountUID, AccountType.ROOT.name()}); + mCursor = mAccountsDbAdapter.fetchAccountsOrderedByFavoriteAndFullName(conditions, new String[]{mAccountUID, AccountType.ROOT.name()}); mAccountCursorAdapter = new QualifiedAccountNameCursorAdapter(getActivity(), mCursor); mTransferAccountSpinner.setAdapter(mAccountCursorAdapter); diff --git a/gradle/wrapper/gradle-wrapper.properties.orig b/gradle/wrapper/gradle-wrapper.properties.orig new file mode 100644 index 000000000..319112bd5 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties.orig @@ -0,0 +1,10 @@ +<<<<<<< Updated upstream +#Tue Oct 18 19:01:00 CEST 2016 +======= +#Sat Dec 03 13:18:05 EST 2016 +>>>>>>> Stashed changes +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip From 9ff6a486d7115448d72af80aabe13c216dceb4bb Mon Sep 17 00:00:00 2001 From: David Landry Date: Sat, 3 Dec 2016 19:23:30 -0500 Subject: [PATCH 2/6] Sort the account by favorite first in the transfer account spinner --- .../java/org/gnucash/android/db/adapter/AccountsDbAdapter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/gnucash/android/db/adapter/AccountsDbAdapter.java b/app/src/main/java/org/gnucash/android/db/adapter/AccountsDbAdapter.java index 3bdeafe1c..b514e1d6b 100644 --- a/app/src/main/java/org/gnucash/android/db/adapter/AccountsDbAdapter.java +++ b/app/src/main/java/org/gnucash/android/db/adapter/AccountsDbAdapter.java @@ -775,7 +775,7 @@ public Cursor fetchAccountsOrderedByFavoriteAndFullName(String where, String[] w Log.v(LOG_TAG, "Fetching all accounts from db where " + where + " order by Favorite then Name"); return mDb.query(AccountEntry.TABLE_NAME, null, where, whereArgs, null, null, - AccountEntry.COLUMN_FAVORITE + " DESC " + AccountEntry.COLUMN_FULL_NAME); + AccountEntry.COLUMN_FAVORITE + " DESC, " + AccountEntry.COLUMN_FULL_NAME); } /** From 42da86b1c1fc1fdef74cd118417ea584a2a189e8 Mon Sep 17 00:00:00 2001 From: David Landry Date: Sat, 3 Dec 2016 22:23:21 -0500 Subject: [PATCH 3/6] The code is all there but theres a problem with visibility --- .../android/db/adapter/AccountsDbAdapter.java | 2 +- .../transaction/TransactionFormFragment.java | 5 +- ...ableQualifiedAccountNameCursorAdapter.java | 82 +++++++++++++++++++ ...favorite_transfer_account_spinner_item.xml | 25 ++++++ 4 files changed, 111 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/org/gnucash/android/util/FavoritableQualifiedAccountNameCursorAdapter.java create mode 100644 app/src/main/res/layout/favorite_transfer_account_spinner_item.xml diff --git a/app/src/main/java/org/gnucash/android/db/adapter/AccountsDbAdapter.java b/app/src/main/java/org/gnucash/android/db/adapter/AccountsDbAdapter.java index b514e1d6b..7b66f44b2 100644 --- a/app/src/main/java/org/gnucash/android/db/adapter/AccountsDbAdapter.java +++ b/app/src/main/java/org/gnucash/android/db/adapter/AccountsDbAdapter.java @@ -775,7 +775,7 @@ public Cursor fetchAccountsOrderedByFavoriteAndFullName(String where, String[] w Log.v(LOG_TAG, "Fetching all accounts from db where " + where + " order by Favorite then Name"); return mDb.query(AccountEntry.TABLE_NAME, null, where, whereArgs, null, null, - AccountEntry.COLUMN_FAVORITE + " DESC, " + AccountEntry.COLUMN_FULL_NAME); + AccountEntry.COLUMN_FAVORITE + " DESC, " + AccountEntry.COLUMN_FULL_NAME + " ASC"); } /** 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 885993356..2ef106002 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 @@ -82,6 +82,7 @@ import org.gnucash.android.ui.util.RecurrenceViewClickListener; import org.gnucash.android.ui.util.widget.CalculatorEditText; import org.gnucash.android.ui.util.widget.TransactionTypeSwitch; +import org.gnucash.android.util.FavoritableQualifiedAccountNameCursorAdapter; import org.gnucash.android.util.QualifiedAccountNameCursorAdapter; import java.math.BigDecimal; @@ -120,7 +121,7 @@ public class TransactionFormFragment extends Fragment implements /** * Adapter for transfer account spinner */ - private QualifiedAccountNameCursorAdapter mAccountCursorAdapter; + private FavoritableQualifiedAccountNameCursorAdapter mAccountCursorAdapter; /** * Cursor for transfer account spinner @@ -581,7 +582,7 @@ private void updateTransferAccountsList(){ } mCursor = mAccountsDbAdapter.fetchAccountsOrderedByFavoriteAndFullName(conditions, new String[]{mAccountUID, AccountType.ROOT.name()}); - mAccountCursorAdapter = new QualifiedAccountNameCursorAdapter(getActivity(), mCursor); + mAccountCursorAdapter = new FavoritableQualifiedAccountNameCursorAdapter(getActivity(), mCursor); mTransferAccountSpinner.setAdapter(mAccountCursorAdapter); } diff --git a/app/src/main/java/org/gnucash/android/util/FavoritableQualifiedAccountNameCursorAdapter.java b/app/src/main/java/org/gnucash/android/util/FavoritableQualifiedAccountNameCursorAdapter.java new file mode 100644 index 000000000..8264e6c4a --- /dev/null +++ b/app/src/main/java/org/gnucash/android/util/FavoritableQualifiedAccountNameCursorAdapter.java @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2013 - 2014 Ngewi Fet + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.gnucash.android.util; + +import android.content.Context; +import android.database.Cursor; +import android.provider.ContactsContract; +import android.support.annotation.LayoutRes; +import android.support.annotation.NonNull; +import android.support.v4.widget.SimpleCursorAdapter; +import android.text.TextUtils; +import android.util.Log; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import org.gnucash.android.R; +import org.gnucash.android.db.DatabaseSchema; +import org.gnucash.android.db.adapter.AccountsDbAdapter; + +/** + * Cursor adapter which looks up the fully qualified account name and returns that instead of just the simple name. + *

The fully qualified account name includes the parent hierarchy

+ * + * @author Ngewi Fet + */ +public class FavoritableQualifiedAccountNameCursorAdapter extends SimpleCursorAdapter { + + /** + * Initialize the Cursor adapter for account names using default spinner views + * @param context Application context + * @param cursor Cursor to accounts + */ + public FavoritableQualifiedAccountNameCursorAdapter(Context context, Cursor cursor) { + super(context, R.layout.favorite_transfer_account_spinner_item, cursor, + new String[]{DatabaseSchema.AccountEntry.COLUMN_FULL_NAME}, + new int[]{R.id.qualified_account_name}, 0); + setDropDownViewResource(R.layout.favorite_transfer_account_spinner_item); + } + + @Override + public void bindView(View view, Context context, Cursor cursor) { + super.bindView(view, context, cursor); + + Integer is_favorite = cursor.getInt(cursor.getColumnIndex(DatabaseSchema.AccountEntry.COLUMN_FAVORITE)); + String colName = cursor.getString(cursor.getColumnIndex(DatabaseSchema.AccountEntry.COLUMN_NAME)); + + if(is_favorite == 0) { + ImageView is_favorite_image = (ImageView) view.findViewById(R.id.favorite_status); + is_favorite_image.setVisibility(View.INVISIBLE); + } + } + + /** + * Returns the position of a given account in the adapter + * @param accountUID GUID of the account + * @return Position of the account or -1 if the account is not found + */ + public int getPosition(@NonNull String accountUID){ + long accountId = AccountsDbAdapter.getInstance().getID(accountUID); + for (int pos = 0; pos < getCount(); pos++) { + if (getItemId(pos) == accountId){ + return pos; + } + } + return -1; + } +} diff --git a/app/src/main/res/layout/favorite_transfer_account_spinner_item.xml b/app/src/main/res/layout/favorite_transfer_account_spinner_item.xml new file mode 100644 index 000000000..933944ea6 --- /dev/null +++ b/app/src/main/res/layout/favorite_transfer_account_spinner_item.xml @@ -0,0 +1,25 @@ + + + + + + + + \ No newline at end of file From 537826ca680a179ed87d0c416df483ca40730d59 Mon Sep 17 00:00:00 2001 From: David Landry Date: Sat, 3 Dec 2016 23:07:23 -0500 Subject: [PATCH 4/6] Cleanup before PR --- .../transaction/TransactionFormFragment.java | 1 - ...ableQualifiedAccountNameCursorAdapter.java | 23 ++++++++++--------- ...favorite_transfer_account_spinner_item.xml | 3 +-- 3 files changed, 13 insertions(+), 14 deletions(-) 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 2ef106002..e55f6cbc0 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 @@ -83,7 +83,6 @@ import org.gnucash.android.ui.util.widget.CalculatorEditText; import org.gnucash.android.ui.util.widget.TransactionTypeSwitch; import org.gnucash.android.util.FavoritableQualifiedAccountNameCursorAdapter; -import org.gnucash.android.util.QualifiedAccountNameCursorAdapter; import java.math.BigDecimal; import java.text.DateFormat; diff --git a/app/src/main/java/org/gnucash/android/util/FavoritableQualifiedAccountNameCursorAdapter.java b/app/src/main/java/org/gnucash/android/util/FavoritableQualifiedAccountNameCursorAdapter.java index 8264e6c4a..26dea8054 100644 --- a/app/src/main/java/org/gnucash/android/util/FavoritableQualifiedAccountNameCursorAdapter.java +++ b/app/src/main/java/org/gnucash/android/util/FavoritableQualifiedAccountNameCursorAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 - 2014 Ngewi Fet + * Copyright (c) 2016 David Landry * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,25 +18,19 @@ import android.content.Context; import android.database.Cursor; -import android.provider.ContactsContract; -import android.support.annotation.LayoutRes; import android.support.annotation.NonNull; import android.support.v4.widget.SimpleCursorAdapter; -import android.text.TextUtils; -import android.util.Log; import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; import org.gnucash.android.R; import org.gnucash.android.db.DatabaseSchema; import org.gnucash.android.db.adapter.AccountsDbAdapter; /** - * Cursor adapter which looks up the fully qualified account name and returns that instead of just the simple name. + * Cursor adapter which looks up the fully qualified account name as well as its favorite status. *

The fully qualified account name includes the parent hierarchy

* - * @author Ngewi Fet + * @author David Landry */ public class FavoritableQualifiedAccountNameCursorAdapter extends SimpleCursorAdapter { @@ -52,16 +46,23 @@ public FavoritableQualifiedAccountNameCursorAdapter(Context context, Cursor curs setDropDownViewResource(R.layout.favorite_transfer_account_spinner_item); } + /** + * Binds an account name and its favorite status to an appropriate view. + * @param view The view to bind the account to + * @param context Application context + * @param cursor Cursor to accounts + */ @Override public void bindView(View view, Context context, Cursor cursor) { super.bindView(view, context, cursor); Integer is_favorite = cursor.getInt(cursor.getColumnIndex(DatabaseSchema.AccountEntry.COLUMN_FAVORITE)); - String colName = cursor.getString(cursor.getColumnIndex(DatabaseSchema.AccountEntry.COLUMN_NAME)); + View is_favorite_image = view.findViewById(R.id.favorite_status); if(is_favorite == 0) { - ImageView is_favorite_image = (ImageView) view.findViewById(R.id.favorite_status); is_favorite_image.setVisibility(View.INVISIBLE); + } else { + is_favorite_image.setVisibility(View.VISIBLE); } } diff --git a/app/src/main/res/layout/favorite_transfer_account_spinner_item.xml b/app/src/main/res/layout/favorite_transfer_account_spinner_item.xml index 933944ea6..fb8a6374f 100644 --- a/app/src/main/res/layout/favorite_transfer_account_spinner_item.xml +++ b/app/src/main/res/layout/favorite_transfer_account_spinner_item.xml @@ -19,7 +19,6 @@ android:id="@+id/favorite_status" android:layout_width="wrap_content" android:layout_height="match_parent" - android:src="@drawable/ic_star_black_24dp" - android:visibility="visible"/> + android:src="@drawable/ic_star_black_24dp" /> \ No newline at end of file From 50a6dde5e53a443321810010cc428c23c461f6ad Mon Sep 17 00:00:00 2001 From: David Landry Date: Sat, 3 Dec 2016 23:28:38 -0500 Subject: [PATCH 5/6] Removed innapropriate file --- gradle/wrapper/gradle-wrapper.properties.orig | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 gradle/wrapper/gradle-wrapper.properties.orig diff --git a/gradle/wrapper/gradle-wrapper.properties.orig b/gradle/wrapper/gradle-wrapper.properties.orig deleted file mode 100644 index 319112bd5..000000000 --- a/gradle/wrapper/gradle-wrapper.properties.orig +++ /dev/null @@ -1,10 +0,0 @@ -<<<<<<< Updated upstream -#Tue Oct 18 19:01:00 CEST 2016 -======= -#Sat Dec 03 13:18:05 EST 2016 ->>>>>>> Stashed changes -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip From 5a149075ce1866c9e1849877c3e1a74a98f378b9 Mon Sep 17 00:00:00 2001 From: David Landry Date: Fri, 23 Dec 2016 14:14:35 -0500 Subject: [PATCH 6/6] Implemented recommendations from the PR --- .../android/db/adapter/AccountsDbAdapter.java | 1 + .../ui/budget/BudgetAmountEditorFragment.java | 2 +- .../android/ui/budget/BudgetFormFragment.java | 2 +- .../transaction/TransactionFormFragment.java | 10 ++- ...ableQualifiedAccountNameCursorAdapter.java | 83 ------------------- .../QualifiedAccountNameCursorAdapter.java | 7 ++ ...favorite_transfer_account_spinner_item.xml | 24 ------ 7 files changed, 17 insertions(+), 112 deletions(-) delete mode 100644 app/src/main/java/org/gnucash/android/util/FavoritableQualifiedAccountNameCursorAdapter.java delete mode 100644 app/src/main/res/layout/favorite_transfer_account_spinner_item.xml diff --git a/app/src/main/java/org/gnucash/android/db/adapter/AccountsDbAdapter.java b/app/src/main/java/org/gnucash/android/db/adapter/AccountsDbAdapter.java index 7b66f44b2..0a33d1d9f 100644 --- a/app/src/main/java/org/gnucash/android/db/adapter/AccountsDbAdapter.java +++ b/app/src/main/java/org/gnucash/android/db/adapter/AccountsDbAdapter.java @@ -749,6 +749,7 @@ public Cursor fetchAccounts(@Nullable String where, @Nullable String[] whereArgs null, where, whereArgs, null, null, orderBy); } + /** * Returns a Cursor set of accounts which fulfill where *

This method returns the accounts list sorted by the full account name

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 a625cb57b..a87c40d32 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 @@ -204,7 +204,7 @@ private void setupAccountSpinnerAdapter(){ if (mAccountCursor != null) { mAccountCursor.close(); } - mAccountCursor = mAccountsDbAdapter.fetchAccountsOrderedByFullName(conditions, null); + mAccountCursor = mAccountsDbAdapter.fetchAccountsOrderedByFavoriteAndFullName(conditions, null); mAccountCursorAdapter = new QualifiedAccountNameCursorAdapter(getActivity(), mAccountCursor); } 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 b35125bac..553a400c9 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 @@ -122,7 +122,7 @@ public void onCreate(@Nullable Bundle savedInstanceState) { mBudgetAmounts = new ArrayList<>(); String conditions = "(" + DatabaseSchema.AccountEntry.COLUMN_HIDDEN + " = 0 )"; mAccountsDbAdapter = AccountsDbAdapter.getInstance(); - Cursor accountCursor = mAccountsDbAdapter.fetchAccountsOrderedByFullName(conditions, null); + Cursor accountCursor = mAccountsDbAdapter.fetchAccountsOrderedByFavoriteAndFullName(conditions, null); mAccountsCursorAdapter = new QualifiedAccountNameCursorAdapter(getActivity(), accountCursor); } 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 e55f6cbc0..e2e2c7ba5 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 @@ -82,7 +82,7 @@ import org.gnucash.android.ui.util.RecurrenceViewClickListener; import org.gnucash.android.ui.util.widget.CalculatorEditText; import org.gnucash.android.ui.util.widget.TransactionTypeSwitch; -import org.gnucash.android.util.FavoritableQualifiedAccountNameCursorAdapter; +import org.gnucash.android.util.QualifiedAccountNameCursorAdapter; import java.math.BigDecimal; import java.text.DateFormat; @@ -120,7 +120,7 @@ public class TransactionFormFragment extends Fragment implements /** * Adapter for transfer account spinner */ - private FavoritableQualifiedAccountNameCursorAdapter mAccountCursorAdapter; + private QualifiedAccountNameCursorAdapter mAccountCursorAdapter; /** * Cursor for transfer account spinner @@ -323,6 +323,10 @@ public void onActivityCreated(Bundle savedInstanceState) { @Override public void onItemSelected(AdapterView adapterView, View view, int position, long id) { + // Remove the favorite star from the view to avoid visual clutter. + TextView qualifiedAccountName = (TextView) view; + qualifiedAccountName.setCompoundDrawablesWithIntrinsicBounds(0,0,0,0); + if (mSplitsList.size() == 2) { //when handling simple transfer to one account for (Split split : mSplitsList) { if (!split.getAccountUID().equals(mAccountUID)) { @@ -581,7 +585,7 @@ private void updateTransferAccountsList(){ } mCursor = mAccountsDbAdapter.fetchAccountsOrderedByFavoriteAndFullName(conditions, new String[]{mAccountUID, AccountType.ROOT.name()}); - mAccountCursorAdapter = new FavoritableQualifiedAccountNameCursorAdapter(getActivity(), mCursor); + mAccountCursorAdapter = new QualifiedAccountNameCursorAdapter(getActivity(), mCursor); mTransferAccountSpinner.setAdapter(mAccountCursorAdapter); } diff --git a/app/src/main/java/org/gnucash/android/util/FavoritableQualifiedAccountNameCursorAdapter.java b/app/src/main/java/org/gnucash/android/util/FavoritableQualifiedAccountNameCursorAdapter.java deleted file mode 100644 index 26dea8054..000000000 --- a/app/src/main/java/org/gnucash/android/util/FavoritableQualifiedAccountNameCursorAdapter.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) 2016 David Landry - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.gnucash.android.util; - -import android.content.Context; -import android.database.Cursor; -import android.support.annotation.NonNull; -import android.support.v4.widget.SimpleCursorAdapter; -import android.view.View; - -import org.gnucash.android.R; -import org.gnucash.android.db.DatabaseSchema; -import org.gnucash.android.db.adapter.AccountsDbAdapter; - -/** - * Cursor adapter which looks up the fully qualified account name as well as its favorite status. - *

The fully qualified account name includes the parent hierarchy

- * - * @author David Landry - */ -public class FavoritableQualifiedAccountNameCursorAdapter extends SimpleCursorAdapter { - - /** - * Initialize the Cursor adapter for account names using default spinner views - * @param context Application context - * @param cursor Cursor to accounts - */ - public FavoritableQualifiedAccountNameCursorAdapter(Context context, Cursor cursor) { - super(context, R.layout.favorite_transfer_account_spinner_item, cursor, - new String[]{DatabaseSchema.AccountEntry.COLUMN_FULL_NAME}, - new int[]{R.id.qualified_account_name}, 0); - setDropDownViewResource(R.layout.favorite_transfer_account_spinner_item); - } - - /** - * Binds an account name and its favorite status to an appropriate view. - * @param view The view to bind the account to - * @param context Application context - * @param cursor Cursor to accounts - */ - @Override - public void bindView(View view, Context context, Cursor cursor) { - super.bindView(view, context, cursor); - - Integer is_favorite = cursor.getInt(cursor.getColumnIndex(DatabaseSchema.AccountEntry.COLUMN_FAVORITE)); - - View is_favorite_image = view.findViewById(R.id.favorite_status); - if(is_favorite == 0) { - is_favorite_image.setVisibility(View.INVISIBLE); - } else { - is_favorite_image.setVisibility(View.VISIBLE); - } - } - - /** - * Returns the position of a given account in the adapter - * @param accountUID GUID of the account - * @return Position of the account or -1 if the account is not found - */ - public int getPosition(@NonNull String accountUID){ - long accountId = AccountsDbAdapter.getInstance().getID(accountUID); - for (int pos = 0; pos < getCount(); pos++) { - if (getItemId(pos) == accountId){ - return pos; - } - } - return -1; - } -} diff --git a/app/src/main/java/org/gnucash/android/util/QualifiedAccountNameCursorAdapter.java b/app/src/main/java/org/gnucash/android/util/QualifiedAccountNameCursorAdapter.java index a2b310932..dcf17c13d 100644 --- a/app/src/main/java/org/gnucash/android/util/QualifiedAccountNameCursorAdapter.java +++ b/app/src/main/java/org/gnucash/android/util/QualifiedAccountNameCursorAdapter.java @@ -68,6 +68,13 @@ public void bindView(View view, Context context, Cursor cursor) { super.bindView(view, context, cursor); TextView textView = (TextView) view.findViewById(android.R.id.text1); textView.setEllipsize(TextUtils.TruncateAt.MIDDLE); + + Integer isFavorite = cursor.getInt(cursor.getColumnIndex(DatabaseSchema.AccountEntry.COLUMN_FAVORITE)); + if(isFavorite == 0) { + textView.setCompoundDrawablesWithIntrinsicBounds(0,0,0,0); + } else { + textView.setCompoundDrawablesWithIntrinsicBounds(0,0,R.drawable.ic_star_black_24dp,0); + } } /** diff --git a/app/src/main/res/layout/favorite_transfer_account_spinner_item.xml b/app/src/main/res/layout/favorite_transfer_account_spinner_item.xml deleted file mode 100644 index fb8a6374f..000000000 --- a/app/src/main/res/layout/favorite_transfer_account_spinner_item.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - \ No newline at end of file