summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/dialog/FeedRefreshIntervalDialog.java
diff options
context:
space:
mode:
authorpeakvalleytech <peakvalleytech@gmail.com>2021-04-23 20:04:10 +0200
committerByteHamster <info@bytehamster.com>2021-04-23 20:10:39 +0200
commit04ff51bd6768884cd638bd2b8969a13aa17b05d2 (patch)
treecb5e118cf898dedfc3259622304c93a8e8678bda /app/src/main/java/de/danoeh/antennapod/dialog/FeedRefreshIntervalDialog.java
parent7623100bee9d8f7a7d852eafebea15c89e4fb179 (diff)
downloadAntennaPod-04ff51bd6768884cd638bd2b8969a13aa17b05d2.zip
New feed update interval or time dialog
Co-authored-by: Fivel Rangel <fivel10@hotmail.com> Co-authored-by: ByteHamster <info@bytehamster.com>
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/dialog/FeedRefreshIntervalDialog.java')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/FeedRefreshIntervalDialog.java106
1 files changed, 106 insertions, 0 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/FeedRefreshIntervalDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/FeedRefreshIntervalDialog.java
new file mode 100644
index 000000000..7e42302d1
--- /dev/null
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/FeedRefreshIntervalDialog.java
@@ -0,0 +1,106 @@
+package de.danoeh.antennapod.dialog;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.os.Build;
+import android.text.format.DateFormat;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.ArrayAdapter;
+import androidx.appcompat.app.AlertDialog;
+import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.core.preferences.UserPreferences;
+import de.danoeh.antennapod.databinding.FeedRefreshDialogBinding;
+import org.apache.commons.lang3.ArrayUtils;
+
+import java.util.concurrent.TimeUnit;
+
+public class FeedRefreshIntervalDialog {
+ private static final int[] INTERVAL_VALUES_HOURS = {1, 2, 4, 8, 12, 24, 72};
+ private final Context context;
+ private FeedRefreshDialogBinding viewBinding;
+
+ public FeedRefreshIntervalDialog(Context context) {
+ this.context = context;
+ }
+
+ public void show() {
+ AlertDialog.Builder builder = new AlertDialog.Builder(context);
+ builder.setTitle(R.string.feed_refresh_title);
+ builder.setMessage(R.string.feed_refresh_sum);
+ viewBinding = FeedRefreshDialogBinding.inflate(LayoutInflater.from(context));
+ builder.setView(viewBinding.getRoot());
+
+ ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<>(context,
+ android.R.layout.simple_spinner_item, buildSpinnerEntries());
+ spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ viewBinding.spinner.setAdapter(spinnerArrayAdapter);
+ viewBinding.timePicker.setIs24HourView(DateFormat.is24HourFormat(context));
+ viewBinding.spinner.setSelection(ArrayUtils.indexOf(INTERVAL_VALUES_HOURS, 24));
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ viewBinding.timePicker.setHour(8);
+ viewBinding.timePicker.setMinute(0);
+ } else {
+ viewBinding.timePicker.setCurrentHour(8);
+ viewBinding.timePicker.setCurrentMinute(0);
+ }
+
+ long currInterval = UserPreferences.getUpdateInterval();
+ int[] updateTime = UserPreferences.getUpdateTimeOfDay();
+ if (currInterval > 0) {
+ viewBinding.spinner.setSelection(ArrayUtils.indexOf(INTERVAL_VALUES_HOURS,
+ (int) TimeUnit.MILLISECONDS.toHours(currInterval)));
+ viewBinding.intervalRadioButton.setChecked(true);
+ } else if (updateTime.length == 2 && updateTime[0] >= 0) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ viewBinding.timePicker.setHour(updateTime[0]);
+ viewBinding.timePicker.setMinute(updateTime[1]);
+ } else {
+ viewBinding.timePicker.setCurrentHour(updateTime[0]);
+ viewBinding.timePicker.setCurrentMinute(updateTime[1]);
+ }
+ viewBinding.timeRadioButton.setChecked(true);
+ } else {
+ viewBinding.disableRadioButton.setChecked(true);
+ }
+ updateVisibility();
+
+ viewBinding.radioGroup.setOnCheckedChangeListener((radioGroup, i) -> updateVisibility());
+
+ builder.setPositiveButton(R.string.confirm_label, (dialog, which) -> {
+ if (viewBinding.intervalRadioButton.isChecked()) {
+ UserPreferences.setUpdateInterval(INTERVAL_VALUES_HOURS[viewBinding.spinner.getSelectedItemPosition()]);
+ } else if (viewBinding.timeRadioButton.isChecked()) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ UserPreferences.setUpdateTimeOfDay(viewBinding.timePicker.getHour(),
+ viewBinding.timePicker.getMinute());
+ } else {
+ UserPreferences.setUpdateTimeOfDay(viewBinding.timePicker.getCurrentHour(),
+ viewBinding.timePicker.getCurrentMinute());
+ }
+ } else if (viewBinding.disableRadioButton.isChecked()) {
+ UserPreferences.disableAutoUpdate(context);
+ } else {
+ throw new IllegalStateException("Unexpected error.");
+ }
+ });
+
+ builder.setNegativeButton(R.string.cancel_label, null);
+ builder.show();
+ }
+
+ private String[] buildSpinnerEntries() {
+ final Resources res = context.getResources();
+ String[] entries = new String[INTERVAL_VALUES_HOURS.length];
+ for (int i = 0; i < INTERVAL_VALUES_HOURS.length; i++) {
+ int hours = INTERVAL_VALUES_HOURS[i];
+ entries[i] = res.getQuantityString(R.plurals.feed_refresh_every_x_hours, hours, hours);
+ }
+ return entries;
+ }
+
+ private void updateVisibility() {
+ viewBinding.spinner.setVisibility(viewBinding.intervalRadioButton.isChecked() ? View.VISIBLE : View.GONE);
+ viewBinding.timePicker.setVisibility(viewBinding.timeRadioButton.isChecked() ? View.VISIBLE : View.GONE);
+ }
+}