summaryrefslogtreecommitdiff
path: root/core/src/main/java
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2022-11-06 14:32:47 +0100
committerByteHamster <info@bytehamster.com>2022-11-06 21:21:28 +0100
commitd8a2dd5f83598fdde289e01994c5d2df1c6577fc (patch)
treef19ab0c0e798855f9c4f3fe17a85bc1cb3e90750 /core/src/main/java
parent0101f1244ebe088edbe000b1966a92ca4994023a (diff)
downloadAntennaPod-d8a2dd5f83598fdde289e01994c5d2df1c6577fc.zip
Move preferences to a new module
Diffstat (limited to 'core/src/main/java')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/ClientConfigurator.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/util/ImageResourceUtils.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/util/PlaybackSpeedUtils.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/preferences/ThemeSwitcher.java62
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java983
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateWorker.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequestCreator.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceNotificationBuilder.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/AutomaticDownloadAlgorithm.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/EpisodeCleanupAlgorithm.java5
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/EpisodeCleanupAlgorithmFactory.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/ExceptFavoriteCleanupAlgorithm.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/ItemEnqueuePositionCalculator.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/sync/SyncService.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/sync/SynchronizationCredentials.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/TimeSpeedConverter.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/download/AutoUpdateManager.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/gui/NotificationUtils.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/AudioPlayer.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/widget/WidgetUpdater.java2
31 files changed, 94 insertions, 1016 deletions
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<String> getHiddenDrawerItems() {
- String hiddenItems = prefs.getString(PREF_HIDDEN_DRAWER_ITEMS, "");
- return new ArrayList<>(Arrays.asList(TextUtils.split(hiddenItems, ",")));
- }
-
- public static List<Integer> getCompactNotificationButtons() {
- String[] buttons = TextUtils.split(
- prefs.getString(PREF_COMPACT_NOTIFICATION_BUTTONS,
- NOTIFICATION_BUTTON_REWIND + "," + NOTIFICATION_BUTTON_FAST_FORWARD),
- ",");
- List<Integer> 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<Float> 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<String> defaultValue = new HashSet<>();
- defaultValue.add("images");
- Set<String> 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<String> defaultValue = new HashSet<>();
- defaultValue.add("images");
- final Set<String> getValueStringSet = prefs.getStringSet(PREF_MOBILE_UPDATE, defaultValue);
- final Set<String> 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<Float> 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<String> items) {
- String str = TextUtils.join(",", items);
- prefs.edit()
- .putString(PREF_HIDDEN_DRAWER_ITEMS, str)
- .apply();
- }
-
- public static void setCompactNotificationButtons(List<Integer> 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<Float> readPlaybackSpeedArray(String valueFromPrefs) {
- if (valueFromPrefs != null) {
- try {
- JSONArray jsonArray = new JSONArray(valueFromPrefs);
- List<Float> 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;