/* * Copyright 2015 Synced Synapse. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.xbmc.kore; import android.app.DownloadManager; import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.text.format.DateUtils; import org.xbmc.kore.utils.LogUtils; import java.util.Arrays; import java.util.HashSet; import java.util.Set; /** * Class that contains various constants and the keys for settings stored in shared preferences */ public class Settings { private static final String TAG = LogUtils.makeLogTag(Settings.class); /** * The update interval for the records in the DB. If the last update is older than this value * a refresh will be triggered. Applicable to TV Shows and Movies. */ // public static final long DB_UPDATE_INTERVAL = 12 * DateUtils.HOUR_IN_MILLIS; public static final long DB_UPDATE_INTERVAL = 5 * DateUtils.MINUTE_IN_MILLIS; // Sort orders public static final int SORT_BY_NAME = 0, SORT_BY_DATE_ADDED = 1, SORT_BY_RATING = 2, SORT_BY_YEAR = 3, SORT_BY_LENGTH = 4, SORT_BY_ALBUM = 5, SORT_BY_ARTIST = 6, SORT_BY_ARTIST_YEAR = 7, SORT_BY_LAST_PLAYED = 8, UNSORTED = 9; /** * Preferences keys. * Some of these settings are automatically managed by the Preferences mechanism. * Make sure these are the same as in preferences.xml */ // Theme public static final String KEY_PREF_THEME = "pref_theme"; public static final String DEFAULT_PREF_THEME = "0"; // Switch to remote public static final String KEY_PREF_SWITCH_TO_REMOTE_AFTER_MEDIA_START = "pref_switch_to_remote_after_media_start"; public static final boolean DEFAULT_PREF_SWITCH_TO_REMOTE_AFTER_MEDIA_START = true; // Keep remote activity above lockscreen public static final String KEY_PREF_KEEP_REMOTE_ABOVE_LOCKSCREEN = "pref_keep_remote_above_lockscreen"; public static final boolean DEFAULT_KEY_PREF_KEEP_REMOTE_ABOVE_LOCKSCREEN = false; // Keep screen on when on the remote activity public static final String KEY_PREF_KEEP_SCREEN_ON = "pref_keep_screen_on"; public static final boolean DEFAULT_KEY_PREF_KEEP_SCREEN_ON = false; // Show notifications public static final String KEY_PREF_SHOW_NOTIFICATION = "pref_show_notification"; public static final boolean DEFAULT_PREF_SHOW_NOTIFICATION = false; // Show now playing panel public static final String KEY_PREF_SHOW_NOW_PLAYING_PANEL = "pref_show_nowplayingpanel"; public static final boolean DEFAULT_PREF_SHOW_NOW_PLAYING_PANEL = true; // Seek mode public static final String KEY_PREF_NOTIFICATION_SEEK_JUMP = "pref_notification_seek_jump"; public static final boolean DEFAULT_PREF_NOTIFICATION_SEEK_JUMP = false; // Pause during calls public static final String KEY_PREF_PAUSE_DURING_CALLS = "pref_pause_during_calls"; public static final boolean DEFAULT_PREF_PAUSE_DURING_CALLS = false; // Other keys used in preferences.xml public static final String KEY_PREF_ABOUT = "pref_about"; // Filter watched movies on movie list public static final String KEY_PREF_MOVIES_FILTER_HIDE_WATCHED = "movies_filter_hide_watched"; public static final boolean DEFAULT_PREF_MOVIES_FILTER_HIDE_WATCHED = false; // Sort order on movies public static final String KEY_PREF_MOVIES_SORT_ORDER = "movies_sort_order"; public static final int DEFAULT_PREF_MOVIES_SORT_ORDER = SORT_BY_NAME; // Show watched status on movie list public static final String KEY_PREF_MOVIES_SHOW_WATCHED_STATUS = "movies_show_watched_status"; public static final boolean DEFAULT_PREF_MOVIES_SHOW_WATCHED_STATUS = true; // Show watched status on movie list public static final String KEY_PREF_MOVIES_SHOW_RATING = "movies_show_rating"; public static final boolean DEFAULT_PREF_MOVIES_SHOW_RATING = true; // Sort order on albums public static final String KEY_PREF_ALBUMS_SORT_ORDER = "albums_sort_order"; public static final int DEFAULT_PREF_ALBUMS_SORT_ORDER = SORT_BY_ALBUM; // Ignore articles on movie sorting public static final String KEY_PREF_MOVIES_IGNORE_PREFIXES = "movies_ignore_prefixes"; public static final boolean DEFAULT_PREF_MOVIES_IGNORE_PREFIXES = false; // Filter watched tv shows on tvshows list public static final String KEY_PREF_TVSHOWS_FILTER_HIDE_WATCHED = "tvshows_filter_hide_watched"; public static final boolean DEFAULT_PREF_TVSHOWS_FILTER_HIDE_WATCHED = false; // Filter watched episodes on episodes list public static final String KEY_PREF_TVSHOW_EPISODES_FILTER_HIDE_WATCHED = "tvshow_episodes_filter_hide_watched"; public static final boolean DEFAULT_PREF_TVSHOW_EPISODES_FILTER_HIDE_WATCHED = false; // Sort order on tv shows public static final String KEY_PREF_TVSHOWS_SORT_ORDER = "tvshows_sort_order"; public static final int DEFAULT_PREF_TVSHOWS_SORT_ORDER = SORT_BY_NAME; // Ignore articles on tv show sorting public static final String KEY_PREF_TVSHOWS_IGNORE_PREFIXES = "tvshows_ignore_prefixes"; public static final boolean DEFAULT_PREF_TVSHOWS_IGNORE_PREFIXES = false; // Show watched status on movie list public static final String KEY_PREF_TVSHOWS_SHOW_WATCHED_STATUS = "tvshows_show_watched_status"; public static final boolean DEFAULT_PREF_TVSHOWS_SHOW_WATCHED_STATUS = true; // Filter watched pvr recordings on movie list public static final String KEY_PREF_PVR_RECORDINGS_FILTER_HIDE_WATCHED = "pvr_recordings_filter_hide_watched"; public static final boolean DEFAULT_PREF_PVR_RECORDINGS_FILTER_HIDE_WATCHED = false; // Sort order on pvr recordings public static final String KEY_PREF_PVR_RECORDINGS_SORT_ORDER = "pvr_recordings_sort_order"; public static final int DEFAULT_PREF_PVR_RECORDINGS_SORT_ORDER = UNSORTED; // Filter disabled addons on addons list public static final String KEY_PREF_ADDONS_FILTER_HIDE_DISABLED = "addons_filter_hide_disabled"; public static final boolean DEFAULT_PREF_ADDONS_FILTER_HIDE_DISABLED = false; // Use hardware volume keys to control volume public static final String KEY_PREF_USE_HARDWARE_VOLUME_KEYS = "pref_use_hardware_volume_keys"; public static final boolean DEFAULT_PREF_USE_HARDWARE_VOLUME_KEYS = true; // Vibrate on remote button press public static final String KEY_PREF_VIBRATE_REMOTE_BUTTONS = "pref_vibrate_remote_buttons"; public static final boolean DEFAULT_PREF_VIBRATE_REMOTE_BUTTONS = false; // Current host id public static final String KEY_PREF_CURRENT_HOST_ID = "current_host_id"; public static final int DEFAULT_PREF_CURRENT_HOST_ID = -1; public static final String KEY_PREF_REMOTE_BAR_ITEMS = "pref_remote_bar_items"; public static String getRemoteBarItemsPrefKey(int hostId) { return Settings.KEY_PREF_REMOTE_BAR_ITEMS + hostId; } public static final String KEY_PREF_NAV_DRAWER_ITEMS = "pref_nav_drawer_items"; public static String getNavDrawerItemsPrefKey(int hostId) { return Settings.KEY_PREF_NAV_DRAWER_ITEMS + hostId; } public static final String KEY_PREF_DOWNLOAD_TYPES = "pref_download_conn_types"; public static final String KEY_PREF_SINGLE_COLUMN = "pref_single_multi_column"; public static final boolean DEFAULT_PREF_SINGLE_COLUMN = false; // Switch to remote public static final String KEY_PREF_DISABLE_LOCAL_PLAY = "pref_disable_local_play"; public static final boolean DEFAULT_PREF_DISABLE_LOCAL_PLAY = false; public static final String KEY_PREF_LANGUAGE = "pref_language"; public static final String KEY_PREF_SELECTED_LANGUAGE = "pref_selected_language"; /** * Determines the bit flags used by {@link DownloadManager.Request} to correspond to the enabled network connections * from the settings screen. * @return {@link DownloadManager.Request} network types bit flags that are enabled or 0 if none are enabled */ public static int allowedDownloadNetworkTypes(Context context) { SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context); Set connPrefs = sharedPref.getStringSet(Settings.KEY_PREF_DOWNLOAD_TYPES, new HashSet<>(Arrays.asList(new String[]{"0"}))); int result = 0; // default none for(String pref : connPrefs) { switch( Integer.parseInt(pref) ) { case 0: result |= DownloadManager.Request.NETWORK_WIFI; break; case 1: result |= DownloadManager.Request.NETWORK_MOBILE; break; case 2: // currently -1 means all network types in DownloadManager result |= ~0; } } return result; } /** * Keys for bookmarked addons stored in preferences */ private static final String KEY_PREF_BOOKMARKED_ADDONS = "bookmarked"; public static String getBookmarkedAddonsPrefKey(int hostId) { return Settings.KEY_PREF_BOOKMARKED_ADDONS + hostId; } private static final String KEY_PREF_NAME_BOOKMARKED_ADDON = "name_"; public static String getNameBookmarkedAddonsPrefKey(int hostId) { return Settings.KEY_PREF_NAME_BOOKMARKED_ADDON + hostId + "_"; } public static final String DEFAULT_PREF_NAME_BOOKMARKED_ADDON = "Content"; }