From d8a2dd5f83598fdde289e01994c5d2df1c6577fc Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Sun, 6 Nov 2022 14:32:47 +0100 Subject: Move preferences to a new module --- .../danoeh/antennapod/core/ClientConfigurator.java | 2 +- .../core/feed/util/ImageResourceUtils.java | 2 +- .../core/feed/util/PlaybackSpeedUtils.java | 2 +- .../antennapod/core/preferences/ThemeSwitcher.java | 62 ++ .../core/preferences/UserPreferences.java | 983 --------------------- .../antennapod/core/service/FeedUpdateWorker.java | 2 +- .../service/download/DownloadRequestCreator.java | 2 +- .../core/service/download/DownloadService.java | 2 +- .../core/service/playback/ExoPlayerWrapper.java | 2 +- .../core/service/playback/LocalPSMP.java | 2 +- .../core/service/playback/PlaybackService.java | 2 +- .../PlaybackServiceNotificationBuilder.java | 2 +- .../core/storage/AutomaticDownloadAlgorithm.java | 4 +- .../danoeh/antennapod/core/storage/DBReader.java | 2 +- .../de/danoeh/antennapod/core/storage/DBTasks.java | 2 +- .../danoeh/antennapod/core/storage/DBWriter.java | 2 +- .../core/storage/EpisodeCleanupAlgorithm.java | 5 +- .../storage/EpisodeCleanupAlgorithmFactory.java | 2 +- .../storage/ExceptFavoriteCleanupAlgorithm.java | 4 +- .../storage/ItemEnqueuePositionCalculator.java | 2 +- .../danoeh/antennapod/core/sync/SyncService.java | 2 +- .../core/sync/SynchronizationCredentials.java | 2 +- .../danoeh/antennapod/core/util/FeedItemUtil.java | 2 +- .../danoeh/antennapod/core/util/NetworkUtils.java | 2 +- .../danoeh/antennapod/core/util/StorageUtils.java | 2 +- .../antennapod/core/util/TimeSpeedConverter.java | 2 +- .../core/util/download/AutoUpdateManager.java | 2 +- .../core/util/gui/NotificationUtils.java | 2 +- .../antennapod/core/util/playback/AudioPlayer.java | 2 +- .../core/util/playback/PlaybackController.java | 2 +- .../antennapod/core/widget/WidgetUpdater.java | 2 +- 31 files changed, 94 insertions(+), 1016 deletions(-) create mode 100644 core/src/main/java/de/danoeh/antennapod/core/preferences/ThemeSwitcher.java delete mode 100644 core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java (limited to 'core/src/main/java') diff --git a/core/src/main/java/de/danoeh/antennapod/core/ClientConfigurator.java b/core/src/main/java/de/danoeh/antennapod/core/ClientConfigurator.java index 8dafa8ed8..ff8e7a6c0 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/ClientConfigurator.java +++ b/core/src/main/java/de/danoeh/antennapod/core/ClientConfigurator.java @@ -4,7 +4,7 @@ import android.content.Context; import de.danoeh.antennapod.core.preferences.PlaybackPreferences; import de.danoeh.antennapod.core.preferences.SleepTimerPreferences; import de.danoeh.antennapod.core.preferences.UsageStatistics; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; import de.danoeh.antennapod.core.service.download.AntennapodHttpClient; import de.danoeh.antennapod.net.download.serviceinterface.DownloadServiceInterface; import de.danoeh.antennapod.core.service.download.DownloadServiceInterfaceImpl; diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/util/ImageResourceUtils.java b/core/src/main/java/de/danoeh/antennapod/core/feed/util/ImageResourceUtils.java index 743cacfe2..4e9424b67 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/util/ImageResourceUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/util/ImageResourceUtils.java @@ -5,7 +5,7 @@ import androidx.annotation.Nullable; import de.danoeh.antennapod.model.feed.FeedItem; import de.danoeh.antennapod.model.feed.FeedMedia; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; import de.danoeh.antennapod.model.playback.Playable; /** diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/util/PlaybackSpeedUtils.java b/core/src/main/java/de/danoeh/antennapod/core/feed/util/PlaybackSpeedUtils.java index 5eaf0be68..d0824e00b 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/util/PlaybackSpeedUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/util/PlaybackSpeedUtils.java @@ -6,7 +6,7 @@ import de.danoeh.antennapod.model.feed.FeedItem; import de.danoeh.antennapod.model.feed.FeedMedia; import de.danoeh.antennapod.model.playback.MediaType; import de.danoeh.antennapod.core.preferences.PlaybackPreferences; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; import de.danoeh.antennapod.model.playback.Playable; import static de.danoeh.antennapod.model.feed.FeedPreferences.SPEED_USE_GLOBAL; diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/ThemeSwitcher.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/ThemeSwitcher.java new file mode 100644 index 000000000..631d0a84f --- /dev/null +++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/ThemeSwitcher.java @@ -0,0 +1,62 @@ +package de.danoeh.antennapod.core.preferences; + +import android.content.Context; +import android.content.res.Configuration; +import androidx.annotation.StyleRes; +import de.danoeh.antennapod.core.R; +import de.danoeh.antennapod.storage.preferences.UserPreferences; + +public abstract class ThemeSwitcher { + @StyleRes + public static int getTheme(Context context) { + switch (readThemeValue(context)) { + case DARK: + return R.style.Theme_AntennaPod_Dark; + case BLACK: + return R.style.Theme_AntennaPod_TrueBlack; + case LIGHT: // fall-through + default: + return R.style.Theme_AntennaPod_Light; + } + } + + @StyleRes + public static int getNoTitleTheme(Context context) { + switch (readThemeValue(context)) { + case DARK: + return R.style.Theme_AntennaPod_Dark_NoTitle; + case BLACK: + return R.style.Theme_AntennaPod_TrueBlack_NoTitle; + case LIGHT: // fall-through + default: + return R.style.Theme_AntennaPod_Light_NoTitle; + } + } + + @StyleRes + public static int getTranslucentTheme(Context context) { + switch (readThemeValue(context)) { + case DARK: + return R.style.Theme_AntennaPod_Dark_Translucent; + case BLACK: + return R.style.Theme_AntennaPod_TrueBlack_Translucent; + case LIGHT: // fall-through + default: + return R.style.Theme_AntennaPod_Light_Translucent; + } + } + + private static UserPreferences.ThemePreference readThemeValue(Context context) { + UserPreferences.ThemePreference theme = UserPreferences.getTheme(); + if (theme == UserPreferences.ThemePreference.SYSTEM) { + int nightMode = context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK; + if (nightMode == Configuration.UI_MODE_NIGHT_YES) { + return UserPreferences.ThemePreference.DARK; + } else { + return UserPreferences.ThemePreference.LIGHT; + + } + } + return theme; + } +} diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java deleted file mode 100644 index f0227ae7b..000000000 --- a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java +++ /dev/null @@ -1,983 +0,0 @@ -package de.danoeh.antennapod.core.preferences; - -import android.content.Context; -import android.content.SharedPreferences; -import android.content.res.Configuration; -import android.os.Build; -import android.text.TextUtils; -import android.util.Log; -import android.view.KeyEvent; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.annotation.VisibleForTesting; -import androidx.core.app.NotificationCompat; -import androidx.preference.PreferenceManager; - -import org.json.JSONArray; -import org.json.JSONException; - -import java.io.File; -import java.io.IOException; -import java.net.Proxy; -import java.text.DecimalFormat; -import java.text.DecimalFormatSymbols; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Locale; -import java.util.Set; -import java.util.concurrent.TimeUnit; - -import de.danoeh.antennapod.core.R; -import de.danoeh.antennapod.model.feed.FeedCounter; -import de.danoeh.antennapod.model.playback.MediaType; -import de.danoeh.antennapod.model.feed.SubscriptionsFilter; -import de.danoeh.antennapod.model.download.ProxyConfig; -import de.danoeh.antennapod.model.feed.SortOrder; - -/** - * Provides access to preferences set by the user in the settings screen. A - * private instance of this class must first be instantiated via - * init() or otherwise every public method will throw an Exception - * when called. - */ -public class UserPreferences { - private UserPreferences(){} - - private static final String TAG = "UserPreferences"; - - // User Interface - public static final String PREF_THEME = "prefTheme"; - public static final String PREF_HIDDEN_DRAWER_ITEMS = "prefHiddenDrawerItems"; - public static final String PREF_DRAWER_FEED_ORDER = "prefDrawerFeedOrder"; - public static final String PREF_DRAWER_FEED_COUNTER = "prefDrawerFeedIndicator"; - public static final String PREF_EXPANDED_NOTIFICATION = "prefExpandNotify"; - public static final String PREF_USE_EPISODE_COVER = "prefEpisodeCover"; - public static final String PREF_SHOW_TIME_LEFT = "showTimeLeft"; - private static final String PREF_PERSISTENT_NOTIFICATION = "prefPersistNotify"; - public static final String PREF_COMPACT_NOTIFICATION_BUTTONS = "prefCompactNotificationButtons"; - public static final String PREF_LOCKSCREEN_BACKGROUND = "prefLockscreenBackground"; - private static final String PREF_SHOW_DOWNLOAD_REPORT = "prefShowDownloadReport"; - private static final String PREF_SHOW_AUTO_DOWNLOAD_REPORT = "prefShowAutoDownloadReport"; - public static final String PREF_DEFAULT_PAGE = "prefDefaultPage"; - public static final String PREF_FILTER_FEED = "prefSubscriptionsFilter"; - public static final String PREF_SUBSCRIPTION_TITLE = "prefSubscriptionTitle"; - - public static final String PREF_QUEUE_KEEP_SORTED = "prefQueueKeepSorted"; - public static final String PREF_QUEUE_KEEP_SORTED_ORDER = "prefQueueKeepSortedOrder"; - - // Playback - public static final String PREF_PAUSE_ON_HEADSET_DISCONNECT = "prefPauseOnHeadsetDisconnect"; - public static final String PREF_UNPAUSE_ON_HEADSET_RECONNECT = "prefUnpauseOnHeadsetReconnect"; - private static final String PREF_UNPAUSE_ON_BLUETOOTH_RECONNECT = "prefUnpauseOnBluetoothReconnect"; - public static final String PREF_HARDWARE_FORWARD_BUTTON = "prefHardwareForwardButton"; - public static final String PREF_HARDWARE_PREVIOUS_BUTTON = "prefHardwarePreviousButton"; - public static final String PREF_FOLLOW_QUEUE = "prefFollowQueue"; - public static final String PREF_SKIP_KEEPS_EPISODE = "prefSkipKeepsEpisode"; - private static final String PREF_FAVORITE_KEEPS_EPISODE = "prefFavoriteKeepsEpisode"; - private static final String PREF_AUTO_DELETE = "prefAutoDelete"; - public static final String PREF_SMART_MARK_AS_PLAYED_SECS = "prefSmartMarkAsPlayedSecs"; - private static final String PREF_PLAYBACK_SPEED_ARRAY = "prefPlaybackSpeedArray"; - public static final String PREF_PAUSE_PLAYBACK_FOR_FOCUS_LOSS = "prefPauseForFocusLoss"; - private static final String PREF_RESUME_AFTER_CALL = "prefResumeAfterCall"; - private static final String PREF_TIME_RESPECTS_SPEED = "prefPlaybackTimeRespectsSpeed"; - public static final String PREF_STREAM_OVER_DOWNLOAD = "prefStreamOverDownload"; - - // Network - private static final String PREF_ENQUEUE_DOWNLOADED = "prefEnqueueDownloaded"; - public static final String PREF_ENQUEUE_LOCATION = "prefEnqueueLocation"; - public static final String PREF_UPDATE_INTERVAL = "prefAutoUpdateIntervall"; - private static final String PREF_MOBILE_UPDATE = "prefMobileUpdateTypes"; - public static final String PREF_EPISODE_CLEANUP = "prefEpisodeCleanup"; - public static final String PREF_PARALLEL_DOWNLOADS = "prefParallelDownloads"; - public static final String PREF_EPISODE_CACHE_SIZE = "prefEpisodeCacheSize"; - public static final String PREF_ENABLE_AUTODL = "prefEnableAutoDl"; - public static final String PREF_ENABLE_AUTODL_ON_BATTERY = "prefEnableAutoDownloadOnBattery"; - public static final String PREF_ENABLE_AUTODL_WIFI_FILTER = "prefEnableAutoDownloadWifiFilter"; - private static final String PREF_AUTODL_SELECTED_NETWORKS = "prefAutodownloadSelectedNetworks"; - private static final String PREF_PROXY_TYPE = "prefProxyType"; - private static final String PREF_PROXY_HOST = "prefProxyHost"; - private static final String PREF_PROXY_PORT = "prefProxyPort"; - private static final String PREF_PROXY_USER = "prefProxyUser"; - private static final String PREF_PROXY_PASSWORD = "prefProxyPassword"; - - // Services - private static final String PREF_GPODNET_NOTIFICATIONS = "pref_gpodnet_notifications"; - - // Other - private static final String PREF_DATA_FOLDER = "prefDataFolder"; - public static final String PREF_DELETE_REMOVES_FROM_QUEUE = "prefDeleteRemovesFromQueue"; - public static final String PREF_USAGE_COUNTING_DATE = "prefUsageCounting"; - - // Mediaplayer - public static final String PREF_MEDIA_PLAYER = "prefMediaPlayer"; - public static final String PREF_MEDIA_PLAYER_EXOPLAYER = "exoplayer"; - private static final String PREF_PLAYBACK_SPEED = "prefPlaybackSpeed"; - private static final String PREF_VIDEO_PLAYBACK_SPEED = "prefVideoPlaybackSpeed"; - public static final String PREF_PLAYBACK_SKIP_SILENCE = "prefSkipSilence"; - private static final String PREF_FAST_FORWARD_SECS = "prefFastForwardSecs"; - private static final String PREF_REWIND_SECS = "prefRewindSecs"; - private static final String PREF_QUEUE_LOCKED = "prefQueueLocked"; - - // Experimental - private static final String PREF_STEREO_TO_MONO = "PrefStereoToMono"; - public static final int EPISODE_CLEANUP_QUEUE = -1; - public static final int EPISODE_CLEANUP_NULL = -2; - public static final int EPISODE_CLEANUP_EXCEPT_FAVORITE = -3; - public static final int EPISODE_CLEANUP_DEFAULT = 0; - - // Constants - private static final int NOTIFICATION_BUTTON_REWIND = 0; - private static final int NOTIFICATION_BUTTON_FAST_FORWARD = 1; - private static final int NOTIFICATION_BUTTON_SKIP = 2; - private static final int EPISODE_CACHE_SIZE_UNLIMITED = -1; - public static final int FEED_ORDER_COUNTER = 0; - public static final int FEED_ORDER_ALPHABETICAL = 1; - public static final int FEED_ORDER_MOST_PLAYED = 3; - public static final String DEFAULT_PAGE_REMEMBER = "remember"; - - private static Context context; - private static SharedPreferences prefs; - - /** - * Sets up the UserPreferences class. - * - * @throws IllegalArgumentException if context is null - */ - public static void init(@NonNull Context context) { - Log.d(TAG, "Creating new instance of UserPreferences"); - - UserPreferences.context = context.getApplicationContext(); - UserPreferences.prefs = PreferenceManager.getDefaultSharedPreferences(context); - - createNoMediaFile(); - } - - /** - * Returns theme as R.style value - * - * @return R.style.Theme_AntennaPod_Light or R.style.Theme_AntennaPod_Dark - */ - public static int getTheme() { - return readThemeValue(prefs.getString(PREF_THEME, "system")); - } - - public static int getNoTitleTheme() { - int theme = getTheme(); - if (theme == R.style.Theme_AntennaPod_Dark) { - return R.style.Theme_AntennaPod_Dark_NoTitle; - } else if (theme == R.style.Theme_AntennaPod_TrueBlack) { - return R.style.Theme_AntennaPod_TrueBlack_NoTitle; - } else { - return R.style.Theme_AntennaPod_Light_NoTitle; - } - } - - public static int getTranslucentTheme() { - int theme = getTheme(); - if (theme == R.style.Theme_AntennaPod_Dark) { - return R.style.Theme_AntennaPod_Dark_Translucent; - } else if (theme == R.style.Theme_AntennaPod_TrueBlack) { - return R.style.Theme_AntennaPod_TrueBlack_Translucent; - } else { - return R.style.Theme_AntennaPod_Light_Translucent; - } - } - - public static List getHiddenDrawerItems() { - String hiddenItems = prefs.getString(PREF_HIDDEN_DRAWER_ITEMS, ""); - return new ArrayList<>(Arrays.asList(TextUtils.split(hiddenItems, ","))); - } - - public static List getCompactNotificationButtons() { - String[] buttons = TextUtils.split( - prefs.getString(PREF_COMPACT_NOTIFICATION_BUTTONS, - NOTIFICATION_BUTTON_REWIND + "," + NOTIFICATION_BUTTON_FAST_FORWARD), - ","); - List notificationButtons = new ArrayList<>(); - for (String button : buttons) { - notificationButtons.add(Integer.parseInt(button)); - } - return notificationButtons; - } - - /** - * Helper function to return whether the specified button should be shown on compact - * notifications. - * - * @param buttonId Either NOTIFICATION_BUTTON_REWIND, NOTIFICATION_BUTTON_FAST_FORWARD or - * NOTIFICATION_BUTTON_SKIP. - * @return {@code true} if button should be shown, {@code false} otherwise - */ - private static boolean showButtonOnCompactNotification(int buttonId) { - return getCompactNotificationButtons().contains(buttonId); - } - - public static boolean showRewindOnCompactNotification() { - return showButtonOnCompactNotification(NOTIFICATION_BUTTON_REWIND); - } - - public static boolean showFastForwardOnCompactNotification() { - return showButtonOnCompactNotification(NOTIFICATION_BUTTON_FAST_FORWARD); - } - - public static boolean showSkipOnCompactNotification() { - return showButtonOnCompactNotification(NOTIFICATION_BUTTON_SKIP); - } - - public static int getFeedOrder() { - String value = prefs.getString(PREF_DRAWER_FEED_ORDER, "" + FEED_ORDER_COUNTER); - return Integer.parseInt(value); - } - - public static void setFeedOrder(String selected) { - prefs.edit() - .putString(PREF_DRAWER_FEED_ORDER, selected) - .apply(); - } - - public static FeedCounter getFeedCounterSetting() { - String value = prefs.getString(PREF_DRAWER_FEED_COUNTER, "" + FeedCounter.SHOW_NEW.id); - return FeedCounter.fromOrdinal(Integer.parseInt(value)); - } - - /** - * @return {@code true} if episodes should use their own cover, {@code false} otherwise - */ - public static boolean getUseEpisodeCoverSetting() { - return prefs.getBoolean(PREF_USE_EPISODE_COVER, true); - } - - /** - * @return {@code true} if we should show remaining time or the duration - */ - public static boolean shouldShowRemainingTime() { - return prefs.getBoolean(PREF_SHOW_TIME_LEFT, false); - } - - /** - * Sets the preference for whether we show the remain time, if not show the duration. This will - * send out events so the current playing screen, queue and the episode list would refresh - * - * @return {@code true} if we should show remaining time or the duration - */ - public static void setShowRemainTimeSetting(Boolean showRemain) { - prefs.edit().putBoolean(PREF_SHOW_TIME_LEFT, showRemain).apply(); - } - - /** - * Returns notification priority. - * - * @return NotificationCompat.PRIORITY_MAX or NotificationCompat.PRIORITY_DEFAULT - */ - public static int getNotifyPriority() { - if (prefs.getBoolean(PREF_EXPANDED_NOTIFICATION, false)) { - return NotificationCompat.PRIORITY_MAX; - } else { - return NotificationCompat.PRIORITY_DEFAULT; - } - } - - /** - * Returns true if notifications are persistent - * - * @return {@code true} if notifications are persistent, {@code false} otherwise - */ - public static boolean isPersistNotify() { - return prefs.getBoolean(PREF_PERSISTENT_NOTIFICATION, true); - } - - /** - * Returns true if the lockscreen background should be set to the current episode's image - * - * @return {@code true} if the lockscreen background should be set, {@code false} otherwise - */ - public static boolean setLockscreenBackground() { - return prefs.getBoolean(PREF_LOCKSCREEN_BACKGROUND, true); - } - - /** - * Returns true if download reports are shown - * - * @return {@code true} if download reports are shown, {@code false} otherwise - */ - public static boolean showDownloadReport() { - if (Build.VERSION.SDK_INT >= 26) { - return true; // System handles notification preferences - } - return prefs.getBoolean(PREF_SHOW_DOWNLOAD_REPORT, true); - } - - /** - * Used for migration of the preference to system notification channels. - */ - public static boolean getShowDownloadReportRaw() { - return prefs.getBoolean(PREF_SHOW_DOWNLOAD_REPORT, true); - } - - public static boolean showAutoDownloadReport() { - if (Build.VERSION.SDK_INT >= 26) { - return true; // System handles notification preferences - } - return prefs.getBoolean(PREF_SHOW_AUTO_DOWNLOAD_REPORT, false); - } - - /** - * Used for migration of the preference to system notification channels. - */ - public static boolean getShowAutoDownloadReportRaw() { - return prefs.getBoolean(PREF_SHOW_AUTO_DOWNLOAD_REPORT, false); - } - - public static boolean enqueueDownloadedEpisodes() { - return prefs.getBoolean(PREF_ENQUEUE_DOWNLOADED, true); - } - - @VisibleForTesting - public static void setEnqueueDownloadedEpisodes(boolean enqueueDownloadedEpisodes) { - prefs.edit() - .putBoolean(PREF_ENQUEUE_DOWNLOADED, enqueueDownloadedEpisodes) - .apply(); - } - - public enum EnqueueLocation { - BACK, FRONT, AFTER_CURRENTLY_PLAYING - } - - @NonNull - public static EnqueueLocation getEnqueueLocation() { - String valStr = prefs.getString(PREF_ENQUEUE_LOCATION, EnqueueLocation.BACK.name()); - try { - return EnqueueLocation.valueOf(valStr); - } catch (Throwable t) { - // should never happen but just in case - Log.e(TAG, "getEnqueueLocation: invalid value '" + valStr + "' Use default.", t); - return EnqueueLocation.BACK; - } - } - - public static void setEnqueueLocation(@NonNull EnqueueLocation location) { - prefs.edit() - .putString(PREF_ENQUEUE_LOCATION, location.name()) - .apply(); - } - - public static boolean isPauseOnHeadsetDisconnect() { - return prefs.getBoolean(PREF_PAUSE_ON_HEADSET_DISCONNECT, true); - } - - public static boolean isUnpauseOnHeadsetReconnect() { - return prefs.getBoolean(PREF_UNPAUSE_ON_HEADSET_RECONNECT, true); - } - - public static boolean isUnpauseOnBluetoothReconnect() { - return prefs.getBoolean(PREF_UNPAUSE_ON_BLUETOOTH_RECONNECT, false); - } - - public static int getHardwareForwardButton() { - return Integer.parseInt(prefs.getString(PREF_HARDWARE_FORWARD_BUTTON, - String.valueOf(KeyEvent.KEYCODE_MEDIA_FAST_FORWARD))); - } - - public static int getHardwarePreviousButton() { - return Integer.parseInt(prefs.getString(PREF_HARDWARE_PREVIOUS_BUTTON, - String.valueOf(KeyEvent.KEYCODE_MEDIA_REWIND))); - } - - - public static boolean isFollowQueue() { - return prefs.getBoolean(PREF_FOLLOW_QUEUE, true); - } - - /** - * Set to true to enable Continuous Playback - */ - @VisibleForTesting - public static void setFollowQueue(boolean value) { - prefs.edit().putBoolean(UserPreferences.PREF_FOLLOW_QUEUE, value).apply(); - } - - public static boolean shouldSkipKeepEpisode() { return prefs.getBoolean(PREF_SKIP_KEEPS_EPISODE, true); } - - public static boolean shouldFavoriteKeepEpisode() { - return prefs.getBoolean(PREF_FAVORITE_KEEPS_EPISODE, true); - } - - public static boolean isAutoDelete() { - return prefs.getBoolean(PREF_AUTO_DELETE, false); - } - - public static int getSmartMarkAsPlayedSecs() { - return Integer.parseInt(prefs.getString(PREF_SMART_MARK_AS_PLAYED_SECS, "30")); - } - - public static boolean shouldDeleteRemoveFromQueue() { - return prefs.getBoolean(PREF_DELETE_REMOVES_FROM_QUEUE, false); - } - - public static float getPlaybackSpeed(MediaType mediaType) { - if (mediaType == MediaType.VIDEO) { - return getVideoPlaybackSpeed(); - } else { - return getAudioPlaybackSpeed(); - } - } - - private static float getAudioPlaybackSpeed() { - try { - return Float.parseFloat(prefs.getString(PREF_PLAYBACK_SPEED, "1.00")); - } catch (NumberFormatException e) { - Log.e(TAG, Log.getStackTraceString(e)); - UserPreferences.setPlaybackSpeed(1.0f); - return 1.0f; - } - } - - private static float getVideoPlaybackSpeed() { - try { - return Float.parseFloat(prefs.getString(PREF_VIDEO_PLAYBACK_SPEED, "1.00")); - } catch (NumberFormatException e) { - Log.e(TAG, Log.getStackTraceString(e)); - UserPreferences.setVideoPlaybackSpeed(1.0f); - return 1.0f; - } - } - - public static boolean isSkipSilence() { - return prefs.getBoolean(PREF_PLAYBACK_SKIP_SILENCE, false); - } - - public static List getPlaybackSpeedArray() { - return readPlaybackSpeedArray(prefs.getString(PREF_PLAYBACK_SPEED_ARRAY, null)); - } - - public static boolean shouldPauseForFocusLoss() { - return prefs.getBoolean(PREF_PAUSE_PLAYBACK_FOR_FOCUS_LOSS, true); - } - - - /* - * Returns update interval in milliseconds; value 0 means that auto update is disabled - * or feeds are updated at a certain time of day - */ - public static long getUpdateInterval() { - String updateInterval = prefs.getString(PREF_UPDATE_INTERVAL, "0"); - if(!updateInterval.contains(":")) { - return readUpdateInterval(updateInterval); - } else { - return 0; - } - } - - public static int[] getUpdateTimeOfDay() { - String datetime = prefs.getString(PREF_UPDATE_INTERVAL, ""); - if(datetime.length() >= 3 && datetime.contains(":")) { - String[] parts = datetime.split(":"); - int hourOfDay = Integer.parseInt(parts[0]); - int minute = Integer.parseInt(parts[1]); - return new int[] { hourOfDay, minute }; - } else { - return new int[0]; - } - } - - public static boolean isAutoUpdateDisabled() { - return prefs.getString(PREF_UPDATE_INTERVAL, "").equals("0"); - } - - private static boolean isAllowMobileFor(String type) { - HashSet defaultValue = new HashSet<>(); - defaultValue.add("images"); - Set allowed = prefs.getStringSet(PREF_MOBILE_UPDATE, defaultValue); - return allowed.contains(type); - } - - public static boolean isAllowMobileFeedRefresh() { - return isAllowMobileFor("feed_refresh"); - } - - public static boolean isAllowMobileEpisodeDownload() { - return isAllowMobileFor("episode_download"); - } - - public static boolean isAllowMobileAutoDownload() { - return isAllowMobileFor("auto_download"); - } - - public static boolean isAllowMobileStreaming() { - return isAllowMobileFor("streaming"); - } - - public static boolean isAllowMobileImages() { - return isAllowMobileFor("images"); - } - - private static void setAllowMobileFor(String type, boolean allow) { - HashSet defaultValue = new HashSet<>(); - defaultValue.add("images"); - final Set getValueStringSet = prefs.getStringSet(PREF_MOBILE_UPDATE, defaultValue); - final Set allowed = new HashSet<>(getValueStringSet); - if (allow) { - allowed.add(type); - } else { - allowed.remove(type); - } - prefs.edit().putStringSet(PREF_MOBILE_UPDATE, allowed).apply(); - } - - public static void setAllowMobileFeedRefresh(boolean allow) { - setAllowMobileFor("feed_refresh", allow); - } - - public static void setAllowMobileEpisodeDownload(boolean allow) { - setAllowMobileFor("episode_download", allow); - } - - public static void setAllowMobileAutoDownload(boolean allow) { - setAllowMobileFor("auto_download", allow); - } - - public static void setAllowMobileStreaming(boolean allow) { - setAllowMobileFor("streaming", allow); - } - - public static void setAllowMobileImages(boolean allow) { - setAllowMobileFor("images", allow); - } - - public static int getParallelDownloads() { - return Integer.parseInt(prefs.getString(PREF_PARALLEL_DOWNLOADS, "4")); - } - - public static int getEpisodeCacheSizeUnlimited() { - return context.getResources().getInteger(R.integer.episode_cache_size_unlimited); - } - - /** - * Returns the capacity of the episode cache. This method will return the - * negative integer EPISODE_CACHE_SIZE_UNLIMITED if the cache size is set to - * 'unlimited'. - */ - public static int getEpisodeCacheSize() { - return readEpisodeCacheSizeInternal(prefs.getString(PREF_EPISODE_CACHE_SIZE, "20")); - } - - public static boolean isEnableAutodownload() { - return prefs.getBoolean(PREF_ENABLE_AUTODL, false); - } - - @VisibleForTesting - public static void setEnableAutodownload(boolean enabled) { - prefs.edit().putBoolean(PREF_ENABLE_AUTODL, enabled).apply(); - } - - public static boolean isEnableAutodownloadOnBattery() { - return prefs.getBoolean(PREF_ENABLE_AUTODL_ON_BATTERY, true); - } - - public static boolean isEnableAutodownloadWifiFilter() { - return Build.VERSION.SDK_INT < 29 && prefs.getBoolean(PREF_ENABLE_AUTODL_WIFI_FILTER, false); - } - - public static int getFastForwardSecs() { - return prefs.getInt(PREF_FAST_FORWARD_SECS, 30); - } - - public static int getRewindSecs() { - return prefs.getInt(PREF_REWIND_SECS, 10); - } - - public static String[] getAutodownloadSelectedNetworks() { - String selectedNetWorks = prefs.getString(PREF_AUTODL_SELECTED_NETWORKS, ""); - return TextUtils.split(selectedNetWorks, ","); - } - - public static void setProxyConfig(ProxyConfig config) { - SharedPreferences.Editor editor = prefs.edit(); - editor.putString(PREF_PROXY_TYPE, config.type.name()); - if (TextUtils.isEmpty(config.host)) { - editor.remove(PREF_PROXY_HOST); - } else { - editor.putString(PREF_PROXY_HOST, config.host); - } - if (config.port <= 0 || config.port > 65535) { - editor.remove(PREF_PROXY_PORT); - } else { - editor.putInt(PREF_PROXY_PORT, config.port); - } - if (TextUtils.isEmpty(config.username)) { - editor.remove(PREF_PROXY_USER); - } else { - editor.putString(PREF_PROXY_USER, config.username); - } - if (TextUtils.isEmpty(config.password)) { - editor.remove(PREF_PROXY_PASSWORD); - } else { - editor.putString(PREF_PROXY_PASSWORD, config.password); - } - editor.apply(); - } - - public static ProxyConfig getProxyConfig() { - Proxy.Type type = Proxy.Type.valueOf(prefs.getString(PREF_PROXY_TYPE, Proxy.Type.DIRECT.name())); - String host = prefs.getString(PREF_PROXY_HOST, null); - int port = prefs.getInt(PREF_PROXY_PORT, 0); - String username = prefs.getString(PREF_PROXY_USER, null); - String password = prefs.getString(PREF_PROXY_PASSWORD, null); - return new ProxyConfig(type, host, port, username, password); - } - - public static boolean shouldResumeAfterCall() { - return prefs.getBoolean(PREF_RESUME_AFTER_CALL, true); - } - - public static boolean isQueueLocked() { - return prefs.getBoolean(PREF_QUEUE_LOCKED, false); - } - - public static void setFastForwardSecs(int secs) { - prefs.edit() - .putInt(PREF_FAST_FORWARD_SECS, secs) - .apply(); - } - - public static void setRewindSecs(int secs) { - prefs.edit() - .putInt(PREF_REWIND_SECS, secs) - .apply(); - } - - public static void setPlaybackSpeed(float speed) { - prefs.edit() - .putString(PREF_PLAYBACK_SPEED, String.valueOf(speed)) - .apply(); - } - - public static void setVideoPlaybackSpeed(float speed) { - prefs.edit() - .putString(PREF_VIDEO_PLAYBACK_SPEED, String.valueOf(speed)) - .apply(); - } - - public static void setSkipSilence(boolean skipSilence) { - prefs.edit() - .putBoolean(PREF_PLAYBACK_SKIP_SILENCE, skipSilence) - .apply(); - } - - public static void setPlaybackSpeedArray(List speeds) { - DecimalFormatSymbols format = new DecimalFormatSymbols(Locale.US); - format.setDecimalSeparator('.'); - DecimalFormat speedFormat = new DecimalFormat("0.00", format); - JSONArray jsonArray = new JSONArray(); - for (float speed : speeds) { - jsonArray.put(speedFormat.format(speed)); - } - prefs.edit() - .putString(PREF_PLAYBACK_SPEED_ARRAY, jsonArray.toString()) - .apply(); - } - - public static void setAutodownloadSelectedNetworks(String[] value) { - prefs.edit() - .putString(PREF_AUTODL_SELECTED_NETWORKS, TextUtils.join(",", value)) - .apply(); - } - - public static void setUpdateInterval(long hours) { - prefs.edit() - .putString(PREF_UPDATE_INTERVAL, String.valueOf(hours)) - .apply(); - } - - public static void setUpdateTimeOfDay(int hourOfDay, int minute) { - prefs.edit() - .putString(PREF_UPDATE_INTERVAL, hourOfDay + ":" + minute) - .apply(); - } - - public static void disableAutoUpdate() { - prefs.edit() - .putString(PREF_UPDATE_INTERVAL, "0") - .apply(); - } - - public static boolean gpodnetNotificationsEnabled() { - if (Build.VERSION.SDK_INT >= 26) { - return true; // System handles notification preferences - } - return prefs.getBoolean(PREF_GPODNET_NOTIFICATIONS, true); - } - - /** - * Used for migration of the preference to system notification channels. - */ - public static boolean getGpodnetNotificationsEnabledRaw() { - return prefs.getBoolean(PREF_GPODNET_NOTIFICATIONS, true); - } - - public static void setGpodnetNotificationsEnabled() { - prefs.edit() - .putBoolean(PREF_GPODNET_NOTIFICATIONS, true) - .apply(); - } - - public static void setHiddenDrawerItems(List items) { - String str = TextUtils.join(",", items); - prefs.edit() - .putString(PREF_HIDDEN_DRAWER_ITEMS, str) - .apply(); - } - - public static void setCompactNotificationButtons(List items) { - String str = TextUtils.join(",", items); - prefs.edit() - .putString(PREF_COMPACT_NOTIFICATION_BUTTONS, str) - .apply(); - } - - public static void setQueueLocked(boolean locked) { - prefs.edit() - .putBoolean(PREF_QUEUE_LOCKED, locked) - .apply(); - } - - private static int readThemeValue(String valueFromPrefs) { - switch (valueFromPrefs) { - case "0": - return R.style.Theme_AntennaPod_Light; - case "1": - return R.style.Theme_AntennaPod_Dark; - case "2": - return R.style.Theme_AntennaPod_TrueBlack; - default: - int nightMode = context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK; - if (nightMode == Configuration.UI_MODE_NIGHT_YES) { - return R.style.Theme_AntennaPod_Dark; - } - return R.style.Theme_AntennaPod_Light; - } - } - - private static long readUpdateInterval(String valueFromPrefs) { - int hours = Integer.parseInt(valueFromPrefs); - return TimeUnit.HOURS.toMillis(hours); - } - - private static int readEpisodeCacheSizeInternal(String valueFromPrefs) { - if (valueFromPrefs.equals(context.getString(R.string.pref_episode_cache_unlimited))) { - return EPISODE_CACHE_SIZE_UNLIMITED; - } else { - return Integer.parseInt(valueFromPrefs); - } - } - - private static List readPlaybackSpeedArray(String valueFromPrefs) { - if (valueFromPrefs != null) { - try { - JSONArray jsonArray = new JSONArray(valueFromPrefs); - List selectedSpeeds = new ArrayList<>(); - for (int i = 0; i < jsonArray.length(); i++) { - selectedSpeeds.add((float) jsonArray.getDouble(i)); - } - return selectedSpeeds; - } catch (JSONException e) { - Log.e(TAG, "Got JSON error when trying to get speeds from JSONArray"); - e.printStackTrace(); - } - } - // If this preference hasn't been set yet, return the default options - return Arrays.asList(1.0f, 1.25f, 1.5f); - } - - public static String getMediaPlayer() { - return prefs.getString(PREF_MEDIA_PLAYER, PREF_MEDIA_PLAYER_EXOPLAYER); - } - - public static boolean useSonic() { - return getMediaPlayer().equals("sonic"); - } - - public static boolean useExoplayer() { - return getMediaPlayer().equals(PREF_MEDIA_PLAYER_EXOPLAYER); - } - - public static void enableExoplayer() { - prefs.edit().putString(PREF_MEDIA_PLAYER, PREF_MEDIA_PLAYER_EXOPLAYER).apply(); - } - - public static boolean stereoToMono() { - return prefs.getBoolean(PREF_STEREO_TO_MONO, false); - } - - public static void stereoToMono(boolean enable) { - prefs.edit() - .putBoolean(PREF_STEREO_TO_MONO, enable) - .apply(); - } - - public static int getEpisodeCleanupValue() { - return Integer.parseInt(prefs.getString(PREF_EPISODE_CLEANUP, "" + EPISODE_CLEANUP_NULL)); - } - - public static void setEpisodeCleanupValue(int episodeCleanupValue) { - prefs.edit() - .putString(PREF_EPISODE_CLEANUP, Integer.toString(episodeCleanupValue)) - .apply(); - } - - /** - * Return the folder where the app stores all of its data. This method will - * return the standard data folder if none has been set by the user. - * - * @param type The name of the folder inside the data folder. May be null - * when accessing the root of the data folder. - * @return The data folder that has been requested or null if the folder could not be created. - */ - public static File getDataFolder(@Nullable String type) { - File dataFolder = getTypeDir(prefs.getString(PREF_DATA_FOLDER, null), type); - if (dataFolder == null || !dataFolder.canWrite()) { - Log.d(TAG, "User data folder not writable or not set. Trying default."); - dataFolder = context.getExternalFilesDir(type); - } - if (dataFolder == null || !dataFolder.canWrite()) { - Log.d(TAG, "Default data folder not available or not writable. Falling back to internal memory."); - dataFolder = getTypeDir(context.getFilesDir().getAbsolutePath(), type); - } - return dataFolder; - } - - @Nullable - private static File getTypeDir(@Nullable String baseDirPath, @Nullable String type) { - if (baseDirPath == null) { - return null; - } - File baseDir = new File(baseDirPath); - File typeDir = type == null ? baseDir : new File(baseDir, type); - if (!typeDir.exists()) { - if (!baseDir.canWrite()) { - Log.e(TAG, "Base dir is not writable " + baseDir.getAbsolutePath()); - return null; - } - if (!typeDir.mkdirs()) { - Log.e(TAG, "Could not create type dir " + typeDir.getAbsolutePath()); - return null; - } - } - return typeDir; - } - - public static void setDataFolder(String dir) { - Log.d(TAG, "setDataFolder(dir: " + dir + ")"); - prefs.edit() - .putString(PREF_DATA_FOLDER, dir) - .apply(); - } - - /** - * Create a .nomedia file to prevent scanning by the media scanner. - */ - private static void createNoMediaFile() { - File f = new File(context.getExternalFilesDir(null), ".nomedia"); - if (!f.exists()) { - try { - f.createNewFile(); - } catch (IOException e) { - Log.e(TAG, "Could not create .nomedia file"); - e.printStackTrace(); - } - Log.d(TAG, ".nomedia file created"); - } - } - - /** - * - * @return true if auto update is set to a specific time - * false if auto update is set to interval - */ - public static boolean isAutoUpdateTimeOfDay() { - return getUpdateTimeOfDay().length == 2; - } - - public static String getDefaultPage() { - return prefs.getString(PREF_DEFAULT_PAGE, "HomeFragment"); - } - - public static void setDefaultPage(String defaultPage) { - prefs.edit().putString(PREF_DEFAULT_PAGE, defaultPage).apply(); - } - - public static boolean timeRespectsSpeed() { - return prefs.getBoolean(PREF_TIME_RESPECTS_SPEED, false); - } - - public static boolean isStreamOverDownload() { - return prefs.getBoolean(PREF_STREAM_OVER_DOWNLOAD, false); - } - - public static void setStreamOverDownload(boolean stream) { - prefs.edit().putBoolean(PREF_STREAM_OVER_DOWNLOAD, stream).apply(); - } - - /** - * Returns if the queue is in keep sorted mode. - * - * @see #getQueueKeepSortedOrder() - */ - public static boolean isQueueKeepSorted() { - return prefs.getBoolean(PREF_QUEUE_KEEP_SORTED, false); - } - - /** - * Enables/disables the keep sorted mode of the queue. - * - * @see #setQueueKeepSortedOrder(SortOrder) - */ - public static void setQueueKeepSorted(boolean keepSorted) { - prefs.edit() - .putBoolean(PREF_QUEUE_KEEP_SORTED, keepSorted) - .apply(); - } - - /** - * Returns the sort order for the queue keep sorted mode. - * Note: This value is stored independently from the keep sorted state. - * - * @see #isQueueKeepSorted() - */ - public static SortOrder getQueueKeepSortedOrder() { - String sortOrderStr = prefs.getString(PREF_QUEUE_KEEP_SORTED_ORDER, "use-default"); - return SortOrder.parseWithDefault(sortOrderStr, SortOrder.DATE_NEW_OLD); - } - - /** - * Sets the sort order for the queue keep sorted mode. - * - * @see #setQueueKeepSorted(boolean) - */ - public static void setQueueKeepSortedOrder(SortOrder sortOrder) { - if (sortOrder == null) { - return; - } - prefs.edit() - .putString(PREF_QUEUE_KEEP_SORTED_ORDER, sortOrder.name()) - .apply(); - } - - public static SubscriptionsFilter getSubscriptionsFilter() { - String value = prefs.getString(PREF_FILTER_FEED, ""); - return new SubscriptionsFilter(value); - } - - public static void setSubscriptionsFilter(SubscriptionsFilter value) { - prefs.edit() - .putString(PREF_FILTER_FEED, value.serialize()) - .apply(); - } - - public static boolean shouldShowSubscriptionTitle() { - return prefs.getBoolean(PREF_SUBSCRIPTION_TITLE, false); - } -} diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateWorker.java b/core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateWorker.java index ce3fe0e3f..49c5211b0 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateWorker.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateWorker.java @@ -8,7 +8,7 @@ import androidx.work.Worker; import androidx.work.WorkerParameters; import de.danoeh.antennapod.core.ClientConfigurator; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; import de.danoeh.antennapod.core.storage.DBTasks; import de.danoeh.antennapod.core.util.NetworkUtils; import de.danoeh.antennapod.core.util.download.AutoUpdateManager; diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequestCreator.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequestCreator.java index 55546a7db..6fcb471bd 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequestCreator.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequestCreator.java @@ -2,7 +2,7 @@ package de.danoeh.antennapod.core.service.download; import android.util.Log; import android.webkit.URLUtil; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; import de.danoeh.antennapod.core.util.FileNameGenerator; import de.danoeh.antennapod.model.feed.Feed; import de.danoeh.antennapod.model.feed.FeedMedia; diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java index 751cf0b9b..7f718140a 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java @@ -45,7 +45,7 @@ import de.danoeh.antennapod.event.FeedItemEvent; import de.danoeh.antennapod.model.feed.Feed; import de.danoeh.antennapod.model.feed.FeedItem; import de.danoeh.antennapod.model.feed.FeedMedia; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; import de.danoeh.antennapod.core.service.download.handler.FailedDownloadHandler; import de.danoeh.antennapod.core.service.download.handler.FeedSyncTask; import de.danoeh.antennapod.core.service.download.handler.MediaDownloadedHandler; diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java index cbd552684..9856c617e 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java @@ -36,7 +36,7 @@ import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory; import com.google.android.exoplayer2.upstream.HttpDataSource; import de.danoeh.antennapod.core.ClientConfig; import de.danoeh.antennapod.core.R; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; import de.danoeh.antennapod.core.service.download.AntennapodHttpClient; import de.danoeh.antennapod.core.service.download.HttpCredentialEncoder; import de.danoeh.antennapod.core.util.NetworkUtils; diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java index 9525401d6..a7d407fdf 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java @@ -39,7 +39,7 @@ import de.danoeh.antennapod.model.feed.FeedPreferences; import de.danoeh.antennapod.model.playback.MediaType; import de.danoeh.antennapod.model.feed.VolumeAdaptionSetting; import de.danoeh.antennapod.core.feed.util.PlaybackSpeedUtils; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; import de.danoeh.antennapod.playback.base.RewindAfterPauseUtils; import de.danoeh.antennapod.core.util.playback.AudioPlayer; import de.danoeh.antennapod.core.util.playback.IPlayer; diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java index a6d90dc7d..4c201ac63 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java @@ -73,7 +73,7 @@ import de.danoeh.antennapod.event.settings.SpeedPresetChangedEvent; import de.danoeh.antennapod.event.settings.VolumeAdaptionChangedEvent; import de.danoeh.antennapod.core.preferences.PlaybackPreferences; import de.danoeh.antennapod.core.preferences.SleepTimerPreferences; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; import de.danoeh.antennapod.core.receiver.MediaButtonReceiver; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBWriter; diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceNotificationBuilder.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceNotificationBuilder.java index 3d5b4224c..38597187c 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceNotificationBuilder.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceNotificationBuilder.java @@ -20,7 +20,7 @@ import androidx.core.content.ContextCompat; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; import de.danoeh.antennapod.core.R; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; import de.danoeh.antennapod.core.receiver.MediaButtonReceiver; import de.danoeh.antennapod.core.util.Converter; import de.danoeh.antennapod.core.feed.util.ImageResourceUtils; diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/AutomaticDownloadAlgorithm.java b/core/src/main/java/de/danoeh/antennapod/core/storage/AutomaticDownloadAlgorithm.java index 4ad2aa665..5fbbbbc19 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/AutomaticDownloadAlgorithm.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/AutomaticDownloadAlgorithm.java @@ -13,7 +13,7 @@ import de.danoeh.antennapod.net.download.serviceinterface.DownloadServiceInterfa import de.danoeh.antennapod.core.util.PlaybackStatus; import de.danoeh.antennapod.model.feed.FeedItem; import de.danoeh.antennapod.model.feed.FeedPreferences; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; import de.danoeh.antennapod.core.util.NetworkUtils; import de.danoeh.antennapod.core.util.PowerUtils; @@ -80,7 +80,7 @@ public class AutomaticDownloadAlgorithm { int deletedEpisodes = EpisodeCleanupAlgorithmFactory.build() .makeRoomForEpisodes(context, autoDownloadableEpisodes); boolean cacheIsUnlimited = - UserPreferences.getEpisodeCacheSize() == UserPreferences.getEpisodeCacheSizeUnlimited(); + UserPreferences.getEpisodeCacheSize() == UserPreferences.EPISODE_CACHE_SIZE_UNLIMITED; int episodeCacheSize = UserPreferences.getEpisodeCacheSize(); int episodeSpaceLeft; diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java index 899852131..55acb8b92 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java @@ -21,7 +21,7 @@ import de.danoeh.antennapod.model.feed.FeedItemFilter; import de.danoeh.antennapod.model.feed.FeedMedia; import de.danoeh.antennapod.model.feed.FeedPreferences; import de.danoeh.antennapod.model.feed.SubscriptionsFilter; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; import de.danoeh.antennapod.model.download.DownloadStatus; import de.danoeh.antennapod.storage.database.PodDBAdapter; import de.danoeh.antennapod.storage.database.mapper.DownloadStatusCursorMapper; diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java index 9a9525324..423c83c79 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java @@ -33,7 +33,7 @@ import de.danoeh.antennapod.core.R; import de.danoeh.antennapod.event.FeedItemEvent; import de.danoeh.antennapod.event.FeedListUpdateEvent; import de.danoeh.antennapod.event.MessageEvent; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; import de.danoeh.antennapod.model.download.DownloadStatus; import de.danoeh.antennapod.core.sync.queue.SynchronizationQueueSink; import de.danoeh.antennapod.model.download.DownloadError; diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java index 48d88f803..c7a1d1515 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java @@ -35,7 +35,7 @@ import de.danoeh.antennapod.event.QueueEvent; import de.danoeh.antennapod.event.UnreadItemsUpdateEvent; import de.danoeh.antennapod.core.feed.FeedEvent; import de.danoeh.antennapod.core.preferences.PlaybackPreferences; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; import de.danoeh.antennapod.model.download.DownloadStatus; import de.danoeh.antennapod.core.sync.queue.SynchronizationQueueSink; import de.danoeh.antennapod.core.util.FeedItemPermutors; diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/EpisodeCleanupAlgorithm.java b/core/src/main/java/de/danoeh/antennapod/core/storage/EpisodeCleanupAlgorithm.java index aae5b352e..84a0dd575 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/EpisodeCleanupAlgorithm.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/EpisodeCleanupAlgorithm.java @@ -2,7 +2,7 @@ package de.danoeh.antennapod.core.storage; import android.content.Context; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; public abstract class EpisodeCleanupAlgorithm { @@ -50,8 +50,7 @@ public abstract class EpisodeCleanupAlgorithm { */ int getNumEpisodesToCleanup(final int amountOfRoomNeeded) { if (amountOfRoomNeeded >= 0 - && UserPreferences.getEpisodeCacheSize() != UserPreferences - .getEpisodeCacheSizeUnlimited()) { + && UserPreferences.getEpisodeCacheSize() != UserPreferences.EPISODE_CACHE_SIZE_UNLIMITED) { int downloadedEpisodes = DBReader .getNumberOfDownloadedEpisodes(); if (downloadedEpisodes + amountOfRoomNeeded >= UserPreferences diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/EpisodeCleanupAlgorithmFactory.java b/core/src/main/java/de/danoeh/antennapod/core/storage/EpisodeCleanupAlgorithmFactory.java index 123ccba3f..f4d23e04d 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/EpisodeCleanupAlgorithmFactory.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/EpisodeCleanupAlgorithmFactory.java @@ -1,6 +1,6 @@ package de.danoeh.antennapod.core.storage; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; public abstract class EpisodeCleanupAlgorithmFactory { public static EpisodeCleanupAlgorithm build() { diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/ExceptFavoriteCleanupAlgorithm.java b/core/src/main/java/de/danoeh/antennapod/core/storage/ExceptFavoriteCleanupAlgorithm.java index f04daf16e..5d092da6d 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/ExceptFavoriteCleanupAlgorithm.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/ExceptFavoriteCleanupAlgorithm.java @@ -13,7 +13,7 @@ import java.util.Locale; import java.util.concurrent.ExecutionException; import de.danoeh.antennapod.model.feed.FeedItem; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; /** * A cleanup algorithm that removes any item that isn't a favorite but only if space is needed. @@ -88,7 +88,7 @@ public class ExceptFavoriteCleanupAlgorithm extends EpisodeCleanupAlgorithm { @Override public int getDefaultCleanupParameter() { int cacheSize = UserPreferences.getEpisodeCacheSize(); - if (cacheSize != UserPreferences.getEpisodeCacheSizeUnlimited()) { + if (cacheSize != UserPreferences.EPISODE_CACHE_SIZE_UNLIMITED) { int downloadedEpisodes = DBReader.getNumberOfDownloadedEpisodes(); if (downloadedEpisodes > cacheSize) { return downloadedEpisodes - cacheSize; diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/ItemEnqueuePositionCalculator.java b/core/src/main/java/de/danoeh/antennapod/core/storage/ItemEnqueuePositionCalculator.java index 2383cf330..23d308c02 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/ItemEnqueuePositionCalculator.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/ItemEnqueuePositionCalculator.java @@ -10,7 +10,7 @@ import java.util.List; import de.danoeh.antennapod.core.service.download.DownloadService; import de.danoeh.antennapod.model.feed.FeedItem; import de.danoeh.antennapod.model.feed.FeedMedia; -import de.danoeh.antennapod.core.preferences.UserPreferences.EnqueueLocation; +import de.danoeh.antennapod.storage.preferences.UserPreferences.EnqueueLocation; import de.danoeh.antennapod.model.playback.Playable; /** diff --git a/core/src/main/java/de/danoeh/antennapod/core/sync/SyncService.java b/core/src/main/java/de/danoeh/antennapod/core/sync/SyncService.java index 952c047c7..c4a9ec581 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/sync/SyncService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/sync/SyncService.java @@ -34,7 +34,7 @@ import java.util.concurrent.TimeUnit; import de.danoeh.antennapod.core.R; import de.danoeh.antennapod.event.SyncServiceEvent; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; import de.danoeh.antennapod.core.service.download.AntennapodHttpClient; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBTasks; diff --git a/core/src/main/java/de/danoeh/antennapod/core/sync/SynchronizationCredentials.java b/core/src/main/java/de/danoeh/antennapod/core/sync/SynchronizationCredentials.java index e08bc66ad..f5571fbb6 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/sync/SynchronizationCredentials.java +++ b/core/src/main/java/de/danoeh/antennapod/core/sync/SynchronizationCredentials.java @@ -3,7 +3,7 @@ package de.danoeh.antennapod.core.sync; import android.content.Context; import android.content.SharedPreferences; import de.danoeh.antennapod.core.ClientConfig; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; import de.danoeh.antennapod.core.sync.queue.SynchronizationQueueSink; /** diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java b/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java index 93d354096..50b4d411f 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java @@ -3,7 +3,7 @@ package de.danoeh.antennapod.core.util; import androidx.annotation.NonNull; import de.danoeh.antennapod.model.feed.FeedMedia; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java index c5524d7b5..8be8a113b 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java @@ -12,7 +12,7 @@ import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; public class NetworkUtils { private static final String REGEX_PATTERN_IP_ADDRESS = "([0-9]{1,3}[\\.]){3}[0-9]{1,3}"; diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java index c15d80b6f..eed9fcf37 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java @@ -1,7 +1,7 @@ package de.danoeh.antennapod.core.util; import android.os.StatFs; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; import java.io.File; diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/TimeSpeedConverter.java b/core/src/main/java/de/danoeh/antennapod/core/util/TimeSpeedConverter.java index bbfe528be..8fced8c13 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/TimeSpeedConverter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/TimeSpeedConverter.java @@ -1,6 +1,6 @@ package de.danoeh.antennapod.core.util; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; public class TimeSpeedConverter { private final float speed; diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/download/AutoUpdateManager.java b/core/src/main/java/de/danoeh/antennapod/core/util/download/AutoUpdateManager.java index e79be8019..0602fc4fe 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/download/AutoUpdateManager.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/download/AutoUpdateManager.java @@ -19,7 +19,7 @@ import java.util.Calendar; import java.util.concurrent.TimeUnit; import de.danoeh.antennapod.core.R; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; import de.danoeh.antennapod.core.service.FeedUpdateWorker; import de.danoeh.antennapod.core.storage.DBTasks; import de.danoeh.antennapod.core.util.NetworkUtils; diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/gui/NotificationUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/gui/NotificationUtils.java index 2d5c7d01f..79732ff32 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/gui/NotificationUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/gui/NotificationUtils.java @@ -10,7 +10,7 @@ import java.util.Arrays; import java.util.List; import de.danoeh.antennapod.core.R; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; public class NotificationUtils { public static final String CHANNEL_ID_USER_ACTION = "user_action"; diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/AudioPlayer.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/AudioPlayer.java index d9f5811e2..4f6b2ce3a 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/AudioPlayer.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/AudioPlayer.java @@ -8,7 +8,7 @@ import android.view.SurfaceHolder; import de.danoeh.antennapod.core.ClientConfig; import org.antennapod.audio.MediaPlayer; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; import java.io.IOException; import java.util.Collections; diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java index a08694e66..7a0fcdc4c 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java @@ -21,7 +21,7 @@ import de.danoeh.antennapod.event.playback.SpeedChangedEvent; import de.danoeh.antennapod.model.playback.MediaType; import de.danoeh.antennapod.core.feed.util.PlaybackSpeedUtils; import de.danoeh.antennapod.core.preferences.PlaybackPreferences; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; import de.danoeh.antennapod.core.service.playback.PlaybackService; import de.danoeh.antennapod.model.playback.Playable; import de.danoeh.antennapod.playback.base.PlaybackServiceMediaPlayer; diff --git a/core/src/main/java/de/danoeh/antennapod/core/widget/WidgetUpdater.java b/core/src/main/java/de/danoeh/antennapod/core/widget/WidgetUpdater.java index b71e4ae80..dda8a37fb 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/widget/WidgetUpdater.java +++ b/core/src/main/java/de/danoeh/antennapod/core/widget/WidgetUpdater.java @@ -17,7 +17,7 @@ import com.bumptech.glide.Glide; import java.util.concurrent.TimeUnit; import de.danoeh.antennapod.core.R; -import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.storage.preferences.UserPreferences; import de.danoeh.antennapod.model.playback.MediaType; import de.danoeh.antennapod.core.receiver.MediaButtonReceiver; import de.danoeh.antennapod.core.receiver.PlayerWidget; -- cgit v1.2.3