Added option to sort by last played (#340)
This commit is contained in:
parent
c9147231ab
commit
d5f8ee4d49
|
@ -48,7 +48,8 @@ public class Settings {
|
||||||
SORT_BY_LENGTH = 4,
|
SORT_BY_LENGTH = 4,
|
||||||
SORT_BY_ALBUM = 5,
|
SORT_BY_ALBUM = 5,
|
||||||
SORT_BY_ARTIST = 6,
|
SORT_BY_ARTIST = 6,
|
||||||
SORT_BY_ARTIST_YEAR = 7 ;
|
SORT_BY_ARTIST_YEAR = 7,
|
||||||
|
SORT_BY_LAST_PLAYED = 8;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Preferences keys.
|
* Preferences keys.
|
||||||
|
|
|
@ -145,6 +145,7 @@ public class MediaContract {
|
||||||
String WRITERS = "writers";
|
String WRITERS = "writers";
|
||||||
String YEAR = "year";
|
String YEAR = "year";
|
||||||
String DATEADDED = "dateadded";
|
String DATEADDED = "dateadded";
|
||||||
|
String LASTPLAYED = "lastplayed";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Movies implements BaseColumns, SyncColumns, MoviesColumns {
|
public static class Movies implements BaseColumns, SyncColumns, MoviesColumns {
|
||||||
|
@ -229,6 +230,7 @@ public class MediaContract {
|
||||||
String PLAYCOUNT = "playcount";
|
String PLAYCOUNT = "playcount";
|
||||||
String TITLE = "title";
|
String TITLE = "title";
|
||||||
String DATEADDED = "dateadded";
|
String DATEADDED = "dateadded";
|
||||||
|
String LASTPLAYED = "lastplayed";
|
||||||
String FILE = "file";
|
String FILE = "file";
|
||||||
String PLOT = "plot";
|
String PLOT = "plot";
|
||||||
String EPISODE = "episode";
|
String EPISODE = "episode";
|
||||||
|
|
|
@ -37,7 +37,8 @@ public class MediaDatabase extends SQLiteOpenHelper {
|
||||||
DB_VERSION_PRE_SONG_DISC = 7,
|
DB_VERSION_PRE_SONG_DISC = 7,
|
||||||
DB_VERSION_PRE_HOST_VERSION = 8,
|
DB_VERSION_PRE_HOST_VERSION = 8,
|
||||||
DB_VERSION_PRE_HOST_HTTPS = 9,
|
DB_VERSION_PRE_HOST_HTTPS = 9,
|
||||||
DB_VERSION = 10;
|
DB_VERSION_PRE_LAST_PLAYED = 10,
|
||||||
|
DB_VERSION = 11;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tables exposed
|
* Tables exposed
|
||||||
|
@ -198,6 +199,7 @@ public class MediaDatabase extends SQLiteOpenHelper {
|
||||||
MediaContract.MoviesColumns.WRITERS + " TEXT, " +
|
MediaContract.MoviesColumns.WRITERS + " TEXT, " +
|
||||||
MediaContract.MoviesColumns.YEAR + " INTEGER, " +
|
MediaContract.MoviesColumns.YEAR + " INTEGER, " +
|
||||||
MediaContract.MoviesColumns.DATEADDED + " TEXT, " +
|
MediaContract.MoviesColumns.DATEADDED + " TEXT, " +
|
||||||
|
MediaContract.MoviesColumns.LASTPLAYED + " TEXT, " +
|
||||||
"UNIQUE (" + MediaContract.MoviesColumns.HOST_ID + ", " + MediaContract.MoviesColumns.MOVIEID + ") ON CONFLICT REPLACE)"
|
"UNIQUE (" + MediaContract.MoviesColumns.HOST_ID + ", " + MediaContract.MoviesColumns.MOVIEID + ") ON CONFLICT REPLACE)"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -229,6 +231,7 @@ public class MediaDatabase extends SQLiteOpenHelper {
|
||||||
MediaContract.TVShowsColumns.PLAYCOUNT + " INTEGER, " +
|
MediaContract.TVShowsColumns.PLAYCOUNT + " INTEGER, " +
|
||||||
MediaContract.TVShowsColumns.TITLE + " TEXT, " +
|
MediaContract.TVShowsColumns.TITLE + " TEXT, " +
|
||||||
MediaContract.TVShowsColumns.DATEADDED + " TEXT, " +
|
MediaContract.TVShowsColumns.DATEADDED + " TEXT, " +
|
||||||
|
MediaContract.TVShowsColumns.LASTPLAYED + " TEXT, " +
|
||||||
MediaContract.TVShowsColumns.FILE + " TEXT, " +
|
MediaContract.TVShowsColumns.FILE + " TEXT, " +
|
||||||
MediaContract.TVShowsColumns.PLOT + " TEXT, " +
|
MediaContract.TVShowsColumns.PLOT + " TEXT, " +
|
||||||
MediaContract.TVShowsColumns.EPISODE + " INTEGER, " +
|
MediaContract.TVShowsColumns.EPISODE + " INTEGER, " +
|
||||||
|
@ -520,6 +523,13 @@ public class MediaDatabase extends SQLiteOpenHelper {
|
||||||
db.execSQL("ALTER TABLE " + Tables.HOSTS +
|
db.execSQL("ALTER TABLE " + Tables.HOSTS +
|
||||||
" ADD COLUMN " + MediaContract.HostsColumns.IS_HTTPS +
|
" ADD COLUMN " + MediaContract.HostsColumns.IS_HTTPS +
|
||||||
" INTEGER DEFAULT 0;");
|
" INTEGER DEFAULT 0;");
|
||||||
|
case DB_VERSION_PRE_LAST_PLAYED:
|
||||||
|
db.execSQL("ALTER TABLE " + Tables.MOVIES +
|
||||||
|
" ADD COLUMN " + MediaContract.MoviesColumns.LASTPLAYED +
|
||||||
|
" TEXT;");
|
||||||
|
db.execSQL("ALTER TABLE " + Tables.TVSHOWS +
|
||||||
|
" ADD COLUMN " + MediaContract.TVShowsColumns.LASTPLAYED +
|
||||||
|
" TEXT;");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -58,6 +58,7 @@ public class SyncUtils {
|
||||||
movieValues.put(MediaContract.MoviesColumns.THUMBNAIL, movie.thumbnail);
|
movieValues.put(MediaContract.MoviesColumns.THUMBNAIL, movie.thumbnail);
|
||||||
movieValues.put(MediaContract.MoviesColumns.PLAYCOUNT, movie.playcount);
|
movieValues.put(MediaContract.MoviesColumns.PLAYCOUNT, movie.playcount);
|
||||||
movieValues.put(MediaContract.MoviesColumns.DATEADDED, movie.dateadded);
|
movieValues.put(MediaContract.MoviesColumns.DATEADDED, movie.dateadded);
|
||||||
|
movieValues.put(MediaContract.MoviesColumns.LASTPLAYED, movie.lastplayed);
|
||||||
movieValues.put(MediaContract.MoviesColumns.TITLE, movie.title);
|
movieValues.put(MediaContract.MoviesColumns.TITLE, movie.title);
|
||||||
movieValues.put(MediaContract.MoviesColumns.FILE, movie.file);
|
movieValues.put(MediaContract.MoviesColumns.FILE, movie.file);
|
||||||
movieValues.put(MediaContract.MoviesColumns.PLOT, movie.plot);
|
movieValues.put(MediaContract.MoviesColumns.PLOT, movie.plot);
|
||||||
|
@ -156,6 +157,7 @@ public class SyncUtils {
|
||||||
tvshowValues.put(MediaContract.TVShowsColumns.PLAYCOUNT, tvshow.playcount);
|
tvshowValues.put(MediaContract.TVShowsColumns.PLAYCOUNT, tvshow.playcount);
|
||||||
tvshowValues.put(MediaContract.TVShowsColumns.TITLE, tvshow.title);
|
tvshowValues.put(MediaContract.TVShowsColumns.TITLE, tvshow.title);
|
||||||
tvshowValues.put(MediaContract.TVShowsColumns.DATEADDED, tvshow.dateadded);
|
tvshowValues.put(MediaContract.TVShowsColumns.DATEADDED, tvshow.dateadded);
|
||||||
|
tvshowValues.put(MediaContract.TVShowsColumns.LASTPLAYED, tvshow.lastplayed);
|
||||||
tvshowValues.put(MediaContract.TVShowsColumns.FILE, tvshow.file);
|
tvshowValues.put(MediaContract.TVShowsColumns.FILE, tvshow.file);
|
||||||
tvshowValues.put(MediaContract.TVShowsColumns.PLOT, tvshow.plot);
|
tvshowValues.put(MediaContract.TVShowsColumns.PLOT, tvshow.plot);
|
||||||
tvshowValues.put(MediaContract.TVShowsColumns.EPISODE, tvshow.episode);
|
tvshowValues.put(MediaContract.TVShowsColumns.EPISODE, tvshow.episode);
|
||||||
|
|
|
@ -102,6 +102,8 @@ public class MovieListFragment extends AbstractCursorListFragment {
|
||||||
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) {
|
||||||
sortOrderStr = MovieListQuery.SORT_BY_DATE_ADDED;
|
sortOrderStr = MovieListQuery.SORT_BY_DATE_ADDED;
|
||||||
|
} else if (sortOrder == Settings.SORT_BY_LAST_PLAYED) {
|
||||||
|
sortOrderStr = MovieListQuery.SORT_BY_LAST_PLAYED;
|
||||||
} else if (sortOrder == Settings.SORT_BY_RATING) {
|
} else if (sortOrder == Settings.SORT_BY_RATING) {
|
||||||
sortOrderStr = MovieListQuery.SORT_BY_RATING;
|
sortOrderStr = MovieListQuery.SORT_BY_RATING;
|
||||||
} else if (sortOrder == Settings.SORT_BY_YEAR) {
|
} else if (sortOrder == Settings.SORT_BY_YEAR) {
|
||||||
|
@ -155,6 +157,7 @@ public class MovieListFragment 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),
|
||||||
sortByLength = menu.findItem(R.id.action_sort_by_length);
|
sortByLength = menu.findItem(R.id.action_sort_by_length);
|
||||||
|
|
||||||
|
|
||||||
|
@ -173,6 +176,9 @@ public class MovieListFragment extends AbstractCursorListFragment {
|
||||||
case Settings.SORT_BY_DATE_ADDED:
|
case Settings.SORT_BY_DATE_ADDED:
|
||||||
sortByDateAdded.setChecked(true);
|
sortByDateAdded.setChecked(true);
|
||||||
break;
|
break;
|
||||||
|
case Settings.SORT_BY_LAST_PLAYED:
|
||||||
|
sortByLastPlayed.setChecked(true);
|
||||||
|
break;
|
||||||
case Settings.SORT_BY_LENGTH:
|
case Settings.SORT_BY_LENGTH:
|
||||||
sortByLength.setChecked(true);
|
sortByLength.setChecked(true);
|
||||||
break;
|
break;
|
||||||
|
@ -230,6 +236,13 @@ public class MovieListFragment extends AbstractCursorListFragment {
|
||||||
.apply();
|
.apply();
|
||||||
refreshList();
|
refreshList();
|
||||||
break;
|
break;
|
||||||
|
case R.id.action_sort_by_last_played:
|
||||||
|
item.setChecked(true);
|
||||||
|
preferences.edit()
|
||||||
|
.putInt(Settings.KEY_PREF_MOVIES_SORT_ORDER, Settings.SORT_BY_LAST_PLAYED)
|
||||||
|
.apply();
|
||||||
|
refreshList();
|
||||||
|
break;
|
||||||
case R.id.action_sort_by_length:
|
case R.id.action_sort_by_length:
|
||||||
item.setChecked(true);
|
item.setChecked(true);
|
||||||
preferences.edit()
|
preferences.edit()
|
||||||
|
@ -265,6 +278,7 @@ public class MovieListFragment extends AbstractCursorListFragment {
|
||||||
String SORT_BY_YEAR = MediaContract.Movies.YEAR + " ASC";
|
String SORT_BY_YEAR = MediaContract.Movies.YEAR + " ASC";
|
||||||
String SORT_BY_RATING = MediaContract.Movies.RATING + " DESC";
|
String SORT_BY_RATING = MediaContract.Movies.RATING + " DESC";
|
||||||
String SORT_BY_DATE_ADDED = MediaContract.Movies.DATEADDED + " DESC";
|
String SORT_BY_DATE_ADDED = MediaContract.Movies.DATEADDED + " DESC";
|
||||||
|
String SORT_BY_LAST_PLAYED = MediaContract.Movies.LASTPLAYED + " DESC";
|
||||||
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) + " ASC";
|
String SORT_BY_NAME_IGNORE_ARTICLES = MediaDatabase.sortCommonTokens(MediaContract.Movies.TITLE) + " ASC";
|
||||||
|
|
||||||
|
|
|
@ -108,6 +108,8 @@ public class TVShowListFragment extends AbstractCursorListFragment {
|
||||||
sortOrderStr = TVShowListQuery.SORT_BY_YEAR;
|
sortOrderStr = TVShowListQuery.SORT_BY_YEAR;
|
||||||
} else if (sortOrder == Settings.SORT_BY_RATING) {
|
} else if (sortOrder == Settings.SORT_BY_RATING) {
|
||||||
sortOrderStr = TVShowListQuery.SORT_BY_RATING;
|
sortOrderStr = TVShowListQuery.SORT_BY_RATING;
|
||||||
|
} else if (sortOrder == Settings.SORT_BY_LAST_PLAYED) {
|
||||||
|
sortOrderStr = TVShowListQuery.SORT_BY_LAST_PLAYED;
|
||||||
} else {
|
} else {
|
||||||
// Sort by name
|
// Sort by name
|
||||||
if (preferences.getBoolean(Settings.KEY_PREF_TVSHOWS_IGNORE_PREFIXES, Settings.DEFAULT_PREF_TVSHOWS_IGNORE_PREFIXES)) {
|
if (preferences.getBoolean(Settings.KEY_PREF_TVSHOWS_IGNORE_PREFIXES, Settings.DEFAULT_PREF_TVSHOWS_IGNORE_PREFIXES)) {
|
||||||
|
@ -156,7 +158,8 @@ public class TVShowListFragment extends AbstractCursorListFragment {
|
||||||
sortByName = menu.findItem(R.id.action_sort_by_name),
|
sortByName = menu.findItem(R.id.action_sort_by_name),
|
||||||
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);
|
||||||
|
|
||||||
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));
|
||||||
|
@ -173,6 +176,9 @@ public class TVShowListFragment extends AbstractCursorListFragment {
|
||||||
case Settings.SORT_BY_DATE_ADDED:
|
case Settings.SORT_BY_DATE_ADDED:
|
||||||
sortByDateAdded.setChecked(true);
|
sortByDateAdded.setChecked(true);
|
||||||
break;
|
break;
|
||||||
|
case Settings.SORT_BY_LAST_PLAYED:
|
||||||
|
sortByLastPlayed.setChecked(true);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
sortByName.setChecked(true);
|
sortByName.setChecked(true);
|
||||||
break;
|
break;
|
||||||
|
@ -227,6 +233,13 @@ public class TVShowListFragment extends AbstractCursorListFragment {
|
||||||
.apply();
|
.apply();
|
||||||
refreshList();
|
refreshList();
|
||||||
break;
|
break;
|
||||||
|
case R.id.action_sort_by_last_played:
|
||||||
|
item.setChecked(true);
|
||||||
|
preferences.edit()
|
||||||
|
.putInt(Settings.KEY_PREF_TVSHOWS_SORT_ORDER, Settings.SORT_BY_LAST_PLAYED)
|
||||||
|
.apply();
|
||||||
|
refreshList();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -259,6 +272,7 @@ public class TVShowListFragment extends AbstractCursorListFragment {
|
||||||
String SORT_BY_YEAR = MediaContract.TVShows.PREMIERED + " ASC";
|
String SORT_BY_YEAR = MediaContract.TVShows.PREMIERED + " ASC";
|
||||||
String SORT_BY_RATING = MediaContract.TVShows.RATING + " DESC";
|
String SORT_BY_RATING = MediaContract.TVShows.RATING + " DESC";
|
||||||
String SORT_BY_DATE_ADDED = MediaContract.TVShows.DATEADDED + " DESC";
|
String SORT_BY_DATE_ADDED = MediaContract.TVShows.DATEADDED + " DESC";
|
||||||
|
String SORT_BY_LAST_PLAYED = MediaContract.TVShows.LASTPLAYED + " DESC";
|
||||||
String SORT_BY_NAME_IGNORE_ARTICLES = MediaDatabase.sortCommonTokens(MediaContract.TVShows.TITLE) + " ASC";
|
String SORT_BY_NAME_IGNORE_ARTICLES = MediaDatabase.sortCommonTokens(MediaContract.TVShows.TITLE) + " ASC";
|
||||||
|
|
||||||
final int ID = 0;
|
final int ID = 0;
|
||||||
|
|
|
@ -39,6 +39,10 @@
|
||||||
android:id="@+id/action_sort_by_date_added"
|
android:id="@+id/action_sort_by_date_added"
|
||||||
android:title="@string/sort_by_date_added"
|
android:title="@string/sort_by_date_added"
|
||||||
app:showAsAction="never"/>
|
app:showAsAction="never"/>
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_sort_by_last_played"
|
||||||
|
android:title="@string/sort_by_last_played"
|
||||||
|
app:showAsAction="never"/>
|
||||||
<item
|
<item
|
||||||
android:id="@+id/action_sort_by_length"
|
android:id="@+id/action_sort_by_length"
|
||||||
android:title="@string/sort_by_length"
|
android:title="@string/sort_by_length"
|
||||||
|
|
|
@ -38,6 +38,10 @@
|
||||||
android:id="@+id/action_sort_by_date_added"
|
android:id="@+id/action_sort_by_date_added"
|
||||||
android:title="@string/sort_by_date_added"
|
android:title="@string/sort_by_date_added"
|
||||||
app:showAsAction="never"/>
|
app:showAsAction="never"/>
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_sort_by_last_played"
|
||||||
|
android:title="@string/sort_by_last_played"
|
||||||
|
app:showAsAction="never"/>
|
||||||
</group>
|
</group>
|
||||||
<group
|
<group
|
||||||
android:checkableBehavior="all">
|
android:checkableBehavior="all">
|
||||||
|
|
|
@ -318,6 +318,7 @@
|
||||||
<string name="sort_by_rating">By rating</string>
|
<string name="sort_by_rating">By rating</string>
|
||||||
<string name="sort_by_length">By length</string>
|
<string name="sort_by_length">By length</string>
|
||||||
<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="ignore_prefixes">Ignore prefixes</string>
|
<string name="ignore_prefixes">Ignore prefixes</string>
|
||||||
|
|
||||||
<!-- Preferences strings -->
|
<!-- Preferences strings -->
|
||||||
|
|
Loading…
Reference in New Issue