/*
* Copyright (c) 2013 - 2014 Ngewi Fet <ngewif@gmail.com>
*
* 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.LayoutRes;
import android.support.annotation.NonNull;
import android.support.v4.widget.SimpleCursorAdapter;
import android.text.TextUtils;
import android.view.View;
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.
* <p>The fully qualified account name includes the parent hierarchy</p>
*
* @author Ngewi Fet <ngewif@gmail.com>
*/
public class QualifiedAccountNameCursorAdapter extends SimpleCursorAdapter {
/**
* Initialize the Cursor adapter for account names using default spinner views
* @param context Application context
* @param cursor Cursor to accounts
*/
public QualifiedAccountNameCursorAdapter(Context context, Cursor cursor) {
super(context, android.R.layout.simple_spinner_item, cursor,
new String[]{DatabaseSchema.AccountEntry.COLUMN_FULL_NAME},
new int[]{android.R.id.text1}, 0);
setDropDownViewResource(R.layout.account_spinner_dropdown_item);
}
/**
* Overloaded constructor. Specifies the view to use for displaying selected spinner text
* @param context Application context
* @param cursor Cursor to account data
* @param selectedSpinnerItem Layout resource for selected item text
*/
public QualifiedAccountNameCursorAdapter(Context context, Cursor cursor,
@LayoutRes int selectedSpinnerItem) {
super(context, selectedSpinnerItem, cursor,
new String[]{DatabaseSchema.AccountEntry.COLUMN_FULL_NAME},
new int[]{android.R.id.text1}, 0);
setDropDownViewResource(R.layout.account_spinner_dropdown_item);
}
@Override
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_18dp,0);
}
}
/**
* 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;
}
}