diff options
author | ByteHamster <info@bytehamster.com> | 2020-03-23 00:21:41 +0100 |
---|---|---|
committer | ByteHamster <info@bytehamster.com> | 2020-03-23 00:21:41 +0100 |
commit | 8cd29de2f4583e6343879012ea8ba63f865adeec (patch) | |
tree | 6f031982ef8d39c5ebeb7a056f3e0f97ae41a9a6 /app/src/main/java/de/danoeh/antennapod/dialog/SkipPreferenceDialog.java | |
parent | 64f1af0d6b01d85d9d4cf14ff21227714a478737 (diff) | |
download | AntennaPod-8cd29de2f4583e6343879012ea8ba63f865adeec.zip |
Extracted skip preference dialog
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/dialog/SkipPreferenceDialog.java')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/dialog/SkipPreferenceDialog.java | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/SkipPreferenceDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/SkipPreferenceDialog.java new file mode 100644 index 000000000..7bb8f5ad6 --- /dev/null +++ b/app/src/main/java/de/danoeh/antennapod/dialog/SkipPreferenceDialog.java @@ -0,0 +1,58 @@ +package de.danoeh.antennapod.dialog; + +import android.content.Context; +import android.widget.TextView; +import androidx.appcompat.app.AlertDialog; +import de.danoeh.antennapod.R; +import de.danoeh.antennapod.core.preferences.UserPreferences; + +/** + * Shows the dialog that allows setting the skip time. + */ +public class SkipPreferenceDialog { + public static void showSkipPreference(Context context, SkipDirection direction, TextView textView) { + int checked = 0; + + int skipSecs; + if (direction == SkipDirection.SKIP_FORWARD) { + skipSecs = UserPreferences.getFastForwardSecs(); + } else { + skipSecs = UserPreferences.getRewindSecs(); + } + + final int[] values = context.getResources().getIntArray(R.array.seek_delta_values); + final String[] choices = new String[values.length]; + for (int i = 0; i < values.length; i++) { + if (skipSecs == values[i]) { + checked = i; + } + choices[i] = values[i] + " " + context.getString(R.string.time_seconds); + } + + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle(direction == SkipDirection.SKIP_FORWARD ? R.string.pref_fast_forward : R.string.pref_rewind); + builder.setSingleChoiceItems(choices, checked, null); + builder.setNegativeButton(R.string.cancel_label, null); + builder.setPositiveButton(R.string.confirm_label, (dialog, which) -> { + int choice = ((AlertDialog) dialog).getListView().getCheckedItemPosition(); + if (choice < 0 || choice >= values.length) { + System.err.printf("Choice in showSkipPreference is out of bounds %d", choice); + } else { + int seconds = values[choice]; + if (direction == SkipDirection.SKIP_FORWARD) { + UserPreferences.setFastForwardSecs(seconds); + } else { + UserPreferences.setRewindSecs(seconds); + } + if (textView != null) { + textView.setText(String.valueOf(seconds)); + } + } + }); + builder.create().show(); + } + + public enum SkipDirection { + SKIP_FORWARD, SKIP_REWIND + } +} |