Added option to sort by last played (#340)

This commit is contained in:
tomerf 2017-01-30 21:03:16 +02:00 committed by Synced Synapse
parent c9147231ab
commit d5f8ee4d49
9 changed files with 55 additions and 3 deletions

View File

@ -48,7 +48,8 @@ public class Settings {
SORT_BY_LENGTH = 4,
SORT_BY_ALBUM = 5,
SORT_BY_ARTIST = 6,
SORT_BY_ARTIST_YEAR = 7 ;
SORT_BY_ARTIST_YEAR = 7,
SORT_BY_LAST_PLAYED = 8;
/**
* Preferences keys.

View File

@ -145,6 +145,7 @@ public class MediaContract {
String WRITERS = "writers";
String YEAR = "year";
String DATEADDED = "dateadded";
String LASTPLAYED = "lastplayed";
}
public static class Movies implements BaseColumns, SyncColumns, MoviesColumns {
@ -229,6 +230,7 @@ public class MediaContract {
String PLAYCOUNT = "playcount";
String TITLE = "title";
String DATEADDED = "dateadded";
String LASTPLAYED = "lastplayed";
String FILE = "file";
String PLOT = "plot";
String EPISODE = "episode";

View File

@ -37,7 +37,8 @@ public class MediaDatabase extends SQLiteOpenHelper {
DB_VERSION_PRE_SONG_DISC = 7,
DB_VERSION_PRE_HOST_VERSION = 8,
DB_VERSION_PRE_HOST_HTTPS = 9,
DB_VERSION = 10;
DB_VERSION_PRE_LAST_PLAYED = 10,
DB_VERSION = 11;
/**
* Tables exposed
@ -198,6 +199,7 @@ public class MediaDatabase extends SQLiteOpenHelper {
MediaContract.MoviesColumns.WRITERS + " TEXT, " +
MediaContract.MoviesColumns.YEAR + " INTEGER, " +
MediaContract.MoviesColumns.DATEADDED + " TEXT, " +
MediaContract.MoviesColumns.LASTPLAYED + " TEXT, " +
"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.TITLE + " TEXT, " +
MediaContract.TVShowsColumns.DATEADDED + " TEXT, " +
MediaContract.TVShowsColumns.LASTPLAYED + " TEXT, " +
MediaContract.TVShowsColumns.FILE + " TEXT, " +
MediaContract.TVShowsColumns.PLOT + " TEXT, " +
MediaContract.TVShowsColumns.EPISODE + " INTEGER, " +
@ -520,6 +523,13 @@ public class MediaDatabase extends SQLiteOpenHelper {
db.execSQL("ALTER TABLE " + Tables.HOSTS +
" ADD COLUMN " + MediaContract.HostsColumns.IS_HTTPS +
" 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;");
}
}

View File

@ -58,6 +58,7 @@ public class SyncUtils {
movieValues.put(MediaContract.MoviesColumns.THUMBNAIL, movie.thumbnail);
movieValues.put(MediaContract.MoviesColumns.PLAYCOUNT, movie.playcount);
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.FILE, movie.file);
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.TITLE, tvshow.title);
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.PLOT, tvshow.plot);
tvshowValues.put(MediaContract.TVShowsColumns.EPISODE, tvshow.episode);

View File

@ -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);
if (sortOrder == Settings.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) {
sortOrderStr = MovieListQuery.SORT_BY_RATING;
} 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),
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);
@ -173,6 +176,9 @@ public class MovieListFragment extends AbstractCursorListFragment {
case Settings.SORT_BY_DATE_ADDED:
sortByDateAdded.setChecked(true);
break;
case Settings.SORT_BY_LAST_PLAYED:
sortByLastPlayed.setChecked(true);
break;
case Settings.SORT_BY_LENGTH:
sortByLength.setChecked(true);
break;
@ -230,6 +236,13 @@ public class MovieListFragment extends AbstractCursorListFragment {
.apply();
refreshList();
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:
item.setChecked(true);
preferences.edit()
@ -265,6 +278,7 @@ public class MovieListFragment extends AbstractCursorListFragment {
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_LAST_PLAYED = MediaContract.Movies.LASTPLAYED + " DESC";
String SORT_BY_LENGTH = MediaContract.Movies.RUNTIME + " DESC";
String SORT_BY_NAME_IGNORE_ARTICLES = MediaDatabase.sortCommonTokens(MediaContract.Movies.TITLE) + " ASC";

View File

@ -108,6 +108,8 @@ public class TVShowListFragment extends AbstractCursorListFragment {
sortOrderStr = TVShowListQuery.SORT_BY_YEAR;
} else if (sortOrder == Settings.SORT_BY_RATING) {
sortOrderStr = TVShowListQuery.SORT_BY_RATING;
} else if (sortOrder == Settings.SORT_BY_LAST_PLAYED) {
sortOrderStr = TVShowListQuery.SORT_BY_LAST_PLAYED;
} else {
// Sort by name
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),
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);
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());
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:
sortByDateAdded.setChecked(true);
break;
case Settings.SORT_BY_LAST_PLAYED:
sortByLastPlayed.setChecked(true);
break;
default:
sortByName.setChecked(true);
break;
@ -227,6 +233,13 @@ public class TVShowListFragment extends AbstractCursorListFragment {
.apply();
refreshList();
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:
break;
}
@ -259,6 +272,7 @@ public class TVShowListFragment extends AbstractCursorListFragment {
String SORT_BY_YEAR = MediaContract.TVShows.PREMIERED + " ASC";
String SORT_BY_RATING = MediaContract.TVShows.RATING + " 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";
final int ID = 0;

View File

@ -39,6 +39,10 @@
android:id="@+id/action_sort_by_date_added"
android:title="@string/sort_by_date_added"
app:showAsAction="never"/>
<item
android:id="@+id/action_sort_by_last_played"
android:title="@string/sort_by_last_played"
app:showAsAction="never"/>
<item
android:id="@+id/action_sort_by_length"
android:title="@string/sort_by_length"

View File

@ -38,6 +38,10 @@
android:id="@+id/action_sort_by_date_added"
android:title="@string/sort_by_date_added"
app:showAsAction="never"/>
<item
android:id="@+id/action_sort_by_last_played"
android:title="@string/sort_by_last_played"
app:showAsAction="never"/>
</group>
<group
android:checkableBehavior="all">

View File

@ -318,6 +318,7 @@
<string name="sort_by_rating">By rating</string>
<string name="sort_by_length">By length</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>
<!-- Preferences strings -->