package com.simplecity.amp_library.utils; import android.content.SharedPreferences; import android.content.res.Resources; import android.preference.PreferenceManager; import com.simplecity.amp_library.BuildConfig; import com.simplecity.amp_library.R; import com.simplecity.amp_library.ShuttleApplication; import com.simplecity.amp_library.ui.modelviews.ViewType; public class SettingsManager { private static final String TAG = "SettingsManager"; private static SettingsManager sInstance; public static SettingsManager getInstance() { if (sInstance == null) { sInstance = new SettingsManager(); } return sInstance; } private SettingsManager() { } private SharedPreferences getSharedPreferences() { return PreferenceManager.getDefaultSharedPreferences(ShuttleApplication.getInstance()); } private String getStringValue(String key) { return getSharedPreferences().getString(key, null); } private String getStringValue(String key, String defaultValue) { return getSharedPreferences().getString(key, defaultValue); } private boolean getBooleanValue(String key, boolean defaultValue) { return getSharedPreferences().getBoolean(key, defaultValue); } private int getIntValue(String key, int defaultValue) { return getSharedPreferences().getInt(key, defaultValue); } private void setStringValue(String key, String value) { final SharedPreferences.Editor editor = getSharedPreferences().edit(); editor.putString(key, value); editor.apply(); } private void setBooleanValue(String key, boolean value) { final SharedPreferences.Editor editor = getSharedPreferences().edit(); editor.putBoolean(key, value); editor.apply(); } private void setIntValue(String key, int value) { final SharedPreferences.Editor editor = getSharedPreferences().edit(); editor.putInt(key, value); editor.apply(); } public static final String KEY_SHOW_LOCKSCREEN_ARTWORK = "pref_show_lockscreen_artwork"; public boolean showLockscreenArtwork() { return getBooleanValue(KEY_SHOW_LOCKSCREEN_ARTWORK, true); } private static final String KEY_CAN_TINT_NAV_BAR = "pref_nav_bar"; public boolean canTintNavBar() { return ShuttleUtils.hasLollipop() && getBooleanValue(KEY_CAN_TINT_NAV_BAR, true); } private static final String KEY_KEEP_SCREEN_ON = "pref_screen_on"; public boolean keepScreenOn() { return getBooleanValue(KEY_KEEP_SCREEN_ON, false); } private static final String KEY_ALBUM_DISPLAY_TYPE = "album_display_type_new"; public void setAlbumDisplayType(int type) { setIntValue(KEY_ALBUM_DISPLAY_TYPE, type); } @ViewType public int getAlbumDisplayType() { return getIntValue(KEY_ALBUM_DISPLAY_TYPE, ViewType.ALBUM_LIST); } private static final String KEY_ARTIST_DISPLAY_TYPE = "artist_display_type_new"; public void setArtistDisplayType(int type) { setIntValue(KEY_ARTIST_DISPLAY_TYPE, type); } @ViewType public int getArtistDisplayType() { return getIntValue(KEY_ARTIST_DISPLAY_TYPE, ViewType.ARTIST_PALETTE); } private static final String KEY_ARTIST_COLUMN_COUNT = "artist_column_count"; private static final String KEY_ARTIST_COLUMN_COUNT_LAND = "artist_column_count_land"; private static final String KEY_ARTIST_COLUMN_COUNT_TABLET = "artist_column_count_tablet"; private static final String KEY_ARTIST_COLUMN_COUNT_TABLET_LAND = "artist_column_count_tablet_land"; private String getArtistColumnCountKey() { String key = KEY_ARTIST_COLUMN_COUNT; if (ShuttleUtils.isLandscape()) { key = ShuttleUtils.isTablet() ? KEY_ARTIST_COLUMN_COUNT_TABLET_LAND : KEY_ARTIST_COLUMN_COUNT_LAND; } else { if (ShuttleUtils.isTablet()) key = KEY_ARTIST_COLUMN_COUNT_TABLET; } return key; } public void setArtistColumnCount(int count) { setIntValue(getArtistColumnCountKey(), count); } public int getArtistColumnCount(Resources res) { int artistDisplayType = getArtistDisplayType(); int defaultSpanCount = artistDisplayType == ViewType.ARTIST_LIST ? res.getInteger(R.integer.list_num_columns) : res.getInteger(R.integer.grid_num_columns); if (artistDisplayType == ViewType.ARTIST_LIST && defaultSpanCount == 1) { return 1; } return getIntValue(getArtistColumnCountKey(), defaultSpanCount); } private static final String KEY_ALBUM_COLUMN_COUNT = "album_column_count"; private static final String KEY_ALBUM_COLUMN_COUNT_LAND = "album_column_count_land"; private static final String KEY_ALBUM_COLUMN_COUNT_TABLET = "album_column_count_tablet"; private static final String KEY_ALBUM_COLUMN_COUNT_TABLET_LAND = "album_column_count_tablet_land"; private String getAlbumColumnCountKey() { String key = KEY_ALBUM_COLUMN_COUNT; if (ShuttleUtils.isLandscape()) { key = ShuttleUtils.isTablet() ? KEY_ALBUM_COLUMN_COUNT_TABLET_LAND : KEY_ALBUM_COLUMN_COUNT_LAND; } else { if (ShuttleUtils.isTablet()) key = KEY_ALBUM_COLUMN_COUNT_TABLET; } return key; } public void setAlbumColumnCount(int count) { setIntValue(getAlbumColumnCountKey(), count); } public int getAlbumColumnCount(Resources res) { int albumDisplayType = getAlbumDisplayType(); int defaultSpanCount = albumDisplayType == ViewType.ALBUM_LIST ? res.getInteger(R.integer.list_num_columns) : res.getInteger(R.integer.grid_num_columns); if (albumDisplayType == ViewType.ALBUM_LIST && defaultSpanCount == 1) { return 1; } return getIntValue(getAlbumColumnCountKey(), defaultSpanCount); } public boolean getEqualizerEnabled() { return getBooleanValue("audiofx.global.enable", false); } private static final String DOCUMENT_TREE_URI = "document_tree_uri"; public void setDocumentTreeUri(String documentTreeUri) { setStringValue(DOCUMENT_TREE_URI, documentTreeUri); } public String getDocumentTreeUri() { return getStringValue(DOCUMENT_TREE_URI); } private static final String KEY_FOLDER_BROWSER_INITIAL_DIR = "folder_browser_initial_dir"; public void setFolderBrowserInitialDir(String dir) { setStringValue(KEY_FOLDER_BROWSER_INITIAL_DIR, dir); } public String getFolderBrowserInitialDir() { return getStringValue(KEY_FOLDER_BROWSER_INITIAL_DIR); } private static final String KEY_FOLDER_BROWSER_FILES_SORT_ORDER = "folder_browser_files_sort_order"; public void setFolderBrowserFilesSortOrder(String sortOrder) { setStringValue(KEY_FOLDER_BROWSER_FILES_SORT_ORDER, sortOrder); } public String getFolderBrowserFilesSortOrder() { return getStringValue(KEY_FOLDER_BROWSER_FILES_SORT_ORDER, SortManager.SortFiles.DEFAULT); } private static final String KEY_FOLDER_BROWSER_FILES_ASCENDING = "folder_browser_files_ascending"; public void setFolderBrowserFilesAscending(boolean ascending) { setBooleanValue(KEY_FOLDER_BROWSER_FILES_ASCENDING, ascending); } public boolean getFolderBrowserFilesAscending() { return getBooleanValue(KEY_FOLDER_BROWSER_FILES_ASCENDING, true); } private static final String KEY_FOLDER_BROWSER_FOLDERS_SORT_ORDER = "folder_browser_folders_sort_order"; public void setFolderBrowserFoldersSortOrder(String sortOrder) { setStringValue(KEY_FOLDER_BROWSER_FOLDERS_SORT_ORDER, sortOrder); } public String getFolderBrowserFoldersSortOrder() { return getStringValue(KEY_FOLDER_BROWSER_FOLDERS_SORT_ORDER, SortManager.SortFolders.DEFAULT); } private static final String KEY_FOLDER_BROWSER_FOLDERS_ASCENDING = "folder_browser_folders_ascending"; public void setFolderBrowserFoldersAscending(boolean ascending) { setBooleanValue(KEY_FOLDER_BROWSER_FOLDERS_ASCENDING, ascending); } public boolean getFolderBrowserFoldersAscending() { return getBooleanValue(KEY_FOLDER_BROWSER_FOLDERS_ASCENDING, true); } private static final String KEY_FOLDER_BROWSER_SHOW_FILENAMES = "folder_browser_show_file_names"; public void setFolderBrowserShowFileNames(boolean showFileNames) { setBooleanValue(KEY_FOLDER_BROWSER_SHOW_FILENAMES, showFileNames); } public boolean getFolderBrowserShowFileNames() { return getBooleanValue(KEY_FOLDER_BROWSER_SHOW_FILENAMES, false); } private static final String KEY_LAUNCH_COUNT = "launch_count"; public void incrementLaunchCount() { setIntValue(KEY_LAUNCH_COUNT, getLaunchCount() + 1); } public int getLaunchCount() { return getIntValue(KEY_LAUNCH_COUNT, 0); } private static final String KEY_NAG_MESSAGE_READ = "nag_message_read"; public void setNagMessageRead() { setBooleanValue(KEY_NAG_MESSAGE_READ, true); } public boolean getNagMessageRead() { return getBooleanValue(KEY_NAG_MESSAGE_READ, false); } private static final String KEY_HAS_RATED = "has_rated"; public void setHasRated() { setBooleanValue(KEY_HAS_RATED, true); } public boolean getHasRated() { return getBooleanValue(KEY_HAS_RATED, false); } private static final String KEY_BLUETOOTH_PAUSE_DISCONNECT = "pref_bluetooth_disconnect"; private static final String KEY_BLUETOOTH_RESUME_CONNECT = "pref_bluetooth_connect"; public boolean getBluetoothPauseDisconnect() { return getBooleanValue(KEY_BLUETOOTH_PAUSE_DISCONNECT, true); } public boolean getBluetoothResumeConnect() { return getBooleanValue(KEY_BLUETOOTH_RESUME_CONNECT, false); } private static final String KEY_PRIMARY_COLOR = "pref_theme_highlight_color"; private static final String KEY_ACCENT_COLOR = "pref_theme_accent_color"; private static final String KEY_ACCENT_IS_WHITE = "pref_theme_white_accent"; public int getPrimaryColor(int defaultColor) { return getIntValue(KEY_PRIMARY_COLOR, defaultColor); } public void setPrimaryColor(int primaryColor) { setIntValue(KEY_PRIMARY_COLOR, primaryColor); } public int getAccentColor(int defaultColor) { return getIntValue(KEY_ACCENT_COLOR, defaultColor); } public void setAccentColor(int accentColor) { setIntValue(KEY_ACCENT_COLOR, accentColor); } public boolean isAccentColorWhite() { return getBooleanValue(KEY_ACCENT_IS_WHITE, false); } //ARTWORK public static final String KEY_PREFER_LAST_FM = "pref_prefer_lastfm"; private static final String KEY_DOWNLOAD_AUTOMATICALLY = "pref_download_artwork_auto"; private static final String KEY_USE_GMAIL_PLACEHOLDERS = "pref_placeholders"; private static final String KEY_QUEUE_ARTWORK = "pref_artwork_queue"; private static final String KEY_CROP_ARTWORK = "pref_crop_artwork"; public static final String KEY_IGNORE_MEDIASTORE_ART = "pref_ignore_mediastore_artwork"; public static final String KEY_IGNORE_EMBEDDED_ARTWORK = "pref_ignore_embedded_artwork"; public static final String KEY_IGNORE_FOLDER_ARTWORK = "pref_ignore_folder_artwork"; public static final String KEY_PREFER_EMBEDDED_ARTWORK = "pref_prefer_embedded"; public boolean canDownloadArtworkAutomatically() { return getBooleanValue(KEY_DOWNLOAD_AUTOMATICALLY, false); } public boolean preferLastFM() { return getBooleanValue(KEY_PREFER_LAST_FM, true); } public boolean preferEmbeddedArtwork() { return getBooleanValue(KEY_PREFER_EMBEDDED_ARTWORK, false); } public boolean useGmailPlaceholders() { return getBooleanValue(KEY_USE_GMAIL_PLACEHOLDERS, false); } public boolean showArtworkInQueue() { return getBooleanValue(KEY_QUEUE_ARTWORK, true); } public boolean cropArtwork() { return getBooleanValue(KEY_CROP_ARTWORK, false); } public boolean ignoreMediaStoreArtwork() { return getBooleanValue(KEY_IGNORE_MEDIASTORE_ART, false); } public boolean ignoreFolderArtwork() { return getBooleanValue(KEY_IGNORE_FOLDER_ARTWORK, false); } public boolean ignoreEmbeddedArtwork() { return getBooleanValue(KEY_IGNORE_EMBEDDED_ARTWORK, false); } private static final String KEY_PLAYLIST_IGNORE_DUPLICATES = "pref_ignore_duplicates"; public boolean ignoreDuplicates() { return getBooleanValue(KEY_PLAYLIST_IGNORE_DUPLICATES, false); } public void setIgnoreDuplicates(boolean ignoreDuplicates) { setBooleanValue(KEY_PLAYLIST_IGNORE_DUPLICATES, ignoreDuplicates); } private static final String KEY_INVERT_NOTIFICATION_ICONS = "pref_invert_notif_icons"; public boolean invertNotificationIcons() { return getBooleanValue(KEY_INVERT_NOTIFICATION_ICONS, false); } // Search settings private static final String KEY_SEARCH_FUZZY = "search_fuzzy"; public void setSearchFuzzy(boolean fuzzy) { setBooleanValue(KEY_SEARCH_FUZZY, fuzzy); } public boolean getSearchFuzzy() { return getBooleanValue(KEY_SEARCH_FUZZY, true); } private static final String KEY_SEARCH_ARTISTS = "search_artists"; public void setSearchArtists(boolean searchArtists) { setBooleanValue(KEY_SEARCH_ARTISTS, searchArtists); } public boolean getSearchArtists() { return getBooleanValue(KEY_SEARCH_ARTISTS, true); } private static final String KEY_SEARCH_ALBUMS = "search_albums"; public void setSearchAlbums(boolean searchAlbums) { setBooleanValue(KEY_SEARCH_ALBUMS, searchAlbums); } public boolean getSearchAlbums() { return getBooleanValue(KEY_SEARCH_ALBUMS, true); } // Changelog private static final String KEY_VERSION_CODE = "version_code"; public void setVersionCode() { setIntValue(KEY_VERSION_CODE, BuildConfig.VERSION_CODE); } public int getStoredVersionCode() { return getIntValue(KEY_VERSION_CODE, -1); } private static final String KEY_CHANGELOG_SHOW_ON_LAUNCH = "show_on_launch"; public void setShowChangelogOnLaunch(boolean showOnLaunch) { setBooleanValue(KEY_CHANGELOG_SHOW_ON_LAUNCH, showOnLaunch); } public boolean getShowChangelogOnLaunch() { return getBooleanValue(KEY_CHANGELOG_SHOW_ON_LAUNCH, true); } }