diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsScreen.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsScreen.java index 35f77a349..5db95fba6 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsScreen.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsScreen.java @@ -27,6 +27,7 @@ public enum DeviceSpecificSettingsScreen { CONNECTION("pref_screen_connection", R.xml.devicesettings_root_connection), DEVELOPER("pref_screen_developer", R.xml.devicesettings_root_developer), DISPLAY("pref_screen_display", R.xml.devicesettings_root_display), + GENERIC("pref_screen_generic", R.xml.devicesettings_root_generic), NOTIFICATIONS("pref_screen_notifications", R.xml.devicesettings_root_notifications), DATE_TIME("pref_screen_date_time", R.xml.devicesettings_root_date_time), WORKOUT("pref_screen_workout", R.xml.devicesettings_root_workout), diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridCoordinator.java index b4c67b9cd..751e8bdf0 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridCoordinator.java @@ -27,7 +27,6 @@ import android.os.ParcelUuid; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import org.apache.commons.lang3.ArrayUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -41,6 +40,8 @@ import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.GBException; import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.activities.appmanager.AppManagerActivity; +import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettings; +import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.devices.AbstractBLEDeviceCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider; @@ -246,31 +247,37 @@ public class QHybridCoordinator extends AbstractBLEDeviceCoordinator { } @Override - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { + public DeviceSpecificSettings getDeviceSpecificSettings(final GBDevice device) { + final DeviceSpecificSettings deviceSpecificSettings = new DeviceSpecificSettings(); if (!isHybridHR()) { - return new int[0]; + return deviceSpecificSettings; } - //Settings applicable to all firmware versions - int[] supportedSettings = new int[]{ - R.xml.devicesettings_inactivity, - R.xml.devicesettings_fossilhybridhr_all_fw, - R.xml.devicesettings_autoremove_notifications, - R.xml.devicesettings_canned_dismisscall_16, - R.xml.devicesettings_reject_call_method, - R.xml.devicesettings_transliteration, - R.xml.devicesettings_fossilhybridhr_dev - }; + final List generic = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.GENERIC); // Firmware version specific settings if (getFirmwareVersion() != null && getFirmwareVersion().smallerThan(new Version("3.0"))) { - supportedSettings = ArrayUtils.insert(0, supportedSettings, R.xml.devicesettings_fossilhybridhr_pre_fw300); + generic.add(R.xml.devicesettings_fossilhybridhr_pre_fw300); } else { - supportedSettings = ArrayUtils.insert(0, supportedSettings, R.xml.devicesettings_fossilhybridhr_post_fw300); + generic.add(R.xml.devicesettings_fossilhybridhr_post_fw300); } if (getFirmwareVersion() != null && getFirmwareVersion().smallerThan(new Version("2.20"))) { - supportedSettings = ArrayUtils.insert(1, supportedSettings, R.xml.devicesettings_fossilhybridhr_pre_fw220); + generic.add(R.xml.devicesettings_fossilhybridhr_pre_fw220); } - supportedSettings = ArrayUtils.add(supportedSettings, R.xml.devicesettings_custom_deviceicon); - return supportedSettings; + // Settings applicable to all firmware versions + generic.add(R.xml.devicesettings_fossilhybridhr_calibration); + generic.add(R.xml.devicesettings_fossilhybridhr_navigation); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_fossilhybridhr_workout_detection); + health.add(R.xml.devicesettings_inactivity); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_fossilhybridhr_vibration); + notifications.add(R.xml.devicesettings_autoremove_notifications); + notifications.add(R.xml.devicesettings_canned_dismisscall_16); + notifications.add(R.xml.devicesettings_reject_call_method); + notifications.add(R.xml.devicesettings_transliteration); + notifications.add(R.xml.devicesettings_custom_deviceicon); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_fossilhybridhr_dev); + return deviceSpecificSettings; } @NonNull diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 602862a4c..a045cf162 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -198,6 +198,7 @@ Calendar Connection Display + Generic Health Sound & Vibration Offline Voice diff --git a/app/src/main/res/xml/devicesettings_fossilhybridhr_calibration.xml b/app/src/main/res/xml/devicesettings_fossilhybridhr_calibration.xml new file mode 100644 index 000000000..2a5f8d7e5 --- /dev/null +++ b/app/src/main/res/xml/devicesettings_fossilhybridhr_calibration.xml @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/app/src/main/res/xml/devicesettings_fossilhybridhr_dev.xml b/app/src/main/res/xml/devicesettings_fossilhybridhr_dev.xml index f1aad91ef..ffeb13740 100644 --- a/app/src/main/res/xml/devicesettings_fossilhybridhr_dev.xml +++ b/app/src/main/res/xml/devicesettings_fossilhybridhr_dev.xml @@ -2,52 +2,50 @@ - + - + - + + + - - - + - + - - - - - + diff --git a/app/src/main/res/xml/devicesettings_fossilhybridhr_navigation.xml b/app/src/main/res/xml/devicesettings_fossilhybridhr_navigation.xml new file mode 100644 index 000000000..6d11b3f4f --- /dev/null +++ b/app/src/main/res/xml/devicesettings_fossilhybridhr_navigation.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + diff --git a/app/src/main/res/xml/devicesettings_fossilhybridhr_vibration.xml b/app/src/main/res/xml/devicesettings_fossilhybridhr_vibration.xml new file mode 100644 index 000000000..3ad0f98ea --- /dev/null +++ b/app/src/main/res/xml/devicesettings_fossilhybridhr_vibration.xml @@ -0,0 +1,13 @@ + + + + + + diff --git a/app/src/main/res/xml/devicesettings_fossilhybridhr_all_fw.xml b/app/src/main/res/xml/devicesettings_fossilhybridhr_workout_detection.xml similarity index 79% rename from app/src/main/res/xml/devicesettings_fossilhybridhr_all_fw.xml rename to app/src/main/res/xml/devicesettings_fossilhybridhr_workout_detection.xml index b2f04b3d5..0e61776dc 100644 --- a/app/src/main/res/xml/devicesettings_fossilhybridhr_all_fw.xml +++ b/app/src/main/res/xml/devicesettings_fossilhybridhr_workout_detection.xml @@ -122,44 +122,4 @@ - - - - - - - - - - - - - diff --git a/app/src/main/res/xml/devicesettings_root_generic.xml b/app/src/main/res/xml/devicesettings_root_generic.xml new file mode 100644 index 000000000..a3c94512e --- /dev/null +++ b/app/src/main/res/xml/devicesettings_root_generic.xml @@ -0,0 +1,9 @@ + + + + +