diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java index 059692102..f78ca603d 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java @@ -54,7 +54,6 @@ import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.database.PeriodicExporter; import nodomain.freeyourgadget.gadgetbridge.devices.DeviceManager; -import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst; import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandPreferencesActivity; import nodomain.freeyourgadget.gadgetbridge.devices.zetime.ZeTimePreferenceActivity; import nodomain.freeyourgadget.gadgetbridge.model.CannedMessagesSpec; @@ -66,11 +65,6 @@ import nodomain.freeyourgadget.gadgetbridge.util.Prefs; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI2_DATEFORMAT; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI2_ENABLE_TEXT_NOTIFICATIONS; -import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI3_NIGHT_MODE; -import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI3_NIGHT_MODE_END; -import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI3_NIGHT_MODE_OFF; -import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI3_NIGHT_MODE_SCHEDULED; -import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI3_NIGHT_MODE_START; import static nodomain.freeyourgadget.gadgetbridge.model.ActivityUser.PREF_USER_HEIGHT_CM; import static nodomain.freeyourgadget.gadgetbridge.model.ActivityUser.PREF_USER_SLEEP_DURATION; import static nodomain.freeyourgadget.gadgetbridge.model.ActivityUser.PREF_USER_STEPS_GOAL; @@ -379,60 +373,6 @@ public class SettingsActivity extends AbstractSettingsActivity { } }); - String nightModeState = prefs.getString(MiBandConst.PREF_MI3_NIGHT_MODE, PREF_MI3_NIGHT_MODE_OFF); - boolean nightModeScheduled = nightModeState.equals(PREF_MI3_NIGHT_MODE_SCHEDULED); - - final Preference nightModeStart = findPreference(PREF_MI3_NIGHT_MODE_START); - nightModeStart.setEnabled(nightModeScheduled); - nightModeStart.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, Object newVal) { - invokeLater(new Runnable() { - @Override - public void run() { - GBApplication.deviceService().onSendConfiguration(PREF_MI3_NIGHT_MODE_START); - } - }); - return true; - } - }); - - - final Preference nightModeEnd = findPreference(PREF_MI3_NIGHT_MODE_END); - nightModeEnd.setEnabled(nightModeScheduled); - nightModeEnd.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, Object newVal) { - invokeLater(new Runnable() { - @Override - public void run() { - GBApplication.deviceService().onSendConfiguration(PREF_MI3_NIGHT_MODE_END); - } - }); - return true; - } - }); - - - final Preference nightMode = findPreference(PREF_MI3_NIGHT_MODE); - nightMode.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, Object newVal) { - final boolean scheduled = PREF_MI3_NIGHT_MODE_SCHEDULED.equals(newVal.toString()); - - nightModeStart.setEnabled(scheduled); - nightModeEnd.setEnabled(scheduled); - - invokeLater(new Runnable() { - @Override - public void run() { - GBApplication.deviceService().onSendConfiguration(PREF_MI3_NIGHT_MODE); - } - }); - return true; - } - }); - // Get all receivers of Media Buttons Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsFragment.java index 0e5c10e6e..8b3e8a593 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsFragment.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsFragment.java @@ -9,6 +9,7 @@ import androidx.preference.PreferenceFragmentCompat; import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst; +import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst; import nodomain.freeyourgadget.gadgetbridge.util.Prefs; import nodomain.freeyourgadget.gadgetbridge.util.XTimePreference; import nodomain.freeyourgadget.gadgetbridge.util.XTimePreferenceFragment; @@ -18,6 +19,11 @@ import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_DISCONNECT_NOTIFICATION_START; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI2_DO_NOT_DISTURB_OFF; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI2_DO_NOT_DISTURB_SCHEDULED; +import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_NIGHT_MODE; +import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_NIGHT_MODE_END; +import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_NIGHT_MODE_OFF; +import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_NIGHT_MODE_SCHEDULED; +import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_NIGHT_MODE_START; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_SWIPE_UNLOCK; public class DeviceSpecificSettingsFragment extends PreferenceFragmentCompat { @@ -153,6 +159,66 @@ public class DeviceSpecificSettingsFragment extends PreferenceFragmentCompat { }); } + + String nightModeState = prefs.getString(MiBandConst.PREF_NIGHT_MODE, PREF_NIGHT_MODE_OFF); + boolean nightModeScheduled = nightModeState.equals(PREF_NIGHT_MODE_SCHEDULED); + + final Preference nightModeStart = findPreference(PREF_NIGHT_MODE_START); + if (nightModeStart != null) { + nightModeStart.setEnabled(nightModeScheduled); + nightModeStart.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newVal) { + invokeLater(new Runnable() { + @Override + public void run() { + GBApplication.deviceService().onSendConfiguration(PREF_NIGHT_MODE_START); + } + }); + return true; + } + }); + } + + final Preference nightModeEnd = findPreference(PREF_NIGHT_MODE_END); + if (nightModeEnd != null) { + nightModeEnd.setEnabled(nightModeScheduled); + nightModeEnd.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newVal) { + invokeLater(new Runnable() { + @Override + public void run() { + GBApplication.deviceService().onSendConfiguration(PREF_NIGHT_MODE_END); + } + }); + return true; + } + }); + } + + final Preference nightMode = findPreference(PREF_NIGHT_MODE); + if (nightMode != null) { + + nightMode.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newVal) { + final boolean scheduled = PREF_NIGHT_MODE_SCHEDULED.equals(newVal.toString()); + + nightModeStart.setEnabled(scheduled); + nightModeEnd.setEnabled(scheduled); + + invokeLater(new Runnable() { + @Override + public void run() { + GBApplication.deviceService().onSendConfiguration(PREF_NIGHT_MODE); + } + }); + return true; + } + }); + } + final Preference swipeUnlock = findPreference(PREF_SWIPE_UNLOCK); if (swipeUnlock != null) { swipeUnlock.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiCoordinator.java index df4046378..0914b5d40 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiCoordinator.java @@ -184,12 +184,12 @@ public abstract class HuamiCoordinator extends AbstractDeviceCoordinator { return DisconnectNotificationSetting.OFF; } - public static Date getDisconnectNotificationStart() { - return getTimePreference(HuamiConst.PREF_DISCONNECT_NOTIFICATION_START, "00:00"); + public static Date getDisconnectNotificationStart(String deviceAddress) { + return getTimePreference(HuamiConst.PREF_DISCONNECT_NOTIFICATION_START, "00:00", deviceAddress); } - public static Date getDisconnectNotificationEnd() { - return getTimePreference(HuamiConst.PREF_DISCONNECT_NOTIFICATION_END, "00:00"); + public static Date getDisconnectNotificationEnd(String deviceAddress) { + return getTimePreference(HuamiConst.PREF_DISCONNECT_NOTIFICATION_END, "00:00", deviceAddress); } public static Set getDisplayItems(String deviceAddress) { @@ -251,8 +251,14 @@ public abstract class HuamiCoordinator extends AbstractDeviceCoordinator { return prefs.getBoolean(MiBandConst.PREF_SWIPE_UNLOCK, false); } - public static Date getTimePreference(String key, String defaultValue) { - Prefs prefs = GBApplication.getPrefs(); + protected static Date getTimePreference(String key, String defaultValue, String deviceAddress) { + Prefs prefs; + + if (deviceAddress == null) { + prefs = GBApplication.getPrefs(); + } else { + prefs = new Prefs(GBApplication.getDeviceSpecificSharedPrefs(deviceAddress)); + } String time = prefs.getString(key, defaultValue); DateFormat df = new SimpleDateFormat("HH:mm"); @@ -265,6 +271,10 @@ public abstract class HuamiCoordinator extends AbstractDeviceCoordinator { return new Date(); } + protected static Date getTimePreference(String key, String defaultValue) { + return getTimePreference(key, defaultValue, null); + } + public static MiBandConst.DistanceUnit getDistanceUnit() { Prefs prefs = GBApplication.getPrefs(); String unit = prefs.getString(SettingsActivity.PREF_MEASUREMENT_SYSTEM, GBApplication.getContext().getString(R.string.p_unit_metric)); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3Coordinator.java index 7551c6286..b84c54a50 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3Coordinator.java @@ -85,24 +85,25 @@ public class MiBand3Coordinator extends HuamiCoordinator { } - public static String getNightMode() { - Prefs prefs = GBApplication.getPrefs(); + public static String getNightMode(String deviceAddress) { + Prefs prefs = new Prefs(GBApplication.getDeviceSpecificSharedPrefs(deviceAddress)); - return prefs.getString(MiBandConst.PREF_MI3_NIGHT_MODE, MiBandConst.PREF_MI3_NIGHT_MODE_OFF); + return prefs.getString(MiBandConst.PREF_NIGHT_MODE, MiBandConst.PREF_NIGHT_MODE_OFF); } - public static Date getNightModeStart() { - return getTimePreference( MiBandConst.PREF_MI3_NIGHT_MODE_START, "16:00"); + public static Date getNightModeStart(String deviceAddress) { + return getTimePreference(MiBandConst.PREF_NIGHT_MODE_START, "16:00", deviceAddress); } - public static Date getNightModeEnd() { - return getTimePreference(MiBandConst.PREF_MI3_NIGHT_MODE_END, "07:00"); + public static Date getNightModeEnd(String deviceAddress) { + return getTimePreference(MiBandConst.PREF_NIGHT_MODE_END, "07:00", deviceAddress); } @Override public int[] getSupportedDeviceSpecificSettings(GBDevice device) { return new int[]{ R.xml.devicesettings_miband3, + R.xml.devicesettings_nightmode, R.xml.devicesettings_swipeunlock, R.xml.devicesettings_pairingkey }; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBandConst.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBandConst.java index a7ba2823c..63d3fd8ac 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBandConst.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBandConst.java @@ -66,12 +66,12 @@ public final class MiBandConst { public static final String PREF_MIBAND_SETUP_BT_PAIRING = "mi_setup_bt_pairing"; public static final String PREF_SWIPE_UNLOCK = "swipe_unlock"; - public static final String PREF_MI3_NIGHT_MODE = "mi3_night_mode"; - public static final String PREF_MI3_NIGHT_MODE_START = "mi3_night_mode_start"; - public static final String PREF_MI3_NIGHT_MODE_END = "mi3_night_mode_end"; - public static final String PREF_MI3_NIGHT_MODE_OFF = "off"; - public static final String PREF_MI3_NIGHT_MODE_SUNSET = "sunset"; - public static final String PREF_MI3_NIGHT_MODE_SCHEDULED = "scheduled"; + public static final String PREF_NIGHT_MODE = "night_mode"; + public static final String PREF_NIGHT_MODE_START = "night_mode_start"; + public static final String PREF_NIGHT_MODE_END = "night_mode_end"; + public static final String PREF_NIGHT_MODE_OFF = "off"; + public static final String PREF_NIGHT_MODE_SUNSET = "sunset"; + public static final String PREF_NIGHT_MODE_SCHEDULED = "scheduled"; public static final String ORIGIN_INCOMING_CALL = "incoming_call"; public static final String ORIGIN_ALARM_CLOCK = "alarm_clock"; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupport.java index f9de0f4f0..ec6a9291e 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupport.java @@ -1793,12 +1793,12 @@ public class HuamiSupport extends AbstractBTLEDeviceSupport { Calendar calendar = GregorianCalendar.getInstance(); - Date start = HuamiCoordinator.getDisconnectNotificationStart(); + Date start = HuamiCoordinator.getDisconnectNotificationStart(gbDevice.getAddress()); calendar.setTime(start); cmd[4] = (byte) calendar.get(Calendar.HOUR_OF_DAY); cmd[5] = (byte) calendar.get(Calendar.MINUTE); - Date end = HuamiCoordinator.getDisconnectNotificationEnd(); + Date end = HuamiCoordinator.getDisconnectNotificationEnd(gbDevice.getAddress()); calendar.setTime(end); cmd[6] = (byte) calendar.get(Calendar.HOUR_OF_DAY); cmd[7] = (byte) calendar.get(Calendar.MINUTE); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband3/MiBand3Support.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband3/MiBand3Support.java index 5e7ca5ea7..2d13b3c0f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband3/MiBand3Support.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband3/MiBand3Support.java @@ -106,9 +106,9 @@ public class MiBand3Support extends AmazfitBipSupport { try { builder = performInitialized("Sending configuration for option: " + config); switch (config) { - case MiBandConst.PREF_MI3_NIGHT_MODE: - case MiBandConst.PREF_MI3_NIGHT_MODE_START: - case MiBandConst.PREF_MI3_NIGHT_MODE_END: + case MiBandConst.PREF_NIGHT_MODE: + case MiBandConst.PREF_NIGHT_MODE_START: + case MiBandConst.PREF_NIGHT_MODE_END: setNightMode(builder); break; default: @@ -122,27 +122,27 @@ public class MiBand3Support extends AmazfitBipSupport { } private MiBand3Support setNightMode(TransactionBuilder builder) { - String nightMode = MiBand3Coordinator.getNightMode(); + String nightMode = MiBand3Coordinator.getNightMode(gbDevice.getAddress()); LOG.info("Setting night mode to " + nightMode); switch (nightMode) { - case MiBandConst.PREF_MI3_NIGHT_MODE_SUNSET: + case MiBandConst.PREF_NIGHT_MODE_SUNSET: builder.write(getCharacteristic(HuamiService.UUID_CHARACTERISTIC_3_CONFIGURATION), MiBand3Service.COMMAND_NIGHT_MODE_SUNSET); break; - case MiBandConst.PREF_MI3_NIGHT_MODE_OFF: + case MiBandConst.PREF_NIGHT_MODE_OFF: builder.write(getCharacteristic(HuamiService.UUID_CHARACTERISTIC_3_CONFIGURATION), MiBand3Service.COMMAND_NIGHT_MODE_OFF); break; - case MiBandConst.PREF_MI3_NIGHT_MODE_SCHEDULED: + case MiBandConst.PREF_NIGHT_MODE_SCHEDULED: byte[] cmd = MiBand3Service.COMMAND_NIGHT_MODE_SCHEDULED.clone(); Calendar calendar = GregorianCalendar.getInstance(); - Date start = MiBand3Coordinator.getNightModeStart(); + Date start = MiBand3Coordinator.getNightModeStart(gbDevice.getAddress()); calendar.setTime(start); cmd[2] = (byte) calendar.get(Calendar.HOUR_OF_DAY); cmd[3] = (byte) calendar.get(Calendar.MINUTE); - Date end = MiBand3Coordinator.getNightModeEnd(); + Date end = MiBand3Coordinator.getNightModeEnd(gbDevice.getAddress()); calendar.setTime(end); cmd[4] = (byte) calendar.get(Calendar.HOUR_OF_DAY); cmd[5] = (byte) calendar.get(Calendar.MINUTE); diff --git a/app/src/main/res/drawable/ic_brightness_2.xml b/app/src/main/res/drawable/ic_brightness_2.xml new file mode 100644 index 000000000..4b73de603 --- /dev/null +++ b/app/src/main/res/drawable/ic_brightness_2.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_lock_open.xml b/app/src/main/res/drawable/ic_lock_open.xml new file mode 100644 index 000000000..dfe29b6e6 --- /dev/null +++ b/app/src/main/res/drawable/ic_lock_open.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu.xml b/app/src/main/res/drawable/ic_menu.xml index 8e1af5386..72d0a99ed 100644 --- a/app/src/main/res/drawable/ic_menu.xml +++ b/app/src/main/res/drawable/ic_menu.xml @@ -1,5 +1,10 @@ - - + + diff --git a/app/src/main/res/drawable/ic_signal_cellular_connected_no_internet_0_bar.xml b/app/src/main/res/drawable/ic_signal_cellular_connected_no_internet_0_bar.xml new file mode 100644 index 000000000..a6650dc31 --- /dev/null +++ b/app/src/main/res/drawable/ic_signal_cellular_connected_no_internet_0_bar.xml @@ -0,0 +1,14 @@ + + + + diff --git a/app/src/main/res/xml/devicesettings_disconnectnotification.xml b/app/src/main/res/xml/devicesettings_disconnectnotification.xml index c198e9ca9..4ac7855e6 100644 --- a/app/src/main/res/xml/devicesettings_disconnectnotification.xml +++ b/app/src/main/res/xml/devicesettings_disconnectnotification.xml @@ -3,6 +3,7 @@ diff --git a/app/src/main/res/xml/devicesettings_nightmode.xml b/app/src/main/res/xml/devicesettings_nightmode.xml new file mode 100644 index 000000000..e59577e91 --- /dev/null +++ b/app/src/main/res/xml/devicesettings_nightmode.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/devicesettings_swipeunlock.xml b/app/src/main/res/xml/devicesettings_swipeunlock.xml index 22f35cf81..d02b9d402 100644 --- a/app/src/main/res/xml/devicesettings_swipeunlock.xml +++ b/app/src/main/res/xml/devicesettings_swipeunlock.xml @@ -1,7 +1,8 @@ - - - - - - - - - - - - - - -