package tv.emby.embyatv.search;
import android.app.Activity;
import android.support.v17.leanback.widget.ArrayObjectAdapter;
import android.support.v17.leanback.widget.HeaderItem;
import android.support.v17.leanback.widget.ListRow;
import mediabrowser.model.search.SearchQuery;
import tv.emby.embyatv.R;
import tv.emby.embyatv.itemhandling.ItemRowAdapter;
import tv.emby.embyatv.presentation.CardPresenter;
/**
* Created by Eric on 4/8/2015.
*/
public class SearchRunnable implements Runnable {
private String searchString;
private Activity activity;
private ArrayObjectAdapter mRowsAdapter;
private boolean musicOnly;
public void setQueryString(String value) {
searchString = value;
}
public SearchRunnable(Activity activity, ArrayObjectAdapter adapter, boolean musicOnly) {
this.activity = activity;
this.mRowsAdapter = adapter;
this.musicOnly = musicOnly;
}
@Override
public void run() {
mRowsAdapter.clear();
if (!musicOnly) {
//Get search results by type
SearchQuery people = getSearchQuery(new String[] {"Person"});
ItemRowAdapter peopleAdapter = new ItemRowAdapter(people, new CardPresenter(), mRowsAdapter);
ListRow peopleRow = new ListRow(new HeaderItem(activity.getString(R.string.lbl_people)), peopleAdapter);
peopleAdapter.setRow(peopleRow);
peopleAdapter.Retrieve();
SearchQuery movies = getSearchQuery(new String[] {"Movie", "BoxSet"});
ItemRowAdapter movieAdapter = new ItemRowAdapter(movies, new CardPresenter(), mRowsAdapter);
ListRow movieRow = new ListRow(new HeaderItem(activity.getString(R.string.lbl_movies)), movieAdapter);
movieAdapter.setRow(movieRow);
movieAdapter.Retrieve();
SearchQuery tv = getSearchQuery(new String[] {"Series","Episode"});
ItemRowAdapter tvAdapter = new ItemRowAdapter(tv, new CardPresenter(), mRowsAdapter);
ListRow tvRow = new ListRow(new HeaderItem(activity.getString(R.string.lbl_tv)), tvAdapter);
tvAdapter.setRow(tvRow);
tvAdapter.Retrieve();
SearchQuery videos = getSearchQuery(new String[] {"Video"});
ItemRowAdapter videoAdapter = new ItemRowAdapter(videos, new CardPresenter(), mRowsAdapter);
ListRow videoRow = new ListRow(new HeaderItem(activity.getString(R.string.lbl_videos)), videoAdapter);
videoAdapter.setRow(videoRow);
videoAdapter.Retrieve();
SearchQuery recordings = getSearchQuery(new String[] {"Recording"});
ItemRowAdapter recordingAdapter = new ItemRowAdapter(recordings, new CardPresenter(), mRowsAdapter);
ListRow recordingRow = new ListRow(new HeaderItem(activity.getString(R.string.lbl_recordings)), recordingAdapter);
recordingAdapter.setRow(recordingRow);
recordingAdapter.Retrieve();
SearchQuery programs = getSearchQuery(new String[] {"Program"});
ItemRowAdapter programAdapter = new ItemRowAdapter(programs, new CardPresenter(), mRowsAdapter);
ListRow programRow = new ListRow(new HeaderItem(activity.getString(R.string.lbl_programs)), programAdapter);
programAdapter.setRow(programRow);
programAdapter.Retrieve();
}
SearchQuery artists = getSearchQuery(new String[] {"MusicArtist"});
ItemRowAdapter artistAdapter = new ItemRowAdapter(artists, new CardPresenter(), mRowsAdapter);
ListRow artistRow = new ListRow(new HeaderItem(activity.getString(R.string.lbl_artists)), artistAdapter);
artistAdapter.setRow(artistRow);
artistAdapter.Retrieve();
SearchQuery albums = getSearchQuery(new String[] {"MusicAlbum"});
ItemRowAdapter albumAdapter = new ItemRowAdapter(albums, new CardPresenter(), mRowsAdapter);
ListRow albumRow = new ListRow(new HeaderItem(activity.getString(R.string.lbl_albums)), albumAdapter);
albumAdapter.setRow(albumRow);
albumAdapter.Retrieve();
SearchQuery songs = getSearchQuery(new String[] {"Audio"});
ItemRowAdapter songAdapter = new ItemRowAdapter(songs, new CardPresenter(), mRowsAdapter);
ListRow songRow = new ListRow(new HeaderItem(activity.getString(R.string.lbl_songs)), songAdapter);
songAdapter.setRow(songRow);
songAdapter.Retrieve();
}
private SearchQuery getSearchQuery(String[] itemTypes) {
SearchQuery query = new SearchQuery();
query.setLimit(50);
query.setSearchTerm(searchString);
query.setIncludeItemTypes(itemTypes);
return query;
}
}