From 2273d60ac47535e632392a77c1a572d800bb8b0d Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Wed, 20 May 2020 10:38:51 +0200 Subject: Sleep timer adjustments - Close button instead of OK - Save settings on-the-fly --- .../playback/PlaybackServiceTaskManagerTest.java | 13 +++-- .../danoeh/antennapod/activity/MainActivity.java | 30 +++++------- .../danoeh/antennapod/dialog/SleepTimerDialog.java | 55 +++++++--------------- 3 files changed, 37 insertions(+), 61 deletions(-) (limited to 'app') diff --git a/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceTaskManagerTest.java b/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceTaskManagerTest.java index dbc86a228..fce78ea4f 100644 --- a/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceTaskManagerTest.java +++ b/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceTaskManagerTest.java @@ -5,6 +5,7 @@ import androidx.test.InstrumentationRegistry; import androidx.test.annotation.UiThreadTest; import androidx.test.filters.LargeTest; +import de.danoeh.antennapod.core.preferences.SleepTimerPreferences; import org.awaitility.Awaitility; import org.greenrobot.eventbus.EventBus; import org.junit.After; @@ -53,6 +54,8 @@ public class PlaybackServiceTaskManagerTest { PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.close(); + SleepTimerPreferences.setShakeToReset(false); + SleepTimerPreferences.setVibrate(false); } @Test @@ -304,7 +307,7 @@ public class PlaybackServiceTaskManagerTest { PlaybackServiceTaskManager pstm = new PlaybackServiceTaskManager(c, defaultPSTM); pstm.startWidgetUpdater(); pstm.startPositionSaver(); - pstm.setSleepTimer(100000, false, false); + pstm.setSleepTimer(100000); pstm.cancelAllTasks(); assertFalse(pstm.isPositionSaverActive()); assertFalse(pstm.isWidgetUpdaterActive()); @@ -353,7 +356,7 @@ public class PlaybackServiceTaskManagerTest { } }); - pstm.setSleepTimer(TIME, false, false); + pstm.setSleepTimer(TIME); countDownLatch.await(TIMEOUT, TimeUnit.MILLISECONDS); pstm.shutdown(); } @@ -396,7 +399,7 @@ public class PlaybackServiceTaskManagerTest { } }); - pstm.setSleepTimer(TIME, false, false); + pstm.setSleepTimer(TIME); pstm.disableSleepTimer(); assertFalse(countDownLatch.await(TIMEOUT, TimeUnit.MILLISECONDS)); pstm.shutdown(); @@ -407,7 +410,7 @@ public class PlaybackServiceTaskManagerTest { public void testIsSleepTimerActivePositive() { final Context c = InstrumentationRegistry.getInstrumentation().getTargetContext(); PlaybackServiceTaskManager pstm = new PlaybackServiceTaskManager(c, defaultPSTM); - pstm.setSleepTimer(10000, false, false); + pstm.setSleepTimer(1000); assertTrue(pstm.isSleepTimerActive()); pstm.shutdown(); } @@ -417,7 +420,7 @@ public class PlaybackServiceTaskManagerTest { public void testIsSleepTimerActiveNegative() { final Context c = InstrumentationRegistry.getInstrumentation().getTargetContext(); PlaybackServiceTaskManager pstm = new PlaybackServiceTaskManager(c, defaultPSTM); - pstm.setSleepTimer(10000, false, false); + pstm.setSleepTimer(10000); pstm.disableSleepTimer(); assertFalse(pstm.isSleepTimerActive()); pstm.shutdown(); diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java index 9e647bcaa..655049b2c 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java @@ -409,13 +409,7 @@ public class MainActivity extends CastEnabledActivity { public void onEventMainThread(MessageEvent event) { Log.d(TAG, "onEvent(" + event + ")"); - Snackbar snackbar; - if (getBottomSheet().getState() == BottomSheetBehavior.STATE_COLLAPSED) { - snackbar = showSnackbarAbovePlayer(event.message, Snackbar.LENGTH_SHORT); - } else { - snackbar = Snackbar.make(findViewById(android.R.id.content), event.message, Snackbar.LENGTH_SHORT); - snackbar.show(); - } + Snackbar snackbar = showSnackbarAbovePlayer(event.message, Snackbar.LENGTH_SHORT); if (event.action != null) { snackbar.setAction(getString(R.string.undo), v -> event.action.run()); } @@ -453,21 +447,21 @@ public class MainActivity extends CastEnabledActivity { setIntent(intent); } - public Snackbar showSnackbarAbovePlayer(int text, int duration) { - Snackbar s = Snackbar.make(findViewById(R.id.main_view), text, duration); - if (findViewById(R.id.audioplayerFragment).getVisibility() == View.VISIBLE) { - s.setAnchorView(findViewById(R.id.audioplayerFragment)); + public Snackbar showSnackbarAbovePlayer(CharSequence text, int duration) { + Snackbar s; + if (getBottomSheet().getState() == BottomSheetBehavior.STATE_COLLAPSED) { + s = Snackbar.make(findViewById(R.id.main_view), text, duration); + if (findViewById(R.id.audioplayerFragment).getVisibility() == View.VISIBLE) { + s.setAnchorView(findViewById(R.id.audioplayerFragment)); + } + } else { + s = Snackbar.make(findViewById(android.R.id.content), text, duration); } s.show(); return s; } - public Snackbar showSnackbarAbovePlayer(String text, int duration) { - Snackbar s = Snackbar.make(findViewById(R.id.main_view), text, duration); - if (findViewById(R.id.audioplayerFragment).getVisibility() == View.VISIBLE) { - s.setAnchorView(findViewById(R.id.audioplayerFragment)); - } - s.show(); - return s; + public Snackbar showSnackbarAbovePlayer(int text, int duration) { + return showSnackbarAbovePlayer(getResources().getText(text), duration); } } 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 fafe888ee..a9c54e879 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/SleepTimerDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/SleepTimerDialog.java @@ -2,9 +2,8 @@ package de.danoeh.antennapod.dialog; import android.app.Dialog; import android.content.Context; +import android.content.DialogInterface; import android.os.Bundle; -import android.text.Editable; -import android.text.TextWatcher; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.ArrayAdapter; @@ -14,7 +13,6 @@ import android.widget.EditText; import android.widget.LinearLayout; import android.widget.Spinner; import android.widget.TextView; -import android.widget.Toast; import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.DialogFragment; @@ -36,9 +34,6 @@ public class SleepTimerDialog extends DialogFragment { private EditText etxtTime; private Spinner spTimeUnit; - private CheckBox cbShakeToReset; - private CheckBox cbVibrate; - private CheckBox chAutoEnable; private LinearLayout timeSetup; private LinearLayout timeDisplay; private TextView time; @@ -85,33 +80,15 @@ public class SleepTimerDialog extends DialogFragment { AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); builder.setTitle(R.string.sleep_timer_label); builder.setView(content); - builder.setPositiveButton(android.R.string.ok, null); + builder.setPositiveButton(R.string.close_label, null); etxtTime = content.findViewById(R.id.etxtTime); spTimeUnit = content.findViewById(R.id.spTimeUnit); - cbShakeToReset = content.findViewById(R.id.cbShakeToReset); - cbVibrate = content.findViewById(R.id.cbVibrate); - chAutoEnable = content.findViewById(R.id.chAutoEnable); timeSetup = content.findViewById(R.id.timeSetup); timeDisplay = content.findViewById(R.id.timeDisplay); time = content.findViewById(R.id.time); - AlertDialog dialog = builder.create(); etxtTime.setText(SleepTimerPreferences.lastTimerValue()); - etxtTime.addTextChangedListener(new TextWatcher() { - @Override - public void afterTextChanged(Editable s) { - dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(s.length() > 0); - } - - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - } - }); etxtTime.postDelayed(() -> { InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(etxtTime, InputMethodManager.SHOW_IMPLICIT); @@ -127,12 +104,21 @@ public class SleepTimerDialog extends DialogFragment { spTimeUnit.setAdapter(spinnerAdapter); spTimeUnit.setSelection(SleepTimerPreferences.lastTimerTimeUnit()); + CheckBox cbShakeToReset = content.findViewById(R.id.cbShakeToReset); + CheckBox cbVibrate = content.findViewById(R.id.cbVibrate); + CheckBox chAutoEnable = content.findViewById(R.id.chAutoEnable); + cbShakeToReset.setChecked(SleepTimerPreferences.shakeToReset()); cbVibrate.setChecked(SleepTimerPreferences.vibrate()); chAutoEnable.setChecked(SleepTimerPreferences.autoEnable()); + cbShakeToReset.setOnCheckedChangeListener((buttonView, isChecked) + -> SleepTimerPreferences.setShakeToReset(isChecked)); + cbVibrate.setOnCheckedChangeListener((buttonView, isChecked) + -> SleepTimerPreferences.setVibrate(isChecked)); chAutoEnable.setOnCheckedChangeListener((compoundButton, isChecked) - -> SleepTimerPreferences.setAutoEnable(isChecked)); + -> SleepTimerPreferences.setAutoEnable(isChecked)); + Button disableButton = content.findViewById(R.id.disableSleeptimerButton); disableButton.setOnClickListener(v -> { if (controller != null) { @@ -143,27 +129,20 @@ public class SleepTimerDialog extends DialogFragment { setButton.setOnClickListener(v -> { if (!PlaybackService.isRunning) { Snackbar.make(content, R.string.no_media_playing_label, Snackbar.LENGTH_LONG).show(); + return; } try { - savePreferences(); + SleepTimerPreferences.setLastTimer(etxtTime.getText().toString(), spTimeUnit.getSelectedItemPosition()); long time = SleepTimerPreferences.timerMillis(); if (controller != null) { - controller.setSleepTimer(time, cbShakeToReset.isChecked(), cbVibrate.isChecked()); + controller.setSleepTimer(time); } } catch (NumberFormatException e) { e.printStackTrace(); - Toast.makeText(getContext(), R.string.time_dialog_invalid_input, Toast.LENGTH_LONG).show(); + Snackbar.make(content, R.string.time_dialog_invalid_input, Snackbar.LENGTH_LONG).show(); } }); - return dialog; - } - - private void savePreferences() { - SleepTimerPreferences.setLastTimer(etxtTime.getText().toString(), - spTimeUnit.getSelectedItemPosition()); - SleepTimerPreferences.setShakeToReset(cbShakeToReset.isChecked()); - SleepTimerPreferences.setVibrate(cbVibrate.isChecked()); - SleepTimerPreferences.setAutoEnable(chAutoEnable.isChecked()); + return builder.create(); } private void updateTime() { -- cgit v1.2.3