package com.florianmski.tracktoid.ui.fragments.library;
import android.database.Cursor;
import com.florianmski.tracktoid.TraktoidTheme;
import com.florianmski.tracktoid.data.WShow;
import com.florianmski.tracktoid.data.database.ProviderSchematic;
import com.florianmski.tracktoid.data.database.columns.ShowColumns;
import com.florianmski.tracktoid.rx.observables.CursorObservable;
import java.util.List;
import rx.Observable;
public class LibraryShowFragment extends LibraryFragment<WShow>
{
public static LibraryShowFragment newInstance()
{
return new LibraryShowFragment();
}
public LibraryShowFragment() {}
@Override
protected Observable<List<WShow>> createObservable()
{
return Observable.create(
new CursorObservable<List<WShow>>(
getActivity(),
ProviderSchematic.Shows.CONTENT_URI,
ProviderSchematic.Shows.PROJECTION,
generateSelection(),
null,
null)
{
@Override
protected List<WShow> toObject(Cursor cursor)
{
return WShow.unpackList(cursor);
}
});
}
private String generateSelection()
{
String selection = null;
if(currentFilter == FILTER_PLAYS)
selection = ShowColumns.EPISODES_WATCHED + ">=1";
else if(currentFilter == FILTER_COLLECTION)
selection = ShowColumns.EPISODES_COLLECTED + ">=1";
else if(currentFilter == FILTER_WATCHLIST)
selection = ShowColumns.WATCHLISTED + "=1";
if(filterHideWatched)
{
if(selection == null)
selection = ShowColumns.EPISODES_WATCHED + "<" + ShowColumns.EPISODES_AIRED;
else
selection += " AND " + ShowColumns.EPISODES_WATCHED + "<" + ShowColumns.EPISODES_AIRED;
// if no episodes aired, we do not hide it
selection += " OR " + ShowColumns.EPISODES_AIRED + "=0";
}
return selection;
}
// if I use this it mess up the args that will be applied by Schematic for the subrequests
private String[] generateSelectionArgs()
{
if(currentFilter != FILTER_ALL)
{
if(filterHideWatched)
return new String[]{String.valueOf(1), String.valueOf(0)};
else
return new String[]{String.valueOf(1)};
}
else if(filterHideWatched)
return new String[]{String.valueOf(0)};
else
return null;
}
@Override
public TraktoidTheme getTheme()
{
return TraktoidTheme.SHOW;
}
}