package com.battlelancer.seriesguide.adapters;
import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.provider.BaseColumns;
import android.text.TextUtils;
import android.view.View;
import com.battlelancer.seriesguide.provider.SeriesGuideContract;
import com.battlelancer.seriesguide.thetvdbapi.TvdbImageTools;
import com.battlelancer.seriesguide.util.DBUtils;
import com.battlelancer.seriesguide.util.ShowTools;
/**
* Adapter for show items.
*/
public class ShowsAdapter extends BaseShowsAdapter {
public ShowsAdapter(Activity activity, OnContextMenuClickListener listener) {
super(activity, listener);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
ShowViewHolder viewHolder = (ShowViewHolder) view.getTag();
viewHolder.showTvdbId = cursor.getInt(Query._ID);
viewHolder.isFavorited = cursor.getInt(Query.FAVORITE) == 1;
// set text properties immediately
viewHolder.name.setText(cursor.getString(Query.TITLE));
// favorite label
setFavoriteState(viewHolder.favorited, viewHolder.isFavorited);
// next episode info
String fieldValue = cursor.getString(Query.NEXTTEXT);
if (TextUtils.isEmpty(fieldValue)) {
// display show status if there is no next episode
viewHolder.episodeTime.setText(
ShowTools.getStatus(context, cursor.getInt(Query.STATUS)));
viewHolder.episode.setText("");
} else {
viewHolder.episode.setText(fieldValue);
fieldValue = cursor.getString(Query.NEXTAIRDATETEXT);
viewHolder.episodeTime.setText(fieldValue);
}
setRemainingCount(viewHolder.remainingCount, cursor.getInt(Query.UNWATCHED_COUNT));
// network, day and time
viewHolder.timeAndNetwork.setText(buildNetworkAndTimeString(context,
cursor.getInt(Query.RELEASE_TIME),
cursor.getInt(Query.RELEASE_WEEKDAY),
cursor.getString(Query.RELEASE_TIMEZONE),
cursor.getString(Query.RELEASE_COUNTRY),
cursor.getString(Query.NETWORK)));
// set poster
TvdbImageTools.loadShowPosterResizeCrop(context, viewHolder.poster, cursor.getString(Query.POSTER));
// context menu
viewHolder.isHidden = DBUtils.restoreBooleanFromInt(cursor.getInt(Query.HIDDEN));
viewHolder.episodeTvdbId = cursor.getInt(Query.NEXTEPISODE);
}
public interface Query {
String[] PROJECTION = {
BaseColumns._ID, // 0
SeriesGuideContract.Shows.TITLE,
SeriesGuideContract.Shows.RELEASE_TIME,
SeriesGuideContract.Shows.RELEASE_WEEKDAY,
SeriesGuideContract.Shows.RELEASE_TIMEZONE,
SeriesGuideContract.Shows.RELEASE_COUNTRY, // 5
SeriesGuideContract.Shows.NETWORK,
SeriesGuideContract.Shows.POSTER,
SeriesGuideContract.Shows.STATUS,
SeriesGuideContract.Shows.NEXTEPISODE,
SeriesGuideContract.Shows.NEXTTEXT, // 10
SeriesGuideContract.Shows.NEXTAIRDATETEXT,
SeriesGuideContract.Shows.FAVORITE,
SeriesGuideContract.Shows.HIDDEN,
SeriesGuideContract.Shows.UNWATCHED_COUNT // 14
};
int _ID = 0;
int TITLE = 1;
int RELEASE_TIME = 2;
int RELEASE_WEEKDAY = 3;
int RELEASE_TIMEZONE = 4;
int RELEASE_COUNTRY = 5;
int NETWORK = 6;
int POSTER = 7;
int STATUS = 8;
int NEXTEPISODE = 9;
int NEXTTEXT = 10;
int NEXTAIRDATETEXT = 11;
int FAVORITE = 12;
int HIDDEN = 13;
int UNWATCHED_COUNT = 14;
}
}