diff options
author | Tony Tam <engineer.tonytam@pm.me> | 2020-04-21 14:20:22 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-21 23:20:22 +0200 |
commit | 92eb1d669ba14318b90ad4da4cd925279007fa3a (patch) | |
tree | 07924bd7b28104f581e8b715749587dd3cab94a9 /app | |
parent | 3a86745e8144baa6d0a2cdc88aa0e29d1fd6e66c (diff) | |
download | AntennaPod-92eb1d669ba14318b90ad4da4cd925279007fa3a.zip |
Skip intro and ending per feed (#3975)
Diffstat (limited to 'app')
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" |