diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e21293ebb..69c08864b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -190,10 +190,6 @@ android:name=".devices.pebble.PebbleSettingsActivity" android:label="@string/pref_title_pebble_settings" android:parentActivityName=".activities.SettingsActivity" /> - mIDSenderLookup = new LimitedQueue<>(16); private static GBPrefs prefs; @@ -1614,6 +1614,72 @@ public class GBApplication extends Application { } } + if (oldVersion < 35) { + // Migrate ZeTime preferences to device-specific + try (DBHandler db = acquireDB()) { + final DaoSession daoSession = db.getDaoSession(); + final List activeDevices = DBHelper.getActiveDevices(daoSession); + + for (Device dbDevice : activeDevices) { + final DeviceType deviceType = DeviceType.fromName(dbDevice.getTypeName()); + if (deviceType == DeviceType.ZETIME) { + final SharedPreferences deviceSharedPrefs = GBApplication.getDeviceSpecificSharedPrefs(dbDevice.getIdentifier()); + final SharedPreferences.Editor deviceSharedPrefsEdit = deviceSharedPrefs.edit(); + + // Vibration Profiles + deviceSharedPrefsEdit.putString("zetime_vibration_profile_sms", sharedPrefs.getString("zetime_vibration_profile_sms", "2")); + deviceSharedPrefsEdit.putString("zetime_vibration_profile_incoming_call", sharedPrefs.getString("zetime_vibration_profile_incoming_call", "13")); + deviceSharedPrefsEdit.putString("zetime_vibration_profile_missed_call", sharedPrefs.getString("zetime_vibration_profile_missed_call", "12")); + deviceSharedPrefsEdit.putString("zetime_vibration_profile_generic_email", sharedPrefs.getString("zetime_vibration_profile_generic_email", "12")); + deviceSharedPrefsEdit.putString("zetime_vibration_profile_generic_social", sharedPrefs.getString("zetime_vibration_profile_generic_social", "12")); + deviceSharedPrefsEdit.putString("zetime_alarm_signaling", sharedPrefs.getString("zetime_alarm_signaling", "11")); + deviceSharedPrefsEdit.putString("zetime_vibration_profile_calendar", sharedPrefs.getString("zetime_vibration_profile_calendar", "12")); + deviceSharedPrefsEdit.putString("zetime_vibration_profile_inactivity", sharedPrefs.getString("zetime_vibration_profile_inactivity", "12")); + deviceSharedPrefsEdit.putString("zetime_vibration_profile_lowpower", sharedPrefs.getString("zetime_vibration_profile_lowpower", "4")); + deviceSharedPrefsEdit.putString("zetime_vibration_profile_antiloss", sharedPrefs.getString("zetime_vibration_profile_antiloss", "13")); + // DND + deviceSharedPrefsEdit.putString("do_not_disturb_no_auto", sharedPrefs.getString("do_not_disturb", "off")); + deviceSharedPrefsEdit.putString("do_not_disturb_no_auto_start", sharedPrefs.getString("do_not_disturb_start", "22:00")); + deviceSharedPrefsEdit.putString("do_not_disturb_no_auto_end", sharedPrefs.getString("do_not_disturb_end", "07:00")); + // HR + deviceSharedPrefsEdit.putString("heartrate_measurement_interval", sharedPrefs.getString("heartrate_measurement_interval", "0")); + deviceSharedPrefsEdit.putBoolean("zetime_heartrate_alarm_enable", sharedPrefs.getBoolean("zetime_heartrate_alarm_enable", false)); + deviceSharedPrefsEdit.putString("alarm_max_heart_rate", sharedPrefs.getString("alarm_max_heart_rate", "180")); + deviceSharedPrefsEdit.putString("alarm_min_heart_rate", sharedPrefs.getString("alarm_min_heart_rate", "60")); + // Inactivity warnings + deviceSharedPrefsEdit.putBoolean("inactivity_warnings_enable", sharedPrefs.getBoolean("inactivity_warnings_enable", false)); + deviceSharedPrefsEdit.putString("inactivity_warnings_threshold", sharedPrefs.getString("inactivity_warnings_threshold", "60")); + deviceSharedPrefsEdit.putString("inactivity_warnings_start", sharedPrefs.getString("inactivity_warnings_start", "06:00")); + deviceSharedPrefsEdit.putString("inactivity_warnings_end", sharedPrefs.getString("inactivity_warnings_end", "22:00")); + deviceSharedPrefsEdit.putBoolean("inactivity_warnings_mo", sharedPrefs.getBoolean("inactivity_warnings_mo", false)); + deviceSharedPrefsEdit.putBoolean("inactivity_warnings_tu", sharedPrefs.getBoolean("inactivity_warnings_tu", false)); + deviceSharedPrefsEdit.putBoolean("inactivity_warnings_we", sharedPrefs.getBoolean("inactivity_warnings_we", false)); + deviceSharedPrefsEdit.putBoolean("inactivity_warnings_th", sharedPrefs.getBoolean("inactivity_warnings_th", false)); + deviceSharedPrefsEdit.putBoolean("inactivity_warnings_fr", sharedPrefs.getBoolean("inactivity_warnings_fr", false)); + deviceSharedPrefsEdit.putBoolean("inactivity_warnings_sa", sharedPrefs.getBoolean("inactivity_warnings_sa", false)); + deviceSharedPrefsEdit.putBoolean("inactivity_warnings_su", sharedPrefs.getBoolean("inactivity_warnings_su", false)); + // Developer settings + deviceSharedPrefsEdit.putBoolean("keep_activity_data_on_device", sharedPrefs.getBoolean("zetime_dont_del_actdata", false)); + // Activity info + deviceSharedPrefsEdit.putBoolean("zetime_activity_tracking", sharedPrefs.getBoolean("zetime_activity_tracking", false)); + deviceSharedPrefsEdit.putString("zetime_calories_type", sharedPrefs.getString("zetime_calories_type", "0")); + // Display + deviceSharedPrefsEdit.putString("zetime_screentime", sharedPrefs.getString("zetime_screentime", "30")); + deviceSharedPrefsEdit.putBoolean("zetime_handmove_display", sharedPrefs.getBoolean("zetime_handmove_display", false)); + deviceSharedPrefsEdit.putString("zetime_analog_mode", sharedPrefs.getString("zetime_analog_mode", "0")); + // Date format + deviceSharedPrefsEdit.putString("zetime_date_format", sharedPrefs.getString("zetime_date_format", "2")); + // Unused, but migrate it anyway + deviceSharedPrefsEdit.putString("zetime_shock_strength", sharedPrefs.getString("zetime_shock_strength", "255")); + + deviceSharedPrefsEdit.apply(); + } + } + } catch (Exception e) { + Log.w(TAG, "error acquiring DB lock"); + } + } + editor.putString(PREFS_VERSION, Integer.toString(CURRENT_PREFS_VERSION)); editor.apply(); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractPreferenceFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractPreferenceFragment.java index 00968ab69..d35aeb9e3 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractPreferenceFragment.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractPreferenceFragment.java @@ -231,7 +231,13 @@ public abstract class AbstractPreferenceFragment extends PreferenceFragmentCompa summary = prefs.getString(key, preference.getSummary() != null ? preference.getSummary().toString() : ""); } - preference.setSummary(summary); + if (preference.getSummaryProvider() != null) { + try { + preference.setSummary(summary); + } catch (final IllegalStateException e) { + LOG.error("Failed to set preference summary for {}", key, e); + } + } } AbstractPreferenceFragment.this.onSharedPreferenceChanged(preference); 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 8f9e98802..f0d4d3f47 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java @@ -67,7 +67,6 @@ import nodomain.freeyourgadget.gadgetbridge.activities.charts.ChartsPreferencesA import nodomain.freeyourgadget.gadgetbridge.activities.discovery.DiscoveryPairingPreferenceActivity; import nodomain.freeyourgadget.gadgetbridge.database.PeriodicExporter; import nodomain.freeyourgadget.gadgetbridge.devices.pebble.PebbleSettingsActivity; -import nodomain.freeyourgadget.gadgetbridge.devices.zetime.ZeTimePreferenceActivity; import nodomain.freeyourgadget.gadgetbridge.externalevents.TimeChangeReceiver; import nodomain.freeyourgadget.gadgetbridge.model.Weather; import nodomain.freeyourgadget.gadgetbridge.util.AndroidUtils; @@ -136,15 +135,6 @@ public class SettingsActivity extends AbstractSettingsActivityV2 { }); } - pref = findPreference("pref_key_zetime"); - if (pref != null) { - pref.setOnPreferenceClickListener(preference -> { - Intent enableIntent = new Intent(requireContext(), ZeTimePreferenceActivity.class); - startActivity(enableIntent); - return true; - }); - } - pref = findPreference("datetime_synconconnect"); if (pref != null) { pref.setOnPreferenceChangeListener((preference, newVal) -> { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsCustomizer.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsCustomizer.java index 20610ffbc..a64abb017 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsCustomizer.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsCustomizer.java @@ -38,10 +38,12 @@ public interface DeviceSpecificSettingsCustomizer extends Parcelable { /** * Customize the settings on the {@link DeviceSpecificSettingsFragment}. + * * @param handler the {@link DeviceSpecificSettingsHandler} - * @param prefs the {@link android.content.SharedPreferences} + * @param prefs the {@link android.content.SharedPreferences} + * @param rootKey the root key of the current screen */ - void customizeSettings(final DeviceSpecificSettingsHandler handler, Prefs prefs); + void customizeSettings(final DeviceSpecificSettingsHandler handler, Prefs prefs, final String rootKey); /** * Keys of preferences which should print its values as a summary below the preference name. 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 5d289b8db..8d9125a50 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 @@ -192,7 +192,7 @@ public class DeviceSpecificSettingsFragment extends AbstractPreferenceFragment i } } - setChangeListener(); + setChangeListener(rootKey); } private void addDynamicSettings(final String rootKey) { @@ -334,7 +334,7 @@ public class DeviceSpecificSettingsFragment extends AbstractPreferenceFragment i }); } - private void setChangeListener() { + private void setChangeListener(final String rootKey) { final DeviceCoordinator coordinator = device.getDeviceCoordinator(); final Prefs prefs = new Prefs(getPreferenceManager().getSharedPreferences()); @@ -1255,7 +1255,7 @@ public class DeviceSpecificSettingsFragment extends AbstractPreferenceFragment i } if (deviceSpecificSettingsCustomizer != null) { - deviceSpecificSettingsCustomizer.customizeSettings(this, prefs); + deviceSpecificSettingsCustomizer.customizeSettings(this, prefs, rootKey); } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/banglejs/BangleJSSettingsCustomizer.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/banglejs/BangleJSSettingsCustomizer.java index 8c5fef9b8..8937e7077 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/banglejs/BangleJSSettingsCustomizer.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/banglejs/BangleJSSettingsCustomizer.java @@ -72,7 +72,7 @@ public class BangleJSSettingsCustomizer implements DeviceSpecificSettingsCustomi } @Override - public void customizeSettings(final DeviceSpecificSettingsHandler handler, final Prefs prefs) { + public void customizeSettings(final DeviceSpecificSettingsHandler handler, final Prefs prefs, final String rootKey) { final Preference fullSyncPref = handler.findPreference(PREF_BANGLEJS_ACTIVITY_FULL_SYNC_TRIGGER); if (fullSyncPref != null) { fullSyncPref.setOnPreferenceClickListener(preference -> { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/cmfwatchpro/CmfWatchProSettingsCustomizer.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/cmfwatchpro/CmfWatchProSettingsCustomizer.java index c83df700c..a6b9b0e47 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/cmfwatchpro/CmfWatchProSettingsCustomizer.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/cmfwatchpro/CmfWatchProSettingsCustomizer.java @@ -35,7 +35,7 @@ public class CmfWatchProSettingsCustomizer implements DeviceSpecificSettingsCust } @Override - public void customizeSettings(final DeviceSpecificSettingsHandler handler, final Prefs prefs) { + public void customizeSettings(final DeviceSpecificSettingsHandler handler, final Prefs prefs, final String rootKey) { final String[] prefsToHide = new String[]{ "pref_key_header_heartrate_sleep", DeviceSettingsPreferenceConst.PREF_HEARTRATE_USE_FOR_SLEEP_DETECTION, diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/galaxy_buds/GalaxyBudsSettingsCustomizer.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/galaxy_buds/GalaxyBudsSettingsCustomizer.java index 12f213e05..82d90c7e3 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/galaxy_buds/GalaxyBudsSettingsCustomizer.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/galaxy_buds/GalaxyBudsSettingsCustomizer.java @@ -51,7 +51,7 @@ public class GalaxyBudsSettingsCustomizer implements DeviceSpecificSettingsCusto } @Override - public void customizeSettings(final DeviceSpecificSettingsHandler handler, Prefs prefs) { + public void customizeSettings(final DeviceSpecificSettingsHandler handler, Prefs prefs, final String rootKey) { final Preference pref_galaxy_buds_pro_balance = handler.findPreference(PREF_GALAXY_BUDS_PRO_BALANCE); if (pref_galaxy_buds_pro_balance != null) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/garmin/GarminSettingsCustomizer.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/garmin/GarminSettingsCustomizer.java index 78e426b2f..640bd3348 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/garmin/GarminSettingsCustomizer.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/garmin/GarminSettingsCustomizer.java @@ -49,7 +49,7 @@ public class GarminSettingsCustomizer implements DeviceSpecificSettingsCustomize } @Override - public void customizeSettings(final DeviceSpecificSettingsHandler handler, final Prefs prefs) { + public void customizeSettings(final DeviceSpecificSettingsHandler handler, final Prefs prefs, final String rootKey) { final Preference realtimeSettings = handler.findPreference(GarminPreferences.PREF_GARMIN_REALTIME_SETTINGS); if (realtimeSettings != null) { realtimeSettings.setOnPreferenceClickListener(preference -> { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiSettingsCustomizer.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiSettingsCustomizer.java index 57015cfd4..dd8dfe5c1 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiSettingsCustomizer.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiSettingsCustomizer.java @@ -51,7 +51,7 @@ public class HuamiSettingsCustomizer implements DeviceSpecificSettingsCustomizer } @Override - public void customizeSettings(final DeviceSpecificSettingsHandler handler, final Prefs prefs) { + public void customizeSettings(final DeviceSpecificSettingsHandler handler, final Prefs prefs, final String rootKey) { final Preference hrAlertActivePref = handler.findPreference(DeviceSettingsPreferenceConst.PREF_HEARTRATE_ALERT_ACTIVE_HIGH_THRESHOLD); if (hrAlertActivePref != null) { hrAlertActivePref.setVisible(false); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppos/ZeppOsSettingsCustomizer.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppos/ZeppOsSettingsCustomizer.java index acbbfee23..df62ab7db 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppos/ZeppOsSettingsCustomizer.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppos/ZeppOsSettingsCustomizer.java @@ -59,8 +59,8 @@ public class ZeppOsSettingsCustomizer extends HuamiSettingsCustomizer { } @Override - public void customizeSettings(final DeviceSpecificSettingsHandler handler, final Prefs prefs) { - super.customizeSettings(handler, prefs); + public void customizeSettings(final DeviceSpecificSettingsHandler handler, final Prefs prefs, final String rootKey) { + super.customizeSettings(handler, prefs, rootKey); // These are not reported by the normal configs populateOrHideListPreference(HuamiConst.PREF_DISPLAY_ITEMS_SORTABLE, handler, prefs); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiSettingsCustomizer.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiSettingsCustomizer.java index 6caf85af3..ae2fbe205 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiSettingsCustomizer.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiSettingsCustomizer.java @@ -40,7 +40,6 @@ import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.Dev import static nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants.PREF_HUAWEI_DEBUG_REQUEST; import static nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants.PREF_HUAWEI_TRUSLEEP; import static nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants.PREF_HUAWEI_WORKMODE; -import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI2_ROTATE_WRIST_TO_SWITCH_INFO; public class HuaweiSettingsCustomizer implements DeviceSpecificSettingsCustomizer { final GBDevice device; @@ -93,7 +92,7 @@ public class HuaweiSettingsCustomizer implements DeviceSpecificSettingsCustomize } @Override - public void customizeSettings(final DeviceSpecificSettingsHandler handler, Prefs prefs) { + public void customizeSettings(final DeviceSpecificSettingsHandler handler, Prefs prefs, final String rootKey) { handler.addPreferenceHandlerFor(PREF_FORCE_OPTIONS); handler.addPreferenceHandlerFor(PREF_FORCE_ENABLE_SMART_ALARM); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBandSettingsCustomizer.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBandSettingsCustomizer.java index 556bde9a4..213b948c6 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBandSettingsCustomizer.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBandSettingsCustomizer.java @@ -45,7 +45,7 @@ public class MiBandSettingsCustomizer implements DeviceSpecificSettingsCustomize } @Override - public void customizeSettings(final DeviceSpecificSettingsHandler handler, final Prefs prefs) { + public void customizeSettings(final DeviceSpecificSettingsHandler handler, final Prefs prefs, final String rootKey) { for (final NotificationType type : NotificationType.values()) { String countPrefKey = "mi_vibration_count_" + type.getGenericType(); handler.setInputTypeFor(countPrefKey, InputType.TYPE_CLASS_NUMBER); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/nothing/EarSettingsCustomizer.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/nothing/EarSettingsCustomizer.java index 9deb19e96..0d5564b58 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/nothing/EarSettingsCustomizer.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/nothing/EarSettingsCustomizer.java @@ -49,7 +49,7 @@ public class EarSettingsCustomizer implements DeviceSpecificSettingsCustomizer { } @Override - public void customizeSettings(final DeviceSpecificSettingsHandler handler, final Prefs prefs) { + public void customizeSettings(final DeviceSpecificSettingsHandler handler, final Prefs prefs, final String rootKey) { final AbstractEarCoordinator earCoordinator = (AbstractEarCoordinator) handler.getDevice().getDeviceCoordinator(); if (!earCoordinator.supportsLightAncAndTransparency()) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridSettingsCustomizer.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridSettingsCustomizer.java index eb3b0f0d6..1ebc04d7c 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridSettingsCustomizer.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridSettingsCustomizer.java @@ -20,7 +20,7 @@ public class QHybridSettingsCustomizer implements DeviceSpecificSettingsCustomiz } @Override - public void customizeSettings(final DeviceSpecificSettingsHandler handler, final Prefs prefs) { + public void customizeSettings(final DeviceSpecificSettingsHandler handler, final Prefs prefs, final String rootKey) { final Preference pref = handler.findPreference("pref_key_qhybrid_legacy"); if (pref != null) { pref.setOnPreferenceClickListener(preference -> { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/SonyHeadphonesSettingsCustomizer.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/SonyHeadphonesSettingsCustomizer.java index 6c480da47..20d072c3b 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/SonyHeadphonesSettingsCustomizer.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/headphones/SonyHeadphonesSettingsCustomizer.java @@ -55,7 +55,6 @@ import java.util.Set; import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettingsCustomizer; import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettingsHandler; -import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.sony.headphones.prefs.AmbientSoundControl; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; @@ -118,7 +117,7 @@ public class SonyHeadphonesSettingsCustomizer implements DeviceSpecificSettingsC } @Override - public void customizeSettings(final DeviceSpecificSettingsHandler handler, Prefs prefs) { + public void customizeSettings(final DeviceSpecificSettingsHandler handler, Prefs prefs, final String rootKey) { final SonyHeadphonesCoordinator coordinator = (SonyHeadphonesCoordinator) device.getDeviceCoordinator(); // Only enable the focus on voice check and voice level slider if the ambient sound control mode is ambient sound diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/wena3/SonyWena3SettingsCustomizer.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/wena3/SonyWena3SettingsCustomizer.java index 180c6ea20..ba9394e97 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/wena3/SonyWena3SettingsCustomizer.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/wena3/SonyWena3SettingsCustomizer.java @@ -29,7 +29,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.Prefs; public class SonyWena3SettingsCustomizer implements DeviceSpecificSettingsCustomizer { @Override - public void customizeSettings(DeviceSpecificSettingsHandler handler, Prefs prefs) { + public void customizeSettings(DeviceSpecificSettingsHandler handler, Prefs prefs, final String rootKey) { handler.addPreferenceHandlerFor(SonyWena3SettingKeys.RICH_DESIGN_MODE); handler.addPreferenceHandlerFor(SonyWena3SettingKeys.LARGE_FONT_SIZE); handler.addPreferenceHandlerFor(SonyWena3SettingKeys.WEATHER_IN_STATUSBAR); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/soundcore/motion300/SoundcoreMotion300SettingsCustomizer.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/soundcore/motion300/SoundcoreMotion300SettingsCustomizer.java index da94cba17..799c636b6 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/soundcore/motion300/SoundcoreMotion300SettingsCustomizer.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/soundcore/motion300/SoundcoreMotion300SettingsCustomizer.java @@ -63,7 +63,7 @@ public class SoundcoreMotion300SettingsCustomizer implements DeviceSpecificSetti } @Override - public void customizeSettings(final DeviceSpecificSettingsHandler handler, final Prefs prefs) { + public void customizeSettings(final DeviceSpecificSettingsHandler handler, final Prefs prefs, final String rootKey) { ListPreference equalizerDirection = handler.findPreference(PREF_SOUNDCORE_EQUALIZER_DIRECTION); if (equalizerDirection != null) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/test/TestDeviceSpecificSettingsCustomizer.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/test/TestDeviceSpecificSettingsCustomizer.java index c17d59300..d6335013d 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/test/TestDeviceSpecificSettingsCustomizer.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/test/TestDeviceSpecificSettingsCustomizer.java @@ -37,7 +37,7 @@ public class TestDeviceSpecificSettingsCustomizer implements DeviceSpecificSetti } @Override - public void customizeSettings(final DeviceSpecificSettingsHandler handler, final Prefs prefs) { + public void customizeSettings(final DeviceSpecificSettingsHandler handler, final Prefs prefs, final String rootKey) { final Preference pref = handler.findPreference(TestDeviceConst.PREF_TEST_FEATURES); if (pref == null) { return; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/xiaomi/XiaomiSettingsCustomizer.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/xiaomi/XiaomiSettingsCustomizer.java index 83b63542d..8ba3acc26 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/xiaomi/XiaomiSettingsCustomizer.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/xiaomi/XiaomiSettingsCustomizer.java @@ -39,7 +39,7 @@ public class XiaomiSettingsCustomizer implements DeviceSpecificSettingsCustomize } @Override - public void customizeSettings(final DeviceSpecificSettingsHandler handler, final Prefs prefs) { + public void customizeSettings(final DeviceSpecificSettingsHandler handler, final Prefs prefs, final String rootKey) { final Preference activityMonitoringPref = handler.findPreference(DeviceSettingsPreferenceConst.PREF_HEARTRATE_ACTIVITY_MONITORING); if (activityMonitoringPref != null) { activityMonitoringPref.setVisible(false); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimeConstants.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimeConstants.java index a4db9b95a..af97b084b 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimeConstants.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimeConstants.java @@ -152,11 +152,5 @@ public class ZeTimeConstants { public static final String PREF_LOW_POWER_SIGNALING = "zetime_vibration_profile_lowpower"; public static final String PREF_ANTI_LOSS_SIGNALING = "zetime_vibration_profile_antiloss"; - public static final String PREF_USER_SLEEP_GOAL = "activity_user_sleep_duration"; - public static final String PREF_USER_CALORIES_GOAL = "activity_user_calories_burnt"; - public static final String PREF_USER_DISTANCE_GOAL = "activity_user_distance_meters"; - public static final String PREF_USER_ACTIVETIME_GOAL = "activity_user_activetime_minutes"; - public static final String PREF_SHOCK_STRENGTH = "zetime_shock_strength"; - } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimeCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimeCoordinator.java index 8b9fc4a92..32c5ab135 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimeCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimeCoordinator.java @@ -17,55 +17,34 @@ along with this program. If not, see . */ package nodomain.freeyourgadget.gadgetbridge.devices.zetime; -import android.app.Activity; -import android.bluetooth.le.ScanFilter; -import android.content.Context; -import android.net.Uri; - import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import java.util.Collection; +import java.util.Arrays; +import java.util.List; import java.util.regex.Pattern; import nodomain.freeyourgadget.gadgetbridge.R; +import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettings; +import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettingsCustomizer; +import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettingsScreen; +import nodomain.freeyourgadget.gadgetbridge.capabilities.HeartRateCapability; import nodomain.freeyourgadget.gadgetbridge.devices.AbstractBLEDeviceCoordinator; -import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider; import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession; import nodomain.freeyourgadget.gadgetbridge.entities.Device; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.zetime.ZeTimeDeviceSupport; - public class ZeTimeCoordinator extends AbstractBLEDeviceCoordinator { - @NonNull - @Override - public Collection createBLEScanFilters() { - return super.createBLEScanFilters(); - } - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile("ZeTime.*"); } - @Nullable - @Override - public Class getPairingActivity() { - return null; - } @Override - public boolean supportsScreenshots(final GBDevice device) { - return false; - } - - @Override - public int getAlarmSlotCount(GBDevice device) { + public int getAlarmSlotCount(final GBDevice device) { return 3; // FIXME - check the real value } @@ -79,11 +58,6 @@ public class ZeTimeCoordinator extends AbstractBLEDeviceCoordinator { return true; } - @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - return null; - } - @Override public String getManufacturer() { return "MyKronoz"; @@ -94,11 +68,6 @@ public class ZeTimeCoordinator extends AbstractBLEDeviceCoordinator { return true; } - @Override - public Class getAppsManagementActivity() { - return null; - } - @Override public boolean supportsHeartRateMeasurement(GBDevice device) { return true; @@ -109,16 +78,6 @@ public class ZeTimeCoordinator extends AbstractBLEDeviceCoordinator { return true; } - @Override - public boolean supportsAppsManagement(final GBDevice device) { - return false; - } - - @Override - public boolean supportsCalendarEvents() { - return false; - } - @Override public SampleProvider getSampleProvider(GBDevice device, DaoSession session) { return new ZeTimeSampleProvider(device, session); @@ -145,16 +104,85 @@ public class ZeTimeCoordinator extends AbstractBLEDeviceCoordinator { } @Override - public boolean supportsUnicodeEmojis() { return true; } + public boolean supportsUnicodeEmojis() { + return true; + } @Override - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_zetime, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_transliteration + public DeviceSpecificSettings getDeviceSpecificSettings(final GBDevice device) { + final DeviceSpecificSettings deviceSpecificSettings = new DeviceSpecificSettings(); + + final List generic = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.GENERIC); + generic.add(R.xml.devicesettings_wearlocation); + + final List datetime = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DATE_TIME); + datetime.add(R.xml.devicesettings_timeformat); + datetime.add(R.xml.devicesettings_zetime_date_format); + + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_zetime_display); + + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_zetime_health); + + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALLS_AND_NOTIFICATIONS); + notifications.add(R.xml.devicesettings_donotdisturb_no_auto); + notifications.add(R.xml.devicesettings_zetime_vibrationpatterns); + notifications.add(R.xml.devicesettings_transliteration); + + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + + final List activityInfo = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.ACTIVITY_INFO); + activityInfo.add(R.xml.devicesettings_zetime_activity_info); + + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_keep_activity_data_on_device); + + return deviceSpecificSettings; + } + + @Override + public DeviceSpecificSettingsCustomizer getDeviceSpecificSettingsCustomizer(final GBDevice device) { + return new ZeTimeSettingsCustomizer(device); + } + + @Override + public List getHeartRateMeasurementIntervals() { + return Arrays.asList( + HeartRateCapability.MeasurementInterval.OFF, + HeartRateCapability.MeasurementInterval.MINUTES_5, + HeartRateCapability.MeasurementInterval.MINUTES_10, + HeartRateCapability.MeasurementInterval.MINUTES_15, + HeartRateCapability.MeasurementInterval.MINUTES_30, + HeartRateCapability.MeasurementInterval.MINUTES_45, + HeartRateCapability.MeasurementInterval.HOUR_1 + ); + } + + @Override + public String[] getSupportedLanguageSettings(final GBDevice device) { + return new String[]{ + "auto", + "zh_CN", + "zh_TW", + "en_US", + "es_ES", + "de_DE", + "it_IT", + "fr_FR", + "pt_PT", + "nl_NL", + "sv_SE", + "pl_PL", + "cs_CZ", + "el_GR", + "ru_RU", + "he_IL", + "ar_SA", + "ja_JP", + "ko_KO", + "th_TH", }; } @@ -164,13 +192,11 @@ public class ZeTimeCoordinator extends AbstractBLEDeviceCoordinator { return ZeTimeDeviceSupport.class; } - @Override public int getDeviceNameResource() { return R.string.devicetype_mykronoz_zetime; } - @Override public int getDefaultIconResource() { return R.drawable.ic_device_zetime; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimePreferenceActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimePreferenceActivity.java deleted file mode 100644 index d119ed78e..000000000 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimePreferenceActivity.java +++ /dev/null @@ -1,132 +0,0 @@ -/* Copyright (C) 2018-2024 Andreas Shimokawa, Damien Gaignon, José Rebelo, - Sebastian Kranz - - 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.devices.zetime; - -import android.os.Bundle; -import android.text.InputType; - -import androidx.preference.Preference; -import androidx.preference.PreferenceFragmentCompat; - -import nodomain.freeyourgadget.gadgetbridge.GBApplication; -import nodomain.freeyourgadget.gadgetbridge.R; -import nodomain.freeyourgadget.gadgetbridge.activities.AbstractPreferenceFragment; -import nodomain.freeyourgadget.gadgetbridge.activities.AbstractSettingsActivityV2; - -public class ZeTimePreferenceActivity extends AbstractSettingsActivityV2 { - @Override - protected String fragmentTag() { - return ZeTimePreferencesFragment.FRAGMENT_TAG; - } - - @Override - protected PreferenceFragmentCompat newFragment() { - return new ZeTimePreferencesFragment(); - } - - @Override - protected void onCreate(final Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - GBApplication.deviceService().onReadConfiguration("do_it"); - } - - public static class ZeTimePreferencesFragment extends AbstractPreferenceFragment { - static final String FRAGMENT_TAG = "ZETIME_PREFERENCES_FRAGMENT"; - - @Override - public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) { - setPreferencesFromResource(R.xml.zetime_preferences, rootKey); - - final Preference heartrateMeasurementInterval = findPreference(ZeTimeConstants.PREF_ZETIME_HEARTRATE_INTERVAL); - if (heartrateMeasurementInterval != null) { - heartrateMeasurementInterval.setOnPreferenceChangeListener((preference, newVal) -> { - GBApplication.deviceService().onSetHeartRateMeasurementInterval(Integer.parseInt((String) newVal)); - return true; - }); - } - - setInputTypeFor(ZeTimeConstants.PREF_SCREENTIME, InputType.TYPE_CLASS_NUMBER); - setInputTypeFor("fitness_goal", InputType.TYPE_CLASS_NUMBER); - setInputTypeFor("activity_user_sleep_duration", InputType.TYPE_CLASS_NUMBER); - setInputTypeFor("activity_user_calories_burnt", InputType.TYPE_CLASS_NUMBER); - setInputTypeFor("activity_user_distance_meters", InputType.TYPE_CLASS_NUMBER); - setInputTypeFor("activity_user_activetime_minutes", InputType.TYPE_CLASS_NUMBER); - setInputTypeFor("inactivity_warnings_threshold", InputType.TYPE_CLASS_NUMBER); - setInputTypeFor("alarm_max_heart_rate", InputType.TYPE_CLASS_NUMBER); - setInputTypeFor("alarm_min_heart_rate", InputType.TYPE_CLASS_NUMBER); - - addPreferenceHandlerFor(ZeTimeConstants.PREF_SCREENTIME); - - addPreferenceHandlerFor(ZeTimeConstants.PREF_ANALOG_MODE); - - addPreferenceHandlerFor(ZeTimeConstants.PREF_ACTIVITY_TRACKING); - - addPreferenceHandlerFor(ZeTimeConstants.PREF_HANDMOVE_DISPLAY); - - addPreferenceHandlerFor(ZeTimeConstants.PREF_CALORIES_TYPE); - - addPreferenceHandlerFor(ZeTimeConstants.PREF_DATE_FORMAT); - - addPreferenceHandlerFor(ZeTimeConstants.PREF_SMS_SIGNALING); - addPreferenceHandlerFor(ZeTimeConstants.PREF_ANTI_LOSS_SIGNALING); - addPreferenceHandlerFor(ZeTimeConstants.PREF_CALENDAR_SIGNALING); - addPreferenceHandlerFor(ZeTimeConstants.PREF_CALL_SIGNALING); - addPreferenceHandlerFor(ZeTimeConstants.PREF_MISSED_CALL_SIGNALING); - addPreferenceHandlerFor(ZeTimeConstants.PREF_EMAIL_SIGNALING); - addPreferenceHandlerFor(ZeTimeConstants.PREF_INACTIVITY_SIGNALING); - addPreferenceHandlerFor(ZeTimeConstants.PREF_LOW_POWER_SIGNALING); - addPreferenceHandlerFor(ZeTimeConstants.PREF_SOCIAL_SIGNALING); - - - addPreferenceHandlerFor(ZeTimeConstants.PREF_ZETIME_HEARTRATE_ALARM); - addPreferenceHandlerFor(ZeTimeConstants.PREF_ZETIME_MAX_HEARTRATE); - addPreferenceHandlerFor(ZeTimeConstants.PREF_ZETIME_MIN_HEARTRATE); - - - addPreferenceHandlerFor(ZeTimeConstants.PREF_USER_SLEEP_GOAL); - addPreferenceHandlerFor(ZeTimeConstants.PREF_USER_CALORIES_GOAL); - addPreferenceHandlerFor(ZeTimeConstants.PREF_USER_DISTANCE_GOAL); - addPreferenceHandlerFor(ZeTimeConstants.PREF_USER_ACTIVETIME_GOAL); - } - - private void addPreferenceHandlerFor(final String preferenceKey) { - final Preference pref = findPreference(preferenceKey); - if (pref != null) { - pref.setOnPreferenceChangeListener((preference, newVal) -> { - notifyPreferenceChanged(preferenceKey); - return true; - }); - } - } - - /* - * delayed execution so that the preferences are applied first - */ - private void invokeLater(Runnable runnable) { - getListView().post(runnable); - } - - /* - * delayed execution so that the preferences are applied first - */ - public void notifyPreferenceChanged(final String preferenceKey) { - invokeLater(() -> GBApplication.deviceService().onSendConfiguration(preferenceKey)); - } - } -} diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimeSettingsCustomizer.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimeSettingsCustomizer.java new file mode 100644 index 000000000..1d4973fa3 --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimeSettingsCustomizer.java @@ -0,0 +1,111 @@ +/* Copyright (C) 2024 José Rebelo + + 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.devices.zetime; + +import android.os.Parcel; +import android.text.InputType; + +import androidx.preference.Preference; + +import java.util.Collections; +import java.util.Set; + +import nodomain.freeyourgadget.gadgetbridge.GBApplication; +import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettingsCustomizer; +import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettingsHandler; +import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; +import nodomain.freeyourgadget.gadgetbridge.util.Prefs; + +public class ZeTimeSettingsCustomizer implements DeviceSpecificSettingsCustomizer { + private final GBDevice device; + + public ZeTimeSettingsCustomizer(final GBDevice device) { + this.device = device; + } + + @Override + public void onPreferenceChange(final Preference preference, final DeviceSpecificSettingsHandler handler) { + + } + + @Override + public void customizeSettings(final DeviceSpecificSettingsHandler handler, final Prefs prefs, final String rootKey) { + if (rootKey == null) { + // Main screen - read the settings + GBApplication.deviceService(device).onReadConfiguration("do_it"); + } + + // Date time + handler.addPreferenceHandlerFor(ZeTimeConstants.PREF_DATE_FORMAT); + + // Display + handler.addPreferenceHandlerFor(ZeTimeConstants.PREF_SCREENTIME); + handler.setInputTypeFor(ZeTimeConstants.PREF_SCREENTIME, InputType.TYPE_CLASS_NUMBER); + handler.addPreferenceHandlerFor(ZeTimeConstants.PREF_ANALOG_MODE); + handler.addPreferenceHandlerFor(ZeTimeConstants.PREF_HANDMOVE_DISPLAY); + + // Vibration patterns + handler.addPreferenceHandlerFor(ZeTimeConstants.PREF_SMS_SIGNALING); + handler.addPreferenceHandlerFor(ZeTimeConstants.PREF_ANTI_LOSS_SIGNALING); + handler.addPreferenceHandlerFor(ZeTimeConstants.PREF_CALENDAR_SIGNALING); + handler.addPreferenceHandlerFor(ZeTimeConstants.PREF_CALL_SIGNALING); + handler.addPreferenceHandlerFor(ZeTimeConstants.PREF_MISSED_CALL_SIGNALING); + handler.addPreferenceHandlerFor(ZeTimeConstants.PREF_EMAIL_SIGNALING); + handler.addPreferenceHandlerFor(ZeTimeConstants.PREF_INACTIVITY_SIGNALING); + handler.addPreferenceHandlerFor(ZeTimeConstants.PREF_LOW_POWER_SIGNALING); + handler.addPreferenceHandlerFor(ZeTimeConstants.PREF_SOCIAL_SIGNALING); + + // Heart rate + handler.addPreferenceHandlerFor(ZeTimeConstants.PREF_ZETIME_HEARTRATE_ALARM); + handler.addPreferenceHandlerFor(ZeTimeConstants.PREF_ZETIME_MAX_HEARTRATE); + handler.addPreferenceHandlerFor(ZeTimeConstants.PREF_ZETIME_MIN_HEARTRATE); + handler.setInputTypeFor(ZeTimeConstants.PREF_ZETIME_MAX_HEARTRATE, InputType.TYPE_CLASS_NUMBER); + handler.setInputTypeFor(ZeTimeConstants.PREF_ZETIME_MIN_HEARTRATE, InputType.TYPE_CLASS_NUMBER); + + // Activity info + handler.addPreferenceHandlerFor(ZeTimeConstants.PREF_ACTIVITY_TRACKING); + handler.addPreferenceHandlerFor(ZeTimeConstants.PREF_CALORIES_TYPE); + } + + @Override + public Set getPreferenceKeysWithSummary() { + return Collections.emptySet(); + } + + public static final Creator CREATOR = new Creator() { + @Override + public ZeTimeSettingsCustomizer createFromParcel(final Parcel in) { + final GBDevice device = in.readParcelable(ZeTimeSettingsCustomizer.class.getClassLoader()); + return new ZeTimeSettingsCustomizer(device); + } + + @Override + public ZeTimeSettingsCustomizer[] newArray(final int size) { + return new ZeTimeSettingsCustomizer[size]; + } + }; + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(final Parcel dest, final int flags) { + dest.writeParcelable(device, 0); + } +} 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 e32e93ebd..8f298c244 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 @@ -169,9 +169,9 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { case ZeTimeConstants.PREF_HANDMOVE_DISPLAY: setDisplayOnMovement(builder); break; - case DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB: - case DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_START: - case DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_END: + case DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_NOAUTO: + case DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_NOAUTO_START: + case DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_NOAUTO_END: setDoNotDisturb(builder); break; case ZeTimeConstants.PREF_CALORIES_TYPE: @@ -216,10 +216,10 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { setHeartRateLimits(builder); break; case DeviceSettingsPreferenceConst.PREF_USER_FITNESS_GOAL: - case ZeTimeConstants.PREF_USER_SLEEP_GOAL: - case ZeTimeConstants.PREF_USER_CALORIES_GOAL: - case ZeTimeConstants.PREF_USER_DISTANCE_GOAL: - case ZeTimeConstants.PREF_USER_ACTIVETIME_GOAL: + case ActivityUser.PREF_USER_SLEEP_DURATION: + case ActivityUser.PREF_USER_CALORIES_BURNT: + case ActivityUser.PREF_USER_DISTANCE_METERS: + case ActivityUser.PREF_USER_ACTIVETIME_MINUTES: setUserGoals(builder); break; } @@ -282,7 +282,7 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { try { TransactionBuilder builder = performInitialized("setAlarms"); - Prefs prefs = GBApplication.getPrefs(); + Prefs prefs = getDevicePrefs(); for (Alarm alarm : alarms) { if (remindersOnWatch[alarm.getPosition()][0] == 0) { @@ -657,6 +657,7 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { int notification_length = body_length; byte[] subject = null; byte[] notification; + //noinspection ExtractMethodRecommender Calendar time = GregorianCalendar.getInstance(); // convert every single digit of the date to ascii characters // we do it like so: use the base chrachter of '0' and add the digit @@ -883,7 +884,7 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { return true; } } else { - LOG.info("Unhandled characteristic changed: " + characteristicUUID); + LOG.warn("Unhandled characteristic changed: {}", characteristicUUID); logMessageContent(characteristic.getValue()); } return false; @@ -926,7 +927,7 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { } } - private ZeTimeDeviceSupport requestBatteryInfo(TransactionBuilder builder) { + private void requestBatteryInfo(TransactionBuilder builder) { LOG.debug("Requesting Battery Info!"); builder.write(writeCharacteristic, new byte[]{ZeTimeConstants.CMD_PREAMBLE, ZeTimeConstants.CMD_BATTERY_POWER, @@ -936,10 +937,9 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { 0x00, ZeTimeConstants.CMD_END}); builder.write(ackCharacteristic, new byte[]{ZeTimeConstants.CMD_ACK_WRITE}); - return this; } - private ZeTimeDeviceSupport requestDeviceInfo(TransactionBuilder builder) { + private void requestDeviceInfo(TransactionBuilder builder) { LOG.debug("Requesting Device Info!"); builder.write(writeCharacteristic, new byte[]{ZeTimeConstants.CMD_PREAMBLE, ZeTimeConstants.CMD_WATCH_ID, @@ -967,10 +967,9 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { 0x02, ZeTimeConstants.CMD_END}); builder.write(ackCharacteristic, new byte[]{ZeTimeConstants.CMD_ACK_WRITE}); - return this; } - private ZeTimeDeviceSupport requestActivityInfo(TransactionBuilder builder) { + private void requestActivityInfo(TransactionBuilder builder) { builder.write(writeCharacteristic, new byte[]{ZeTimeConstants.CMD_PREAMBLE, ZeTimeConstants.CMD_AVAIABLE_DATA, ZeTimeConstants.CMD_REQUEST, @@ -979,7 +978,6 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { 0x00, ZeTimeConstants.CMD_END}); builder.write(ackCharacteristic, new byte[]{ZeTimeConstants.CMD_ACK_WRITE}); - return this; } private ZeTimeDeviceSupport requestShockStrength(TransactionBuilder builder) { @@ -1166,7 +1164,7 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { progressSteps = (msg[5] & 0xff) | ((msg[6] << 8) & 0xff00); GB.updateTransferNotification(null, getContext().getString(R.string.busy_task_fetch_activity_data), true, progressSteps * 100 / availableStepsData, getContext()); if (progressSteps == availableStepsData) { - Prefs prefs = GBApplication.getPrefs(); + Prefs prefs = getDevicePrefs(); progressSteps = 0; availableStepsData = 0; GB.updateTransferNotification(null, "", false, 100, getContext()); @@ -1213,7 +1211,7 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { progressSleep = (msg[5] & 0xff) | (msg[6] << 8) & 0xff00; GB.updateTransferNotification(null, getContext().getString(R.string.busy_task_fetch_activity_data), true, progressSleep * 100 / availableSleepData, getContext()); if (progressSleep == availableSleepData) { - Prefs prefs = GBApplication.getPrefs(); + Prefs prefs = getDevicePrefs(); progressSleep = 0; availableSleepData = 0; GB.updateTransferNotification(null, "", false, 100, getContext()); @@ -1272,7 +1270,7 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { } if (progressHeartRate == availableHeartRateData) { - Prefs prefs = GBApplication.getPrefs(); + Prefs prefs = getDevicePrefs(); progressHeartRate = 0; availableHeartRateData = 0; GB.updateTransferNotification(null, "", false, 100, getContext()); @@ -1446,7 +1444,7 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { } private void setScreenTime(TransactionBuilder builder) { - int value = GBApplication.getPrefs().getInt(ZeTimeConstants.PREF_SCREENTIME, 30); + int value = getDevicePrefs().getInt(ZeTimeConstants.PREF_SCREENTIME, 30); if (value > ZeTimeConstants.MAX_SCREEN_ON_TIME) { GB.toast(getContext(), "Value for screen on time is greater than 18h! ", Toast.LENGTH_LONG, GB.ERROR); value = ZeTimeConstants.MAX_SCREEN_ON_TIME; @@ -1552,7 +1550,7 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { } private void setHeartRateLimits(TransactionBuilder builder) { - Prefs prefs = GBApplication.getPrefs(); + Prefs prefs = getDevicePrefs(); boolean alarmEnabled = prefs.getBoolean(ZeTimeConstants.PREF_ZETIME_HEARTRATE_ALARM, false); int maxHR = prefs.getInt(ZeTimeConstants.PREF_ZETIME_MAX_HEARTRATE, 180); @@ -1582,7 +1580,7 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { } private void setAnalogMode(TransactionBuilder builder) { - Prefs prefs = GBApplication.getPrefs(); + Prefs prefs = getDevicePrefs(); int mode = prefs.getInt(ZeTimeConstants.PREF_ANALOG_MODE, 0); byte[] analog = {ZeTimeConstants.CMD_PREAMBLE, @@ -1597,7 +1595,7 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { } private void setActivityTracking(TransactionBuilder builder) { - Prefs prefs = GBApplication.getPrefs(); + Prefs prefs = getDevicePrefs(); boolean tracking = prefs.getBoolean(ZeTimeConstants.PREF_ACTIVITY_TRACKING, false); byte[] activity = {ZeTimeConstants.CMD_PREAMBLE, @@ -1614,7 +1612,7 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { } private void setDisplayOnMovement(TransactionBuilder builder) { - Prefs prefs = GBApplication.getPrefs(); + Prefs prefs = getDevicePrefs(); boolean movement = prefs.getBoolean(ZeTimeConstants.PREF_HANDMOVE_DISPLAY, false); byte[] handmove = {ZeTimeConstants.CMD_PREAMBLE, @@ -1633,11 +1631,11 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { } private void setDoNotDisturb(TransactionBuilder builder) { - Prefs prefs = GBApplication.getPrefs(); - String scheduled = prefs.getString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB, "off"); + Prefs prefs = getDevicePrefs(); + String scheduled = prefs.getString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_NOAUTO, "off"); String dndScheduled = getContext().getString(R.string.p_scheduled); - String start = prefs.getString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_START, "22:00"); - String end = prefs.getString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_END, "07:00"); + String start = prefs.getString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_NOAUTO_START, "22:00"); + String end = prefs.getString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_NOAUTO_END, "07:00"); DateFormat df_start = new SimpleDateFormat("HH:mm"); DateFormat df_end = new SimpleDateFormat("HH:mm"); Calendar calendar = GregorianCalendar.getInstance(); @@ -1673,7 +1671,7 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { } private void setCaloriesType(TransactionBuilder builder) { - Prefs prefs = GBApplication.getPrefs(); + Prefs prefs = getDevicePrefs(); int type = prefs.getInt(ZeTimeConstants.PREF_CALORIES_TYPE, 0); byte[] calories = {ZeTimeConstants.CMD_PREAMBLE, @@ -1715,7 +1713,7 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { } private void setDateFormate(TransactionBuilder builder) { - Prefs prefs = GBApplication.getPrefs(); + Prefs prefs = getDevicePrefs(); int type = prefs.getInt(ZeTimeConstants.PREF_DATE_FORMAT, 0); byte[] dateformat = {ZeTimeConstants.CMD_PREAMBLE, @@ -1737,7 +1735,7 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { } private void setInactivityAlert(TransactionBuilder builder) { - Prefs prefs = GBApplication.getPrefs(); + Prefs prefs = getDevicePrefs(); boolean enabled = prefs.getBoolean(DeviceSettingsPreferenceConst.PREF_INACTIVITY_ENABLE, false); int threshold = prefs.getInt(DeviceSettingsPreferenceConst.PREF_INACTIVITY_THRESHOLD, 60); @@ -1803,7 +1801,7 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { } private void setShockStrength(TransactionBuilder builder) { - Prefs prefs = GBApplication.getPrefs(); + Prefs prefs = getDevicePrefs(); int shockStrength = prefs.getInt(ZeTimeConstants.PREF_SHOCK_STRENGTH, 255); byte[] strength = { @@ -1819,51 +1817,67 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { sendMsgToWatch(builder, strength); } - private void setSignaling(TransactionBuilder builder, String signalingType) { - Prefs prefs = GBApplication.getPrefs(); - int signalType = prefs.getInt(signalingType, 0); + private void setSignaling(final TransactionBuilder builder, final String signalingType) { + final Prefs prefs = getDevicePrefs(); - byte[] signaling = { + final byte typeByte; + final int signalTypeDefault; + + switch (signalingType) { + case ZeTimeConstants.PREF_SMS_SIGNALING: + typeByte = ZeTimeConstants.SMS_TYPE; + signalTypeDefault = 2; + break; + case ZeTimeConstants.PREF_CALL_SIGNALING: + typeByte = ZeTimeConstants.CALL_TYPE; + signalTypeDefault = 13; + break; + case ZeTimeConstants.PREF_MISSED_CALL_SIGNALING: + typeByte = ZeTimeConstants.MISSED_CALL_TYPE; + signalTypeDefault = 12; + break; + case ZeTimeConstants.PREF_EMAIL_SIGNALING: + typeByte = ZeTimeConstants.EMAIL_TYPE; + signalTypeDefault = 12; + break; + case ZeTimeConstants.PREF_SOCIAL_SIGNALING: + typeByte = ZeTimeConstants.SOCIAL_TYPE; + signalTypeDefault = 12; + break; + case ZeTimeConstants.PREF_CALENDAR_SIGNALING: + typeByte = ZeTimeConstants.CALENDAR_TYPE; + signalTypeDefault = 12; + break; + case ZeTimeConstants.PREF_INACTIVITY_SIGNALING: + typeByte = ZeTimeConstants.INACTIVITY_TYPE; + signalTypeDefault = 12; + break; + case ZeTimeConstants.PREF_LOW_POWER_SIGNALING: + typeByte = ZeTimeConstants.LOW_POWER_TYPE; + signalTypeDefault = 4; + break; + case ZeTimeConstants.PREF_ANTI_LOSS_SIGNALING: + typeByte = ZeTimeConstants.ANTI_LOSS_TYPE; + signalTypeDefault = 13; + break; + default: + LOG.error("Unknown signaling type {}", signalingType); + return; + } + + final int signalType = prefs.getInt(signalingType, signalTypeDefault); + + final byte[] signaling = { ZeTimeConstants.CMD_PREAMBLE, ZeTimeConstants.CMD_SHOCK_MODE, ZeTimeConstants.CMD_SEND, (byte) 0x2, (byte) 0x0, - (byte) 0x0, + typeByte, (byte) signalType, ZeTimeConstants.CMD_END }; - switch (signalingType) { - case ZeTimeConstants.PREF_SMS_SIGNALING: - signaling[5] = ZeTimeConstants.SMS_TYPE; - break; - case ZeTimeConstants.PREF_CALL_SIGNALING: - signaling[5] = ZeTimeConstants.CALL_TYPE; - break; - case ZeTimeConstants.PREF_MISSED_CALL_SIGNALING: - signaling[5] = ZeTimeConstants.MISSED_CALL_TYPE; - break; - case ZeTimeConstants.PREF_EMAIL_SIGNALING: - signaling[5] = ZeTimeConstants.EMAIL_TYPE; - break; - case ZeTimeConstants.PREF_SOCIAL_SIGNALING: - signaling[5] = ZeTimeConstants.SOCIAL_TYPE; - break; - case ZeTimeConstants.PREF_CALENDAR_SIGNALING: - signaling[5] = ZeTimeConstants.CALENDAR_TYPE; - break; - case ZeTimeConstants.PREF_INACTIVITY_SIGNALING: - signaling[5] = ZeTimeConstants.INACTIVITY_TYPE; - break; - case ZeTimeConstants.PREF_LOW_POWER_SIGNALING: - signaling[5] = ZeTimeConstants.LOW_POWER_TYPE; - break; - case ZeTimeConstants.PREF_ANTI_LOSS_SIGNALING: - signaling[5] = ZeTimeConstants.ANTI_LOSS_TYPE; - break; - } - sendMsgToWatch(builder, signaling); } @@ -1970,24 +1984,21 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { } private void getDateTimeFormat(byte[] msg) { - SharedPreferences.Editor prefs = GBApplication.getPrefs().getPreferences().edit(); + SharedPreferences.Editor prefs = getDevicePrefs().getPreferences().edit(); prefs.putString(ZeTimeConstants.PREF_DATE_FORMAT, Integer.toString(msg[5])); - prefs.apply(); String timeFormat = "24h"; - - SharedPreferences.Editor prefsEditor = GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()).edit(); - if (msg[6] == 2) { timeFormat = "am/pm"; } - prefsEditor.putString(DeviceSettingsPreferenceConst.PREF_TIMEFORMAT, timeFormat); - prefsEditor.apply(); + prefs.putString(DeviceSettingsPreferenceConst.PREF_TIMEFORMAT, timeFormat); + + prefs.apply(); } private void getSignaling(byte[] msg) { - SharedPreferences.Editor prefs = GBApplication.getPrefs().getPreferences().edit(); + SharedPreferences.Editor prefs = getDevicePrefs().getPreferences().edit(); prefs.putString(ZeTimeConstants.PREF_ANTI_LOSS_SIGNALING, Integer.toString(msg[5])); prefs.putString(ZeTimeConstants.PREF_CALL_SIGNALING, Integer.toString(msg[7])); @@ -2002,40 +2013,36 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { } private void getDoNotDisturb(byte[] msg) { - SharedPreferences.Editor prefs = GBApplication.getPrefs().getPreferences().edit(); + SharedPreferences.Editor prefs = getDevicePrefs().getPreferences().edit(); String starttime = String.format("%02d:%02d", msg[6], msg[7]); String endtime = String.format("%02d:%02d", msg[8], msg[9]); if (0x1 == msg[5]) { - prefs.putString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB, "scheduled"); + prefs.putString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_NOAUTO, "scheduled"); } else { - prefs.putString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB, "off"); + prefs.putString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_NOAUTO, "off"); } - prefs.putString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_START, starttime); - prefs.putString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_END, endtime); + prefs.putString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_NOAUTO_START, starttime); + prefs.putString(DeviceSettingsPreferenceConst.PREF_DO_NOT_DISTURB_NOAUTO_END, endtime); prefs.apply(); } private void getAnalogMode(byte[] msg) { - SharedPreferences.Editor prefs = GBApplication.getPrefs().getPreferences().edit(); + SharedPreferences.Editor prefs = getDevicePrefs().getPreferences().edit(); prefs.putString(ZeTimeConstants.PREF_ANALOG_MODE, Integer.toString(msg[5])); prefs.apply(); } private void getActivityTracking(byte[] msg) { - SharedPreferences.Editor prefs = GBApplication.getPrefs().getPreferences().edit(); + SharedPreferences.Editor prefs = getDevicePrefs().getPreferences().edit(); - if (0x1 == msg[6]) { - prefs.putBoolean(ZeTimeConstants.PREF_ACTIVITY_TRACKING, false); - } else { - prefs.putBoolean(ZeTimeConstants.PREF_ACTIVITY_TRACKING, true); - } + prefs.putBoolean(ZeTimeConstants.PREF_ACTIVITY_TRACKING, 0x1 != msg[6]); prefs.apply(); } private void getScreenTime(byte[] msg) { - SharedPreferences.Editor prefs = GBApplication.getPrefs().getPreferences().edit(); + SharedPreferences.Editor prefs = getDevicePrefs().getPreferences().edit(); prefs.putString(ZeTimeConstants.PREF_SCREENTIME, Integer.toString((msg[5] | (msg[6] << 8)))); prefs.apply(); @@ -2053,18 +2060,18 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { } private void getHeartRateMeasurement(byte[] msg) { - SharedPreferences.Editor prefs = GBApplication.getPrefs().getPreferences().edit(); + SharedPreferences.Editor prefs = getDevicePrefs().getPreferences().edit(); prefs.putString(ZeTimeConstants.PREF_ZETIME_HEARTRATE_INTERVAL, Integer.toString((msg[5] * 60))); // multiply with 60 because of the conversion from minutes to seconds prefs.apply(); } private void getHeartRateLimits(byte[] msg) { - SharedPreferences.Editor prefs = GBApplication.getPrefs().getPreferences().edit(); + SharedPreferences.Editor prefs = getDevicePrefs().getPreferences().edit(); prefs.apply(); } private void getInactivityAlert(byte[] msg) { - SharedPreferences.Editor prefs = GBApplication.getPrefs().getPreferences().edit(); + SharedPreferences.Editor prefs = getDevicePrefs().getPreferences().edit(); String starttime = String.format("%02d:%02d", msg[7], msg[8]); String endtime = String.format("%02d:%02d", msg[9], msg[10]); @@ -2113,7 +2120,7 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { } private void getCaloriesType(byte[] msg) { - SharedPreferences prefs = GBApplication.getPrefs().getPreferences(); + SharedPreferences prefs = getDevicePrefs().getPreferences(); SharedPreferences.Editor myedit = prefs.edit(); myedit.putString(ZeTimeConstants.PREF_CALORIES_TYPE, Integer.toString(msg[5])); @@ -2121,7 +2128,7 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { } private void getDisplayOnMovement(byte[] msg) { - SharedPreferences.Editor prefs = GBApplication.getPrefs().getPreferences().edit(); + SharedPreferences.Editor prefs = getDevicePrefs().getPreferences().edit(); if (0 != (msg[6] & (1 << 6))) { prefs.putBoolean(ZeTimeConstants.PREF_HANDMOVE_DISPLAY, true); } else { diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 8eeacba73..a28d0ad16 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -2555,52 +2555,6 @@ ru_RU - - @string/automatic - @string/simplified_chinese - @string/traditional_chinese - @string/english - @string/spanish - @string/german - @string/italian - @string/french - @string/portuguese - @string/dutch - @string/swedish - @string/polish - @string/czesh - @string/greek - @string/russian - @string/hebrew - @string/arabic - @string/japanese - @string/korean - @string/thai - - - - auto - zh_CN - zh_TW - en_US - es_ES - de_DE - it_IT - fr_FR - pt_PT - nl_NL - sv_SE - pl_PL - cs_CZ - el_GR - ru_RU - he_IL - ar_SA - ja_JP - ko_KO - th_TH - - @string/off diff --git a/app/src/main/res/xml/devicesettings_donotdisturb_no_auto.xml b/app/src/main/res/xml/devicesettings_donotdisturb_no_auto.xml index 099ee7a65..a9ae83455 100644 --- a/app/src/main/res/xml/devicesettings_donotdisturb_no_auto.xml +++ b/app/src/main/res/xml/devicesettings_donotdisturb_no_auto.xml @@ -7,9 +7,6 @@ android:summary="@string/mi2_prefs_do_not_disturb_summary" android:title="@string/mi2_prefs_do_not_disturb"> - - - - - - diff --git a/app/src/main/res/xml/devicesettings_zetime_activity_info.xml b/app/src/main/res/xml/devicesettings_zetime_activity_info.xml new file mode 100644 index 000000000..e7420a199 --- /dev/null +++ b/app/src/main/res/xml/devicesettings_zetime_activity_info.xml @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/app/src/main/res/xml/devicesettings_zetime_date_format.xml b/app/src/main/res/xml/devicesettings_zetime_date_format.xml new file mode 100644 index 000000000..473f957b3 --- /dev/null +++ b/app/src/main/res/xml/devicesettings_zetime_date_format.xml @@ -0,0 +1,15 @@ + + + + + + diff --git a/app/src/main/res/xml/devicesettings_zetime_display.xml b/app/src/main/res/xml/devicesettings_zetime_display.xml new file mode 100644 index 000000000..fb963940d --- /dev/null +++ b/app/src/main/res/xml/devicesettings_zetime_display.xml @@ -0,0 +1,31 @@ + + + + + + + + + + diff --git a/app/src/main/res/xml/devicesettings_zetime_health.xml b/app/src/main/res/xml/devicesettings_zetime_health.xml new file mode 100644 index 000000000..ab304a344 --- /dev/null +++ b/app/src/main/res/xml/devicesettings_zetime_health.xml @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/devicesettings_zetime_vibrationpatterns.xml b/app/src/main/res/xml/devicesettings_zetime_vibrationpatterns.xml new file mode 100644 index 000000000..fd4ddefcf --- /dev/null +++ b/app/src/main/res/xml/devicesettings_zetime_vibrationpatterns.xml @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 09fdb1590..80c186f1c 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -275,10 +275,7 @@ android:key="pref_key_pebble" android:title="@string/pref_title_pebble_settings"> - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file