diff --git a/app/src/main/java/eu/worn/apps/androvac/MainActivity.java b/app/src/main/java/eu/worn/apps/androvac/MainActivity.java index 37a98e2..f4cacee 100644 --- a/app/src/main/java/eu/worn/apps/androvac/MainActivity.java +++ b/app/src/main/java/eu/worn/apps/androvac/MainActivity.java @@ -61,20 +61,12 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe Switch scheduleSwitch = findViewById(R.id.enableSchedule); TimePicker schedulePicker = findViewById(R.id.schedule); - int sh = remote.getScheduleHour(); - int sm = remote.getScheduleMinute(); + boolean se = remote.isScheduleEnabled(); - if ((sh >= 0) && (sm >= 0)) { - schedulePicker.setCurrentHour(sh); - schedulePicker.setCurrentMinute(sm); - schedulePicker.setEnabled(true); - scheduleSwitch.setChecked(true); - } else { - schedulePicker.setCurrentHour(0); - schedulePicker.setCurrentMinute(0); - schedulePicker.setEnabled(false); - scheduleSwitch.setChecked(false); - } + schedulePicker.setCurrentHour(remote.getScheduleHour()); + schedulePicker.setCurrentMinute(remote.getScheduleMinute()); + schedulePicker.setEnabled(se); + scheduleSwitch.setChecked(se); schedulePicker.setOnTimeChangedListener(this); diff --git a/app/src/main/java/eu/worn/apps/androvac/RoboVac11sRemote.java b/app/src/main/java/eu/worn/apps/androvac/RoboVac11sRemote.java index 21706e8..b6d618e 100644 --- a/app/src/main/java/eu/worn/apps/androvac/RoboVac11sRemote.java +++ b/app/src/main/java/eu/worn/apps/androvac/RoboVac11sRemote.java @@ -9,7 +9,9 @@ class RoboVac11sRemote { final IRModulation modulation = new EufyIRModulation(); - private byte schedule = (byte) 0xff; + private boolean scheduleEnabled; + private int scheduleHour; + private int scheduleMinute; private byte[] buildMessage(byte command) { byte msg[] = new byte[6]; @@ -19,7 +21,7 @@ class RoboVac11sRemote { msg[1] = command; msg[2] = (byte) now.get(Calendar.HOUR_OF_DAY); msg[3] = (byte) now.get(Calendar.MINUTE); - msg[4] = schedule; + msg[4] = (byte) (scheduleEnabled ? (scheduleHour * 4 + scheduleMinute / 15) : 0xff); msg[5] = (byte) (msg[0] + msg[1] + msg[2] + msg[3] + msg[4]); return msg; @@ -27,37 +29,41 @@ class RoboVac11sRemote { RoboVac11sRemote(SharedPreferences pref) { preferences = pref; - schedule = (byte) preferences.getInt("schedule", 0xff); + scheduleHour = preferences.getInt("scheduleHour", 0); + scheduleMinute = preferences.getInt("scheduleMinute", 0); + scheduleEnabled = preferences.getBoolean("scheduleEnabled", false); } private void storeSchedule() { SharedPreferences.Editor editor = preferences.edit(); - editor.putInt("schedule", schedule); + editor.putBoolean("scheduleEnabled", scheduleEnabled); + editor.putInt("scheduleHour", scheduleHour); + editor.putInt("scheduleMinute", scheduleMinute); editor.commit(); } + public boolean isScheduleEnabled() { + return scheduleEnabled; + } + public int getScheduleHour() { - if (schedule == 0xff) - return -1; - else - return schedule / 4; + return scheduleHour; } public int getScheduleMinute() { - if (schedule == 0xff) - return -1; - else - return (schedule % 4) * 15; + return scheduleMinute; } public byte[] setSchedule(int hour, int minute) { - schedule = (byte) (hour * 4 + minute / 15); + scheduleHour = hour; + scheduleMinute = minute; + scheduleEnabled = true; storeSchedule(); return buildMessage((byte) 0xcf); } public byte[] clearSchedule() { - schedule = (byte) 0xff; + scheduleEnabled = false; storeSchedule(); return buildMessage((byte) 0xdf); }