package com.sabdroidex.adapters;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.android.pinnedgrid.PinnedHeaderGridAdapter;
import com.sabdroidex.R;
import com.sabdroidex.controllers.couchpotato.CouchPotatoController;
import com.sabdroidex.data.couchpotato.Movie;
import com.sabdroidex.data.couchpotato.MovieRelease;
import com.sabdroidex.data.couchpotato.MovieReleaseInfo;
import com.sabdroidex.utils.ImageUtils;
import com.sabdroidex.utils.ImageWorker;
import java.util.Collections;
/**
* Created by Marc on 3/06/13.
*/
public class AdvReleaseAdapter extends PinnedHeaderGridAdapter {
public AdvReleaseAdapter(Context context, Movie movie) {
super(context);
setPinnedPartitionHeadersEnabled(true);
setDataSet(movie);
}
public void setDataSet(Movie movie) {
Collections.sort(movie.getReleases());
Partition partition = new Partition(true);
partition.setElements(movie.getReleases());
partition.setHeader(movie);
setPartition(partition);
}
@Override
public boolean isEnabled(int position) {
return true;
}
@Override
protected View newHeaderView(Context context, Object element, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(context);
return inflater.inflate(R.layout.list_item_movie, null);
}
@Override
protected void bindHeaderView(View view, Object element) {
Movie movie = (Movie) getPartition().getHeader();
HeaderItem headerItem;
if (view.getTag() == null) {
headerItem = new HeaderItem();
headerItem.poster = (ImageView) view.findViewById(R.id.movie_poster);
headerItem.title = (TextView) view.findViewById(R.id.movie_title);
}
else {
headerItem = (HeaderItem) view.getTag();
}
String imageKey = ImageWorker.ImageType.MOVIE_POSTER.name() + movie.getMovieID();
ImageUtils.getImageWorker().loadImage(headerItem.poster, ImageWorker.ImageType.MOVIE_BANNER, imageKey, movie.getMovieID(), movie.getTitle(), movie.getLibrary().getInfo().getPosters().getOriginalPoster());
headerItem.title.setText(movie.getTitle());
view.setTag(headerItem);
}
/**
* Creates an item view for the specified partition and position. Position
* corresponds directly to the current cursor position.
*/
@Override
protected View newView(Context context, Object element, int position, ViewGroup parent) {
LayoutInflater layoutInflater = LayoutInflater.from(getContext());
return layoutInflater.inflate(R.layout.list_item_movie_release, null);
}
/**
* Binds an item view for the specified partition and position. Position
* corresponds directly to the current cursor position.
*/
@Override
protected void bindView(View v, Object element, int position) {
MovieReleaseItem movieReleaseItem;
if (v.getTag() == null) {
movieReleaseItem = new MovieReleaseItem();
movieReleaseItem.releaseName = (TextView) v.findViewById(R.id.movie_release_name);
movieReleaseItem.status = (TextView) v.findViewById(R.id.movie_release_status);
movieReleaseItem.size = (TextView) v.findViewById(R.id.movie_release_size);
movieReleaseItem.age = (TextView) v.findViewById(R.id.movie_release_age);
movieReleaseItem.score = (TextView) v.findViewById(R.id.movie_release_score);
movieReleaseItem.provider = (TextView) v.findViewById(R.id.movie_release_provider);
}
else {
movieReleaseItem = (MovieReleaseItem) v.getTag();
}
MovieRelease movieRelease = (MovieRelease) getItem(position);
MovieReleaseInfo movieReleaseInfo = movieRelease.getMovieReleaseInfo();
StringBuilder size = new StringBuilder();
size.append(String.valueOf(movieReleaseInfo.getSize()));
size.append(" ");
size.append(getContext().getString(R.string.mb));
StringBuilder age = new StringBuilder();
age.append(String.valueOf(movieReleaseInfo.getAge()));
age.append(" ");
age.append(getContext().getString(R.string.days));
movieReleaseItem.releaseName.setText(movieReleaseInfo.getName());
movieReleaseItem.status.setText(CouchPotatoController.getStatus(movieRelease.getStatusId()));
movieReleaseItem.size.setText(size);
movieReleaseItem.age.setText(age);
movieReleaseItem.score.setText(String.valueOf(movieReleaseInfo.getScore()));
movieReleaseItem.provider.setText(movieReleaseInfo.getProvider());
v.setId(position);
v.setTag(movieReleaseItem);
}
@Override
public View getPinnedHeaderView(View convertView, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(getContext());
View view = inflater.inflate(R.layout.list_item_movie, parent, false);
view.setFocusable(false);
view.setEnabled(false);
bindHeaderView(view, null);
return view;
}
private class HeaderItem {
ImageView poster;
TextView title;
}
private class MovieReleaseItem {
TextView releaseName;
TextView status;
TextView size;
TextView age;
TextView score;
TextView provider;
}
}