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 extends ScanFilter> createBLEScanFilters() {
- return super.createBLEScanFilters();
- }
-
@Override
protected Pattern getSupportedDeviceName() {
return Pattern.compile("ZeTime.*");
}
- @Nullable
- @Override
- public Class extends Activity> 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 extends Activity> 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 extends ActivitySample> 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