summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2020-02-02 17:09:25 +0100
committerByteHamster <info@bytehamster.com>2020-02-02 17:09:25 +0100
commit998a17a852323f96f0fdaa6feaa3136a694d93c6 (patch)
tree1572f36cb44859b14f461bbdfc496c07c42e0ea0
parent63290ae762518c94563b8c128aef3eccc35d6fd9 (diff)
downloadAntennaPod-998a17a852323f96f0fdaa6feaa3136a694d93c6.zip
Update speed when changing feed defaults
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/FeedSettingsFragment.java26
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/event/settings/SpeedPresetChangedEvent.java19
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java19
3 files changed, 48 insertions, 16 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FeedSettingsFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FeedSettingsFragment.java
index bd5381df6..63160bb2c 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/FeedSettingsFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/FeedSettingsFragment.java
@@ -2,22 +2,21 @@ package de.danoeh.antennapod.fragment;
import android.content.Context;
import android.content.DialogInterface;
-import android.content.Intent;
import android.os.Bundle;
-import androidx.preference.SwitchPreference;
+import android.util.Log;
import androidx.preference.ListPreference;
import androidx.preference.PreferenceFragmentCompat;
-import android.util.Log;
+import androidx.preference.SwitchPreference;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.core.dialog.ConfirmationDialog;
+import de.danoeh.antennapod.core.event.settings.SpeedPresetChangedEvent;
import de.danoeh.antennapod.core.event.settings.VolumeAdaptionChangedEvent;
import de.danoeh.antennapod.core.feed.Feed;
import de.danoeh.antennapod.core.feed.FeedFilter;
import de.danoeh.antennapod.core.feed.FeedPreferences;
import de.danoeh.antennapod.core.feed.VolumeAdaptionSetting;
import de.danoeh.antennapod.core.preferences.UserPreferences;
-import de.danoeh.antennapod.core.service.playback.PlaybackService;
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.DBWriter;
import de.danoeh.antennapod.dialog.AuthenticationDialog;
@@ -38,7 +37,8 @@ import static de.danoeh.antennapod.core.feed.FeedPreferences.SPEED_USE_GLOBAL;
public class FeedSettingsFragment extends PreferenceFragmentCompat {
private static final CharSequence PREF_EPISODE_FILTER = "episodeFilter";
private static final String PREF_FEED_PLAYBACK_SPEED = "feedPlaybackSpeed";
- private static final DecimalFormat decimalFormat = new DecimalFormat("0.00", DecimalFormatSymbols.getInstance(Locale.US));
+ private static final DecimalFormat SPEED_FORMAT =
+ new DecimalFormat("0.00", DecimalFormatSymbols.getInstance(Locale.US));
private static final String EXTRA_FEED_ID = "de.danoeh.antennapod.extra.feedId";
private static final String TAG = "FeedSettingsFragment";
@@ -120,7 +120,7 @@ public class FeedSettingsFragment extends PreferenceFragmentCompat {
String[] speeds = UserPreferences.getPlaybackSpeedArray();
String[] values = new String[speeds.length + 1];
- values[0] = decimalFormat.format(SPEED_USE_GLOBAL);
+ values[0] = SPEED_FORMAT.format(SPEED_USE_GLOBAL);
String[] entries = new String[speeds.length + 1];
entries[0] = getString(R.string.feed_auto_download_global);
@@ -130,11 +130,12 @@ public class FeedSettingsFragment extends PreferenceFragmentCompat {
feedPlaybackSpeedPreference.setEntryValues(values);
feedPlaybackSpeedPreference.setEntries(entries);
-
feedPlaybackSpeedPreference.setOnPreferenceChangeListener((preference, newValue) -> {
feedPreferences.setFeedPlaybackSpeed(Float.parseFloat((String) newValue));
feed.savePreferences();
updatePlaybackSpeedPreference();
+ EventBus.getDefault().post(
+ new SpeedPresetChangedEvent(feedPreferences.getFeedPlaybackSpeed(), feed.getId()));
return false;
});
}
@@ -192,7 +193,7 @@ public class FeedSettingsFragment extends PreferenceFragmentCompat {
ListPreference feedPlaybackSpeedPreference = findPreference(PREF_FEED_PLAYBACK_SPEED);
float speedValue = feedPreferences.getFeedPlaybackSpeed();
- feedPlaybackSpeedPreference.setValue(decimalFormat.format(speedValue));
+ feedPlaybackSpeedPreference.setValue(SPEED_FORMAT.format(speedValue));
}
private void updateAutoDeleteSummary() {
@@ -230,17 +231,12 @@ public class FeedSettingsFragment extends PreferenceFragmentCompat {
}
feed.savePreferences();
updateVolumeReductionValue();
- sendVolumeAdaptionChangedIntent();
-
+ EventBus.getDefault().post(
+ new VolumeAdaptionChangedEvent(feedPreferences.getVolumeAdaptionSetting(), feed.getId()));
return false;
});
}
- private void sendVolumeAdaptionChangedIntent() {
- EventBus.getDefault().post(
- new VolumeAdaptionChangedEvent(feedPreferences.getVolumeAdaptionSetting(), feed.getId()));
- }
-
private void updateVolumeReductionValue() {
ListPreference volumeReductionPreference = (ListPreference) findPreference("volumeReduction");
diff --git a/core/src/main/java/de/danoeh/antennapod/core/event/settings/SpeedPresetChangedEvent.java b/core/src/main/java/de/danoeh/antennapod/core/event/settings/SpeedPresetChangedEvent.java
new file mode 100644
index 000000000..0ac7e1316
--- /dev/null
+++ b/core/src/main/java/de/danoeh/antennapod/core/event/settings/SpeedPresetChangedEvent.java
@@ -0,0 +1,19 @@
+package de.danoeh.antennapod.core.event.settings;
+
+public class SpeedPresetChangedEvent {
+ private final float speed;
+ private final long feedId;
+
+ public SpeedPresetChangedEvent(float speed, long feedId) {
+ this.speed = speed;
+ this.feedId = feedId;
+ }
+
+ public float getSpeed() {
+ return speed;
+ }
+
+ public long getFeedId() {
+ return feedId;
+ }
+}
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 edcaacefc..3a8302be7 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
@@ -50,6 +50,7 @@ import de.danoeh.antennapod.core.R;
import de.danoeh.antennapod.core.event.MessageEvent;
import de.danoeh.antennapod.core.event.PlaybackPositionEvent;
import de.danoeh.antennapod.core.event.ServiceEvent;
+import de.danoeh.antennapod.core.event.settings.SpeedPresetChangedEvent;
import de.danoeh.antennapod.core.event.settings.VolumeAdaptionChangedEvent;
import de.danoeh.antennapod.core.feed.Chapter;
import de.danoeh.antennapod.core.feed.Feed;
@@ -79,6 +80,9 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+
+import static de.danoeh.antennapod.core.feed.FeedPreferences.SPEED_USE_GLOBAL;
/**
* Controls the MediaPlayer that plays a FeedMedia-file
@@ -1436,12 +1440,25 @@ public class PlaybackService extends MediaBrowserServiceCompat {
}
};
- @Subscribe
+ @Subscribe(threadMode = ThreadMode.MAIN)
public void volumeAdaptionChanged(VolumeAdaptionChangedEvent event) {
PlaybackVolumeUpdater playbackVolumeUpdater = new PlaybackVolumeUpdater();
playbackVolumeUpdater.updateVolumeIfNecessary(mediaPlayer, event.getFeedId(), event.getVolumeAdaptionSetting());
}
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ public void speedPresetChanged(SpeedPresetChangedEvent event) {
+ if (getPlayable() instanceof FeedMedia) {
+ if (((FeedMedia) getPlayable()).getItem().getFeed().getId() == event.getFeedId()) {
+ if (event.getSpeed() == SPEED_USE_GLOBAL) {
+ setSpeed(UserPreferences.getPlaybackSpeed(getPlayable().getMediaType()));
+ } else {
+ setSpeed(event.getSpeed());
+ }
+ }
+ }
+ }
+
public static MediaType getCurrentMediaType() {
return currentMediaType;
}