diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ConfigureReminders.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ConfigureReminders.java index 2651a0a05..9edebffb5 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ConfigureReminders.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ConfigureReminders.java @@ -57,7 +57,6 @@ import nodomain.freeyourgadget.gadgetbridge.entities.User; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceService; import nodomain.freeyourgadget.gadgetbridge.util.Prefs; -import nodomain.freeyourgadget.gadgetbridge.util.GBPrefs; public class ConfigureReminders extends AbstractGBActivity { @@ -103,9 +102,7 @@ public class ConfigureReminders extends AbstractGBActivity { public void onClick(View v) { final DeviceCoordinator coordinator = gbDevice.getDeviceCoordinator(); - final GBPrefs prefs = new GBPrefs(new Prefs(GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()))); - - int deviceSlots = coordinator.getReminderSlotCount(gbDevice) - prefs.getReservedReminderCalendarSlots(gbDevice); + int deviceSlots = coordinator.getReminderSlotCount(gbDevice) - GBApplication.getDevicePrefs(gbDevice.getAddress()).getReservedReminderCalendarSlots(gbDevice); if (mGBReminderListAdapter.getItemCount() >= deviceSlots) { // No more free slots diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/database/DBHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/database/DBHelper.java index 2841d619a..7542c6307 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/database/DBHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/database/DBHelper.java @@ -638,9 +638,8 @@ public class DBHelper { @NonNull public static List getReminders(@NonNull GBDevice gbDevice) { final DeviceCoordinator coordinator = gbDevice.getDeviceCoordinator(); - final GBPrefs prefs = new GBPrefs(new Prefs(GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()))); - final int reservedSlots = prefs.getReservedReminderCalendarSlots(gbDevice); + final int reservedSlots = GBApplication.getDevicePrefs(gbDevice.getAddress()).getReservedReminderCalendarSlots(gbDevice); final int reminderSlots = coordinator.getReminderSlotCount(gbDevice); try (DBHandler db = GBApplication.acquireDB()) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/hplus/HPlusCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/hplus/HPlusCoordinator.java index 8c717a917..9b9b03382 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/hplus/HPlusCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/hplus/HPlusCoordinator.java @@ -48,7 +48,6 @@ import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample; import nodomain.freeyourgadget.gadgetbridge.model.ActivityUser; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.hplus.HPlusSupport; -import nodomain.freeyourgadget.gadgetbridge.util.GBPrefs; import nodomain.freeyourgadget.gadgetbridge.util.Prefs; import static nodomain.freeyourgadget.gadgetbridge.GBApplication.getContext; @@ -139,18 +138,6 @@ public class HPlusCoordinator extends AbstractBLEDeviceCoordinator { } } - public static byte getTimeMode(String deviceAddress) { - GBPrefs gbPrefs = new GBPrefs(new Prefs(GBApplication.getDeviceSpecificSharedPrefs(deviceAddress))); - - String tmode = gbPrefs.getTimeFormat(); - - if ("24h".equals(tmode)) { - return HPlusConstants.ARG_TIMEMODE_24H; - } else { - return HPlusConstants.ARG_TIMEMODE_12H; - } - } - public static byte getUnit(String address) { String units = prefs.getString(SettingsActivity.PREF_MEASUREMENT_SYSTEM, getContext().getString(R.string.p_unit_metric)); @@ -297,4 +284,4 @@ public class HPlusCoordinator extends AbstractBLEDeviceCoordinator { return R.drawable.ic_device_hplus_disabled; } } - \ No newline at end of file + diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/makibeshr3/MakibesHR3Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/makibeshr3/MakibesHR3Coordinator.java index 5f88b1c13..bcfeb5f58 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/makibeshr3/MakibesHR3Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/makibeshr3/MakibesHR3Coordinator.java @@ -51,7 +51,6 @@ import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.makibeshr3.MakibesHR3DeviceSupport; -import nodomain.freeyourgadget.gadgetbridge.util.GBPrefs; import nodomain.freeyourgadget.gadgetbridge.util.Prefs; import static nodomain.freeyourgadget.gadgetbridge.GBApplication.getContext; @@ -79,18 +78,6 @@ public class MakibesHR3Coordinator extends AbstractBLEDeviceCoordinator { return !lostReminder.equals(getContext().getString(R.string.p_off)); } - public static byte getTimeMode(SharedPreferences sharedPrefs) { - GBPrefs gbPrefs = new GBPrefs(new Prefs(sharedPrefs)); - - String timeMode = gbPrefs.getTimeFormat(); - - if (timeMode.equals(getContext().getString(R.string.p_timeformat_24h))) { - return MakibesHR3Constants.ARG_SET_TIMEMODE_24H; - } else { - return MakibesHR3Constants.ARG_SET_TIMEMODE_12H; - } - } - /** * @param startOut out Only hour/minute are used. * @param endOut out Only hour/minute are used. diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/casio/Casio2C2DSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/casio/Casio2C2DSupport.java index dc7578ba4..87827440c 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/casio/Casio2C2DSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/casio/Casio2C2DSupport.java @@ -51,7 +51,7 @@ import nodomain.freeyourgadget.gadgetbridge.Logging; import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.util.GB; import nodomain.freeyourgadget.gadgetbridge.util.Prefs; -import nodomain.freeyourgadget.gadgetbridge.util.GBPrefs; +import nodomain.freeyourgadget.gadgetbridge.util.preferences.DevicePrefs; import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper; import nodomain.freeyourgadget.gadgetbridge.util.AlarmUtils; import nodomain.freeyourgadget.gadgetbridge.util.BcdUtil; @@ -734,13 +734,6 @@ public abstract class Casio2C2DSupport extends CasioSupport { public abstract boolean readValue(byte[] data, SharedPreferences.Editor editor); - protected Prefs getPrefs() { - return new Prefs(GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress())); - } - - protected GBPrefs getGBPrefs() { - return new GBPrefs(getPrefs()); - } }; public abstract Casio2C2DSupport.DevicePreference[] supportedDevicePreferences(); @@ -774,20 +767,20 @@ public abstract class Casio2C2DSupport extends CasioSupport { @Override public void updateValue(byte[] data) { - data[index] = (byte) getGBValue(); + data[index] = (byte) getDevicePrefsValue(); } @Override public boolean readValue(byte[] data, SharedPreferences.Editor editor) { - return setGBValue(editor, data[index] & 0xff); + return setDevicePrefsValue(editor, data[index] & 0xff); } - public int getGBValue() { - return getPrefs().getInt(name, -1); + public int getDevicePrefsValue() { + return getDevicePrefs().getInt(name, -1); } - public boolean setGBValue(SharedPreferences.Editor editor, int value) { - if (value != getGBValue()) { + public boolean setDevicePrefsValue(SharedPreferences.Editor editor, int value) { + if (value != getDevicePrefsValue()) { editor.putString(name, Integer.toString(value)); } return false; @@ -800,7 +793,7 @@ public abstract class Casio2C2DSupport extends CasioSupport { @Override public void updateValue(byte[] data) { - if (getGBValue()) { + if (getDevicePrefsValue()) { data[index] &= ~mask; } else { data[index] |= mask; @@ -810,18 +803,18 @@ public abstract class Casio2C2DSupport extends CasioSupport { @Override public boolean readValue(byte[] data, SharedPreferences.Editor editor) { if ((data[index] & mask) == 0) { - return setGBValue(editor, true); + return setDevicePrefsValue(editor, true); } else { - return setGBValue(editor, false); + return setDevicePrefsValue(editor, false); } } - public boolean getGBValue() { - return getPrefs().getBoolean(name, false); + public boolean getDevicePrefsValue() { + return getDevicePrefs().getBoolean(name, false); } - public boolean setGBValue(SharedPreferences.Editor editor, boolean value) { - if (value != getGBValue()) { + public boolean setDevicePrefsValue(SharedPreferences.Editor editor, boolean value) { + if (value != getDevicePrefsValue()) { editor.putBoolean(name, value); } return false; @@ -831,7 +824,7 @@ public abstract class Casio2C2DSupport extends CasioSupport { public class InvertedBoolDevicePreference extends BoolDevicePreference { @Override public void updateValue(byte[] data) { - if (getGBValue()) { + if (getDevicePrefsValue()) { data[index] |= mask; } else { data[index] &= ~mask; @@ -841,15 +834,15 @@ public abstract class Casio2C2DSupport extends CasioSupport { @Override public boolean readValue(byte[] data, SharedPreferences.Editor editor) { if ((data[index] & mask) == 0) { - return setGBValue(editor, false); + return setDevicePrefsValue(editor, false); } else { - return setGBValue(editor, true); + return setDevicePrefsValue(editor, true); } } } interface AutoGetter { - public String get(GBPrefs gbPrefs); + public String get(DevicePrefs devicePrefs); } public class AutoBoolDevicePreference extends BoolDevicePreference { @@ -860,15 +853,15 @@ public abstract class Casio2C2DSupport extends CasioSupport { String falseValue; @Override - public boolean getGBValue() { - return getter.get(getGBPrefs()).equals(trueValue); + public boolean getDevicePrefsValue() { + return getter.get(getDevicePrefs()).equals(trueValue); } @Override - public boolean setGBValue(SharedPreferences.Editor editor, boolean value) { + public boolean setDevicePrefsValue(SharedPreferences.Editor editor, boolean value) { String strValue = value ? trueValue : falseValue; - if (!getter.get(getGBPrefs()).equals(strValue)) { - if (getPrefs().getString(name, autoValue).equals(autoValue)) { + if (!getter.get(getDevicePrefs()).equals(strValue)) { + if (getDevicePrefs().getString(name, autoValue).equals(autoValue)) { return true; } else { editor.putString(name, strValue); @@ -890,13 +883,13 @@ public abstract class Casio2C2DSupport extends CasioSupport { { index = 14; } @Override - public int getGBValue() { - return getPrefs().getInt(name, -1); + public int getDevicePrefsValue() { + return getDevicePrefs().getInt(name, -1); } @Override - public boolean setGBValue(SharedPreferences.Editor editor, int value) { - if (value != getGBValue()) { + public boolean setDevicePrefsValue(SharedPreferences.Editor editor, int value) { + if (value != getDevicePrefsValue()) { editor.putString(name, Integer.toString(value)); } return false; @@ -955,8 +948,8 @@ public abstract class Casio2C2DSupport extends CasioSupport { String[] languages = { "en_US", "es_ES", "fr_FR"," de_DE", "it_IT", "ru_RU" }; @Override - public int getGBValue() { - String value = getPrefs().getString(name, PREF_LANGUAGE_AUTO); + public int getDevicePrefsValue() { + String value = getDevicePrefs().getString(name, PREF_LANGUAGE_AUTO); int number = 0; if (value.equals(PREF_LANGUAGE_AUTO)) { String lang = Locale.getDefault().getLanguage() + "_"; @@ -978,9 +971,9 @@ public abstract class Casio2C2DSupport extends CasioSupport { } @Override - public boolean setGBValue(SharedPreferences.Editor editor, int value) { - if (getGBValue() != value) { - if (getPrefs().getString(name, PREF_LANGUAGE_AUTO).equals(PREF_LANGUAGE_AUTO)) { + public boolean setDevicePrefsValue(SharedPreferences.Editor editor, int value) { + if (getDevicePrefsValue() != value) { + if (getDevicePrefs().getString(name, PREF_LANGUAGE_AUTO).equals(PREF_LANGUAGE_AUTO)) { return true; } else { if (value < languages.length) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/casio/gbx100/SetConfigurationOperation.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/casio/gbx100/SetConfigurationOperation.java index e1659e862..a675b9c68 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/casio/gbx100/SetConfigurationOperation.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/casio/gbx100/SetConfigurationOperation.java @@ -37,7 +37,6 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.casio.Casio2C2DSuppo import nodomain.freeyourgadget.gadgetbridge.service.devices.casio.gbx100.CasioGBX100DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.operations.OperationStatus; import nodomain.freeyourgadget.gadgetbridge.util.BcdUtil; -import nodomain.freeyourgadget.gadgetbridge.util.GBPrefs; import nodomain.freeyourgadget.gadgetbridge.util.Prefs; import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_AUTOLIGHT; @@ -202,9 +201,8 @@ public class SetConfigurationOperation extends AbstractBTLEOperation reminders) { final DeviceCoordinator coordinator = gbDevice.getDeviceCoordinator(); - final GBPrefs prefs = new GBPrefs(new Prefs(GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()))); - int reservedSlots = prefs.getReservedReminderCalendarSlots(gbDevice); + int reservedSlots = GBApplication.getDevicePrefs(gbDevice.getAddress()).getReservedReminderCalendarSlots(gbDevice); LOG.info("On Set Reminders. Reminders: {}, Reserved slots: {}", reminders.size(), reservedSlots); // Send the reminders, skipping the reserved slots for calendar events @@ -2756,8 +2754,7 @@ public abstract class HuamiSupport extends AbstractBTLEDeviceSupport implements } final DeviceCoordinator coordinator = gbDevice.getDeviceCoordinator(); - final GBPrefs prefs = new GBPrefs(new Prefs(GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()))); - int availableSlots = prefs.getReservedReminderCalendarSlots(gbDevice); + int availableSlots = GBApplication.getDevicePrefs(gbDevice.getAddress()).getReservedReminderCalendarSlots(gbDevice); CalendarManager upcomingEvents = new CalendarManager(getContext(), getDevice().getAddress()); List calendarEvents = upcomingEvents.getCalendarEventList(); @@ -3376,8 +3373,7 @@ public abstract class HuamiSupport extends AbstractBTLEDeviceSupport implements } protected HuamiSupport setTimeFormat(TransactionBuilder builder) { - GBPrefs gbPrefs = new GBPrefs(new Prefs(GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()))); - String timeFormat = gbPrefs.getTimeFormat(); + String timeFormat = GBApplication.getDevicePrefs(gbDevice.getAddress()).getTimeFormat(); LOG.info("Setting time format to " + timeFormat); if (timeFormat.equals(DeviceSettingsPreferenceConst.PREF_TIMEFORMAT_24H)) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/zeppos/ZeppOsSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/zeppos/ZeppOsSupport.java index ac9a8ff3a..11ab05e64 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/zeppos/ZeppOsSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/zeppos/ZeppOsSupport.java @@ -1047,8 +1047,7 @@ public class ZeppOsSupport extends HuamiSupport implements ZeppOsFileTransferSer @Override protected ZeppOsSupport setTimeFormat(final TransactionBuilder builder) { - final GBPrefs gbPrefs = new GBPrefs(getDevicePrefs()); - final String timeFormat = gbPrefs.getTimeFormat(); + final String timeFormat = getDevicePrefs().getTimeFormat(); // FIXME: This "works", but the band does not update when the setting changes, so we don't do anything //noinspection ConstantValue diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/makibeshr3/MakibesHR3DeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/makibeshr3/MakibesHR3DeviceSupport.java index 0ea67e376..1f5199d0f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/makibeshr3/MakibesHR3DeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/makibeshr3/MakibesHR3DeviceSupport.java @@ -76,6 +76,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.btle.AbstractBTLEDeviceSuppo import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder; import nodomain.freeyourgadget.gadgetbridge.service.serial.GBDeviceProtocol; import nodomain.freeyourgadget.gadgetbridge.util.GB; +import nodomain.freeyourgadget.gadgetbridge.util.preferences.DevicePrefs; public class MakibesHR3DeviceSupport extends AbstractBTLEDeviceSupport implements SharedPreferences.OnSharedPreferenceChangeListener { @@ -430,6 +431,7 @@ public class MakibesHR3DeviceSupport extends AbstractBTLEDeviceSupport implement this.fetch(true); } + @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { LOG.debug(key + " changed"); @@ -1000,9 +1002,19 @@ public class MakibesHR3DeviceSupport extends AbstractBTLEDeviceSupport implement return this; } + public byte getTimeMode(SharedPreferences sharedPrefs) { + String timeMode = new DevicePrefs(sharedPrefs).getTimeFormat(); + + if (timeMode.equals(getContext().getString(R.string.p_timeformat_24h))) { + return MakibesHR3Constants.ARG_SET_TIMEMODE_24H; + } else { + return MakibesHR3Constants.ARG_SET_TIMEMODE_12H; + } + } + private MakibesHR3DeviceSupport setTimeMode(TransactionBuilder transactionBuilder, SharedPreferences sharedPreferences) { return this.setTimeMode(transactionBuilder, - MakibesHR3Coordinator.getTimeMode(sharedPreferences)); + getTimeMode(sharedPreferences)); } private MakibesHR3DeviceSupport setEnableRealTimeHeartRate(TransactionBuilder transaction, boolean enable) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/withingssteelhr/WithingsSteelHRDeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/withingssteelhr/WithingsSteelHRDeviceSupport.java index 3bd6f451a..cffa53d75 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/withingssteelhr/WithingsSteelHRDeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/withingssteelhr/WithingsSteelHRDeviceSupport.java @@ -107,7 +107,6 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.withingssteelhr.comm import nodomain.freeyourgadget.gadgetbridge.service.devices.withingssteelhr.communication.notification.NotificationProvider; import nodomain.freeyourgadget.gadgetbridge.service.devices.withingssteelhr.communication.notification.NotificationSource; import nodomain.freeyourgadget.gadgetbridge.util.GB; -import nodomain.freeyourgadget.gadgetbridge.util.GBPrefs; import nodomain.freeyourgadget.gadgetbridge.util.Prefs; import nodomain.freeyourgadget.gadgetbridge.util.StringUtils; @@ -725,10 +724,7 @@ public class WithingsSteelHRDeviceSupport extends AbstractBTLEDeviceSupport { } private short getTimeMode() { - GBPrefs gbPrefs = new GBPrefs(new Prefs(GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()))); - String tmode = gbPrefs.getTimeFormat(); - - if ("24h".equals(tmode)) { + if ("24h".equals(getDevicePrefs().getTimeFormat())) { return UserUnitConstants.UNIT_24H; } else { return UserUnitConstants.UNIT_12H; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiSystemService.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiSystemService.java index 964407111..a16568b72 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiSystemService.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiSystemService.java @@ -59,7 +59,6 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.xiaomi.XiaomiPrefere import nodomain.freeyourgadget.gadgetbridge.service.devices.xiaomi.XiaomiSupport; import nodomain.freeyourgadget.gadgetbridge.util.CheckSums; import nodomain.freeyourgadget.gadgetbridge.util.GB; -import nodomain.freeyourgadget.gadgetbridge.util.GBPrefs; import nodomain.freeyourgadget.gadgetbridge.util.Prefs; import nodomain.freeyourgadget.gadgetbridge.util.SilentMode; import nodomain.freeyourgadget.gadgetbridge.util.StringUtils; @@ -287,8 +286,7 @@ public class XiaomiSystemService extends AbstractXiaomiService implements Xiaomi final Calendar now = GregorianCalendar.getInstance(); final TimeZone tz = TimeZone.getDefault(); - final GBPrefs gbPrefs = new GBPrefs(GBApplication.getDeviceSpecificSharedPrefs(getSupport().getDevice().getAddress())); - final String timeFormat = gbPrefs.getTimeFormat(); + final String timeFormat = getDevicePrefs().getTimeFormat(); final boolean is24hour = DeviceSettingsPreferenceConst.PREF_TIMEFORMAT_24H.equals(timeFormat); final XiaomiProto.Clock clock = XiaomiProto.Clock.newBuilder() diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/zetime/ZeTimeDeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/zetime/ZeTimeDeviceSupport.java index 8c0189a3b..9be0fd5e2 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/zetime/ZeTimeDeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/zetime/ZeTimeDeviceSupport.java @@ -70,7 +70,6 @@ import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.SetDeviceStateA import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.WaitAction; import nodomain.freeyourgadget.gadgetbridge.util.AlarmUtils; import nodomain.freeyourgadget.gadgetbridge.util.GB; -import nodomain.freeyourgadget.gadgetbridge.util.GBPrefs; import nodomain.freeyourgadget.gadgetbridge.util.Prefs; import nodomain.freeyourgadget.gadgetbridge.util.calendar.CalendarManager; @@ -1692,9 +1691,7 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { } private void setTimeFormate(TransactionBuilder builder) { - GBPrefs gbPrefs = new GBPrefs(new Prefs(GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()))); - - String timeFormat = gbPrefs.getTimeFormat(); + String timeFormat = getDevicePrefs().getTimeFormat(); int type = 1; if ("am/pm".equals(timeFormat)) { type = 2; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/serial/GBDeviceProtocol.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/serial/GBDeviceProtocol.java index 7db6a50af..e7438c8bd 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/serial/GBDeviceProtocol.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/serial/GBDeviceProtocol.java @@ -32,7 +32,7 @@ import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec; import nodomain.freeyourgadget.gadgetbridge.model.Reminder; import nodomain.freeyourgadget.gadgetbridge.model.WeatherSpec; import nodomain.freeyourgadget.gadgetbridge.model.WorldClock; -import nodomain.freeyourgadget.gadgetbridge.util.Prefs; +import nodomain.freeyourgadget.gadgetbridge.util.preferences.DevicePrefs; public abstract class GBDeviceProtocol { @@ -181,7 +181,7 @@ public abstract class GBDeviceProtocol { return null; } - protected Prefs getDevicePrefs() { - return new Prefs(GBApplication.getDeviceSpecificSharedPrefs(getDevice().getAddress())); + protected DevicePrefs getDevicePrefs() { + return GBApplication.getDevicePrefs(getDevice().getAddress()); } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/GBPrefs.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/GBPrefs.java index 71b7610a8..dea022121 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/GBPrefs.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/GBPrefs.java @@ -1,6 +1,6 @@ /* Copyright (C) 2016-2024 Andreas Shimokawa, Anemograph, Carsten Pfeiffer, Daniel Dakhno, Daniele Gobbetti, Davis Mosenkovs, Dikay900, Felix Konstantin - Maurer, José Rebelo, Petr Vaněk, Johannes Krude + Maurer, José Rebelo, Petr Vaněk This file is part of Gadgetbridge. @@ -25,7 +25,6 @@ import android.content.pm.PackageManager; import android.location.Criteria; import android.location.Location; import android.location.LocationManager; -import android.text.format.DateFormat; import android.util.Log; import androidx.core.app.ActivityCompat; @@ -33,7 +32,6 @@ import androidx.core.app.ActivityCompat; import java.text.ParseException; import java.time.LocalTime; import java.util.Date; -import java.util.Locale; import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.R; @@ -117,42 +115,6 @@ public class GBPrefs extends Prefs { return 0; } - public String getTimeFormat() { - String timeFormat = getString(DeviceSettingsPreferenceConst.PREF_TIMEFORMAT, DeviceSettingsPreferenceConst.PREF_TIMEFORMAT_AUTO); - if (DeviceSettingsPreferenceConst.PREF_TIMEFORMAT_AUTO.equals(timeFormat)) { - if (DateFormat.is24HourFormat(GBApplication.getContext())) { - timeFormat = DeviceSettingsPreferenceConst.PREF_TIMEFORMAT_24H; - } else { - timeFormat = DeviceSettingsPreferenceConst.PREF_TIMEFORMAT_12H; - } - } - - return timeFormat; - } - - public String getDateFormatDayMonthOrder() { - String dateFormat = getString(DeviceSettingsPreferenceConst.PREF_DATEFORMAT, DeviceSettingsPreferenceConst.PREF_DATEFORMAT_AUTO); - if (DeviceSettingsPreferenceConst.PREF_TIMEFORMAT_AUTO.equals(dateFormat)) { - String pattern = DateFormat.getBestDateTimePattern(Locale.getDefault(), "dM"); - boolean quoted = false; - for (char c: pattern.toCharArray()) { - if (c == '\'') { - quoted = !quoted; - continue; - } - if (quoted) - continue; - if (c == 'd') - return DeviceSettingsPreferenceConst.PREF_DATEFORMAT_DAY_MONTH; - if (c == 'M' || c == 'L') - return DeviceSettingsPreferenceConst.PREF_DATEFORMAT_MONTH_DAY; - } - return DeviceSettingsPreferenceConst.PREF_DATEFORMAT_DAY_MONTH; - } - - return dateFormat; - } - public float[] getLongLat(Context context) { float latitude = getFloat("location_latitude", 0); float longitude = getFloat("location_longitude", 0); @@ -187,14 +149,6 @@ public class GBPrefs extends Prefs { return getLocalTime("notification_times_end", "22:00"); } - public int getReservedReminderCalendarSlots(GBDevice gbDevice) { - if (!gbDevice.getDeviceCoordinator().getReserveReminderSlotsForCalendar()) - return 0; - if (!getBoolean(DeviceSettingsPreferenceConst.PREF_SYNC_CALENDAR, false)) - return 0; - return getInt(DeviceSettingsPreferenceConst.PREF_RESERVE_REMINDERS_CALENDAR, 9); - } - public boolean isMetricUnits() { return getString(SettingsActivity.PREF_MEASUREMENT_SYSTEM, "metric").equals("metric"); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/preferences/DevicePrefs.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/preferences/DevicePrefs.java index a66b93fd1..1cbc5d05f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/preferences/DevicePrefs.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/preferences/DevicePrefs.java @@ -1,11 +1,35 @@ +/* Copyright (C) 2016-2024 Andreas Shimokawa, Anemograph, Carsten Pfeiffer, + Daniel Dakhno, Daniele Gobbetti, Davis Mosenkovs, Dikay900, Felix Konstantin + Maurer, José Rebelo, Petr Vaněk, Johannes Krude + + This file is part of Gadgetbridge. + + Gadgetbridge is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Gadgetbridge is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . */ package nodomain.freeyourgadget.gadgetbridge.util.preferences; +import java.util.Locale; + import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.*; import android.content.SharedPreferences; +import android.text.format.DateFormat; +import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.model.BatteryConfig; import nodomain.freeyourgadget.gadgetbridge.util.Prefs; +import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; +import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst; public class DevicePrefs extends Prefs { public DevicePrefs(final SharedPreferences preferences) { @@ -43,4 +67,49 @@ public class DevicePrefs extends Prefs { public boolean getFetchUnknownFiles() { return getBoolean("fetch_unknown_files", false); } + + public String getTimeFormat() { + String timeFormat = getString(DeviceSettingsPreferenceConst.PREF_TIMEFORMAT, DeviceSettingsPreferenceConst.PREF_TIMEFORMAT_AUTO); + if (DeviceSettingsPreferenceConst.PREF_TIMEFORMAT_AUTO.equals(timeFormat)) { + if (DateFormat.is24HourFormat(GBApplication.getContext())) { + timeFormat = DeviceSettingsPreferenceConst.PREF_TIMEFORMAT_24H; + } else { + timeFormat = DeviceSettingsPreferenceConst.PREF_TIMEFORMAT_12H; + } + } + + return timeFormat; + } + + public String getDateFormatDayMonthOrder() { + String dateFormat = getString(DeviceSettingsPreferenceConst.PREF_DATEFORMAT, DeviceSettingsPreferenceConst.PREF_DATEFORMAT_AUTO); + if (DeviceSettingsPreferenceConst.PREF_TIMEFORMAT_AUTO.equals(dateFormat)) { + String pattern = DateFormat.getBestDateTimePattern(Locale.getDefault(), "dM"); + boolean quoted = false; + for (char c: pattern.toCharArray()) { + if (c == '\'') { + quoted = !quoted; + continue; + } + if (quoted) + continue; + if (c == 'd') + return DeviceSettingsPreferenceConst.PREF_DATEFORMAT_DAY_MONTH; + if (c == 'M' || c == 'L') + return DeviceSettingsPreferenceConst.PREF_DATEFORMAT_MONTH_DAY; + } + return DeviceSettingsPreferenceConst.PREF_DATEFORMAT_DAY_MONTH; + } + + return dateFormat; + } + + public int getReservedReminderCalendarSlots(GBDevice gbDevice) { + if (!gbDevice.getDeviceCoordinator().getReserveReminderSlotsForCalendar()) + return 0; + if (!getBoolean(DeviceSettingsPreferenceConst.PREF_SYNC_CALENDAR, false)) + return 0; + return getInt(DeviceSettingsPreferenceConst.PREF_RESERVE_REMINDERS_CALENDAR, 9); + } + }