package com.florianmski.tracktoid.ui.fragments.season;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import com.florianmski.tracktoid.R;
import com.florianmski.tracktoid.TraktoidConstants;
import com.florianmski.tracktoid.TraktoidTheme;
import com.florianmski.tracktoid.adapters.RecyclerAdapter;
import com.florianmski.tracktoid.adapters.lists.RecyclerTraktItemAdapter;
import com.florianmski.tracktoid.data.WEpisode;
import com.florianmski.tracktoid.data.database.ProviderSchematic;
import com.florianmski.tracktoid.data.database.columns.EpisodeColumns;
import com.florianmski.tracktoid.image.Type;
import com.florianmski.tracktoid.rx.observables.CursorObservable;
import com.florianmski.tracktoid.rx.observables.TraktFallbackTransformer;
import com.florianmski.tracktoid.rx.observables.TraktObservable;
import com.florianmski.tracktoid.trakt.TraktManager;
import com.florianmski.tracktoid.ui.activities.EpisodeActivity;
import com.florianmski.tracktoid.ui.fragments.base.list.ItemRecyclerViewFragment;
import com.uwetrottmann.trakt.v2.entities.Episode;
import com.uwetrottmann.trakt.v2.enums.Extended;
import com.uwetrottmann.trakt.v2.exceptions.OAuthUnauthorizedException;
import java.util.ArrayList;
import java.util.List;
import rx.Observable;
public class SeasonFragment extends ItemRecyclerViewFragment<WEpisode> implements RecyclerAdapter.OnItemClickListener
{
private String showId;
private String seasonId;
private int season;
public static SeasonFragment newInstance(String showId, String seasonId, int season)
{
SeasonFragment f = new SeasonFragment();
Bundle args = new Bundle();
args.putString(TraktoidConstants.BUNDLE_SHOW_ID, showId);
args.putString(TraktoidConstants.BUNDLE_ID, seasonId);
args.putInt(TraktoidConstants.BUNDLE_SEASON, season);
f.setArguments(args);
return f;
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
if(getArguments() != null)
{
showId = getArguments().getString(TraktoidConstants.BUNDLE_SHOW_ID);
seasonId = getArguments().getString(TraktoidConstants.BUNDLE_ID);
season = getArguments().getInt(TraktoidConstants.BUNDLE_SEASON);
}
}
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
}
@Override
protected Observable<List<WEpisode>> createObservable()
{
return Observable.create(new CursorObservable<List<WEpisode>>(
getActivity(),
ProviderSchematic.Episodes.fromSeason(seasonId),
null, null, null,
EpisodeColumns.NUMBER + " ASC")
{
@Override
protected List<WEpisode> toObject(Cursor cursor)
{
return WEpisode.unpackList(cursor);
}
}).compose(new TraktFallbackTransformer<>(new TraktObservable<List<WEpisode>>()
{
@Override
public List<WEpisode> fire() throws OAuthUnauthorizedException
{
List<Episode> episodes = TraktManager.getInstance().seasons().season(String.valueOf(showId), season, Extended.FULLIMAGES);
List<WEpisode> wEpisodes = new ArrayList<>();
for (Episode episode : episodes)
wEpisodes.add(new WEpisode(episode, showId));
return wEpisodes;
}
}));
}
@Override
protected RecyclerAdapter<WEpisode, ?> createAdapter(List<WEpisode> cursor)
{
return new RecyclerTraktItemAdapter<>(getActivity(), cursor, getTheme(), this).imageType(Type.SCREENSHOT).titleVisible(true);
}
@Override
public void onItemClick(View v, int position)
{
RecyclerAdapter<WEpisode, ?> adapter = getAdapter();
WEpisode wEpisode = adapter.getItem2(position);
EpisodeActivity.launch(getActivity(), wEpisode);
}
@Override
protected RecyclerView.LayoutManager getLayoutManager()
{
return new GridLayoutManager(getActivity(), getResources().getInteger(R.integer.grid_fanart_columns));
}
@Override
public TraktoidTheme getTheme()
{
return TraktoidTheme.SHOW;
}
}