internal static SortBy ShowSortMenu(SortBy currentSortBy)
{
var newSortBy = new SortBy();
GUIDialogMenu dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU);
if (dlg == null) return null;
dlg.Reset();
dlg.SetHeading(495); // Sort options
// Add generic sortby fields
GUIListItem pItem = new GUIListItem(Translation.Title);
dlg.Add(pItem);
pItem.ItemId = (int)SortingFields.Title;
pItem = new GUIListItem(Translation.ReleaseDate);
dlg.Add(pItem);
pItem.ItemId = (int)SortingFields.ReleaseDate;
pItem = new GUIListItem(Translation.Score);
dlg.Add(pItem);
pItem.ItemId = (int)SortingFields.Score;
pItem = new GUIListItem(Translation.Votes);
dlg.Add(pItem);
pItem.ItemId = (int)SortingFields.Votes;
pItem = new GUIListItem(Translation.Popularity);
dlg.Add(pItem);
pItem.ItemId = (int)SortingFields.Popularity;
pItem = new GUIListItem(Translation.Runtime);
dlg.Add(pItem);
pItem.ItemId = (int)SortingFields.Runtime;
// Trending
if (GUIWindowManager.ActiveWindow == (int)TraktGUIWindows.TrendingMovies ||
GUIWindowManager.ActiveWindow == (int)TraktGUIWindows.TrendingShows) {
pItem = new GUIListItem(Translation.Watchers);
dlg.Add(pItem);
pItem.ItemId = (int)SortingFields.PeopleWatching;
}
// Watchlist
if (GUIWindowManager.ActiveWindow == (int)TraktGUIWindows.WatchedListMovies ||
GUIWindowManager.ActiveWindow == (int)TraktGUIWindows.WatchedListShows) {
pItem = new GUIListItem(Translation.Inserted);
dlg.Add(pItem);
pItem.ItemId = (int)SortingFields.WatchListInserted;
}
// Anticipated
if (GUIWindowManager.ActiveWindow == (int)TraktGUIWindows.AnticipatedMovies ||
GUIWindowManager.ActiveWindow == (int)TraktGUIWindows.AnticipatedShows)
{
pItem = new GUIListItem(Translation.Anticipated);
dlg.Add(pItem);
pItem.ItemId = (int)SortingFields.Anticipated;
}
// set the focus to currently used sort method
dlg.SelectedLabel = (int)currentSortBy.Field;
// show dialog and wait for result
dlg.DoModal(GUIWindowManager.ActiveWindow);
if (dlg.SelectedId == -1) return null;
switch (dlg.SelectedId)
{
case (int)SortingFields.Title:
newSortBy.Field = SortingFields.Title;
break;
case (int)SortingFields.ReleaseDate:
newSortBy.Field = SortingFields.ReleaseDate;
newSortBy.Direction = SortingDirections.Descending;
break;
case (int)SortingFields.Score:
newSortBy.Field = SortingFields.Score;
newSortBy.Direction = SortingDirections.Descending;
break;
case (int)SortingFields.Votes:
newSortBy.Field = SortingFields.Votes;
newSortBy.Direction = SortingDirections.Descending;
break;
case (int)SortingFields.Popularity:
newSortBy.Field = SortingFields.Popularity;
newSortBy.Direction = SortingDirections.Descending;
break;
case (int)SortingFields.Runtime:
newSortBy.Field = SortingFields.Runtime;
break;
case (int)SortingFields.PeopleWatching:
newSortBy.Field = SortingFields.PeopleWatching;
newSortBy.Direction = SortingDirections.Descending;
break;
case (int)SortingFields.WatchListInserted:
newSortBy.Direction = SortingDirections.Descending;
newSortBy.Field = SortingFields.WatchListInserted;
break;
case (int)SortingFields.Anticipated:
newSortBy.Direction = SortingDirections.Descending;
newSortBy.Field = SortingFields.Anticipated;
break;
default:
newSortBy.Field = SortingFields.Title;
break;
}
return newSortBy;
}