/**
* Copyright (C) 2013 Romain Guefveneu.
*
* This file is part of naonedbus.
*
* Naonedbus is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Naonedbus is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package net.naonedbus.widget.adapter.impl;
import net.naonedbus.R;
import net.naonedbus.bean.Equipement;
import net.naonedbus.manager.impl.EquipementManager;
import net.naonedbus.manager.impl.EquipementManager.SousType;
import net.naonedbus.provider.table.EquipementTable;
import net.naonedbus.utils.ColorUtils;
import net.naonedbus.widget.adapter.CursorSectionAdapter;
import android.content.Context;
import android.database.Cursor;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
public class EquipementCursorAdapter extends CursorSectionAdapter {
private final Context mContext;
private final EquipementManager mEquipementManager;
private int mColIdType = -1;
private int mColIdSousType = -1;
private int mColNom = -1;
private int mColAdresse = -1;
private int mColDetails = -1;
public EquipementCursorAdapter(final Context context, final Cursor c) {
super(context, c, R.layout.list_item_equipement);
mContext = context;
mEquipementManager = EquipementManager.getInstance();
if (c != null) {
initColumns();
}
}
@Override
public void changeCursor(final Cursor cursor) {
super.changeCursor(cursor);
if (cursor != null) {
initColumns();
}
}
private void initColumns() {
final Cursor c = getCursor();
mColIdType = c.getColumnIndex(EquipementTable.ID_TYPE);
mColIdSousType = c.getColumnIndex(EquipementTable.ID_SOUS_TYPE);
mColNom = c.getColumnIndex(EquipementTable.NOM);
mColAdresse = c.getColumnIndex(EquipementTable.ADRESSE);
mColDetails = c.getColumnIndex(EquipementTable.DETAILS);
}
@Override
protected void bindViewHolder(final View view) {
final ViewHolder holder = new ViewHolder();
holder.itemTitle = (TextView) view.findViewById(R.id.itemTitle);
holder.itemDescription = (TextView) view.findViewById(R.id.itemDescription);
holder.itemSymbole = (ImageView) view.findViewById(R.id.itemSymbole);
holder.itemLignes = (ViewGroup) view.findViewById(R.id.itemLignes);
view.setTag(holder);
}
@Override
public void bindView(final View view, final Context context, final Cursor cursor) {
super.bindView(view, context, cursor);
if (mColNom == -1)
initColumns();
final ViewHolder holder = (ViewHolder) view.getTag();
final String nom = cursor.getString(mColNom);
final int typeId = cursor.getInt(mColIdType);
final int sousTypeId = cursor.getInt(mColIdSousType);
final String details = cursor.getString(mColDetails);
final String adresse = cursor.getString(mColAdresse);
final Equipement.Type type = Equipement.Type.getTypeById(typeId);
holder.itemTitle.setText(nom);
// Définir le fond de l'icone.
if (sousTypeId != 0) {
final SousType sousType = SousType.getTypeByValue(sousTypeId);
holder.itemSymbole.setImageResource(sousType.getDrawableRes());
} else {
holder.itemSymbole.setImageResource(type.getDrawableRes());
}
holder.itemSymbole.setBackgroundDrawable(ColorUtils.getCircle(context.getResources().getColor(
type.getBackgroundColorRes())));
// Détail ou adresse
if (TextUtils.isEmpty(details) && TextUtils.isEmpty(adresse)) {
holder.itemDescription.setVisibility(View.GONE);
} else {
holder.itemDescription.setText((details != null) ? details : adresse);
holder.itemDescription.setVisibility(View.VISIBLE);
}
holder.itemLignes.setVisibility(View.GONE);
}
public int getColIdType() {
return mColIdType;
}
public int getColIdSousType() {
return mColIdSousType;
}
public int getColNom() {
return mColNom;
}
public int getColAdresse() {
return mColAdresse;
}
public int getColDetails() {
return mColDetails;
}
private class ViewHolder {
TextView itemTitle;
TextView itemDescription;
ViewGroup itemLignes;
ImageView itemSymbole;
}
@Override
public CharSequence convertToString(final Cursor cursor) {
return cursor.getString(mColNom);
}
@Override
public Cursor runQueryOnBackgroundThread(final CharSequence constraint) {
Cursor currentCursor = null;
if (constraint != null) {
currentCursor = mEquipementManager.getEquipementsCursorByName(mContext.getContentResolver(), null,
constraint.toString());
}
return currentCursor;
}
}