diff --git a/app/src/main/java/org/xbmc/kore/Settings.java b/app/src/main/java/org/xbmc/kore/Settings.java
index e564696..5ca677b 100644
--- a/app/src/main/java/org/xbmc/kore/Settings.java
+++ b/app/src/main/java/org/xbmc/kore/Settings.java
@@ -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.
diff --git a/app/src/main/java/org/xbmc/kore/provider/MediaContract.java b/app/src/main/java/org/xbmc/kore/provider/MediaContract.java
index 3b544fd..13b1ccf 100644
--- a/app/src/main/java/org/xbmc/kore/provider/MediaContract.java
+++ b/app/src/main/java/org/xbmc/kore/provider/MediaContract.java
@@ -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";
diff --git a/app/src/main/java/org/xbmc/kore/provider/MediaDatabase.java b/app/src/main/java/org/xbmc/kore/provider/MediaDatabase.java
index 51453b0..52d69b0 100644
--- a/app/src/main/java/org/xbmc/kore/provider/MediaDatabase.java
+++ b/app/src/main/java/org/xbmc/kore/provider/MediaDatabase.java
@@ -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;");
}
}
diff --git a/app/src/main/java/org/xbmc/kore/service/library/SyncUtils.java b/app/src/main/java/org/xbmc/kore/service/library/SyncUtils.java
index 1002bc8..ef12fa4 100644
--- a/app/src/main/java/org/xbmc/kore/service/library/SyncUtils.java
+++ b/app/src/main/java/org/xbmc/kore/service/library/SyncUtils.java
@@ -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);
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 6dbebb7..f0a37c8 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
@@ -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";
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 141e76f..ec3c8e5 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
@@ -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;
diff --git a/app/src/main/res/menu/movie_list.xml b/app/src/main/res/menu/movie_list.xml
index 1c99516..4ec0d00 100644
--- a/app/src/main/res/menu/movie_list.xml
+++ b/app/src/main/res/menu/movie_list.xml
@@ -39,6 +39,10 @@
android:id="@+id/action_sort_by_date_added"
android:title="@string/sort_by_date_added"
app:showAsAction="never"/>
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 52f87d6..004aff2 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -318,6 +318,7 @@
By rating
By length
By date added
+ By last played
Ignore prefixes