diff --git a/README.md b/README.md index ecf06f8..7b0f19f 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ Credits **Translations** - French - Kowalski - Bulgarian - NEOhidra - +- German - jonas2515 Links ----- diff --git a/app/build.gradle b/app/build.gradle index c52ee79..d110ee7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,8 +8,8 @@ android { applicationId "com.syncedsynapse.kore2" minSdkVersion 15 targetSdkVersion 21 - versionCode 4 - versionName "0.9.2" + versionCode 5 + versionName "1.0.0" buildConfigField("String", "IAP_KEY", "\"${rootProject.property("IAP_KEY")}\"") } @@ -39,6 +39,11 @@ android { } } + lintOptions { + // Too much trouble keeping all translations in sync + disable 'MissingTranslation' + } + packagingOptions { exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/NOTICE' diff --git a/app/src/main/java/com/syncedsynapse/kore2/Settings.java b/app/src/main/java/com/syncedsynapse/kore2/Settings.java index 9aa8258..3436503 100644 --- a/app/src/main/java/com/syncedsynapse/kore2/Settings.java +++ b/app/src/main/java/com/syncedsynapse/kore2/Settings.java @@ -33,24 +33,22 @@ public class Settings { * The update interval for the records in the DB. If the last update is older than this value * a refresh will be triggered. Aplicable to TV Shows and Movies. */ - public static final long DB_UPDATE_INTERVAL = 12 * DateUtils.HOUR_IN_MILLIS; -// public static final long DB_UPDATE_INTERVAL = DateUtils.MINUTE_IN_MILLIS; +// public static final long DB_UPDATE_INTERVAL = 12 * DateUtils.HOUR_IN_MILLIS; + public static final long DB_UPDATE_INTERVAL = 5 * DateUtils.MINUTE_IN_MILLIS; // Constants for Shared Preferences private static final String SETTINGS_KEY = "SETTINGS_SHARED_PREFS"; // Tags to save the values private static final String CURRENT_HOST_ID = "CURRENT_HOST_ID"; - private static final String MAX_CAST_PICTURES = "MAX_CAST_PICTURES"; - private static final String MOVIES_FILTER_HIDE_WATCHED = "MOVIES_FILTER_HIDE_WATCHED"; private static final String TVSHOWS_FILTER_HIDE_WATCHED = "TVSHOWS_FILTER_HIDE_WATCHED"; private static final String TVSHOW_EPISODES_FILTER_HIDE_WATCHED = "TVSHOW_EPISODES_FILTER_HIDE_WATCHED"; private static final String SHOW_THANKS_FOR_COFFEE_MESSAGE = "SHOW_THANKS_FOR_COFFEE_MESSAGE"; private static final String HAS_BOUGHT_COFFEE = "HAS_BOUGHT_COFFEE"; - // Default values - private static final int DEFAULT_MAX_CAST_PICTURES = 12; + // Maximum pictures to show on cast list (-1 to show all) + public static final int DEFAULT_MAX_CAST_PICTURES = 12; /** * Default Shared Preferences keys. @@ -63,8 +61,36 @@ public class Settings { public static final String KEY_PREF_ABOUT = "pref_about"; public static final String KEY_PREF_COFFEE = "pref_coffee"; + // Filter watched movies on movie list + public static final String KEY_PREF_MOVIES_FILTER_HIDE_WATCHED = "movies_filter_hide_watched"; + // Sort order on movies + public static final String KEY_PREF_MOVIES_SORT_ORDER = "movies_sort_order"; + // Ignore articles on movie sorting + public static final String KEY_PREF_MOVIES_IGNORE_PREFIXES = "movies_ignore_prefixes"; + + // Filter watched tv shows on tvshow list + public static final String KEY_PREF_TVSHOWS_FILTER_HIDE_WATCHED = "tvshows_filter_hide_watched"; + public static final String KEY_PREF_TVSHOW_EPISODES_FILTER_HIDE_WATCHED = "tvshow_episodes_filter_hide_watched"; + // Sort order on tv shows + public static final String KEY_PREF_TVSHOWS_SORT_ORDER = "tvshows_sort_order"; + // Ignore articles on tv show sorting + public static final String KEY_PREF_TVSHOWS_IGNORE_PREFIXES = "tvshows_ignore_prefixes"; + + // Defaults for the preferences public static final String DEFAULT_PREF_THEME = "0"; public static final boolean DEFAULT_PREF_SWITCH_TO_REMOTE_AFTER_MEDIA_START = true; + public static final boolean DEFAULT_PREF_MOVIES_FILTER_HIDE_WATCHED = false; + public static final boolean DEFAULT_PREF_TVSHOWS_FILTER_HIDE_WATCHED = false; + public static final boolean DEFAULT_PREF_TVSHOW_EPISODES_FILTER_HIDE_WATCHED = false; + + // Sort orders + public static final int SORT_BY_NAME = 0, + SORT_BY_DATE_ADDED = 1; + public static final int DEFAULT_PREF_MOVIES_SORT_ORDER = SORT_BY_NAME; + public static final int DEFAULT_PREF_TVSHOWS_SORT_ORDER = SORT_BY_NAME; + + public static final boolean DEFAULT_PREF_MOVIES_IGNORE_PREFIXES = false; + public static final boolean DEFAULT_PREF_TVSHOWS_IGNORE_PREFIXES = false; // Singleton instance @@ -75,22 +101,6 @@ public class Settings { * Current saved host id */ public int currentHostId; - /** - * Maximum pictures to show on cast list (-1 to show all) - */ - public int maxCastPictures; - /** - * Filter watched movies on movie list - */ - public boolean moviesFilterHideWatched; - /** - * Filter watched tv shows on list (all episodes) - */ - public boolean tvshowsFilterHideWatched; - /** - * Filter watched episodes of a tv shows on list - */ - public boolean tvshowEpisodesFilterHideWatched; /** * Show the thanks for coffee message @@ -112,11 +122,6 @@ public class Settings { SharedPreferences preferences = context.getSharedPreferences(SETTINGS_KEY, Context.MODE_PRIVATE); currentHostId = preferences.getInt(CURRENT_HOST_ID, -1); - maxCastPictures = preferences.getInt(MAX_CAST_PICTURES, DEFAULT_MAX_CAST_PICTURES); -// maxCastPictures = 12; - moviesFilterHideWatched = preferences.getBoolean(MOVIES_FILTER_HIDE_WATCHED, false); - tvshowsFilterHideWatched = preferences.getBoolean(TVSHOWS_FILTER_HIDE_WATCHED, false); - tvshowEpisodesFilterHideWatched = preferences.getBoolean(TVSHOW_EPISODES_FILTER_HIDE_WATCHED, false); showThanksForCofeeMessage = preferences.getBoolean(SHOW_THANKS_FOR_COFFEE_MESSAGE, true); hasBoughtCoffee = preferences.getBoolean(HAS_BOUGHT_COFFEE, false); } @@ -140,10 +145,6 @@ public class Settings { SharedPreferences.Editor editor = preferences.edit(); editor.putInt(CURRENT_HOST_ID, currentHostId); - editor.putInt(MAX_CAST_PICTURES, maxCastPictures); - editor.putBoolean(MOVIES_FILTER_HIDE_WATCHED, moviesFilterHideWatched); - editor.putBoolean(TVSHOWS_FILTER_HIDE_WATCHED, tvshowsFilterHideWatched); - editor.putBoolean(TVSHOW_EPISODES_FILTER_HIDE_WATCHED, tvshowEpisodesFilterHideWatched); editor.putBoolean(SHOW_THANKS_FOR_COFFEE_MESSAGE, showThanksForCofeeMessage); editor.putBoolean(HAS_BOUGHT_COFFEE, hasBoughtCoffee); editor.apply(); diff --git a/app/src/main/java/com/syncedsynapse/kore2/ui/MovieListFragment.java b/app/src/main/java/com/syncedsynapse/kore2/ui/MovieListFragment.java index f4dc771..d07a8d1 100644 --- a/app/src/main/java/com/syncedsynapse/kore2/ui/MovieListFragment.java +++ b/app/src/main/java/com/syncedsynapse/kore2/ui/MovieListFragment.java @@ -18,10 +18,12 @@ package com.syncedsynapse.kore2.ui; import android.app.Activity; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.content.res.Resources; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; +import android.preference.PreferenceManager; import android.provider.BaseColumns; import android.support.v4.app.Fragment; import android.support.v4.app.LoaderManager; @@ -180,24 +182,58 @@ public class MovieListFragment extends Fragment searchView.setQueryHint(getString(R.string.action_search_movies)); // Setup filters - MenuItem hideWatched = menu.findItem(R.id.action_hide_watched); - Settings settings = Settings.getInstance(getActivity()); - hideWatched.setChecked(settings.moviesFilterHideWatched); + MenuItem hideWatched = menu.findItem(R.id.action_hide_watched), + ignoreArticles = menu.findItem(R.id.action_ignore_prefixes), + sortByName = menu.findItem(R.id.action_sort_by_name), + sortByDateAdded = menu.findItem(R.id.action_sort_by_date_added); + + SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); + hideWatched.setChecked(preferences.getBoolean(Settings.KEY_PREF_MOVIES_FILTER_HIDE_WATCHED, Settings.DEFAULT_PREF_MOVIES_FILTER_HIDE_WATCHED)); + 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); + switch (sortOrder) { + case Settings.SORT_BY_DATE_ADDED: + sortByDateAdded.setChecked(true); + break; + default: + sortByName.setChecked(true); + break; + } super.onCreateOptionsMenu(menu, inflater); } @Override public boolean onOptionsItemSelected(MenuItem item) { + SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); switch (item.getItemId()) { case R.id.action_hide_watched: - if (item.isChecked()) - item.setChecked(false); - else - item.setChecked(true); - Settings settings = Settings.getInstance(getActivity()); - settings.moviesFilterHideWatched = item.isChecked(); - settings.save(); + item.setChecked(!item.isChecked()); + preferences.edit() + .putBoolean(Settings.KEY_PREF_MOVIES_FILTER_HIDE_WATCHED, item.isChecked()) + .apply(); + getLoaderManager().restartLoader(LOADER_MOVIES, null, this); + break; + case R.id.action_ignore_prefixes: + item.setChecked(!item.isChecked()); + preferences.edit() + .putBoolean(Settings.KEY_PREF_MOVIES_IGNORE_PREFIXES, item.isChecked()) + .apply(); + getLoaderManager().restartLoader(LOADER_MOVIES, null, this); + break; + case R.id.action_sort_by_name: + item.setChecked(true); + preferences.edit() + .putInt(Settings.KEY_PREF_MOVIES_SORT_ORDER, Settings.SORT_BY_NAME) + .apply(); + getLoaderManager().restartLoader(LOADER_MOVIES, null, this); + break; + case R.id.action_sort_by_date_added: + item.setChecked(true); + preferences.edit() + .putInt(Settings.KEY_PREF_MOVIES_SORT_ORDER, Settings.SORT_BY_DATE_ADDED) + .apply(); getLoaderManager().restartLoader(LOADER_MOVIES, null, this); break; default: @@ -294,16 +330,29 @@ public class MovieListFragment extends Fragment selectionArgs = new String[] {"%" + searchFilter + "%"}; } - Settings settings = Settings.getInstance(getActivity()); - if (settings.moviesFilterHideWatched) { + SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); + if (preferences.getBoolean(Settings.KEY_PREF_MOVIES_FILTER_HIDE_WATCHED, Settings.DEFAULT_PREF_MOVIES_FILTER_HIDE_WATCHED)) { if (selection.length() != 0) selection.append(" AND "); selection.append(MediaContract.MoviesColumns.PLAYCOUNT) .append("=0"); } + 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) { + sortOrderStr = MovieListQuery.SORT_BY_DATE_ADDED; + } else { + // Sort by name + if (preferences.getBoolean(Settings.KEY_PREF_MOVIES_IGNORE_PREFIXES, Settings.DEFAULT_PREF_MOVIES_IGNORE_PREFIXES)) { + sortOrderStr = MovieListQuery.SORT_BY_NAME_IGNORE_ARTICLES; + } else { + sortOrderStr = MovieListQuery.SORT_BY_NAME; + } + } + return new CursorLoader(getActivity(), uri, - MovieListQuery.PROJECTION, selection.toString(), selectionArgs, MovieListQuery.SORT); + MovieListQuery.PROJECTION, selection.toString(), selectionArgs, sortOrderStr); } /** {@inheritDoc} */ @@ -336,7 +385,9 @@ public class MovieListFragment extends Fragment MediaContract.Movies.TAGLINE, }; - String SORT = MediaDatabase.sortCommonTokens(MediaContract.Movies.TITLE) + " ASC"; + String SORT_BY_NAME = MediaContract.Movies.TITLE + " ASC"; + String SORT_BY_DATE_ADDED = MediaContract.Movies.DATEADDED + " DESC"; + String SORT_BY_NAME_IGNORE_ARTICLES = MediaDatabase.sortCommonTokens(MediaContract.Movies.TITLE) + " ASC"; final int ID = 0; final int MOVIEID = 1; diff --git a/app/src/main/java/com/syncedsynapse/kore2/ui/TVShowEpisodeDetailsFragment.java b/app/src/main/java/com/syncedsynapse/kore2/ui/TVShowEpisodeDetailsFragment.java index b670dfd..a36cc70 100644 --- a/app/src/main/java/com/syncedsynapse/kore2/ui/TVShowEpisodeDetailsFragment.java +++ b/app/src/main/java/com/syncedsynapse/kore2/ui/TVShowEpisodeDetailsFragment.java @@ -296,7 +296,7 @@ public class TVShowEpisodeDetailsFragment extends Fragment // case LOADER_CAST: // uri = MediaContract.MovieCast.buildMovieCastListUri(hostInfo.getId(), episodeId); // return new CursorLoader(getActivity(), uri, -// MovieCastListQuery.PROJECTION, null, null, MovieCastListQuery.SORT); +// MovieCastListQuery.PROJECTION, null, null, MovieCastListQuery.SORT_BY_NAME_IGNORE_ARTICLES); default: return null; } @@ -645,7 +645,7 @@ public class TVShowEpisodeDetailsFragment extends Fragment // MediaContract.MovieCast.THUMBNAIL, // }; // -// String SORT = MediaContract.MovieCast.ORDER + " ASC"; +// String SORT_BY_NAME_IGNORE_ARTICLES = MediaContract.MovieCast.ORDER + " ASC"; // // final int ID = 0; // final int NAME = 1; diff --git a/app/src/main/java/com/syncedsynapse/kore2/ui/TVShowEpisodeListFragment.java b/app/src/main/java/com/syncedsynapse/kore2/ui/TVShowEpisodeListFragment.java index 756b534..2c3d6fb 100644 --- a/app/src/main/java/com/syncedsynapse/kore2/ui/TVShowEpisodeListFragment.java +++ b/app/src/main/java/com/syncedsynapse/kore2/ui/TVShowEpisodeListFragment.java @@ -18,11 +18,13 @@ package com.syncedsynapse.kore2.ui; import android.app.Activity; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.content.res.Resources; import android.content.res.TypedArray; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; +import android.preference.PreferenceManager; import android.provider.BaseColumns; import android.support.v4.app.Fragment; import android.support.v4.app.LoaderManager; @@ -193,9 +195,9 @@ public class TVShowEpisodeListFragment extends Fragment inflater.inflate(R.menu.tvshow_episode_list, menu); // Setup filters - Settings settings = Settings.getInstance(getActivity()); + SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); menu.findItem(R.id.action_hide_watched) - .setChecked(settings.tvshowEpisodesFilterHideWatched); + .setChecked(preferences.getBoolean(Settings.KEY_PREF_TVSHOW_EPISODES_FILTER_HIDE_WATCHED, Settings.DEFAULT_PREF_TVSHOW_EPISODES_FILTER_HIDE_WATCHED)); super.onCreateOptionsMenu(menu, inflater); } @@ -204,13 +206,11 @@ public class TVShowEpisodeListFragment extends Fragment public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_hide_watched: - if (item.isChecked()) - item.setChecked(false); - else - item.setChecked(true); - Settings settings = Settings.getInstance(getActivity()); - settings.tvshowEpisodesFilterHideWatched = item.isChecked(); - settings.save(); + item.setChecked(!item.isChecked()); + SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); + preferences.edit() + .putBoolean(Settings.KEY_PREF_TVSHOW_EPISODES_FILTER_HIDE_WATCHED, item.isChecked()) + .apply(); getLoaderManager().restartLoader(LOADER_SEASONS, null, this); break; default: @@ -288,14 +288,16 @@ public class TVShowEpisodeListFragment extends Fragment Uri uri; StringBuilder selection = new StringBuilder(); - Settings settings = Settings.getInstance(getActivity()); + SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); + boolean tvshowEpisodesFilterHideWatched = + preferences.getBoolean(Settings.KEY_PREF_TVSHOW_EPISODES_FILTER_HIDE_WATCHED, Settings.DEFAULT_PREF_TVSHOW_EPISODES_FILTER_HIDE_WATCHED); switch (id) { case LOADER_SEASONS: // Load seasons uri = MediaContract.Seasons.buildTVShowSeasonsListUri(hostInfo.getId(), tvshowId); // Filters - if (settings.tvshowEpisodesFilterHideWatched) { + if (tvshowEpisodesFilterHideWatched) { selection.append(MediaContract.SeasonsColumns.WATCHEDEPISODES) .append("!=") .append(MediaContract.SeasonsColumns.EPISODE); @@ -309,7 +311,7 @@ public class TVShowEpisodeListFragment extends Fragment uri = MediaContract.Episodes.buildTVShowSeasonEpisodesListUri(hostInfo.getId(), tvshowId, season); // Filters - if (settings.tvshowEpisodesFilterHideWatched) { + if (tvshowEpisodesFilterHideWatched) { selection.append(MediaContract.EpisodesColumns.PLAYCOUNT) .append("=0"); } diff --git a/app/src/main/java/com/syncedsynapse/kore2/ui/TVShowListFragment.java b/app/src/main/java/com/syncedsynapse/kore2/ui/TVShowListFragment.java index f9c14f4..f70502f 100644 --- a/app/src/main/java/com/syncedsynapse/kore2/ui/TVShowListFragment.java +++ b/app/src/main/java/com/syncedsynapse/kore2/ui/TVShowListFragment.java @@ -18,10 +18,12 @@ package com.syncedsynapse.kore2.ui; import android.app.Activity; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.content.res.Resources; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; +import android.preference.PreferenceManager; import android.provider.BaseColumns; import android.support.v4.app.Fragment; import android.support.v4.app.LoaderManager; @@ -177,24 +179,58 @@ public class TVShowListFragment extends Fragment searchView.setQueryHint(getString(R.string.action_search_tvshows)); // Setup filters - MenuItem hideWatched = menu.findItem(R.id.action_hide_watched); - Settings settings = Settings.getInstance(getActivity()); - hideWatched.setChecked(settings.tvshowsFilterHideWatched); + MenuItem hideWatched = menu.findItem(R.id.action_hide_watched), + ignoreArticles = menu.findItem(R.id.action_ignore_prefixes), + sortByName = menu.findItem(R.id.action_sort_by_name), + sortByDateAdded = menu.findItem(R.id.action_sort_by_date_added); + + SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); + hideWatched.setChecked(preferences.getBoolean(Settings.KEY_PREF_TVSHOWS_FILTER_HIDE_WATCHED, Settings.DEFAULT_PREF_TVSHOWS_FILTER_HIDE_WATCHED)); + 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); + switch (sortOrder) { + case Settings.SORT_BY_DATE_ADDED: + sortByDateAdded.setChecked(true); + break; + default: + sortByName.setChecked(true); + break; + } super.onCreateOptionsMenu(menu, inflater); } @Override public boolean onOptionsItemSelected(MenuItem item) { + SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); switch (item.getItemId()) { case R.id.action_hide_watched: - if (item.isChecked()) - item.setChecked(false); - else - item.setChecked(true); - Settings settings = Settings.getInstance(getActivity()); - settings.tvshowsFilterHideWatched = item.isChecked(); - settings.save(); + item.setChecked(!item.isChecked()); + preferences.edit() + .putBoolean(Settings.KEY_PREF_TVSHOWS_FILTER_HIDE_WATCHED, item.isChecked()) + .apply(); + getLoaderManager().restartLoader(LOADER_TVSHOWS, null, this); + break; + case R.id.action_ignore_prefixes: + item.setChecked(!item.isChecked()); + preferences.edit() + .putBoolean(Settings.KEY_PREF_TVSHOWS_IGNORE_PREFIXES, item.isChecked()) + .apply(); + getLoaderManager().restartLoader(LOADER_TVSHOWS, null, this); + break; + case R.id.action_sort_by_name: + item.setChecked(true); + preferences.edit() + .putInt(Settings.KEY_PREF_TVSHOWS_SORT_ORDER, Settings.SORT_BY_NAME) + .apply(); + getLoaderManager().restartLoader(LOADER_TVSHOWS, null, this); + break; + case R.id.action_sort_by_date_added: + item.setChecked(true); + preferences.edit() + .putInt(Settings.KEY_PREF_TVSHOWS_SORT_ORDER, Settings.SORT_BY_DATE_ADDED) + .apply(); getLoaderManager().restartLoader(LOADER_TVSHOWS, null, this); break; default: @@ -288,8 +324,8 @@ public class TVShowListFragment extends Fragment } // Filters - Settings settings = Settings.getInstance(getActivity()); - if (settings.tvshowsFilterHideWatched) { + SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); + if (preferences.getBoolean(Settings.KEY_PREF_TVSHOWS_FILTER_HIDE_WATCHED, Settings.DEFAULT_PREF_TVSHOWS_FILTER_HIDE_WATCHED)) { if (selection.length() != 0) selection.append(" AND "); selection.append(MediaContract.TVShowsColumns.WATCHEDEPISODES) @@ -297,9 +333,23 @@ public class TVShowListFragment extends Fragment .append(MediaContract.TVShowsColumns.EPISODE); } + 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) { + sortOrderStr = TVShowListQuery.SORT_BY_DATE_ADDED; + } else { + // Sort by name + if (preferences.getBoolean(Settings.KEY_PREF_TVSHOWS_IGNORE_PREFIXES, Settings.DEFAULT_PREF_TVSHOWS_IGNORE_PREFIXES)) { + sortOrderStr = TVShowListQuery.SORT_BY_NAME_IGNORE_ARTICLES; + } else { + sortOrderStr = TVShowListQuery.SORT_BY_NAME; + } + } + + return new CursorLoader(getActivity(), uri, TVShowListQuery.PROJECTION, selection.toString(), - selectionArgs, TVShowListQuery.SORT); + selectionArgs, sortOrderStr); } /** {@inheritDoc} */ @@ -330,7 +380,9 @@ public class TVShowListFragment extends Fragment MediaContract.TVShows.WATCHEDEPISODES, }; - String SORT = MediaDatabase.sortCommonTokens(MediaContract.TVShows.TITLE) + " ASC"; + String SORT_BY_NAME = MediaContract.TVShows.TITLE + " ASC"; + String SORT_BY_DATE_ADDED = MediaContract.TVShows.DATEADDED + " DESC"; + String SORT_BY_NAME_IGNORE_ARTICLES = MediaDatabase.sortCommonTokens(MediaContract.TVShows.TITLE) + " ASC"; final int ID = 0; final int TVSHOWID = 1; diff --git a/app/src/main/java/com/syncedsynapse/kore2/ui/hosts/HostListFragment.java b/app/src/main/java/com/syncedsynapse/kore2/ui/hosts/HostListFragment.java index ac7c231..e1a691f 100644 --- a/app/src/main/java/com/syncedsynapse/kore2/ui/hosts/HostListFragment.java +++ b/app/src/main/java/com/syncedsynapse/kore2/ui/hosts/HostListFragment.java @@ -105,26 +105,32 @@ public class HostListFragment extends Fragment { public void onItemClick(AdapterView parent, View view, int position, long itemId) { HostInfoRow clickedHostRow = hostInfoRows.get(position); - switch (clickedHostRow.status) { - case HostInfoRow.HOST_STATUS_CONNECTING: - // Jsut switch the host - hostManager.switchHost(clickedHostRow.hostInfo); - break; - case HostInfoRow.HOST_STATUS_AVAILABLE: - // Set the clicked host active - hostManager.switchHost(clickedHostRow.hostInfo); - Intent intent = new Intent(context, RemoteActivity.class) - .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - context.startActivity(intent); - break; - case HostInfoRow.HOST_STATUS_UNAVAILABLE: - hostManager.switchHost(clickedHostRow.hostInfo); - // Check host status again - clickedHostRow.status = HostInfoRow.HOST_STATUS_CONNECTING; - adapter.notifyDataSetChanged(); - updateHostStatus(clickedHostRow); - break; - } + // Set the clicked host active + hostManager.switchHost(clickedHostRow.hostInfo); + Intent intent = new Intent(context, RemoteActivity.class); + context.startActivity(intent); + + +// switch (clickedHostRow.status) { +// case HostInfoRow.HOST_STATUS_CONNECTING: +// // Jsut switch the host +// hostManager.switchHost(clickedHostRow.hostInfo); +// break; +// case HostInfoRow.HOST_STATUS_AVAILABLE: +// // Set the clicked host active +// hostManager.switchHost(clickedHostRow.hostInfo); +// Intent intent = new Intent(context, RemoteActivity.class) +// .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); +// context.startActivity(intent); +// break; +// case HostInfoRow.HOST_STATUS_UNAVAILABLE: +// hostManager.switchHost(clickedHostRow.hostInfo); +// // Check host status again +// clickedHostRow.status = HostInfoRow.HOST_STATUS_CONNECTING; +// adapter.notifyDataSetChanged(); +// updateHostStatus(clickedHostRow); +// break; +// } } }); diff --git a/app/src/main/java/com/syncedsynapse/kore2/utils/UIUtils.java b/app/src/main/java/com/syncedsynapse/kore2/utils/UIUtils.java index e71ac14..f3c7054 100644 --- a/app/src/main/java/com/syncedsynapse/kore2/utils/UIUtils.java +++ b/app/src/main/java/com/syncedsynapse/kore2/utils/UIUtils.java @@ -17,7 +17,6 @@ package com.syncedsynapse.kore2.utils; import android.animation.Animator; import android.annotation.TargetApi; -import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.res.Resources; @@ -223,7 +222,7 @@ public class UIUtils { int imageHeight = (int)(imageWidth * 1.2); List noPicturesCastList = new ArrayList(); - int maxCastPictures = Settings.getInstance(context).maxCastPictures; + int maxCastPictures = Settings.DEFAULT_MAX_CAST_PICTURES; int currentPictureNumber = 0; for (int i = 0; i < castList.size(); i++) { VideoType.Cast actor = castList.get(i); diff --git a/app/src/main/res/menu/movie_list.xml b/app/src/main/res/menu/movie_list.xml index f48cd6c..1be010e 100644 --- a/app/src/main/res/menu/movie_list.xml +++ b/app/src/main/res/menu/movie_list.xml @@ -24,8 +24,32 @@ android:queryHint="@string/action_search" app:showAsAction="ifRoom|collapseActionView" app:actionViewClass="android.support.v7.widget.SearchView"/> + + + + + + + + + + + + + + + + + + + + + + + Hide watched + Sort + By name + By date added + Ignore prefixes Theme