Added option to show/hide watched indicator in movies and TV shows list
This commit is contained in:
parent
750478b164
commit
77a9a8ca0e
|
@ -92,6 +92,10 @@ public class Settings {
|
||||||
public static final String KEY_PREF_MOVIES_SORT_ORDER = "movies_sort_order";
|
public static final String KEY_PREF_MOVIES_SORT_ORDER = "movies_sort_order";
|
||||||
public static final int DEFAULT_PREF_MOVIES_SORT_ORDER = SORT_BY_NAME;
|
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
|
// Sort order on albums
|
||||||
public static final String KEY_PREF_ALBUMS_SORT_ORDER = "albums_sort_order";
|
public static final String KEY_PREF_ALBUMS_SORT_ORDER = "albums_sort_order";
|
||||||
public static final int DEFAULT_PREF_ALBUMS_SORT_ORDER = SORT_BY_ALBUM;
|
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 String KEY_PREF_TVSHOWS_IGNORE_PREFIXES = "tvshows_ignore_prefixes";
|
||||||
public static final boolean DEFAULT_PREF_TVSHOWS_IGNORE_PREFIXES = false;
|
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
|
// 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 String KEY_PREF_USE_HARDWARE_VOLUME_KEYS = "pref_use_hardware_volume_keys";
|
||||||
public static final boolean DEFAULT_PREF_USE_HARDWARE_VOLUME_KEYS = true;
|
public static final boolean DEFAULT_PREF_USE_HARDWARE_VOLUME_KEYS = true;
|
||||||
|
|
|
@ -57,12 +57,14 @@ public class MovieListFragment extends AbstractCursorListFragment {
|
||||||
private static final String TAG = LogUtils.makeLogTag(MovieListFragment.class);
|
private static final String TAG = LogUtils.makeLogTag(MovieListFragment.class);
|
||||||
|
|
||||||
public interface OnMovieSelectedListener {
|
public interface OnMovieSelectedListener {
|
||||||
public void onMovieSelected(ViewHolder vh);
|
void onMovieSelected(ViewHolder vh);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Activity listener
|
// Activity listener
|
||||||
private OnMovieSelectedListener listenerActivity;
|
private OnMovieSelectedListener listenerActivity;
|
||||||
|
|
||||||
|
private boolean showWatchedStatus;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String getListSyncType() { return LibrarySyncService.SYNC_ALL_MOVIES; }
|
protected String getListSyncType() { return LibrarySyncService.SYNC_ALL_MOVIES; }
|
||||||
|
|
||||||
|
@ -100,6 +102,8 @@ public class MovieListFragment extends AbstractCursorListFragment {
|
||||||
.append("=0");
|
.append("=0");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
showWatchedStatus = preferences.getBoolean(Settings.KEY_PREF_MOVIES_SHOW_WATCHED_STATUS, Settings.DEFAULT_PREF_MOVIES_SHOW_WATCHED_STATUS);
|
||||||
|
|
||||||
String sortOrderStr;
|
String sortOrderStr;
|
||||||
int sortOrder = preferences.getInt(Settings.KEY_PREF_MOVIES_SORT_ORDER, Settings.DEFAULT_PREF_MOVIES_SORT_ORDER);
|
int sortOrder = preferences.getInt(Settings.KEY_PREF_MOVIES_SORT_ORDER, Settings.DEFAULT_PREF_MOVIES_SORT_ORDER);
|
||||||
if (sortOrder == Settings.SORT_BY_DATE_ADDED) {
|
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),
|
sortByRating = menu.findItem(R.id.action_sort_by_rating),
|
||||||
sortByDateAdded = menu.findItem(R.id.action_sort_by_date_added),
|
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),
|
||||||
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());
|
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
||||||
hideWatched.setChecked(preferences.getBoolean(Settings.KEY_PREF_MOVIES_FILTER_HIDE_WATCHED, Settings.DEFAULT_PREF_MOVIES_FILTER_HIDE_WATCHED));
|
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));
|
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);
|
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();
|
.apply();
|
||||||
refreshList();
|
refreshList();
|
||||||
break;
|
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:
|
case R.id.action_ignore_prefixes:
|
||||||
item.setChecked(!item.isChecked());
|
item.setChecked(!item.isChecked());
|
||||||
preferences.edit()
|
preferences.edit()
|
||||||
|
@ -285,16 +298,16 @@ public class MovieListFragment extends AbstractCursorListFragment {
|
||||||
String SORT_BY_LENGTH = MediaContract.Movies.RUNTIME + " DESC";
|
String SORT_BY_LENGTH = MediaContract.Movies.RUNTIME + " DESC";
|
||||||
String SORT_BY_NAME_IGNORE_ARTICLES = MediaDatabase.sortCommonTokens(MediaContract.Movies.TITLE) + " COLLATE NOCASE ASC";
|
String SORT_BY_NAME_IGNORE_ARTICLES = MediaDatabase.sortCommonTokens(MediaContract.Movies.TITLE) + " COLLATE NOCASE ASC";
|
||||||
|
|
||||||
final int ID = 0;
|
int ID = 0;
|
||||||
final int MOVIEID = 1;
|
int MOVIEID = 1;
|
||||||
final int TITLE = 2;
|
int TITLE = 2;
|
||||||
final int THUMBNAIL = 3;
|
int THUMBNAIL = 3;
|
||||||
final int YEAR = 4;
|
int YEAR = 4;
|
||||||
final int GENRES = 5;
|
int GENRES = 5;
|
||||||
final int RUNTIME = 6;
|
int RUNTIME = 6;
|
||||||
final int RATING = 7;
|
int RATING = 7;
|
||||||
final int TAGLINE = 8;
|
int TAGLINE = 8;
|
||||||
final int PLAYCOUNT = 9;
|
int PLAYCOUNT = 9;
|
||||||
}
|
}
|
||||||
|
|
||||||
private class MoviesAdapter extends CursorAdapter {
|
private class MoviesAdapter extends CursorAdapter {
|
||||||
|
@ -381,7 +394,7 @@ public class MovieListFragment extends AbstractCursorListFragment {
|
||||||
viewHolder.dataHolder.getTitle(),
|
viewHolder.dataHolder.getTitle(),
|
||||||
viewHolder.artView, artWidth, artHeight);
|
viewHolder.artView, artWidth, artHeight);
|
||||||
|
|
||||||
if (cursor.getInt(MovieListQuery.PLAYCOUNT) > 0) {
|
if (showWatchedStatus && (cursor.getInt(MovieListQuery.PLAYCOUNT) > 0)) {
|
||||||
viewHolder.checkmarkView.setVisibility(View.VISIBLE);
|
viewHolder.checkmarkView.setVisibility(View.VISIBLE);
|
||||||
viewHolder.checkmarkView.setColorFilter(themeAccentColor);
|
viewHolder.checkmarkView.setColorFilter(themeAccentColor);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -57,12 +57,14 @@ public class TVShowListFragment extends AbstractCursorListFragment {
|
||||||
private static final String TAG = LogUtils.makeLogTag(TVShowListFragment.class);
|
private static final String TAG = LogUtils.makeLogTag(TVShowListFragment.class);
|
||||||
|
|
||||||
public interface OnTVShowSelectedListener {
|
public interface OnTVShowSelectedListener {
|
||||||
public void onTVShowSelected(TVShowListFragment.ViewHolder vh);
|
void onTVShowSelected(TVShowListFragment.ViewHolder vh);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Activity listener
|
// Activity listener
|
||||||
private OnTVShowSelectedListener listenerActivity;
|
private OnTVShowSelectedListener listenerActivity;
|
||||||
|
|
||||||
|
private boolean showWatchedStatus;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String getListSyncType() { return LibrarySyncService.SYNC_ALL_TVSHOWS; }
|
protected String getListSyncType() { return LibrarySyncService.SYNC_ALL_TVSHOWS; }
|
||||||
|
|
||||||
|
@ -102,6 +104,8 @@ public class TVShowListFragment extends AbstractCursorListFragment {
|
||||||
.append(MediaContract.TVShowsColumns.EPISODE);
|
.append(MediaContract.TVShowsColumns.EPISODE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
showWatchedStatus = preferences.getBoolean(Settings.KEY_PREF_TVSHOWS_SHOW_WATCHED_STATUS, Settings.DEFAULT_PREF_TVSHOWS_SHOW_WATCHED_STATUS);
|
||||||
|
|
||||||
String sortOrderStr;
|
String sortOrderStr;
|
||||||
int sortOrder = preferences.getInt(Settings.KEY_PREF_TVSHOWS_SORT_ORDER, Settings.DEFAULT_PREF_TVSHOWS_SORT_ORDER);
|
int sortOrder = preferences.getInt(Settings.KEY_PREF_TVSHOWS_SORT_ORDER, Settings.DEFAULT_PREF_TVSHOWS_SORT_ORDER);
|
||||||
if (sortOrder == Settings.SORT_BY_DATE_ADDED) {
|
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),
|
sortByYear = menu.findItem(R.id.action_sort_by_year),
|
||||||
sortByRating = menu.findItem(R.id.action_sort_by_rating),
|
sortByRating = menu.findItem(R.id.action_sort_by_rating),
|
||||||
sortByDateAdded = menu.findItem(R.id.action_sort_by_date_added),
|
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());
|
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
||||||
hideWatched.setChecked(preferences.getBoolean(Settings.KEY_PREF_TVSHOWS_FILTER_HIDE_WATCHED, Settings.DEFAULT_PREF_TVSHOWS_FILTER_HIDE_WATCHED));
|
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));
|
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);
|
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();
|
.apply();
|
||||||
refreshList();
|
refreshList();
|
||||||
break;
|
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:
|
case R.id.action_ignore_prefixes:
|
||||||
item.setChecked(!item.isChecked());
|
item.setChecked(!item.isChecked());
|
||||||
preferences.edit()
|
preferences.edit()
|
||||||
|
@ -277,20 +291,20 @@ public class TVShowListFragment extends AbstractCursorListFragment {
|
||||||
String SORT_BY_LAST_PLAYED = MediaContract.TVShows.LASTPLAYED + " DESC";
|
String SORT_BY_LAST_PLAYED = MediaContract.TVShows.LASTPLAYED + " DESC";
|
||||||
String SORT_BY_NAME_IGNORE_ARTICLES = MediaDatabase.sortCommonTokens(MediaContract.TVShows.TITLE) + " COLLATE NOCASE ASC";
|
String SORT_BY_NAME_IGNORE_ARTICLES = MediaDatabase.sortCommonTokens(MediaContract.TVShows.TITLE) + " COLLATE NOCASE ASC";
|
||||||
|
|
||||||
final int ID = 0;
|
int ID = 0;
|
||||||
final int TVSHOWID = 1;
|
int TVSHOWID = 1;
|
||||||
final int TITLE = 2;
|
int TITLE = 2;
|
||||||
final int THUMBNAIL = 3;
|
int THUMBNAIL = 3;
|
||||||
final int FANART = 4;
|
int FANART = 4;
|
||||||
final int PREMIERED = 5;
|
int PREMIERED = 5;
|
||||||
final int STUDIO = 6;
|
int STUDIO = 6;
|
||||||
final int EPISODE = 7;
|
int EPISODE = 7;
|
||||||
final int WATCHEDEPISODES = 8;
|
int WATCHEDEPISODES = 8;
|
||||||
final int RATING = 9;
|
int RATING = 9;
|
||||||
final int PLOT = 10;
|
int PLOT = 10;
|
||||||
final int PLAYCOUNT = 11;
|
int PLAYCOUNT = 11;
|
||||||
final int IMDBNUMBER = 12;
|
int IMDBNUMBER = 12;
|
||||||
final int GENRES = 13;
|
int GENRES = 13;
|
||||||
}
|
}
|
||||||
|
|
||||||
private class TVShowsAdapter extends CursorAdapter {
|
private class TVShowsAdapter extends CursorAdapter {
|
||||||
|
@ -371,7 +385,7 @@ public class TVShowListFragment extends AbstractCursorListFragment {
|
||||||
viewHolder.dataHolder.getTitle(),
|
viewHolder.dataHolder.getTitle(),
|
||||||
viewHolder.artView, artWidth, artHeight);
|
viewHolder.artView, artWidth, artHeight);
|
||||||
|
|
||||||
if (episode - watchedEpisodes == 0) {
|
if (showWatchedStatus && (episode - watchedEpisodes == 0)) {
|
||||||
viewHolder.checkmarkView.setVisibility(View.VISIBLE);
|
viewHolder.checkmarkView.setVisibility(View.VISIBLE);
|
||||||
viewHolder.checkmarkView.setColorFilter(themeAccentColor);
|
viewHolder.checkmarkView.setColorFilter(themeAccentColor);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -65,4 +65,12 @@
|
||||||
android:title="@string/hide_watched"
|
android:title="@string/hide_watched"
|
||||||
app:showAsAction="never"/>
|
app:showAsAction="never"/>
|
||||||
</group>
|
</group>
|
||||||
|
|
||||||
|
<group
|
||||||
|
android:checkableBehavior="all">
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_show_watched_status"
|
||||||
|
android:title="@string/show_watched_status"
|
||||||
|
app:showAsAction="never"/>
|
||||||
|
</group>
|
||||||
</menu>
|
</menu>
|
||||||
|
|
|
@ -58,4 +58,12 @@
|
||||||
android:title="@string/hide_watched"
|
android:title="@string/hide_watched"
|
||||||
app:showAsAction="never"/>
|
app:showAsAction="never"/>
|
||||||
</group>
|
</group>
|
||||||
|
|
||||||
|
<group
|
||||||
|
android:checkableBehavior="all">
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_show_watched_status"
|
||||||
|
android:title="@string/show_watched_status"
|
||||||
|
app:showAsAction="never"/>
|
||||||
|
</group>
|
||||||
</menu>
|
</menu>
|
||||||
|
|
|
@ -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="enable_disable">Ativar/desativar Extensão</string>
|
||||||
<string name="addon_enabled">Extensão activada</string>
|
<string name="addon_enabled">Extensão activada</string>
|
||||||
<string name="addon_disabled">Extensão desactivada</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">Tema</string>
|
||||||
<string name="theme_night">Noite</string>
|
<string name="theme_night">Noite</string>
|
||||||
<string name="theme_day">Dia</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="sort_by_last_played">Por data de reprodução</string>
|
||||||
<string name="tvshow_next_episode">Próximos episódios</string>
|
<string name="tvshow_next_episode">Próximos episódios</string>
|
||||||
<string name="tvshow_seasons">Épocas</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="buy_me_coffee">Oferecer um café</string>-->
|
||||||
<!--<string name="expresso_please">Expresso, por favor. Obrigado!</string>-->
|
<!--<string name="expresso_please">Expresso, por favor. Obrigado!</string>-->
|
||||||
|
|
|
@ -330,6 +330,7 @@
|
||||||
<string name="sort_by_date_added">By date added</string>
|
<string name="sort_by_date_added">By date added</string>
|
||||||
<string name="sort_by_last_played">By last played</string>
|
<string name="sort_by_last_played">By last played</string>
|
||||||
<string name="ignore_prefixes">Ignore prefixes</string>
|
<string name="ignore_prefixes">Ignore prefixes</string>
|
||||||
|
<string name="show_watched_status">Show watched status</string>
|
||||||
|
|
||||||
<!-- Preferences strings -->
|
<!-- Preferences strings -->
|
||||||
<string name="application">Application</string>
|
<string name="application">Application</string>
|
||||||
|
|
Loading…
Reference in New Issue