From 77a9a8ca0e92d2370151c0c3562682db380522e8 Mon Sep 17 00:00:00 2001 From: Synced Synapse Date: Fri, 23 Jun 2017 19:50:46 +0100 Subject: [PATCH] Added option to show/hide watched indicator in movies and TV shows list --- app/src/main/java/org/xbmc/kore/Settings.java | 8 ++++ .../ui/sections/video/MovieListFragment.java | 41 ++++++++++------ .../ui/sections/video/TVShowListFragment.java | 48 ++++++++++++------- app/src/main/res/menu/movie_list.xml | 8 ++++ app/src/main/res/menu/tvshow_list.xml | 8 ++++ app/src/main/res/values-pt/strings.xml | 5 +- app/src/main/res/values/strings.xml | 1 + 7 files changed, 87 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/org/xbmc/kore/Settings.java b/app/src/main/java/org/xbmc/kore/Settings.java index 0da3a8c..5285b48 100644 --- a/app/src/main/java/org/xbmc/kore/Settings.java +++ b/app/src/main/java/org/xbmc/kore/Settings.java @@ -92,6 +92,10 @@ public class Settings { public static final String KEY_PREF_MOVIES_SORT_ORDER = "movies_sort_order"; public static final int DEFAULT_PREF_MOVIES_SORT_ORDER = SORT_BY_NAME; + // Show watched status on movie list + public static final String KEY_PREF_MOVIES_SHOW_WATCHED_STATUS = "movies_show_watched_status"; + public static final boolean DEFAULT_PREF_MOVIES_SHOW_WATCHED_STATUS = true; + // Sort order on albums public static final String KEY_PREF_ALBUMS_SORT_ORDER = "albums_sort_order"; public static final int DEFAULT_PREF_ALBUMS_SORT_ORDER = SORT_BY_ALBUM; @@ -116,6 +120,10 @@ public class Settings { public static final String KEY_PREF_TVSHOWS_IGNORE_PREFIXES = "tvshows_ignore_prefixes"; public static final boolean DEFAULT_PREF_TVSHOWS_IGNORE_PREFIXES = false; + // Show watched status on movie list + public static final String KEY_PREF_TVSHOWS_SHOW_WATCHED_STATUS = "tvshows_show_watched_status"; + public static final boolean DEFAULT_PREF_TVSHOWS_SHOW_WATCHED_STATUS = true; + // Use hardware volume keys to control volume public static final String KEY_PREF_USE_HARDWARE_VOLUME_KEYS = "pref_use_hardware_volume_keys"; public static final boolean DEFAULT_PREF_USE_HARDWARE_VOLUME_KEYS = true; diff --git a/app/src/main/java/org/xbmc/kore/ui/sections/video/MovieListFragment.java b/app/src/main/java/org/xbmc/kore/ui/sections/video/MovieListFragment.java index 63f8f63..3cba7a6 100644 --- a/app/src/main/java/org/xbmc/kore/ui/sections/video/MovieListFragment.java +++ b/app/src/main/java/org/xbmc/kore/ui/sections/video/MovieListFragment.java @@ -57,12 +57,14 @@ public class MovieListFragment extends AbstractCursorListFragment { private static final String TAG = LogUtils.makeLogTag(MovieListFragment.class); public interface OnMovieSelectedListener { - public void onMovieSelected(ViewHolder vh); + void onMovieSelected(ViewHolder vh); } // Activity listener private OnMovieSelectedListener listenerActivity; + private boolean showWatchedStatus; + @Override protected String getListSyncType() { return LibrarySyncService.SYNC_ALL_MOVIES; } @@ -100,6 +102,8 @@ public class MovieListFragment extends AbstractCursorListFragment { .append("=0"); } + showWatchedStatus = preferences.getBoolean(Settings.KEY_PREF_MOVIES_SHOW_WATCHED_STATUS, Settings.DEFAULT_PREF_MOVIES_SHOW_WATCHED_STATUS); + String sortOrderStr; int sortOrder = preferences.getInt(Settings.KEY_PREF_MOVIES_SORT_ORDER, Settings.DEFAULT_PREF_MOVIES_SORT_ORDER); if (sortOrder == Settings.SORT_BY_DATE_ADDED) { @@ -160,11 +164,12 @@ public class MovieListFragment extends AbstractCursorListFragment { sortByRating = menu.findItem(R.id.action_sort_by_rating), sortByDateAdded = menu.findItem(R.id.action_sort_by_date_added), sortByLastPlayed = menu.findItem(R.id.action_sort_by_last_played), - sortByLength = menu.findItem(R.id.action_sort_by_length); - + sortByLength = menu.findItem(R.id.action_sort_by_length), + showWatchedStatusMenuItem = menu.findItem(R.id.action_show_watched_status); SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); hideWatched.setChecked(preferences.getBoolean(Settings.KEY_PREF_MOVIES_FILTER_HIDE_WATCHED, Settings.DEFAULT_PREF_MOVIES_FILTER_HIDE_WATCHED)); + showWatchedStatusMenuItem.setChecked(preferences.getBoolean(Settings.KEY_PREF_MOVIES_SHOW_WATCHED_STATUS, Settings.DEFAULT_PREF_MOVIES_SHOW_WATCHED_STATUS)); ignoreArticles.setChecked(preferences.getBoolean(Settings.KEY_PREF_MOVIES_IGNORE_PREFIXES, Settings.DEFAULT_PREF_MOVIES_IGNORE_PREFIXES)); int sortOrder = preferences.getInt(Settings.KEY_PREF_MOVIES_SORT_ORDER, Settings.DEFAULT_PREF_MOVIES_SORT_ORDER); @@ -203,6 +208,14 @@ public class MovieListFragment extends AbstractCursorListFragment { .apply(); refreshList(); break; + case R.id.action_show_watched_status: + item.setChecked(!item.isChecked()); + preferences.edit() + .putBoolean(Settings.KEY_PREF_MOVIES_SHOW_WATCHED_STATUS, item.isChecked()) + .apply(); + showWatchedStatus = item.isChecked(); + refreshList(); + break; case R.id.action_ignore_prefixes: item.setChecked(!item.isChecked()); preferences.edit() @@ -285,16 +298,16 @@ public class MovieListFragment extends AbstractCursorListFragment { String SORT_BY_LENGTH = MediaContract.Movies.RUNTIME + " DESC"; String SORT_BY_NAME_IGNORE_ARTICLES = MediaDatabase.sortCommonTokens(MediaContract.Movies.TITLE) + " COLLATE NOCASE ASC"; - final int ID = 0; - final int MOVIEID = 1; - final int TITLE = 2; - final int THUMBNAIL = 3; - final int YEAR = 4; - final int GENRES = 5; - final int RUNTIME = 6; - final int RATING = 7; - final int TAGLINE = 8; - final int PLAYCOUNT = 9; + int ID = 0; + int MOVIEID = 1; + int TITLE = 2; + int THUMBNAIL = 3; + int YEAR = 4; + int GENRES = 5; + int RUNTIME = 6; + int RATING = 7; + int TAGLINE = 8; + int PLAYCOUNT = 9; } private class MoviesAdapter extends CursorAdapter { @@ -381,7 +394,7 @@ public class MovieListFragment extends AbstractCursorListFragment { viewHolder.dataHolder.getTitle(), viewHolder.artView, artWidth, artHeight); - if (cursor.getInt(MovieListQuery.PLAYCOUNT) > 0) { + if (showWatchedStatus && (cursor.getInt(MovieListQuery.PLAYCOUNT) > 0)) { viewHolder.checkmarkView.setVisibility(View.VISIBLE); viewHolder.checkmarkView.setColorFilter(themeAccentColor); } else { diff --git a/app/src/main/java/org/xbmc/kore/ui/sections/video/TVShowListFragment.java b/app/src/main/java/org/xbmc/kore/ui/sections/video/TVShowListFragment.java index eff2a3d..e30aeb5 100644 --- a/app/src/main/java/org/xbmc/kore/ui/sections/video/TVShowListFragment.java +++ b/app/src/main/java/org/xbmc/kore/ui/sections/video/TVShowListFragment.java @@ -57,12 +57,14 @@ public class TVShowListFragment extends AbstractCursorListFragment { private static final String TAG = LogUtils.makeLogTag(TVShowListFragment.class); public interface OnTVShowSelectedListener { - public void onTVShowSelected(TVShowListFragment.ViewHolder vh); + void onTVShowSelected(TVShowListFragment.ViewHolder vh); } // Activity listener private OnTVShowSelectedListener listenerActivity; + private boolean showWatchedStatus; + @Override protected String getListSyncType() { return LibrarySyncService.SYNC_ALL_TVSHOWS; } @@ -102,6 +104,8 @@ public class TVShowListFragment extends AbstractCursorListFragment { .append(MediaContract.TVShowsColumns.EPISODE); } + showWatchedStatus = preferences.getBoolean(Settings.KEY_PREF_TVSHOWS_SHOW_WATCHED_STATUS, Settings.DEFAULT_PREF_TVSHOWS_SHOW_WATCHED_STATUS); + String sortOrderStr; int sortOrder = preferences.getInt(Settings.KEY_PREF_TVSHOWS_SORT_ORDER, Settings.DEFAULT_PREF_TVSHOWS_SORT_ORDER); if (sortOrder == Settings.SORT_BY_DATE_ADDED) { @@ -161,10 +165,12 @@ public class TVShowListFragment extends AbstractCursorListFragment { 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), - sortByLastPlayed = menu.findItem(R.id.action_sort_by_last_played); + sortByLastPlayed = menu.findItem(R.id.action_sort_by_last_played), + showWatchedStatusMenuItem = menu.findItem(R.id.action_show_watched_status); SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); hideWatched.setChecked(preferences.getBoolean(Settings.KEY_PREF_TVSHOWS_FILTER_HIDE_WATCHED, Settings.DEFAULT_PREF_TVSHOWS_FILTER_HIDE_WATCHED)); + showWatchedStatusMenuItem.setChecked(preferences.getBoolean(Settings.KEY_PREF_TVSHOWS_SHOW_WATCHED_STATUS, Settings.DEFAULT_PREF_TVSHOWS_SHOW_WATCHED_STATUS)); ignoreArticles.setChecked(preferences.getBoolean(Settings.KEY_PREF_TVSHOWS_IGNORE_PREFIXES, Settings.DEFAULT_PREF_TVSHOWS_IGNORE_PREFIXES)); int sortOrder = preferences.getInt(Settings.KEY_PREF_TVSHOWS_SORT_ORDER, Settings.DEFAULT_PREF_TVSHOWS_SORT_ORDER); @@ -200,6 +206,14 @@ public class TVShowListFragment extends AbstractCursorListFragment { .apply(); refreshList(); break; + case R.id.action_show_watched_status: + item.setChecked(!item.isChecked()); + preferences.edit() + .putBoolean(Settings.KEY_PREF_TVSHOWS_SHOW_WATCHED_STATUS, item.isChecked()) + .apply(); + showWatchedStatus = item.isChecked(); + refreshList(); + break; case R.id.action_ignore_prefixes: item.setChecked(!item.isChecked()); preferences.edit() @@ -277,20 +291,20 @@ public class TVShowListFragment extends AbstractCursorListFragment { String SORT_BY_LAST_PLAYED = MediaContract.TVShows.LASTPLAYED + " DESC"; String SORT_BY_NAME_IGNORE_ARTICLES = MediaDatabase.sortCommonTokens(MediaContract.TVShows.TITLE) + " COLLATE NOCASE ASC"; - final int ID = 0; - final int TVSHOWID = 1; - final int TITLE = 2; - final int THUMBNAIL = 3; - final int FANART = 4; - final int PREMIERED = 5; - final int STUDIO = 6; - final int EPISODE = 7; - final int WATCHEDEPISODES = 8; - final int RATING = 9; - final int PLOT = 10; - final int PLAYCOUNT = 11; - final int IMDBNUMBER = 12; - final int GENRES = 13; + int ID = 0; + int TVSHOWID = 1; + int TITLE = 2; + int THUMBNAIL = 3; + int FANART = 4; + int PREMIERED = 5; + int STUDIO = 6; + int EPISODE = 7; + int WATCHEDEPISODES = 8; + int RATING = 9; + int PLOT = 10; + int PLAYCOUNT = 11; + int IMDBNUMBER = 12; + int GENRES = 13; } private class TVShowsAdapter extends CursorAdapter { @@ -371,7 +385,7 @@ public class TVShowListFragment extends AbstractCursorListFragment { viewHolder.dataHolder.getTitle(), viewHolder.artView, artWidth, artHeight); - if (episode - watchedEpisodes == 0) { + if (showWatchedStatus && (episode - watchedEpisodes == 0)) { viewHolder.checkmarkView.setVisibility(View.VISIBLE); viewHolder.checkmarkView.setColorFilter(themeAccentColor); } else { diff --git a/app/src/main/res/menu/movie_list.xml b/app/src/main/res/menu/movie_list.xml index 4ec0d00..261aedf 100644 --- a/app/src/main/res/menu/movie_list.xml +++ b/app/src/main/res/menu/movie_list.xml @@ -65,4 +65,12 @@ android:title="@string/hide_watched" app:showAsAction="never"/> + + + + diff --git a/app/src/main/res/menu/tvshow_list.xml b/app/src/main/res/menu/tvshow_list.xml index 98a5e6d..6ecdd04 100644 --- a/app/src/main/res/menu/tvshow_list.xml +++ b/app/src/main/res/menu/tvshow_list.xml @@ -58,4 +58,12 @@ android:title="@string/hide_watched" app:showAsAction="never"/> + + + + diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 67d4db7..1184836 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -200,7 +200,9 @@ Pressione Concluir para usar o controlo remoto.]]> Ativar/desativar Extensão Extensão activada Extensão desactivada - Ocultar vistos + Ocultar visualizados + Assinalar visualizados + Tema Noite Dia @@ -307,6 +309,7 @@ Se necessitar de ajuda, visite o nosso Por data de reprodução Próximos episódios Épocas + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 23ced5c..ee0b869 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -330,6 +330,7 @@ By date added By last played Ignore prefixes + Show watched status Application