From 63c32467d403807eee13d08f4942fdb4645d60b6 Mon Sep 17 00:00:00 2001 From: Raafat Akkad Date: Sun, 11 Oct 2015 14:20:59 +0100 Subject: [PATCH 1/2] Add ability to sort by year, rating and length in the Movie fragment --- app/src/main/java/org/xbmc/kore/Settings.java | 5 +- .../org/xbmc/kore/ui/MovieListFragment.java | 46 ++++++++++++++++++- app/src/main/res/menu/movie_list.xml | 12 +++++ app/src/main/res/values/strings.xml | 3 ++ 4 files changed, 64 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/xbmc/kore/Settings.java b/app/src/main/java/org/xbmc/kore/Settings.java index 2f0a2d7..d7924e3 100644 --- a/app/src/main/java/org/xbmc/kore/Settings.java +++ b/app/src/main/java/org/xbmc/kore/Settings.java @@ -35,7 +35,10 @@ public interface Settings { // Sort orders public static final int SORT_BY_NAME = 0, - SORT_BY_DATE_ADDED = 1; + SORT_BY_DATE_ADDED = 1, + SORT_BY_RATING = 2, + SORT_BY_YEAR = 3, + SORT_BY_LENGTH = 4; /** * Preferences keys. diff --git a/app/src/main/java/org/xbmc/kore/ui/MovieListFragment.java b/app/src/main/java/org/xbmc/kore/ui/MovieListFragment.java index 7359abe..0782412 100644 --- a/app/src/main/java/org/xbmc/kore/ui/MovieListFragment.java +++ b/app/src/main/java/org/xbmc/kore/ui/MovieListFragment.java @@ -109,6 +109,12 @@ public class MovieListFragment extends AbstractListFragment { int sortOrder = preferences.getInt(Settings.KEY_PREF_MOVIES_SORT_ORDER, Settings.DEFAULT_PREF_MOVIES_SORT_ORDER); if (sortOrder == Settings.SORT_BY_DATE_ADDED) { sortOrderStr = MovieListQuery.SORT_BY_DATE_ADDED; + } else if (sortOrder == Settings.SORT_BY_RATING) { + sortOrderStr = MovieListQuery.SORT_BY_RATING; + } else if (sortOrder == Settings.SORT_BY_YEAR) { + sortOrderStr = MovieListQuery.SORT_BY_YEAR; + } else if (sortOrder == Settings.SORT_BY_LENGTH) { + sortOrderStr = MovieListQuery.SORT_BY_LENGTH; } else { // Sort by name if (preferences.getBoolean(Settings.KEY_PREF_MOVIES_IGNORE_PREFIXES, Settings.DEFAULT_PREF_MOVIES_IGNORE_PREFIXES)) { @@ -158,7 +164,11 @@ public class MovieListFragment extends AbstractListFragment { MenuItem hideWatched = menu.findItem(R.id.action_hide_watched), ignoreArticles = menu.findItem(R.id.action_ignore_prefixes), sortByName = menu.findItem(R.id.action_sort_by_name), - sortByDateAdded = menu.findItem(R.id.action_sort_by_date_added); + sortByYear = menu.findItem(R.id.action_sort_by_year), + sortByRating = menu.findItem(R.id.action_sort_by_rating), + sortByDateAdded = menu.findItem(R.id.action_sort_by_date_added), + sortByLength = menu.findItem(R.id.action_sort_by_length); + SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); hideWatched.setChecked(preferences.getBoolean(Settings.KEY_PREF_MOVIES_FILTER_HIDE_WATCHED, Settings.DEFAULT_PREF_MOVIES_FILTER_HIDE_WATCHED)); @@ -166,9 +176,18 @@ public class MovieListFragment extends AbstractListFragment { int sortOrder = preferences.getInt(Settings.KEY_PREF_MOVIES_SORT_ORDER, Settings.DEFAULT_PREF_MOVIES_SORT_ORDER); switch (sortOrder) { + case Settings.SORT_BY_YEAR: + sortByYear.setChecked(true); + break; + case Settings.SORT_BY_RATING: + sortByRating.setChecked(true); + break; case Settings.SORT_BY_DATE_ADDED: sortByDateAdded.setChecked(true); break; + case Settings.SORT_BY_LENGTH: + sortByLength.setChecked(true); + break; default: sortByName.setChecked(true); break; @@ -202,6 +221,20 @@ public class MovieListFragment extends AbstractListFragment { .apply(); refreshList(); break; + case R.id.action_sort_by_year: + item.setChecked(true); + preferences.edit() + .putInt(Settings.KEY_PREF_MOVIES_SORT_ORDER, Settings.SORT_BY_YEAR) + .apply(); + refreshList(); + break; + case R.id.action_sort_by_rating: + item.setChecked(true); + preferences.edit() + .putInt(Settings.KEY_PREF_MOVIES_SORT_ORDER, Settings.SORT_BY_RATING) + .apply(); + refreshList(); + break; case R.id.action_sort_by_date_added: item.setChecked(true); preferences.edit() @@ -209,6 +242,13 @@ public class MovieListFragment extends AbstractListFragment { .apply(); refreshList(); break; + case R.id.action_sort_by_length: + item.setChecked(true); + preferences.edit() + .putInt(Settings.KEY_PREF_MOVIES_SORT_ORDER, Settings.SORT_BY_LENGTH) + .apply(); + refreshList(); + break; default: break; } @@ -232,8 +272,12 @@ public class MovieListFragment extends AbstractListFragment { MediaContract.Movies.TAGLINE, }; + String SORT_BY_NAME = MediaContract.Movies.TITLE + " ASC"; + String SORT_BY_YEAR = MediaContract.Movies.YEAR + " ASC"; + String SORT_BY_RATING = MediaContract.Movies.RATING + " DESC"; String SORT_BY_DATE_ADDED = MediaContract.Movies.DATEADDED + " DESC"; + String SORT_BY_LENGTH = MediaContract.Movies.RUNTIME + " DESC"; String SORT_BY_NAME_IGNORE_ARTICLES = MediaDatabase.sortCommonTokens(MediaContract.Movies.TITLE) + " ASC"; final int ID = 0; diff --git a/app/src/main/res/menu/movie_list.xml b/app/src/main/res/menu/movie_list.xml index 1be010e..d731b96 100644 --- a/app/src/main/res/menu/movie_list.xml +++ b/app/src/main/res/menu/movie_list.xml @@ -34,10 +34,22 @@ android:id="@+id/action_sort_by_name" android:title="@string/sort_by_name" app:showAsAction="never"/> + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 52fa4a4..f200ba7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -301,6 +301,9 @@ Hide watched Sort By name + By year + By rating + By length By date added Ignore prefixes From 57faf5ee1f00cfa756cb7546fe3ac43582912c27 Mon Sep 17 00:00:00 2001 From: Raafat Akkad Date: Sun, 11 Oct 2015 14:56:07 +0100 Subject: [PATCH 2/2] Add ability to sort by year & rating in the TV Shows fragment --- .../org/xbmc/kore/ui/TVShowListFragment.java | 28 +++++++++++++++++++ app/src/main/res/menu/tvshow_list.xml | 8 ++++++ 2 files changed, 36 insertions(+) diff --git a/app/src/main/java/org/xbmc/kore/ui/TVShowListFragment.java b/app/src/main/java/org/xbmc/kore/ui/TVShowListFragment.java index c4f7376..e98b6a2 100644 --- a/app/src/main/java/org/xbmc/kore/ui/TVShowListFragment.java +++ b/app/src/main/java/org/xbmc/kore/ui/TVShowListFragment.java @@ -111,6 +111,10 @@ public class TVShowListFragment extends AbstractListFragment { int sortOrder = preferences.getInt(Settings.KEY_PREF_TVSHOWS_SORT_ORDER, Settings.DEFAULT_PREF_TVSHOWS_SORT_ORDER); if (sortOrder == Settings.SORT_BY_DATE_ADDED) { sortOrderStr = TVShowListQuery.SORT_BY_DATE_ADDED; + } else if (sortOrder == Settings.SORT_BY_YEAR) { + sortOrderStr = TVShowListQuery.SORT_BY_YEAR; + } else if (sortOrder == Settings.SORT_BY_RATING) { + sortOrderStr = TVShowListQuery.SORT_BY_RATING; } else { // Sort by name if (preferences.getBoolean(Settings.KEY_PREF_TVSHOWS_IGNORE_PREFIXES, Settings.DEFAULT_PREF_TVSHOWS_IGNORE_PREFIXES)) { @@ -160,6 +164,8 @@ public class TVShowListFragment extends AbstractListFragment { MenuItem hideWatched = menu.findItem(R.id.action_hide_watched), ignoreArticles = menu.findItem(R.id.action_ignore_prefixes), sortByName = menu.findItem(R.id.action_sort_by_name), + sortByYear = menu.findItem(R.id.action_sort_by_year), + sortByRating = menu.findItem(R.id.action_sort_by_rating), sortByDateAdded = menu.findItem(R.id.action_sort_by_date_added); SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); @@ -168,6 +174,12 @@ public class TVShowListFragment extends AbstractListFragment { int sortOrder = preferences.getInt(Settings.KEY_PREF_TVSHOWS_SORT_ORDER, Settings.DEFAULT_PREF_TVSHOWS_SORT_ORDER); switch (sortOrder) { + case Settings.SORT_BY_YEAR: + sortByYear.setChecked(true); + break; + case Settings.SORT_BY_RATING: + sortByRating.setChecked(true); + break; case Settings.SORT_BY_DATE_ADDED: sortByDateAdded.setChecked(true); break; @@ -204,6 +216,20 @@ public class TVShowListFragment extends AbstractListFragment { .apply(); refreshList(); break; + case R.id.action_sort_by_year: + item.setChecked(true); + preferences.edit() + .putInt(Settings.KEY_PREF_TVSHOWS_SORT_ORDER, Settings.SORT_BY_YEAR) + .apply(); + refreshList(); + break; + case R.id.action_sort_by_rating: + item.setChecked(true); + preferences.edit() + .putInt(Settings.KEY_PREF_TVSHOWS_SORT_ORDER, Settings.SORT_BY_RATING) + .apply(); + refreshList(); + break; case R.id.action_sort_by_date_added: item.setChecked(true); preferences.edit() @@ -240,6 +266,8 @@ public class TVShowListFragment extends AbstractListFragment { }; String SORT_BY_NAME = MediaContract.TVShows.TITLE + " ASC"; + String SORT_BY_YEAR = MediaContract.TVShows.PREMIERED + " DESC"; + String SORT_BY_RATING = MediaContract.TVShows.RATING + " DESC"; String SORT_BY_DATE_ADDED = MediaContract.TVShows.DATEADDED + " DESC"; String SORT_BY_NAME_IGNORE_ARTICLES = MediaDatabase.sortCommonTokens(MediaContract.TVShows.TITLE) + " ASC"; diff --git a/app/src/main/res/menu/tvshow_list.xml b/app/src/main/res/menu/tvshow_list.xml index b87f249..a945fe8 100644 --- a/app/src/main/res/menu/tvshow_list.xml +++ b/app/src/main/res/menu/tvshow_list.xml @@ -32,6 +32,14 @@ android:id="@+id/action_sort_by_name" android:title="@string/sort_by_name" app:showAsAction="never"/> + +