diff options
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/dialog/SleepTimerDialog.java')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/dialog/SleepTimerDialog.java | 66 |
1 files changed, 57 insertions, 9 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/SleepTimerDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/SleepTimerDialog.java index 52e6f7807..ecbc1d873 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/SleepTimerDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/SleepTimerDialog.java @@ -4,6 +4,7 @@ import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.os.Bundle; +import android.text.format.DateFormat; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.Button; @@ -11,19 +12,25 @@ import android.widget.CheckBox; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; + import androidx.annotation.NonNull; -import com.google.android.material.dialog.MaterialAlertDialogBuilder; import androidx.fragment.app.DialogFragment; + +import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.snackbar.Snackbar; + +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; + +import java.util.Locale; + import de.danoeh.antennapod.R; -import de.danoeh.antennapod.event.playback.SleepTimerUpdatedEvent; import de.danoeh.antennapod.core.preferences.SleepTimerPreferences; import de.danoeh.antennapod.core.service.playback.PlaybackService; import de.danoeh.antennapod.core.util.Converter; import de.danoeh.antennapod.core.util.playback.PlaybackController; -import org.greenrobot.eventbus.EventBus; -import org.greenrobot.eventbus.Subscribe; -import org.greenrobot.eventbus.ThreadMode; +import de.danoeh.antennapod.event.playback.SleepTimerUpdatedEvent; public class SleepTimerDialog extends DialogFragment { private PlaybackController controller; @@ -31,6 +38,7 @@ public class SleepTimerDialog extends DialogFragment { private LinearLayout timeSetup; private LinearLayout timeDisplay; private TextView time; + private CheckBox chAutoEnable; public SleepTimerDialog() { @@ -99,20 +107,38 @@ public class SleepTimerDialog extends DialogFragment { imm.showSoftInput(etxtTime, InputMethodManager.SHOW_IMPLICIT); }, 100); - CheckBox cbShakeToReset = content.findViewById(R.id.cbShakeToReset); - CheckBox cbVibrate = content.findViewById(R.id.cbVibrate); - CheckBox chAutoEnable = content.findViewById(R.id.chAutoEnable); + final CheckBox cbShakeToReset = content.findViewById(R.id.cbShakeToReset); + final CheckBox cbVibrate = content.findViewById(R.id.cbVibrate); + chAutoEnable = content.findViewById(R.id.chAutoEnable); + final TextView changeTimesButton = content.findViewById(R.id.changeTimes); cbShakeToReset.setChecked(SleepTimerPreferences.shakeToReset()); cbVibrate.setChecked(SleepTimerPreferences.vibrate()); chAutoEnable.setChecked(SleepTimerPreferences.autoEnable()); + changeTimesButton.setEnabled(chAutoEnable.isChecked()); cbShakeToReset.setOnCheckedChangeListener((buttonView, isChecked) -> SleepTimerPreferences.setShakeToReset(isChecked)); cbVibrate.setOnCheckedChangeListener((buttonView, isChecked) -> SleepTimerPreferences.setVibrate(isChecked)); chAutoEnable.setOnCheckedChangeListener((compoundButton, isChecked) - -> SleepTimerPreferences.setAutoEnable(isChecked)); + -> { + SleepTimerPreferences.setAutoEnable(isChecked); + changeTimesButton.setEnabled(isChecked); + }); + updateAutoEnableText(); + + changeTimesButton.setOnClickListener(changeTimesBtn -> { + int from = SleepTimerPreferences.autoEnableFrom(); + int to = SleepTimerPreferences.autoEnableTo(); + TimeRangeDialog dialog = new TimeRangeDialog(getContext(), from, to); + dialog.setOnDismissListener(v -> { + SleepTimerPreferences.setAutoEnableFrom(dialog.getFrom()); + SleepTimerPreferences.setAutoEnableTo(dialog.getTo()); + updateAutoEnableText(); + }); + dialog.show(); + }); Button disableButton = content.findViewById(R.id.disableSleeptimerButton); disableButton.setOnClickListener(v -> { @@ -144,6 +170,28 @@ public class SleepTimerDialog extends DialogFragment { return builder.create(); } + private void updateAutoEnableText() { + String text; + int from = SleepTimerPreferences.autoEnableFrom(); + int to = SleepTimerPreferences.autoEnableTo(); + + if (from == to) { + text = getString(R.string.auto_enable_label); + } else if (DateFormat.is24HourFormat(getContext())) { + String formattedFrom = String.format(Locale.getDefault(), "%02d:00", from); + String formattedTo = String.format(Locale.getDefault(), "%02d:00", to); + text = getString(R.string.auto_enable_label_with_times, formattedFrom, formattedTo); + } else { + String formattedFrom = String.format(Locale.getDefault(), "%02d:00 %s", + from % 12, from >= 12 ? "PM" : "AM"); + String formattedTo = String.format(Locale.getDefault(), "%02d:00 %s", + to % 12, to >= 12 ? "PM" : "AM"); + text = getString(R.string.auto_enable_label_with_times, formattedFrom, formattedTo); + + } + chAutoEnable.setText(text); + } + @Subscribe(threadMode = ThreadMode.MAIN) @SuppressWarnings("unused") public void timerUpdated(SleepTimerUpdatedEvent event) { |