Added option to show/hide watched indicator in movies and TV shows list

This commit is contained in:
Synced Synapse 2017-06-23 19:50:46 +01:00
parent 750478b164
commit 77a9a8ca0e
7 changed files with 87 additions and 32 deletions

View File

@ -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;

View File

@ -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 {

View File

@ -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 {

View File

@ -65,4 +65,12 @@
android:title="@string/hide_watched"
app:showAsAction="never"/>
</group>
<group
android:checkableBehavior="all">
<item
android:id="@+id/action_show_watched_status"
android:title="@string/show_watched_status"
app:showAsAction="never"/>
</group>
</menu>

View File

@ -58,4 +58,12 @@
android:title="@string/hide_watched"
app:showAsAction="never"/>
</group>
<group
android:checkableBehavior="all">
<item
android:id="@+id/action_show_watched_status"
android:title="@string/show_watched_status"
app:showAsAction="never"/>
</group>
</menu>

View File

@ -200,7 +200,9 @@ Pressione <b><i>Concluir</i></b> para usar o controlo remoto.]]></string>
<string name="enable_disable">Ativar/desativar Extensão</string>
<string name="addon_enabled">Extensão activada</string>
<string name="addon_disabled">Extensão desactivada</string>
<string name="hide_watched">Ocultar vistos</string>
<string name="hide_watched">Ocultar visualizados</string>
<string name="show_watched_status">Assinalar visualizados</string>
<string name="theme">Tema</string>
<string name="theme_night">Noite</string>
<string name="theme_day">Dia</string>
@ -307,6 +309,7 @@ Se necessitar de ajuda, visite o nosso <b><a href="http://forum.kodi.tv/forumdis
<string name="sort_by_last_played">Por data de reprodução</string>
<string name="tvshow_next_episode">Próximos episódios</string>
<string name="tvshow_seasons">Épocas</string>
<string name="Refreshing_not_implemented_for_this_item"></string>
<!--<string name="buy_me_coffee">Oferecer um café</string>-->
<!--<string name="expresso_please">Expresso, por favor. Obrigado!</string>-->

View File

@ -330,6 +330,7 @@
<string name="sort_by_date_added">By date added</string>
<string name="sort_by_last_played">By last played</string>
<string name="ignore_prefixes">Ignore prefixes</string>
<string name="show_watched_status">Show watched status</string>
<!-- Preferences strings -->
<string name="application">Application</string>