diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AlarmDetails.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AlarmDetails.java index 0dd5938c4..66c438c5d 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AlarmDetails.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AlarmDetails.java @@ -130,11 +130,12 @@ public class AlarmDetails extends AbstractGBActivity { timePicker.setCurrentHour(alarm.getHour()); timePicker.setCurrentMinute(alarm.getMinute()); + boolean smartAlarmSupported = supportsSmartWakeup(alarm.getPosition()); boolean smartAlarmForced = forcedSmartWakeup(alarm.getPosition()); + boolean smartAlarmIntervalSupported = supportsSmartWakeupInterval(alarm.getPosition()); + cbSmartWakeup.setChecked(alarm.getSmartWakeup() || smartAlarmForced); - boolean smartAlarmVisible = supportsSmartWakeup(alarm.getPosition()); - int smartAlarmVisibility = smartAlarmVisible ? View.VISIBLE : View.GONE; - cbSmartWakeup.setVisibility(smartAlarmVisibility); + cbSmartWakeup.setVisibility(smartAlarmSupported ? View.VISIBLE : View.GONE); if (smartAlarmForced) { cbSmartWakeup.setEnabled(false); // Force the text to be visible for the "interval" part @@ -145,10 +146,10 @@ public class AlarmDetails extends AbstractGBActivity { else cbSmartWakeup.setTextColor(getResources().getColor(R.color.primarytext_light)); } - if (smartAlarmVisible) + if (smartAlarmIntervalSupported) cbSmartWakeup.setText(R.string.alarm_smart_wakeup_interval); - smartWakeupInterval.setVisibility(supportsSmartWakeupInterval(alarm.getPosition()) ? smartAlarmVisibility : View.GONE); + smartWakeupInterval.setVisibility(smartAlarmSupported && smartAlarmIntervalSupported ? View.VISIBLE : View.GONE); smartWakeupInterval.setEnabled(alarm.getSmartWakeup() || smartAlarmForced); if (alarm.getSmartWakeupInterval() != null) smartWakeupInterval.setText(NumberFormat.getInstance().format(alarm.getSmartWakeupInterval())); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/test/TestDeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/test/TestDeviceCoordinator.java index c660e2e0c..51c912f06 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/test/TestDeviceCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/test/TestDeviceCoordinator.java @@ -203,17 +203,29 @@ public class TestDeviceCoordinator extends AbstractDeviceCoordinator { @Override public int getAlarmSlotCount(final GBDevice device) { + /* + 0: Forced smart, no interval + 1: Forced smart, with interval + 2: Unforced smart, no interval + 3: Unforced smart, with interval + 4: Not smart + */ return 5; } @Override public boolean supportsSmartWakeup(final GBDevice device, int position) { - return supports(getTestDevice(), TestFeature.SMART_WAKEUP) && position <= 2; + return supports(getTestDevice(), TestFeature.SMART_WAKEUP) && position <= 3; + } + + @Override + public boolean supportsSmartWakeupInterval(GBDevice device, int alarmPosition) { + return supports(getTestDevice(), TestFeature.SMART_WAKEUP_INTERVAL) && (alarmPosition == 1 || alarmPosition == 3); } @Override public boolean forcedSmartWakeup(final GBDevice device, final int alarmPosition) { - return supports(getTestDevice(), TestFeature.SMART_WAKEUP_FORCED_SLOT) && alarmPosition == 0; + return supports(getTestDevice(), TestFeature.SMART_WAKEUP_FORCED_SLOT) && alarmPosition <= 1; } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/test/TestFeature.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/test/TestFeature.java index ea360d8ab..3b1e764dd 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/test/TestFeature.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/test/TestFeature.java @@ -56,6 +56,7 @@ public enum TestFeature { SCREENSHOTS, SLEEP_RESPIRATORY_RATE, SMART_WAKEUP, + SMART_WAKEUP_INTERVAL, SMART_WAKEUP_FORCED_SLOT, SPO2, STRESS_MEASUREMENT,