summaryrefslogtreecommitdiff
path: root/app/src/main/java/de
diff options
context:
space:
mode:
authorTony Tam <engineer.tonytam@pm.me>2020-04-21 14:20:22 -0700
committerGitHub <noreply@github.com>2020-04-21 23:20:22 +0200
commit92eb1d669ba14318b90ad4da4cd925279007fa3a (patch)
tree07924bd7b28104f581e8b715749587dd3cab94a9 /app/src/main/java/de
parent3a86745e8144baa6d0a2cdc88aa0e29d1fd6e66c (diff)
downloadAntennaPod-92eb1d669ba14318b90ad4da4cd925279007fa3a.zip
Skip intro and ending per feed (#3975)
Diffstat (limited to 'app/src/main/java/de')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/FeedPreferenceSkipDialog.java48
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/FeedSettingsFragment.java24
2 files changed, 72 insertions, 0 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/FeedPreferenceSkipDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/FeedPreferenceSkipDialog.java
new file mode 100644
index 000000000..0e5a064eb
--- /dev/null
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/FeedPreferenceSkipDialog.java
@@ -0,0 +1,48 @@
+package de.danoeh.antennapod.dialog;
+
+import android.content.Context;
+import android.view.View;
+import android.widget.EditText;
+import androidx.appcompat.app.AlertDialog;
+import de.danoeh.antennapod.R;
+
+/**
+ * Displays a dialog with a username and password text field and an optional checkbox to save username and preferences.
+ */
+public abstract class FeedPreferenceSkipDialog extends AlertDialog.Builder {
+
+ public FeedPreferenceSkipDialog(Context context, int skipIntroInitialValue,
+ int skipEndInitialValue) {
+ super(context);
+ setTitle(R.string.pref_feed_skip);
+ View rootView = View.inflate(context, R.layout.feed_pref_skip_dialog, null);
+ setView(rootView);
+
+ final EditText etxtSkipIntro = rootView.findViewById(R.id.etxtSkipIntro);
+ final EditText etxtSkipEnd = rootView.findViewById(R.id.etxtSkipEnd);
+
+ etxtSkipIntro.setText(String.valueOf(skipIntroInitialValue));
+ etxtSkipEnd.setText(String.valueOf(skipEndInitialValue));
+
+ setNegativeButton(R.string.cancel_label, null);
+ setPositiveButton(R.string.confirm_label, (dialog, which)
+ -> {
+ int skipIntro;
+ int skipEnding;
+ try {
+ skipIntro = Integer.parseInt(etxtSkipIntro.getText().toString());
+ } catch (NumberFormatException e) {
+ skipIntro = 0;
+ }
+
+ try {
+ skipEnding = Integer.parseInt(etxtSkipEnd.getText().toString());
+ } catch (NumberFormatException e) {
+ skipEnding = 0;
+ }
+ onConfirmed(skipIntro, skipEnding);
+ });
+ }
+
+ protected abstract void onConfirmed(int skipIntro, int skipEndig);
+}
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 23b8b7f19..8251e8716 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/FeedSettingsFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/FeedSettingsFragment.java
@@ -17,6 +17,7 @@ import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.SwitchPreference;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.core.dialog.ConfirmationDialog;
+import de.danoeh.antennapod.core.event.settings.SkipIntroEndingChangedEvent;
import de.danoeh.antennapod.core.event.settings.SpeedPresetChangedEvent;
import de.danoeh.antennapod.core.event.settings.VolumeAdaptionChangedEvent;
import de.danoeh.antennapod.core.feed.Feed;
@@ -28,6 +29,7 @@ import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.DBWriter;
import de.danoeh.antennapod.dialog.AuthenticationDialog;
import de.danoeh.antennapod.dialog.EpisodeFilterDialog;
+import de.danoeh.antennapod.dialog.FeedPreferenceSkipDialog;
import io.reactivex.Maybe;
import io.reactivex.MaybeOnSubscribe;
import io.reactivex.android.schedulers.AndroidSchedulers;
@@ -99,6 +101,7 @@ public class FeedSettingsFragment extends Fragment {
private static final CharSequence PREF_EPISODE_FILTER = "episodeFilter";
private static final CharSequence PREF_SCREEN = "feedSettingsScreen";
private static final String PREF_FEED_PLAYBACK_SPEED = "feedPlaybackSpeed";
+ private static final String PREF_AUTO_SKIP = "feedAutoSkip";
private static final DecimalFormat SPEED_FORMAT =
new DecimalFormat("0.00", DecimalFormatSymbols.getInstance(Locale.US));
@@ -142,6 +145,7 @@ public class FeedSettingsFragment extends Fragment {
setupAuthentificationPreference();
setupEpisodeFilterPreference();
setupPlaybackSpeedPreference();
+ setupFeedAutoSkipPreference();
updateAutoDeleteSummary();
updateVolumeReductionValue();
@@ -159,6 +163,26 @@ public class FeedSettingsFragment extends Fragment {
}
}
+ private void setupFeedAutoSkipPreference() {
+ findPreference(PREF_AUTO_SKIP).setOnPreferenceClickListener(preference -> {
+ new FeedPreferenceSkipDialog(getContext(),
+ feedPreferences.getFeedSkipIntro(),
+ feedPreferences.getFeedSkipEnding()) {
+ @Override
+ protected void onConfirmed(int skipIntro, int skipEnding) {
+ feedPreferences.setFeedSkipIntro(skipIntro);
+ feedPreferences.setFeedSkipEnding(skipEnding);
+ feed.savePreferences();
+ EventBus.getDefault().post(
+ new SkipIntroEndingChangedEvent(feedPreferences.getFeedSkipIntro(),
+ feedPreferences.getFeedSkipEnding(),
+ feed.getId()));
+ }
+ }.show();
+ return false;
+ });
+ }
+
private void setupPlaybackSpeedPreference() {
ListPreference feedPlaybackSpeedPreference = findPreference(PREF_FEED_PLAYBACK_SPEED);