commit
18604104b5
|
@ -34,7 +34,7 @@ Credits
|
|||
**Translations**
|
||||
- French - Kowalski
|
||||
- Bulgarian - NEOhidra
|
||||
|
||||
- German - jonas2515
|
||||
|
||||
Links
|
||||
-----
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
// }
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -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<VideoType.Cast> noPicturesCastList = new ArrayList<VideoType.Cast>();
|
||||
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);
|
||||
|
|
|
@ -24,8 +24,32 @@
|
|||
android:queryHint="@string/action_search"
|
||||
app:showAsAction="ifRoom|collapseActionView"
|
||||
app:actionViewClass="android.support.v7.widget.SearchView"/>
|
||||
<item
|
||||
android:title="@string/sort_order"
|
||||
app:showAsAction="never">
|
||||
<menu>
|
||||
<group
|
||||
android:checkableBehavior="single">
|
||||
<item
|
||||
android:id="@+id/action_sort_by_name"
|
||||
android:title="@string/sort_by_name"
|
||||
app:showAsAction="never"/>
|
||||
<item
|
||||
android:id="@+id/action_sort_by_date_added"
|
||||
android:title="@string/sort_by_date_added"
|
||||
app:showAsAction="never"/>
|
||||
</group>
|
||||
<group
|
||||
android:checkableBehavior="all">
|
||||
<item
|
||||
android:id="@+id/action_ignore_prefixes"
|
||||
android:title="@string/ignore_prefixes"
|
||||
app:showAsAction="never"/>
|
||||
</group>
|
||||
</menu>
|
||||
</item>
|
||||
|
||||
<group
|
||||
android:id="@+id/group_filter"
|
||||
android:checkableBehavior="all">
|
||||
<item
|
||||
android:id="@+id/action_hide_watched"
|
||||
|
|
|
@ -22,6 +22,30 @@
|
|||
android:queryHint="@string/action_search"
|
||||
app:showAsAction="ifRoom|collapseActionView"
|
||||
app:actionViewClass="android.support.v7.widget.SearchView"/>
|
||||
<item
|
||||
android:title="@string/sort_order"
|
||||
app:showAsAction="never">
|
||||
<menu>
|
||||
<group
|
||||
android:checkableBehavior="single">
|
||||
<item
|
||||
android:id="@+id/action_sort_by_name"
|
||||
android:title="@string/sort_by_name"
|
||||
app:showAsAction="never"/>
|
||||
<item
|
||||
android:id="@+id/action_sort_by_date_added"
|
||||
android:title="@string/sort_by_date_added"
|
||||
app:showAsAction="never"/>
|
||||
</group>
|
||||
<group
|
||||
android:checkableBehavior="all">
|
||||
<item
|
||||
android:id="@+id/action_ignore_prefixes"
|
||||
android:title="@string/ignore_prefixes"
|
||||
app:showAsAction="never"/>
|
||||
</group>
|
||||
</menu>
|
||||
</item>
|
||||
<group android:id="@+id/group_filter"
|
||||
android:checkableBehavior="all">
|
||||
<item android:id="@+id/action_hide_watched"
|
||||
|
|
|
@ -256,6 +256,10 @@
|
|||
|
||||
<!-- Filters on list menus -->
|
||||
<string name="hide_watched">Hide watched</string>
|
||||
<string name="sort_order">Sort</string>
|
||||
<string name="sort_by_name">By name</string>
|
||||
<string name="sort_by_date_added">By date added</string>
|
||||
<string name="ignore_prefixes">Ignore prefixes</string>
|
||||
|
||||
<!-- Preferences strings -->
|
||||
<string name="theme">Theme</string>
|
||||
|
|
Loading…
Reference in New Issue