summaryrefslogtreecommitdiff
path: root/app/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main')
-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
-rw-r--r--app/src/main/res/layout/feed_pref_skip_dialog.xml78
-rw-r--r--app/src/main/res/xml/feed_settings.xml9
4 files changed, 157 insertions, 2 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);
diff --git a/app/src/main/res/layout/feed_pref_skip_dialog.xml b/app/src/main/res/layout/feed_pref_skip_dialog.xml
new file mode 100644
index 000000000..db76a3426
--- /dev/null
+++ b/app/src/main/res/layout/feed_pref_skip_dialog.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical" >
+
+ <TextView
+ android:id="@+id/labelSkipIntro"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="24dp"
+ android:layout_marginRight="24dp"
+ android:text="@string/pref_feed_skip_intro" />
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal" >
+
+ <EditText
+ android:id="@+id/etxtSkipIntro"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="24dp"
+ android:autofillHints="@string/pref_feed_skip_intro"
+ android:cursorVisible="true"
+ android:focusable="true"
+ android:focusableInTouchMode="true"
+ android:inputType="number"
+ android:maxLength="5"
+ android:minWidth="150dp"
+ android:text="30" />
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="8dp"
+ android:layout_marginRight="24dp"
+ android:text="@string/time_seconds" />
+
+ </LinearLayout>
+
+ <TextView
+ android:id="@+id/labelSkipEnd"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="24dp"
+ android:layout_marginRight="24dp"
+ android:text="@string/pref_feed_skip_ending" />
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal" >
+
+ <EditText
+ android:id="@+id/etxtSkipEnd"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="24dp"
+ android:cursorVisible="true"
+ android:focusable="true"
+ android:autofillHints="@string/pref_feed_skip_ending"
+ android:focusableInTouchMode="true"
+ android:inputType="number"
+ android:maxLength="5"
+ android:minWidth="150dp"
+ android:text="30" />
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="8dp"
+ android:layout_marginRight="24dp"
+ android:text="@string/time_seconds" />
+ </LinearLayout>
+
+</LinearLayout>
diff --git a/app/src/main/res/xml/feed_settings.xml b/app/src/main/res/xml/feed_settings.xml
index a9effdeeb..9a3a4f438 100644
--- a/app/src/main/res/xml/feed_settings.xml
+++ b/app/src/main/res/xml/feed_settings.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:key="feedSettingsScreen">
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:key="feedSettingsScreen">
<SwitchPreference
android:key="keepUpdated"
@@ -21,6 +21,11 @@
android:title="@string/playback_speed"
android:summary="@string/pref_feed_playback_speed_sum"/>
+ <Preference
+ android:key="skipping"
+ android:summary="@string/pref_feed_skip_sum"
+ android:title="@string/pref_feed_skip" />
+
<ListPreference
android:entries="@array/spnAutoDeleteItems"
android:entryValues="@array/spnAutoDeleteValues"