diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettings.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettings.java index fc56b13fd..5cd514f96 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettings.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettings.java @@ -126,6 +126,15 @@ public class DeviceSpecificSettings implements Parcelable { return subScreens.get(key); } + public List getAllNonRootScreens() { + final List allScreens = new ArrayList<>(); + for (final List screens : subScreens.values()) { + allScreens.addAll(screens); + } + allScreens.removeAll(rootScreens); + return allScreens; + } + public List getAllScreens() { final List allScreens = new ArrayList<>(rootScreens); for (final List screens : subScreens.values()) { 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 d0cb78ad2..bd041bf65 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 @@ -37,6 +37,7 @@ public enum DeviceSpecificSettingsScreen { WORKOUT("pref_screen_workout", R.xml.devicesettings_root_workout), HEALTH("pref_screen_health", R.xml.devicesettings_root_health), TOUCH_OPTIONS("pref_screen_touch_options", R.xml.devicesettings_root_touch_options), + SOUND("pref_screen_sound", R.xml.devicesettings_root_touch_options), ; private final String key; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiFWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiFWHelper.java index 56db6d512..6d7248cd2 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiFWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiFWHelper.java @@ -33,7 +33,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiFirmwareT public abstract class HuamiFWHelper extends AbstractMiBandFWHelper { protected AbstractHuamiFirmwareInfo firmwareInfo; - public HuamiFWHelper(Uri uri, Context context) throws IOException { + public HuamiFWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband5/AmazfitBand5Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband5/AmazfitBand5Coordinator.java index 2f9167ed1..232c20731 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband5/AmazfitBand5Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband5/AmazfitBand5Coordinator.java @@ -22,37 +22,33 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitband5.AmazfitBand5Support; public class AmazfitBand5Coordinator extends HuamiCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(AmazfitBand5Coordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile(HuamiConst.AMAZFIT_BAND5_NAME, Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - AmazfitBand5FWInstallHandler handler = new AmazfitBand5FWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final AmazfitBand5FWInstallHandler handler = new AmazfitBand5FWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { + public boolean supportsHeartRateMeasurement(final GBDevice device) { return true; } @@ -87,38 +83,49 @@ public class AmazfitBand5Coordinator extends HuamiCoordinator { } @Override - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_amazfitband5, - R.xml.devicesettings_vibrationpatterns, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep_alert_activity_stress, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_custom_emoji_font, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_dateformat, - R.xml.devicesettings_world_clocks, - R.xml.devicesettings_nightmode, - R.xml.devicesettings_liftwrist_display_sensitivity, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_workout_start_on_phone, - R.xml.devicesettings_workout_send_gps_to_band, - R.xml.devicesettings_swipeunlock, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_reserve_reminders_calendar, - R.xml.devicesettings_expose_hr_thirdparty, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_device_actions, - R.xml.devicesettings_phone_silent_mode, - R.xml.devicesettings_high_mtu, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - 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_dateformat); + dateTime.add(R.xml.devicesettings_world_clocks); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_amazfitband5); + display.add(R.xml.devicesettings_nightmode); + display.add(R.xml.devicesettings_liftwrist_display_sensitivity); + display.add(R.xml.devicesettings_swipeunlock); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep_alert_activity_stress); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List workout = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.WORKOUT); + workout.add(R.xml.devicesettings_workout_start_on_phone); + workout.add(R.xml.devicesettings_workout_send_gps_to_band); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_custom_emoji_font); + notifications.add(R.xml.devicesettings_vibrationpatterns); + notifications.add(R.xml.devicesettings_phone_silent_mode); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_expose_hr_thirdparty); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_device_actions); + connection.add(R.xml.devicesettings_high_mtu); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; } @Override - public String[] getSupportedLanguageSettings(GBDevice device) { + public String[] getSupportedLanguageSettings(final GBDevice device) { return new String[]{ "auto", "ar_SA", @@ -158,13 +165,11 @@ public class AmazfitBand5Coordinator extends HuamiCoordinator { return BONDING_STYLE_REQUIRE_KEY; } - @Override public int getDeviceNameResource() { return R.string.devicetype_amazfit_band5; } - @Override public int getDefaultIconResource() { return R.drawable.ic_device_miband2; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband5/AmazfitBand5FWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband5/AmazfitBand5FWHelper.java index 13e2a9c43..67ca1b823 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband5/AmazfitBand5FWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband5/AmazfitBand5FWHelper.java @@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitband5.A public class AmazfitBand5FWHelper extends HuamiFWHelper { - public AmazfitBand5FWHelper(Uri uri, Context context) throws IOException { + public AmazfitBand5FWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband5/AmazfitBand5FWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband5/AmazfitBand5FWInstallHandler.java index d6a167033..225040b5e 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband5/AmazfitBand5FWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband5/AmazfitBand5FWInstallHandler.java @@ -28,7 +28,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class AmazfitBand5FWInstallHandler extends AbstractMiBandFWInstallHandler { - AmazfitBand5FWInstallHandler(Uri uri, Context context) { + AmazfitBand5FWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -38,12 +38,12 @@ class AmazfitBand5FWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new AmazfitBand5FWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.AMAZFITBAND5; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipCoordinator.java index 5966626e9..3018981b6 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipCoordinator.java @@ -22,36 +22,32 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbip.AmazfitBipSupport; public class AmazfitBipCoordinator extends HuamiCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(AmazfitBipCoordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile("Amazfit Bip Watch", Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - AmazfitBipFWInstallHandler handler = new AmazfitBipFWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final AmazfitBipFWInstallHandler handler = new AmazfitBipFWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { + public boolean supportsHeartRateMeasurement(final GBDevice device) { return true; } @@ -66,26 +62,54 @@ public class AmazfitBipCoordinator extends HuamiCoordinator { } @Override - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_amazfitbip, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_custom_emoji_font, - R.xml.devicesettings_liftwrist_display, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_disconnectnotification, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_reserve_reminders_calendar, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_buttonactions_with_longpress, - R.xml.devicesettings_device_actions, - R.xml.devicesettings_phone_silent_mode, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - 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); + generic.add(R.xml.devicesettings_buttonactions_with_longpress); + final List dateTime = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DATE_TIME); + dateTime.add(R.xml.devicesettings_timeformat); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_amazfitbip); + display.add(R.xml.devicesettings_liftwrist_display); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_custom_emoji_font); + notifications.add(R.xml.devicesettings_phone_silent_mode); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_disconnectnotification); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_device_actions); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; + } + + @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_BR", + "tr_TR", + "cs_CZ", + "ru_RU", }; } @@ -100,7 +124,6 @@ public class AmazfitBipCoordinator extends HuamiCoordinator { return R.string.devicetype_amazfit_bip; } - @Override public int getDefaultIconResource() { return R.drawable.ic_device_amazfit_bip; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipFWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipFWHelper.java index 6474318bf..9dccb3cff 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipFWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipFWHelper.java @@ -28,7 +28,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbip.Ama public class AmazfitBipFWHelper extends HuamiFWHelper { - public AmazfitBipFWHelper(Uri uri, Context context) throws IOException { + public AmazfitBipFWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipFWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipFWInstallHandler.java index f002999e5..80b9e4203 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipFWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipFWInstallHandler.java @@ -28,7 +28,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class AmazfitBipFWInstallHandler extends AbstractMiBandFWInstallHandler { - AmazfitBipFWInstallHandler(Uri uri, Context context) { + AmazfitBipFWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -38,12 +38,12 @@ class AmazfitBipFWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new AmazfitBipFWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.AMAZFITBIP; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteCoordinator.java index 69757d116..edb115866 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteCoordinator.java @@ -22,30 +22,26 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbip.AmazfitBipLiteSupport; public class AmazfitBipLiteCoordinator extends AmazfitBipCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(AmazfitBipLiteCoordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile("Amazfit Bip Lite", Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - AmazfitBipLiteFWInstallHandler handler = new AmazfitBipLiteFWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final AmazfitBipLiteFWInstallHandler handler = new AmazfitBipLiteFWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @@ -55,27 +51,38 @@ public class AmazfitBipLiteCoordinator extends AmazfitBipCoordinator { } @Override - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_amazfitbip, - R.xml.devicesettings_vibrationpatterns, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_custom_emoji_font, - R.xml.devicesettings_liftwrist_display, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_disconnectnotification, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_buttonactions_with_longpress, - R.xml.devicesettings_device_actions, - R.xml.devicesettings_relax_firmware_checks, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - 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); + generic.add(R.xml.devicesettings_buttonactions_with_longpress); + final List dateTime = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DATE_TIME); + dateTime.add(R.xml.devicesettings_timeformat); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_amazfitbip); + display.add(R.xml.devicesettings_liftwrist_display); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_custom_emoji_font); + notifications.add(R.xml.devicesettings_vibrationpatterns); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + //calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_disconnectnotification); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_device_actions); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_relax_firmware_checks); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteFWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteFWHelper.java index bfb8d2187..a567b57e6 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteFWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteFWHelper.java @@ -28,7 +28,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbip.Ama public class AmazfitBipLiteFWHelper extends HuamiFWHelper { - public AmazfitBipLiteFWHelper(Uri uri, Context context) throws IOException { + public AmazfitBipLiteFWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteFWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteFWInstallHandler.java index 944958155..7dfbf9c0d 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteFWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip/AmazfitBipLiteFWInstallHandler.java @@ -28,7 +28,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class AmazfitBipLiteFWInstallHandler extends AbstractMiBandFWInstallHandler { - AmazfitBipLiteFWInstallHandler(Uri uri, Context context) { + AmazfitBipLiteFWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -38,12 +38,12 @@ class AmazfitBipLiteFWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new AmazfitBipLiteFWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.AMAZFITBIP_LITE; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip3/AmazfitBip3Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip3/AmazfitBip3Coordinator.java index 4ce5b6a99..f7b8339ad 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip3/AmazfitBip3Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip3/AmazfitBip3Coordinator.java @@ -21,9 +21,12 @@ import android.net.Uri; import androidx.annotation.NonNull; +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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; @@ -88,7 +91,7 @@ public class AmazfitBip3Coordinator extends HuamiCoordinator { } @Override - public boolean supportsSpo2(GBDevice device) { + public boolean supportsSpo2(final GBDevice device) { return true; } @@ -97,32 +100,43 @@ public class AmazfitBip3Coordinator extends HuamiCoordinator { return true; } - public int[] getSupportedDeviceSpecificSettings(final GBDevice device) { - return new int[]{ - R.xml.devicesettings_amazfitbip3pro, - R.xml.devicesettings_vibrationpatterns, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep_alert_activity_stress, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_dateformat, - R.xml.devicesettings_world_clocks, - R.xml.devicesettings_liftwrist_display_sensitivity, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_reserve_reminders_calendar, - R.xml.devicesettings_expose_hr_thirdparty, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_device_actions, - R.xml.devicesettings_high_mtu, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - R.xml.devicesettings_transliteration - }; + @Override + 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_dateformat); + dateTime.add(R.xml.devicesettings_world_clocks); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_amazfitbip3pro); + display.add(R.xml.devicesettings_liftwrist_display_sensitivity); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep_alert_activity_stress); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_vibrationpatterns); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_expose_hr_thirdparty); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_device_actions); + connection.add(R.xml.devicesettings_high_mtu); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; } @Override - public String[] getSupportedLanguageSettings(GBDevice device) { + public String[] getSupportedLanguageSettings(final GBDevice device) { return new String[]{ "auto", "cs_CZ", diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip3pro/AmazfitBip3ProCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip3pro/AmazfitBip3ProCoordinator.java index 28b83bab7..b7ca81997 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip3pro/AmazfitBip3ProCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip3pro/AmazfitBip3ProCoordinator.java @@ -21,12 +21,12 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; @@ -34,8 +34,6 @@ import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbip3pro.AmazfitBip3ProSupport; public class AmazfitBip3ProCoordinator extends HuamiCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(AmazfitBip3ProCoordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile("Amazfit Bip 3 Pro", Pattern.CASE_INSENSITIVE); @@ -93,7 +91,7 @@ public class AmazfitBip3ProCoordinator extends HuamiCoordinator { } @Override - public boolean supportsSpo2(GBDevice device) { + public boolean supportsSpo2(final GBDevice device) { return true; } @@ -102,32 +100,43 @@ public class AmazfitBip3ProCoordinator extends HuamiCoordinator { return true; } - public int[] getSupportedDeviceSpecificSettings(final GBDevice device) { - return new int[]{ - R.xml.devicesettings_amazfitbip3pro, - R.xml.devicesettings_vibrationpatterns, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep_alert_activity_stress, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_dateformat, - R.xml.devicesettings_world_clocks, - R.xml.devicesettings_liftwrist_display_sensitivity, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_reserve_reminders_calendar, - R.xml.devicesettings_expose_hr_thirdparty, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_device_actions, - R.xml.devicesettings_high_mtu, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - R.xml.devicesettings_transliteration - }; + @Override + 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_dateformat); + dateTime.add(R.xml.devicesettings_world_clocks); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_amazfitbip3pro); + display.add(R.xml.devicesettings_liftwrist_display_sensitivity); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep_alert_activity_stress); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_vibrationpatterns); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_expose_hr_thirdparty); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_device_actions); + connection.add(R.xml.devicesettings_high_mtu); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; } @Override - public String[] getSupportedLanguageSettings(GBDevice device) { + public String[] getSupportedLanguageSettings(final GBDevice device) { return new String[]{ "auto", "cs_CZ", @@ -159,13 +168,11 @@ public class AmazfitBip3ProCoordinator extends HuamiCoordinator { return AmazfitBip3ProSupport.class; } - @Override public int getDeviceNameResource() { return R.string.devicetype_amazfit_bip3_pro; } - @Override public int getDefaultIconResource() { return R.drawable.ic_device_amazfit_bip; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSCoordinator.java index fc15827f9..e0115e011 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSCoordinator.java @@ -22,12 +22,12 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; @@ -35,21 +35,19 @@ import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbips.AmazfitBipSSupport; public class AmazfitBipSCoordinator extends HuamiCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(AmazfitBipSCoordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile("Amazfit Bip S", Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - AmazfitBipSFWInstallHandler handler = new AmazfitBipSFWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final AmazfitBipSFWInstallHandler handler = new AmazfitBipSFWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { + public boolean supportsHeartRateMeasurement(final GBDevice device) { return true; } @@ -79,27 +77,55 @@ public class AmazfitBipSCoordinator extends HuamiCoordinator { } @Override - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_amazfitbips, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_world_clocks, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_custom_emoji_font, - R.xml.devicesettings_liftwrist_display, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_reserve_reminders_calendar, - R.xml.devicesettings_expose_hr_thirdparty, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_high_mtu, - R.xml.devicesettings_device_actions, - R.xml.devicesettings_phone_silent_mode, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - 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_world_clocks); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_amazfitbips); + display.add(R.xml.devicesettings_liftwrist_display); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_custom_emoji_font); + notifications.add(R.xml.devicesettings_phone_silent_mode); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_expose_hr_thirdparty); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_device_actions); + connection.add(R.xml.devicesettings_high_mtu); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; + } + + @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_BR", + "tr_TR", + "cs_CZ", + "ru_RU", }; } @@ -114,13 +140,11 @@ public class AmazfitBipSCoordinator extends HuamiCoordinator { return BONDING_STYLE_REQUIRE_KEY; } - @Override public int getDeviceNameResource() { return R.string.devicetype_amazfit_bips; } - @Override public int getDefaultIconResource() { return R.drawable.ic_device_amazfit_bip; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSFWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSFWHelper.java index a8a53840c..1ecf5ddcb 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSFWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSFWHelper.java @@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbips.Am public class AmazfitBipSFWHelper extends HuamiFWHelper { - public AmazfitBipSFWHelper(Uri uri, Context context) throws IOException { + public AmazfitBipSFWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSFWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSFWInstallHandler.java index 4546fe450..1413d555d 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSFWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSFWInstallHandler.java @@ -28,7 +28,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class AmazfitBipSFWInstallHandler extends AbstractMiBandFWInstallHandler { - AmazfitBipSFWInstallHandler(Uri uri, Context context) { + AmazfitBipSFWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -38,12 +38,12 @@ class AmazfitBipSFWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new AmazfitBipSFWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.AMAZFITBIPS; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSLiteCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSLiteCoordinator.java index 298577b21..b77f479d1 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSLiteCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSLiteCoordinator.java @@ -21,29 +21,22 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.util.regex.Pattern; import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbips.AmazfitBipSLiteSupport; public class AmazfitBipSLiteCoordinator extends AmazfitBipSCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(AmazfitBipSLiteCoordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile("Bip S Lite", Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - AmazfitBipSLiteFWInstallHandler handler = new AmazfitBipSLiteFWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final AmazfitBipSLiteFWInstallHandler handler = new AmazfitBipSLiteFWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @@ -52,17 +45,6 @@ public class AmazfitBipSLiteCoordinator extends AmazfitBipSCoordinator { return R.string.devicetype_amazfit_bips_lite; } - - @Override - public int getDefaultIconResource() { - return R.drawable.ic_device_amazfit_bip; - } - - @Override - public int getDisabledIconResource() { - return R.drawable.ic_device_amazfit_bip_disabled; - } - @NonNull @Override public Class getDeviceSupportClass() { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSLiteFWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSLiteFWHelper.java index c535340c1..23114f3d7 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSLiteFWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSLiteFWHelper.java @@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbips.Am public class AmazfitBipSLiteFWHelper extends HuamiFWHelper { - public AmazfitBipSLiteFWHelper(Uri uri, Context context) throws IOException { + public AmazfitBipSLiteFWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSLiteFWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSLiteFWInstallHandler.java index 4f971b3ea..4149f3495 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSLiteFWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbips/AmazfitBipSLiteFWInstallHandler.java @@ -28,7 +28,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class AmazfitBipSLiteFWInstallHandler extends AbstractMiBandFWInstallHandler { - AmazfitBipSLiteFWInstallHandler(Uri uri, Context context) { + AmazfitBipSLiteFWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -38,12 +38,12 @@ class AmazfitBipSLiteFWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new AmazfitBipSLiteFWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.AMAZFITBIPS_LITE; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipu/AmazfitBipUCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipu/AmazfitBipUCoordinator.java index 036f01f0b..56d4f4510 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipu/AmazfitBipUCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipu/AmazfitBipUCoordinator.java @@ -22,36 +22,32 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbipu.AmazfitBipUSupport; public class AmazfitBipUCoordinator extends HuamiCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(AmazfitBipUCoordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile("Amazfit Bip U", Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - AmazfitBipUFWInstallHandler handler = new AmazfitBipUFWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final AmazfitBipUFWInstallHandler handler = new AmazfitBipUFWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { + public boolean supportsHeartRateMeasurement(final GBDevice device) { return true; } @@ -97,36 +93,46 @@ public class AmazfitBipUCoordinator extends HuamiCoordinator { } @Override - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_amazfitbipu, - R.xml.devicesettings_vibrationpatterns, - //R.xml.devicesettings_canned_dismisscall_16, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_world_clocks, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep_alert_activity_stress, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_custom_emoji_font, - R.xml.devicesettings_liftwrist_display_sensitivity, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_workout_start_on_phone, - R.xml.devicesettings_workout_send_gps_to_band, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_reserve_reminders_calendar, - R.xml.devicesettings_expose_hr_thirdparty, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_high_mtu, - R.xml.devicesettings_device_actions, - R.xml.devicesettings_phone_silent_mode, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - 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_world_clocks); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_amazfitbipu); + display.add(R.xml.devicesettings_liftwrist_display_sensitivity); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep_alert_activity_stress); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List workout = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.WORKOUT); + workout.add(R.xml.devicesettings_workout_start_on_phone); + workout.add(R.xml.devicesettings_workout_send_gps_to_band); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_custom_emoji_font); + notifications.add(R.xml.devicesettings_vibrationpatterns); + notifications.add(R.xml.devicesettings_phone_silent_mode); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_expose_hr_thirdparty); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_device_actions); + connection.add(R.xml.devicesettings_high_mtu); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; } @Override - public String[] getSupportedLanguageSettings(GBDevice device) { + public String[] getSupportedLanguageSettings(final GBDevice device) { return new String[]{ "auto", "cs_CZ", @@ -163,13 +169,11 @@ public class AmazfitBipUCoordinator extends HuamiCoordinator { return BONDING_STYLE_REQUIRE_KEY; } - @Override public int getDeviceNameResource() { return R.string.devicetype_amazfit_bipu; } - @Override public int getDefaultIconResource() { return R.drawable.ic_device_amazfit_bip; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipu/AmazfitBipUFWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipu/AmazfitBipUFWHelper.java index 3d238eb32..313308f48 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipu/AmazfitBipUFWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipu/AmazfitBipUFWHelper.java @@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbipu.Am public class AmazfitBipUFWHelper extends HuamiFWHelper { - public AmazfitBipUFWHelper(Uri uri, Context context) throws IOException { + public AmazfitBipUFWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipu/AmazfitBipUFWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipu/AmazfitBipUFWInstallHandler.java index 2ca966775..b7a9477bf 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipu/AmazfitBipUFWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipu/AmazfitBipUFWInstallHandler.java @@ -28,7 +28,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class AmazfitBipUFWInstallHandler extends AbstractMiBandFWInstallHandler { - AmazfitBipUFWInstallHandler(Uri uri, Context context) { + AmazfitBipUFWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -38,12 +38,12 @@ class AmazfitBipUFWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new AmazfitBipUFWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.AMAZFITBIPU; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipupro/AmazfitBipUProCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipupro/AmazfitBipUProCoordinator.java index df0d0ec14..a3df069d0 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipupro/AmazfitBipUProCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipupro/AmazfitBipUProCoordinator.java @@ -22,36 +22,32 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbipupro.AmazfitBipUProSupport; public class AmazfitBipUProCoordinator extends HuamiCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(AmazfitBipUProCoordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile("Amazfit Bip U Pro", Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - AmazfitBipUProFWInstallHandler handler = new AmazfitBipUProFWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final AmazfitBipUProFWInstallHandler handler = new AmazfitBipUProFWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { + public boolean supportsHeartRateMeasurement(final GBDevice device) { return true; } @@ -91,33 +87,43 @@ public class AmazfitBipUProCoordinator extends HuamiCoordinator { } @Override - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_amazfitbipupro, - R.xml.devicesettings_vibrationpatterns, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_world_clocks, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep_alert_activity_stress, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_custom_emoji_font, - R.xml.devicesettings_liftwrist_display_sensitivity, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_reserve_reminders_calendar, - R.xml.devicesettings_expose_hr_thirdparty, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_high_mtu, - R.xml.devicesettings_device_actions, - R.xml.devicesettings_phone_silent_mode, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - 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_world_clocks); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_amazfitbipupro); + display.add(R.xml.devicesettings_liftwrist_display_sensitivity); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep_alert_activity_stress); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_custom_emoji_font); + notifications.add(R.xml.devicesettings_vibrationpatterns); + notifications.add(R.xml.devicesettings_phone_silent_mode); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_expose_hr_thirdparty); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_device_actions); + connection.add(R.xml.devicesettings_high_mtu); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; } @Override - public String[] getSupportedLanguageSettings(GBDevice device) { + public String[] getSupportedLanguageSettings(final GBDevice device) { return new String[]{ "auto", "cs_CZ", @@ -154,13 +160,11 @@ public class AmazfitBipUProCoordinator extends HuamiCoordinator { return BONDING_STYLE_REQUIRE_KEY; } - @Override public int getDeviceNameResource() { return R.string.devicetype_amazfit_bipupro; } - @Override public int getDefaultIconResource() { return R.drawable.ic_device_amazfit_bip; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipupro/AmazfitBipUProFWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipupro/AmazfitBipUProFWHelper.java index d1b3445c8..0eea9393c 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipupro/AmazfitBipUProFWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipupro/AmazfitBipUProFWHelper.java @@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbipupro public class AmazfitBipUProFWHelper extends HuamiFWHelper { - public AmazfitBipUProFWHelper(Uri uri, Context context) throws IOException { + public AmazfitBipUProFWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipupro/AmazfitBipUProFWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipupro/AmazfitBipUProFWInstallHandler.java index 49fe53e2e..971ccf4b4 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipupro/AmazfitBipUProFWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbipupro/AmazfitBipUProFWInstallHandler.java @@ -28,7 +28,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class AmazfitBipUProFWInstallHandler extends AbstractMiBandFWInstallHandler { - AmazfitBipUProFWInstallHandler(Uri uri, Context context) { + AmazfitBipUProFWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -38,12 +38,12 @@ class AmazfitBipUProFWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new AmazfitBipUProFWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.AMAZFITBIPUPRO; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor/AmazfitCorCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor/AmazfitCorCoordinator.java index 0bab38cab..b826d21f8 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor/AmazfitCorCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor/AmazfitCorCoordinator.java @@ -25,9 +25,12 @@ import androidx.annotation.NonNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; @@ -37,21 +40,19 @@ import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitcor.AmazfitCorSupport; public class AmazfitCorCoordinator extends HuamiCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(AmazfitCorCoordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile("Amazfit Band|Amazfit Cor", Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - AmazfitCorFWInstallHandler handler = new AmazfitCorFWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final AmazfitCorFWInstallHandler handler = new AmazfitCorFWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { + public boolean supportsHeartRateMeasurement(final GBDevice device) { return true; } @@ -71,29 +72,59 @@ public class AmazfitCorCoordinator extends HuamiCoordinator { } @Override - public boolean supportsUnicodeEmojis() { return true; } + public boolean supportsUnicodeEmojis() { + return true; + } @Override - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_amazfitcor, - R.xml.devicesettings_vibrationpatterns, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_custom_emoji_font, - R.xml.devicesettings_liftwrist_display, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_disconnectnotification, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_reserve_reminders_calendar, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_device_actions, - R.xml.devicesettings_phone_silent_mode, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - 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); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_amazfitcor); + display.add(R.xml.devicesettings_liftwrist_display); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_custom_emoji_font); + notifications.add(R.xml.devicesettings_vibrationpatterns); + notifications.add(R.xml.devicesettings_phone_silent_mode); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_disconnectnotification); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_device_actions); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; + } + + @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_BR", + "tr_TR", + "cs_CZ", + "ru_RU", }; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor/AmazfitCorFWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor/AmazfitCorFWHelper.java index e20635e53..0f001ec86 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor/AmazfitCorFWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor/AmazfitCorFWHelper.java @@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitcor.Ama public class AmazfitCorFWHelper extends HuamiFWHelper { - public AmazfitCorFWHelper(Uri uri, Context context) throws IOException { + public AmazfitCorFWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor/AmazfitCorFWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor/AmazfitCorFWInstallHandler.java index 75a98b818..16071172a 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor/AmazfitCorFWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor/AmazfitCorFWInstallHandler.java @@ -28,7 +28,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class AmazfitCorFWInstallHandler extends AbstractMiBandFWInstallHandler { - AmazfitCorFWInstallHandler(Uri uri, Context context) { + AmazfitCorFWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -38,12 +38,12 @@ class AmazfitCorFWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new AmazfitCorFWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.AMAZFITCOR; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor2/AmazfitCor2Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor2/AmazfitCor2Coordinator.java index 317d2c188..abe840b6b 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor2/AmazfitCor2Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor2/AmazfitCor2Coordinator.java @@ -22,36 +22,32 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitcor2.AmazfitCor2Support; public class AmazfitCor2Coordinator extends HuamiCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(AmazfitCor2Coordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile("Amazfit Band 2|Amazfit Cor 2", Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - AmazfitCor2FWInstallHandler handler = new AmazfitCor2FWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final AmazfitCor2FWInstallHandler handler = new AmazfitCor2FWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { + public boolean supportsHeartRateMeasurement(final GBDevice device) { return true; } @@ -76,26 +72,54 @@ public class AmazfitCor2Coordinator extends HuamiCoordinator { } @Override - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_amazfitcor, - R.xml.devicesettings_vibrationpatterns, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_custom_emoji_font, - R.xml.devicesettings_liftwrist_display, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_disconnectnotification, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_reserve_reminders_calendar, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_device_actions, - R.xml.devicesettings_phone_silent_mode, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - 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); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_amazfitcor); + display.add(R.xml.devicesettings_liftwrist_display); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_custom_emoji_font); + notifications.add(R.xml.devicesettings_vibrationpatterns); + notifications.add(R.xml.devicesettings_phone_silent_mode); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_disconnectnotification); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_device_actions); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; + } + + @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_BR", + "tr_TR", + "cs_CZ", + "ru_RU", }; } @@ -110,7 +134,6 @@ public class AmazfitCor2Coordinator extends HuamiCoordinator { return R.string.devicetype_amazfit_cor2; } - @Override public int getDefaultIconResource() { return R.drawable.ic_device_default; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor2/AmazfitCor2FWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor2/AmazfitCor2FWHelper.java index 6c0a969d2..61c3d2b64 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor2/AmazfitCor2FWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor2/AmazfitCor2FWHelper.java @@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitcor2.Am public class AmazfitCor2FWHelper extends HuamiFWHelper { - public AmazfitCor2FWHelper(Uri uri, Context context) throws IOException { + public AmazfitCor2FWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor2/AmazfitCor2FWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor2/AmazfitCor2FWInstallHandler.java index 77a8463be..dce08ea71 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor2/AmazfitCor2FWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitcor2/AmazfitCor2FWInstallHandler.java @@ -28,7 +28,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class AmazfitCor2FWInstallHandler extends AbstractMiBandFWInstallHandler { - AmazfitCor2FWInstallHandler(Uri uri, Context context) { + AmazfitCor2FWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -38,12 +38,12 @@ class AmazfitCor2FWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new AmazfitCor2FWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.AMAZFITCOR2; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRCoordinator.java index ce7e7d79e..9680e0883 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRCoordinator.java @@ -22,30 +22,26 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgtr.AmazfitGTRSupport; public class AmazfitGTRCoordinator extends HuamiCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(AmazfitGTRCoordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile("Amazfit GTR", Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - AmazfitGTRFWInstallHandler handler = new AmazfitGTRFWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final AmazfitGTRFWInstallHandler handler = new AmazfitGTRFWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @@ -55,7 +51,7 @@ public class AmazfitGTRCoordinator extends HuamiCoordinator { } @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { + public boolean supportsHeartRateMeasurement(final GBDevice device) { return true; } @@ -73,28 +69,58 @@ public class AmazfitGTRCoordinator extends HuamiCoordinator { public boolean supportsMusicInfo() { return true; } - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_amazfitgtsgtr, - R.xml.devicesettings_vibrationpatterns, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_liftwrist_display, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_disconnectnotification, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_reserve_reminders_calendar, - R.xml.devicesettings_expose_hr_thirdparty, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_buttonactions_with_longpress, - R.xml.devicesettings_device_actions, - R.xml.devicesettings_phone_silent_mode, - R.xml.devicesettings_high_mtu, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - R.xml.devicesettings_transliteration + + @Override + public DeviceSpecificSettings getDeviceSpecificSettings(final GBDevice device) { + final DeviceSpecificSettings deviceSpecificSettings = new DeviceSpecificSettings(); + + final List generic = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.GENERIC); + generic.add(R.xml.devicesettings_wearlocation); + generic.add(R.xml.devicesettings_buttonactions_with_longpress); + final List dateTime = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DATE_TIME); + dateTime.add(R.xml.devicesettings_timeformat); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_amazfitgtsgtr); + display.add(R.xml.devicesettings_liftwrist_display); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_vibrationpatterns); + notifications.add(R.xml.devicesettings_phone_silent_mode); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_disconnectnotification); + connection.add(R.xml.devicesettings_expose_hr_thirdparty); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_device_actions); + connection.add(R.xml.devicesettings_high_mtu); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; + } + + @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_BR", + "tr_TR", + "cs_CZ", + "ru_RU", }; } @@ -104,7 +130,6 @@ public class AmazfitGTRCoordinator extends HuamiCoordinator { return AmazfitGTRSupport.class; } - @Override public int getDeviceNameResource() { return R.string.devicetype_amazfit_gtr; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRFWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRFWHelper.java index 8e9a350e8..45be2c954 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRFWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRFWHelper.java @@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgtr.Ama public class AmazfitGTRFWHelper extends HuamiFWHelper { - public AmazfitGTRFWHelper(Uri uri, Context context) throws IOException { + public AmazfitGTRFWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRFWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRFWInstallHandler.java index efa40f8e4..e3086aaaa 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRFWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRFWInstallHandler.java @@ -28,7 +28,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class AmazfitGTRFWInstallHandler extends AbstractMiBandFWInstallHandler { - AmazfitGTRFWInstallHandler(Uri uri, Context context) { + AmazfitGTRFWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -38,12 +38,12 @@ class AmazfitGTRFWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new AmazfitGTRFWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.AMAZFITGTR; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRLiteCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRLiteCoordinator.java index cf2dd772f..83f375cba 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRLiteCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRLiteCoordinator.java @@ -22,31 +22,27 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgtr.AmazfitGTRLiteSupport; public class AmazfitGTRLiteCoordinator extends HuamiCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(AmazfitGTRLiteCoordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile("Amazfit GTR L", Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - AmazfitGTRLiteFWInstallHandler handler = new AmazfitGTRLiteFWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final AmazfitGTRLiteFWInstallHandler handler = new AmazfitGTRLiteFWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @@ -56,15 +52,10 @@ public class AmazfitGTRLiteCoordinator extends HuamiCoordinator { } @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { + public boolean supportsHeartRateMeasurement(final GBDevice device) { return true; } - @Override - public boolean supportsActivityTracks() { - return false; - } - @Override public boolean supportsWeather() { return true; @@ -75,25 +66,54 @@ public class AmazfitGTRLiteCoordinator extends HuamiCoordinator { return true; } - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_amazfitgtsgtr, - R.xml.devicesettings_vibrationpatterns, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_liftwrist_display, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_disconnectnotification, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_reserve_reminders_calendar, - R.xml.devicesettings_expose_hr_thirdparty, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_phone_silent_mode, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - R.xml.devicesettings_transliteration + @Override + 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); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_amazfitgtsgtr); + display.add(R.xml.devicesettings_liftwrist_display); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_vibrationpatterns); + notifications.add(R.xml.devicesettings_phone_silent_mode); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_disconnectnotification); + connection.add(R.xml.devicesettings_expose_hr_thirdparty); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; + } + + @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_BR", + "tr_TR", + "cs_CZ", + "ru_RU", }; } @@ -103,7 +123,6 @@ public class AmazfitGTRLiteCoordinator extends HuamiCoordinator { return AmazfitGTRLiteSupport.class; } - @Override public int getDeviceNameResource() { return R.string.devicetype_amazfit_gtr_lite; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRLiteFWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRLiteFWHelper.java index 99ad699f2..ecb63afc9 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRLiteFWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRLiteFWHelper.java @@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgtr.Ama public class AmazfitGTRLiteFWHelper extends HuamiFWHelper { - public AmazfitGTRLiteFWHelper(Uri uri, Context context) throws IOException { + public AmazfitGTRLiteFWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRLiteFWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRLiteFWInstallHandler.java index 82c902a4a..46a136cae 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRLiteFWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr/AmazfitGTRLiteFWInstallHandler.java @@ -28,7 +28,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class AmazfitGTRLiteFWInstallHandler extends AbstractMiBandFWInstallHandler { - AmazfitGTRLiteFWInstallHandler(Uri uri, Context context) { + AmazfitGTRLiteFWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -38,12 +38,12 @@ class AmazfitGTRLiteFWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new AmazfitGTRLiteFWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.AMAZFITGTR_LITE; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2Coordinator.java index 5e41a5942..db429d804 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2Coordinator.java @@ -22,31 +22,27 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgtr2.AmazfitGTR2Support; public class AmazfitGTR2Coordinator extends HuamiCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(AmazfitGTR2Coordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile("Amazfit GTR 2", Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - AmazfitGTR2FWInstallHandler handler = new AmazfitGTR2FWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final AmazfitGTR2FWInstallHandler handler = new AmazfitGTR2FWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @@ -56,7 +52,7 @@ public class AmazfitGTR2Coordinator extends HuamiCoordinator { } @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { + public boolean supportsHeartRateMeasurement(final GBDevice device) { return true; } @@ -80,27 +76,56 @@ public class AmazfitGTR2Coordinator extends HuamiCoordinator { return true; } - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_amazfitgtsgtr2, - R.xml.devicesettings_vibrationpatterns, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_liftwrist_display, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_disconnectnotification, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_reserve_reminders_calendar, - R.xml.devicesettings_expose_hr_thirdparty, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_device_actions, - R.xml.devicesettings_phone_silent_mode, - R.xml.devicesettings_high_mtu, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - R.xml.devicesettings_transliteration + @Override + 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); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_amazfitgtsgtr2); + display.add(R.xml.devicesettings_liftwrist_display); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_vibrationpatterns); + notifications.add(R.xml.devicesettings_phone_silent_mode); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_disconnectnotification); + connection.add(R.xml.devicesettings_expose_hr_thirdparty); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_device_actions); + connection.add(R.xml.devicesettings_high_mtu); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; + } + + @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_BR", + "tr_TR", + "cs_CZ", + "ru_RU", }; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2FWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2FWHelper.java index b8fd0b05c..1f7c255d2 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2FWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2FWHelper.java @@ -27,7 +27,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgtr2.Am public class AmazfitGTR2FWHelper extends HuamiFWHelper { - public AmazfitGTR2FWHelper(Uri uri, Context context) throws IOException { + public AmazfitGTR2FWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2FWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2FWInstallHandler.java index d85af4623..09c9825a7 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2FWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2FWInstallHandler.java @@ -28,7 +28,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class AmazfitGTR2FWInstallHandler extends AbstractMiBandFWInstallHandler { - AmazfitGTR2FWInstallHandler(Uri uri, Context context) { + AmazfitGTR2FWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -38,12 +38,12 @@ class AmazfitGTR2FWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new AmazfitGTR2FWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.AMAZFITGTR2; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2eCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2eCoordinator.java index 219656051..1e3b71d60 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2eCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2eCoordinator.java @@ -22,31 +22,27 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgtr2.AmazfitGTR2eSupport; public class AmazfitGTR2eCoordinator extends HuamiCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(AmazfitGTR2eCoordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile("Amazfit GTR 2e", Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - AmazfitGTR2eFWInstallHandler handler = new AmazfitGTR2eFWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final AmazfitGTR2eFWInstallHandler handler = new AmazfitGTR2eFWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @@ -56,7 +52,7 @@ public class AmazfitGTR2eCoordinator extends HuamiCoordinator { } @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { + public boolean supportsHeartRateMeasurement(final GBDevice device) { return true; } @@ -80,27 +76,56 @@ public class AmazfitGTR2eCoordinator extends HuamiCoordinator { return true; } - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_amazfitgtsgtr2, - R.xml.devicesettings_vibrationpatterns, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_liftwrist_display, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_disconnectnotification, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_reserve_reminders_calendar, - R.xml.devicesettings_expose_hr_thirdparty, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_device_actions, - R.xml.devicesettings_phone_silent_mode, - R.xml.devicesettings_high_mtu, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - R.xml.devicesettings_transliteration + @Override + 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); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_amazfitgtsgtr2); + display.add(R.xml.devicesettings_liftwrist_display); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_vibrationpatterns); + notifications.add(R.xml.devicesettings_phone_silent_mode); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_disconnectnotification); + connection.add(R.xml.devicesettings_expose_hr_thirdparty); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_device_actions); + connection.add(R.xml.devicesettings_high_mtu); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; + } + + @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_BR", + "tr_TR", + "cs_CZ", + "ru_RU", }; } @@ -110,7 +135,6 @@ public class AmazfitGTR2eCoordinator extends HuamiCoordinator { return AmazfitGTR2eSupport.class; } - @Override public int getDeviceNameResource() { return R.string.devicetype_amazfit_gtr2e; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2eFWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2eFWHelper.java index 1a5c38f2e..92700fe6e 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2eFWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2eFWHelper.java @@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgtr2.Am public class AmazfitGTR2eFWHelper extends HuamiFWHelper { - public AmazfitGTR2eFWHelper(Uri uri, Context context) throws IOException { + public AmazfitGTR2eFWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2eFWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2eFWInstallHandler.java index 38516e93b..31e9d64c5 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2eFWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr2/AmazfitGTR2eFWInstallHandler.java @@ -28,7 +28,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class AmazfitGTR2eFWInstallHandler extends AbstractMiBandFWInstallHandler { - AmazfitGTR2eFWInstallHandler(Uri uri, Context context) { + AmazfitGTR2eFWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -38,12 +38,12 @@ class AmazfitGTR2eFWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new AmazfitGTR2eFWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.AMAZFITGTR2E; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts/AmazfitGTSCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts/AmazfitGTSCoordinator.java index ca1a40629..3d763f6bf 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts/AmazfitGTSCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts/AmazfitGTSCoordinator.java @@ -22,31 +22,27 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgts.AmazfitGTSSupport; public class AmazfitGTSCoordinator extends HuamiCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(AmazfitGTSCoordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile("Amazfit GTS", Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - AmazfitGTSFWInstallHandler handler = new AmazfitGTSFWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final AmazfitGTSFWInstallHandler handler = new AmazfitGTSFWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @@ -56,7 +52,7 @@ public class AmazfitGTSCoordinator extends HuamiCoordinator { } @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { + public boolean supportsHeartRateMeasurement(final GBDevice device) { return true; } @@ -75,27 +71,56 @@ public class AmazfitGTSCoordinator extends HuamiCoordinator { return true; } - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_amazfitgtsgtr, - R.xml.devicesettings_vibrationpatterns, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_liftwrist_display, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_disconnectnotification, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_reserve_reminders_calendar, - R.xml.devicesettings_expose_hr_thirdparty, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_device_actions, - R.xml.devicesettings_phone_silent_mode, - R.xml.devicesettings_high_mtu, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - R.xml.devicesettings_transliteration + @Override + 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); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_amazfitgtsgtr); + display.add(R.xml.devicesettings_liftwrist_display); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_vibrationpatterns); + notifications.add(R.xml.devicesettings_phone_silent_mode); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_disconnectnotification); + connection.add(R.xml.devicesettings_expose_hr_thirdparty); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_device_actions); + connection.add(R.xml.devicesettings_high_mtu); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; + } + + @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_BR", + "tr_TR", + "cs_CZ", + "ru_RU", }; } @@ -105,13 +130,11 @@ public class AmazfitGTSCoordinator extends HuamiCoordinator { return AmazfitGTSSupport.class; } - @Override public int getDeviceNameResource() { return R.string.devicetype_amazfit_gts; } - @Override public int getDefaultIconResource() { return R.drawable.ic_device_amazfit_bip; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts/AmazfitGTSFWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts/AmazfitGTSFWHelper.java index afaf71fb2..ad96628c4 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts/AmazfitGTSFWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts/AmazfitGTSFWHelper.java @@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgts.Ama public class AmazfitGTSFWHelper extends HuamiFWHelper { - public AmazfitGTSFWHelper(Uri uri, Context context) throws IOException { + public AmazfitGTSFWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts/AmazfitGTSFWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts/AmazfitGTSFWInstallHandler.java index e093a9d6b..da7eb7232 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts/AmazfitGTSFWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts/AmazfitGTSFWInstallHandler.java @@ -28,7 +28,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class AmazfitGTSFWInstallHandler extends AbstractMiBandFWInstallHandler { - AmazfitGTSFWInstallHandler(Uri uri, Context context) { + AmazfitGTSFWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -38,12 +38,12 @@ class AmazfitGTSFWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new AmazfitGTSFWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.AMAZFITGTS; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2Coordinator.java index e9907bd65..ced32ed1d 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2Coordinator.java @@ -22,31 +22,27 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgts2.AmazfitGTS2Support; public class AmazfitGTS2Coordinator extends HuamiCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(AmazfitGTS2Coordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile("Amazfit GTS 2", Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - AmazfitGTS2FWInstallHandler handler = new AmazfitGTS2FWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final AmazfitGTS2FWInstallHandler handler = new AmazfitGTS2FWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @@ -56,7 +52,7 @@ public class AmazfitGTS2Coordinator extends HuamiCoordinator { } @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { + public boolean supportsHeartRateMeasurement(final GBDevice device) { return true; } @@ -80,27 +76,56 @@ public class AmazfitGTS2Coordinator extends HuamiCoordinator { return true; } - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_amazfitgtsgtr2, - R.xml.devicesettings_vibrationpatterns, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_liftwrist_display, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_disconnectnotification, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_reserve_reminders_calendar, - R.xml.devicesettings_expose_hr_thirdparty, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_device_actions, - R.xml.devicesettings_phone_silent_mode, - R.xml.devicesettings_high_mtu, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - R.xml.devicesettings_transliteration + @Override + 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); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_amazfitgtsgtr2); + display.add(R.xml.devicesettings_liftwrist_display); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_vibrationpatterns); + notifications.add(R.xml.devicesettings_phone_silent_mode); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_disconnectnotification); + connection.add(R.xml.devicesettings_expose_hr_thirdparty); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_device_actions); + connection.add(R.xml.devicesettings_high_mtu); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; + } + + @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_BR", + "tr_TR", + "cs_CZ", + "ru_RU", }; } @@ -110,13 +135,11 @@ public class AmazfitGTS2Coordinator extends HuamiCoordinator { return AmazfitGTS2Support.class; } - @Override public int getDeviceNameResource() { return R.string.devicetype_amazfit_gts2; } - @Override public int getDefaultIconResource() { return R.drawable.ic_device_amazfit_bip; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2FWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2FWHelper.java index a4d5c899f..38414940d 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2FWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2FWHelper.java @@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgts2.Am public class AmazfitGTS2FWHelper extends HuamiFWHelper { - public AmazfitGTS2FWHelper(Uri uri, Context context) throws IOException { + public AmazfitGTS2FWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2FWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2FWInstallHandler.java index 80c90c161..225605130 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2FWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2FWInstallHandler.java @@ -28,7 +28,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class AmazfitGTS2FWInstallHandler extends AbstractMiBandFWInstallHandler { - AmazfitGTS2FWInstallHandler(Uri uri, Context context) { + AmazfitGTS2FWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -38,12 +38,12 @@ class AmazfitGTS2FWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new AmazfitGTS2FWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.AMAZFITGTS2; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2MiniCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2MiniCoordinator.java index 0b9853e06..38b77a67d 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2MiniCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2MiniCoordinator.java @@ -22,55 +22,62 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgts2.AmazfitGTS2MiniSupport; public class AmazfitGTS2MiniCoordinator extends AmazfitGTS2Coordinator { - private static final Logger LOG = LoggerFactory.getLogger(AmazfitGTS2MiniCoordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile("Amazfit GTS2 mini", Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - AmazfitGTS2MiniFWInstallHandler handler = new AmazfitGTS2MiniFWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final AmazfitGTS2MiniFWInstallHandler handler = new AmazfitGTS2MiniFWInstallHandler(uri, context); return handler.isValid() ? handler : null; } - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_amazfitgts2mini, - R.xml.devicesettings_vibrationpatterns, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_liftwrist_display, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_disconnectnotification, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_reserve_reminders_calendar, - R.xml.devicesettings_expose_hr_thirdparty, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_device_actions, - R.xml.devicesettings_phone_silent_mode, - R.xml.devicesettings_high_mtu, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - R.xml.devicesettings_transliteration - }; + @Override + 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); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_amazfitgts2mini); + display.add(R.xml.devicesettings_liftwrist_display); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_vibrationpatterns); + notifications.add(R.xml.devicesettings_phone_silent_mode); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_disconnectnotification); + connection.add(R.xml.devicesettings_expose_hr_thirdparty); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_device_actions); + connection.add(R.xml.devicesettings_high_mtu); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; } @Override @@ -78,17 +85,6 @@ public class AmazfitGTS2MiniCoordinator extends AmazfitGTS2Coordinator { return R.string.devicetype_amazfit_gts2_mini; } - - @Override - public int getDefaultIconResource() { - return R.drawable.ic_device_amazfit_bip; - } - - @Override - public int getDisabledIconResource() { - return R.drawable.ic_device_amazfit_bip_disabled; - } - @NonNull @Override public Class getDeviceSupportClass() { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2MiniFWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2MiniFWHelper.java index 7a0555644..c39b39e48 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2MiniFWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2MiniFWHelper.java @@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgts2.Am public class AmazfitGTS2MiniFWHelper extends HuamiFWHelper { - public AmazfitGTS2MiniFWHelper(Uri uri, Context context) throws IOException { + public AmazfitGTS2MiniFWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2MiniFWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2MiniFWInstallHandler.java index a4ff8ca0a..25d33ddbc 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2MiniFWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2MiniFWInstallHandler.java @@ -28,7 +28,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class AmazfitGTS2MiniFWInstallHandler extends AbstractMiBandFWInstallHandler { - AmazfitGTS2MiniFWInstallHandler(Uri uri, Context context) { + AmazfitGTS2MiniFWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -38,12 +38,12 @@ class AmazfitGTS2MiniFWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new AmazfitGTS2MiniFWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.AMAZFITGTS2_MINI; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2eCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2eCoordinator.java index e557b6fff..eaa34ca28 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2eCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2eCoordinator.java @@ -22,31 +22,27 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgts2.AmazfitGTS2eSupport; public class AmazfitGTS2eCoordinator extends HuamiCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(AmazfitGTS2eCoordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile("Amazfit GTS 2e", Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - AmazfitGTS2eFWInstallHandler handler = new AmazfitGTS2eFWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final AmazfitGTS2eFWInstallHandler handler = new AmazfitGTS2eFWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @@ -56,7 +52,7 @@ public class AmazfitGTS2eCoordinator extends HuamiCoordinator { } @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { + public boolean supportsHeartRateMeasurement(final GBDevice device) { return true; } @@ -80,27 +76,56 @@ public class AmazfitGTS2eCoordinator extends HuamiCoordinator { return true; } - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_amazfitgtsgtr2, - R.xml.devicesettings_vibrationpatterns, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_liftwrist_display_sensitivity, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_disconnectnotification, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_reserve_reminders_calendar, - R.xml.devicesettings_expose_hr_thirdparty, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_device_actions, - R.xml.devicesettings_phone_silent_mode, - R.xml.devicesettings_high_mtu, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - R.xml.devicesettings_transliteration + @Override + 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); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_amazfitgtsgtr2); + display.add(R.xml.devicesettings_liftwrist_display_sensitivity); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_vibrationpatterns); + notifications.add(R.xml.devicesettings_phone_silent_mode); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_disconnectnotification); + connection.add(R.xml.devicesettings_expose_hr_thirdparty); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_device_actions); + connection.add(R.xml.devicesettings_high_mtu); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; + } + + @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_BR", + "tr_TR", + "cs_CZ", + "ru_RU", }; } @@ -110,13 +135,11 @@ public class AmazfitGTS2eCoordinator extends HuamiCoordinator { return AmazfitGTS2eSupport.class; } - @Override public int getDeviceNameResource() { return R.string.devicetype_amazfit_gts2e; } - @Override public int getDefaultIconResource() { return R.drawable.ic_device_amazfit_bip; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2eFWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2eFWHelper.java index 68d4dabd0..685ddc0b2 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2eFWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2eFWHelper.java @@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgts2.Am public class AmazfitGTS2eFWHelper extends HuamiFWHelper { - public AmazfitGTS2eFWHelper(Uri uri, Context context) throws IOException { + public AmazfitGTS2eFWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2eFWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2eFWInstallHandler.java index 2517b4d2f..79a8e45a7 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2eFWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts2/AmazfitGTS2eFWInstallHandler.java @@ -28,7 +28,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class AmazfitGTS2eFWInstallHandler extends AbstractMiBandFWInstallHandler { - AmazfitGTS2eFWInstallHandler(Uri uri, Context context) { + AmazfitGTS2eFWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -38,12 +38,12 @@ class AmazfitGTS2eFWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new AmazfitGTS2eFWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.AMAZFITGTS2E; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitneo/AmazfitNeoCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitneo/AmazfitNeoCoordinator.java index 09846501c..878fdc139 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitneo/AmazfitNeoCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitneo/AmazfitNeoCoordinator.java @@ -22,40 +22,35 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - 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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.capabilities.HeartRateCapability; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitneo.AmazfitNeoSupport; public class AmazfitNeoCoordinator extends HuamiCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(AmazfitNeoCoordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile(HuamiConst.AMAZFIT_NEO_NAME, Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - AmazfitNeoFWInstallHandler handler = new AmazfitNeoFWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final AmazfitNeoFWInstallHandler handler = new AmazfitNeoFWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { + public boolean supportsHeartRateMeasurement(final GBDevice device) { return true; } @@ -69,11 +64,6 @@ public class AmazfitNeoCoordinator extends HuamiCoordinator { return true; } - @Override - public boolean supportsActivityTracks() { - return false; - } - @Override public int getWorldClocksSlotCount() { return 20; // max in Zepp app @@ -85,26 +75,37 @@ public class AmazfitNeoCoordinator extends HuamiCoordinator { } @Override - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_amazfitneo, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep_activity, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_world_clocks, - R.xml.devicesettings_liftwrist_display, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_hourly_chime, - R.xml.devicesettings_expose_hr_thirdparty, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_device_actions, - R.xml.devicesettings_phone_silent_mode, - R.xml.devicesettings_high_mtu, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - 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_world_clocks); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_amazfitneo_display); + display.add(R.xml.devicesettings_liftwrist_display); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep_activity); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_phone_silent_mode); + notifications.add(R.xml.devicesettings_transliteration); + final List sound = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.SOUND); + sound.add(R.xml.devicesettings_amazfitneo_sound); + sound.add(R.xml.devicesettings_hourly_chime); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_expose_hr_thirdparty); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_device_actions); + connection.add(R.xml.devicesettings_high_mtu); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; } @Override @@ -129,13 +130,11 @@ public class AmazfitNeoCoordinator extends HuamiCoordinator { return AmazfitNeoSupport.class; } - @Override public int getDeviceNameResource() { return R.string.devicetype_amazfit_neo; } - @Override public int getDefaultIconResource() { return R.drawable.ic_device_amazfit_bip; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitneo/AmazfitNeoFWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitneo/AmazfitNeoFWHelper.java index 1e347c344..42648f8d4 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitneo/AmazfitNeoFWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitneo/AmazfitNeoFWHelper.java @@ -27,7 +27,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitneo.Ama public class AmazfitNeoFWHelper extends HuamiFWHelper { - public AmazfitNeoFWHelper(Uri uri, Context context) throws IOException { + public AmazfitNeoFWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitneo/AmazfitNeoFWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitneo/AmazfitNeoFWInstallHandler.java index 790641427..26bf60720 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitneo/AmazfitNeoFWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitneo/AmazfitNeoFWInstallHandler.java @@ -29,7 +29,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class AmazfitNeoFWInstallHandler extends AbstractMiBandFWInstallHandler { - AmazfitNeoFWInstallHandler(Uri uri, Context context) { + AmazfitNeoFWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -39,12 +39,12 @@ class AmazfitNeoFWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new AmazfitNeoFWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.AMAZFITNEO; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpop/AmazfitPopCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpop/AmazfitPopCoordinator.java index 95828e7e8..3929b4d71 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpop/AmazfitPopCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpop/AmazfitPopCoordinator.java @@ -21,30 +21,23 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.util.regex.Pattern; import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbipu.AmazfitBipUCoordinator; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitpop.AmazfitPopSupport; public class AmazfitPopCoordinator extends AmazfitBipUCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(AmazfitPopCoordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile("Amazfit Pop", Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - AmazfitPopFWInstallHandler handler = new AmazfitPopFWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final AmazfitPopFWInstallHandler handler = new AmazfitPopFWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @@ -53,7 +46,6 @@ public class AmazfitPopCoordinator extends AmazfitBipUCoordinator { return R.string.devicetype_amazfit_pop; } - @Override public int getDefaultIconResource() { return R.drawable.ic_device_amazfit_bip; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpop/AmazfitPopFWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpop/AmazfitPopFWHelper.java index 2f9989b51..75a4603af 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpop/AmazfitPopFWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpop/AmazfitPopFWHelper.java @@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitpoppro. public class AmazfitPopFWHelper extends HuamiFWHelper { - public AmazfitPopFWHelper(Uri uri, Context context) throws IOException { + public AmazfitPopFWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpop/AmazfitPopFWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpop/AmazfitPopFWInstallHandler.java index 075571eca..5602867bc 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpop/AmazfitPopFWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpop/AmazfitPopFWInstallHandler.java @@ -28,7 +28,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class AmazfitPopFWInstallHandler extends AbstractMiBandFWInstallHandler { - AmazfitPopFWInstallHandler(Uri uri, Context context) { + AmazfitPopFWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -38,12 +38,12 @@ class AmazfitPopFWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new AmazfitPopFWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.AMAZFITPOP; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpoppro/AmazfitPopProCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpoppro/AmazfitPopProCoordinator.java index 2da52ad5d..eb8211614 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpoppro/AmazfitPopProCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpoppro/AmazfitPopProCoordinator.java @@ -21,30 +21,23 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.util.regex.Pattern; import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitbipupro.AmazfitBipUProCoordinator; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitpoppro.AmazfitPopProSupport; public class AmazfitPopProCoordinator extends AmazfitBipUProCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(AmazfitPopProCoordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile("Amazfit Pop Pro", Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - AmazfitPopProFWInstallHandler handler = new AmazfitPopProFWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final AmazfitPopProFWInstallHandler handler = new AmazfitPopProFWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @@ -53,17 +46,6 @@ public class AmazfitPopProCoordinator extends AmazfitBipUProCoordinator { return R.string.devicetype_amazfit_pop_pro; } - - @Override - public int getDefaultIconResource() { - return R.drawable.ic_device_amazfit_bip; - } - - @Override - public int getDisabledIconResource() { - return R.drawable.ic_device_amazfit_bip_disabled; - } - @NonNull @Override public Class getDeviceSupportClass() { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpoppro/AmazfitPopProFWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpoppro/AmazfitPopProFWHelper.java index 4b11a293d..553de244b 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpoppro/AmazfitPopProFWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpoppro/AmazfitPopProFWHelper.java @@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitpoppro. public class AmazfitPopProFWHelper extends HuamiFWHelper { - public AmazfitPopProFWHelper(Uri uri, Context context) throws IOException { + public AmazfitPopProFWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpoppro/AmazfitPopProFWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpoppro/AmazfitPopProFWInstallHandler.java index 5534f8ccf..b552e3593 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpoppro/AmazfitPopProFWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitpoppro/AmazfitPopProFWInstallHandler.java @@ -28,7 +28,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class AmazfitPopProFWInstallHandler extends AbstractMiBandFWInstallHandler { - AmazfitPopProFWInstallHandler(Uri uri, Context context) { + AmazfitPopProFWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -38,12 +38,12 @@ class AmazfitPopProFWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new AmazfitPopProFWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.AMAZFITPOPPRO; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrex/AmazfitTRexCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrex/AmazfitTRexCoordinator.java index 42ff21732..73c5e875d 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrex/AmazfitTRexCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrex/AmazfitTRexCoordinator.java @@ -22,31 +22,27 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfittrex.AmazfitTRexSupport; public class AmazfitTRexCoordinator extends HuamiCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(AmazfitTRexCoordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile("Amazfit T-Rex", Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - AmazfitTRexFWInstallHandler handler = new AmazfitTRexFWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final AmazfitTRexFWInstallHandler handler = new AmazfitTRexFWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @@ -56,7 +52,7 @@ public class AmazfitTRexCoordinator extends HuamiCoordinator { } @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { + public boolean supportsHeartRateMeasurement(final GBDevice device) { return true; } @@ -74,27 +70,57 @@ public class AmazfitTRexCoordinator extends HuamiCoordinator { public boolean supportsMusicInfo() { return true; } - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_amazfittrex, - R.xml.devicesettings_vibrationpatterns, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_liftwrist_display, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_disconnectnotification, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_reserve_reminders_calendar, - R.xml.devicesettings_expose_hr_thirdparty, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_device_actions, - R.xml.devicesettings_phone_silent_mode, - R.xml.devicesettings_high_mtu, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - R.xml.devicesettings_transliteration + + @Override + 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); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_amazfittrex); + display.add(R.xml.devicesettings_liftwrist_display); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_vibrationpatterns); + notifications.add(R.xml.devicesettings_phone_silent_mode); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_disconnectnotification); + connection.add(R.xml.devicesettings_expose_hr_thirdparty); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_device_actions); + connection.add(R.xml.devicesettings_high_mtu); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; + } + + @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_BR", + "tr_TR", + "cs_CZ", + "ru_RU", }; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrex/AmazfitTRexFWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrex/AmazfitTRexFWHelper.java index bdb5905eb..2581480d0 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrex/AmazfitTRexFWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrex/AmazfitTRexFWHelper.java @@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfittrex.Am public class AmazfitTRexFWHelper extends HuamiFWHelper { - public AmazfitTRexFWHelper(Uri uri, Context context) throws IOException { + public AmazfitTRexFWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrex/AmazfitTRexFWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrex/AmazfitTRexFWInstallHandler.java index da2b2a64a..d5ca39631 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrex/AmazfitTRexFWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrex/AmazfitTRexFWInstallHandler.java @@ -28,7 +28,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class AmazfitTRexFWInstallHandler extends AbstractMiBandFWInstallHandler { - AmazfitTRexFWInstallHandler(Uri uri, Context context) { + AmazfitTRexFWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -38,12 +38,12 @@ class AmazfitTRexFWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new AmazfitTRexFWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.AMAZFITTREX; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrexpro/AmazfitTRexProCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrexpro/AmazfitTRexProCoordinator.java index 4195f68a3..5bdeed5d7 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrexpro/AmazfitTRexProCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrexpro/AmazfitTRexProCoordinator.java @@ -22,31 +22,27 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfittrexpro.AmazfitTRexProSupport; public class AmazfitTRexProCoordinator extends HuamiCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(AmazfitTRexProCoordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile("Amazfit T-Rex Pro", Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - AmazfitTRexProFWInstallHandler handler = new AmazfitTRexProFWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final AmazfitTRexProFWInstallHandler handler = new AmazfitTRexProFWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @@ -56,7 +52,7 @@ public class AmazfitTRexProCoordinator extends HuamiCoordinator { } @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { + public boolean supportsHeartRateMeasurement(final GBDevice device) { return true; } @@ -74,27 +70,57 @@ public class AmazfitTRexProCoordinator extends HuamiCoordinator { public boolean supportsMusicInfo() { return true; } - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_amazfittrexpro, - R.xml.devicesettings_vibrationpatterns, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_liftwrist_display_sensitivity, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_disconnectnotification, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_reserve_reminders_calendar, - R.xml.devicesettings_expose_hr_thirdparty, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_device_actions, - R.xml.devicesettings_phone_silent_mode, - R.xml.devicesettings_high_mtu, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - R.xml.devicesettings_transliteration + + @Override + 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); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_amazfittrexpro); + display.add(R.xml.devicesettings_liftwrist_display_sensitivity); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_vibrationpatterns); + notifications.add(R.xml.devicesettings_phone_silent_mode); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_disconnectnotification); + connection.add(R.xml.devicesettings_expose_hr_thirdparty); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_device_actions); + connection.add(R.xml.devicesettings_high_mtu); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; + } + + @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_BR", + "tr_TR", + "cs_CZ", + "ru_RU", }; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrexpro/AmazfitTRexProFWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrexpro/AmazfitTRexProFWHelper.java index a7cda0671..5a861b938 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrexpro/AmazfitTRexProFWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrexpro/AmazfitTRexProFWHelper.java @@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfittrexpro public class AmazfitTRexProFWHelper extends HuamiFWHelper { - public AmazfitTRexProFWHelper(Uri uri, Context context) throws IOException { + public AmazfitTRexProFWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrexpro/AmazfitTRexProFWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrexpro/AmazfitTRexProFWInstallHandler.java index ebfa2eb55..1ec2147a4 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrexpro/AmazfitTRexProFWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfittrexpro/AmazfitTRexProFWInstallHandler.java @@ -28,7 +28,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class AmazfitTRexProFWInstallHandler extends AbstractMiBandFWInstallHandler { - AmazfitTRexProFWInstallHandler(Uri uri, Context context) { + AmazfitTRexProFWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -38,12 +38,12 @@ class AmazfitTRexProFWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new AmazfitTRexProFWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.AMAZFITTREXPRO; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitvergel/AmazfitVergeLCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitvergel/AmazfitVergeLCoordinator.java index ae2275d12..90eea363e 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitvergel/AmazfitVergeLCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitvergel/AmazfitVergeLCoordinator.java @@ -21,31 +21,27 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitvergel.AmazfitVergeLSupport; public class AmazfitVergeLCoordinator extends HuamiCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(AmazfitVergeLCoordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile("Amazfit Verge L", Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - AmazfitVergeLFWInstallHandler handler = new AmazfitVergeLFWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final AmazfitVergeLFWInstallHandler handler = new AmazfitVergeLFWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @@ -55,7 +51,7 @@ public class AmazfitVergeLCoordinator extends HuamiCoordinator { } @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { + public boolean supportsHeartRateMeasurement(final GBDevice device) { return true; } @@ -75,27 +71,38 @@ public class AmazfitVergeLCoordinator extends HuamiCoordinator { } - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_amazfitvergel, - R.xml.devicesettings_vibrationpatterns, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_liftwrist_display, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_reserve_reminders_calendar, - R.xml.devicesettings_expose_hr_thirdparty, - R.xml.devicesettings_disconnectnotification, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_buttonactions_with_longpress, - R.xml.devicesettings_phone_silent_mode, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - R.xml.devicesettings_transliteration - }; + @Override + public DeviceSpecificSettings getDeviceSpecificSettings(final GBDevice device) { + final DeviceSpecificSettings deviceSpecificSettings = new DeviceSpecificSettings(); + + final List generic = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.GENERIC); + generic.add(R.xml.devicesettings_wearlocation); + generic.add(R.xml.devicesettings_buttonactions_with_longpress); + final List dateTime = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DATE_TIME); + dateTime.add(R.xml.devicesettings_timeformat); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_amazfitvergel); + display.add(R.xml.devicesettings_liftwrist_display); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_vibrationpatterns); + notifications.add(R.xml.devicesettings_phone_silent_mode); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_disconnectnotification); + connection.add(R.xml.devicesettings_expose_hr_thirdparty); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; } @NonNull @@ -104,13 +111,11 @@ public class AmazfitVergeLCoordinator extends HuamiCoordinator { return AmazfitVergeLSupport.class; } - @Override public int getDeviceNameResource() { return R.string.devicetype_amazfit_vergel; } - @Override public int getDefaultIconResource() { return R.drawable.ic_device_amazfit_bip; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitvergel/AmazfitVergeLFWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitvergel/AmazfitVergeLFWHelper.java index 245baacd6..5635ae8e0 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitvergel/AmazfitVergeLFWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitvergel/AmazfitVergeLFWHelper.java @@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitvergel. public class AmazfitVergeLFWHelper extends HuamiFWHelper { - public AmazfitVergeLFWHelper(Uri uri, Context context) throws IOException { + public AmazfitVergeLFWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitvergel/AmazfitVergeLFWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitvergel/AmazfitVergeLFWInstallHandler.java index 12d3644ea..e45177aec 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitvergel/AmazfitVergeLFWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitvergel/AmazfitVergeLFWInstallHandler.java @@ -28,7 +28,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class AmazfitVergeLFWInstallHandler extends AbstractMiBandFWInstallHandler { - AmazfitVergeLFWInstallHandler(Uri uri, Context context) { + AmazfitVergeLFWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -38,12 +38,12 @@ class AmazfitVergeLFWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new AmazfitVergeLFWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.AMAZFITVERGEL; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitx/AmazfitXCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitx/AmazfitXCoordinator.java index 46e2e7442..bf458a5ee 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitx/AmazfitXCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitx/AmazfitXCoordinator.java @@ -22,39 +22,35 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitx.AmazfitXSupport; public class AmazfitXCoordinator extends HuamiCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(AmazfitXCoordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile(HuamiConst.AMAZFIT_X, Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { + public InstallHandler findInstallHandler(final Uri uri, final Context context) { // TOOD Need to be checked first - AmazfitXFWInstallHandler handler = new AmazfitXFWInstallHandler(uri, context); + final AmazfitXFWInstallHandler handler = new AmazfitXFWInstallHandler(uri, context); return handler.isValid() ? handler : null; // return null; } @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { + public boolean supportsHeartRateMeasurement(final GBDevice device) { return true; } @@ -74,35 +70,45 @@ public class AmazfitXCoordinator extends HuamiCoordinator { } @Override - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_amazfitx, - R.xml.devicesettings_vibrationpatterns, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_custom_emoji_font, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_dateformat, - R.xml.devicesettings_nightmode, - R.xml.devicesettings_liftwrist_display, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_swipeunlock, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_reserve_reminders_calendar, - R.xml.devicesettings_expose_hr_thirdparty, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_device_actions, - R.xml.devicesettings_phone_silent_mode, - R.xml.devicesettings_high_mtu, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - 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_dateformat); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_amazfitx); + display.add(R.xml.devicesettings_nightmode); + display.add(R.xml.devicesettings_liftwrist_display); + display.add(R.xml.devicesettings_swipeunlock); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_custom_emoji_font); + notifications.add(R.xml.devicesettings_vibrationpatterns); + notifications.add(R.xml.devicesettings_phone_silent_mode); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_expose_hr_thirdparty); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_device_actions); + connection.add(R.xml.devicesettings_high_mtu); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; } @Override - public String[] getSupportedLanguageSettings(GBDevice device) { + public String[] getSupportedLanguageSettings(final GBDevice device) { return new String[]{ "auto", "en_US", @@ -122,13 +128,11 @@ public class AmazfitXCoordinator extends HuamiCoordinator { return BONDING_STYLE_REQUIRE_KEY; } - @Override public int getDeviceNameResource() { return R.string.devicetype_amazfit_x; } - @Override public int getDefaultIconResource() { return R.drawable.ic_device_miband2; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitx/AmazfitXFWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitx/AmazfitXFWHelper.java index 6bfb9834c..d331bc1f0 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitx/AmazfitXFWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitx/AmazfitXFWHelper.java @@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitx.Amazf public class AmazfitXFWHelper extends HuamiFWHelper { - public AmazfitXFWHelper(Uri uri, Context context) throws IOException { + public AmazfitXFWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitx/AmazfitXFWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitx/AmazfitXFWInstallHandler.java index 0edc4c9e9..4b1506387 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitx/AmazfitXFWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitx/AmazfitXFWInstallHandler.java @@ -29,7 +29,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class AmazfitXFWInstallHandler extends AbstractMiBandFWInstallHandler { - AmazfitXFWInstallHandler(Uri uri, Context context) { + AmazfitXFWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -39,12 +39,12 @@ class AmazfitXFWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new AmazfitXFWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.AMAZFITX; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2Coordinator.java index 6d4cc74de..b11434755 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2Coordinator.java @@ -23,10 +23,13 @@ import android.net.Uri; import androidx.annotation.NonNull; import java.util.EnumSet; +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.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; @@ -42,13 +45,13 @@ public class MiBand2Coordinator extends HuamiCoordinator { return Pattern.compile(HuamiConst.MI_BAND2_NAME, Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - MiBand2FWInstallHandler handler = new MiBand2FWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final MiBand2FWInstallHandler handler = new MiBand2FWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { + public boolean supportsHeartRateMeasurement(final GBDevice device) { return true; } @@ -63,25 +66,37 @@ public class MiBand2Coordinator extends HuamiCoordinator { } @Override - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_miband2, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_donotdisturb_withauto, - R.xml.devicesettings_liftwrist_display, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_rotatewrist_cycleinfo, - R.xml.devicesettings_buttonactions, - R.xml.devicesettings_miband_vibrationpatterns, - R.xml.devicesettings_reserve_alarms_calendar, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - 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); + generic.add(R.xml.devicesettings_buttonactions); + final List dateTime = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DATE_TIME); + dateTime.add(R.xml.devicesettings_timeformat); + dateTime.add(R.xml.devicesettings_miband2_dateformat); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_miband2_display); + display.add(R.xml.devicesettings_liftwrist_display); + display.add(R.xml.devicesettings_rotatewrist_cycleinfo); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_donotdisturb_withauto); + notifications.add(R.xml.devicesettings_miband_vibrationpatterns); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + //calendar.add(R.xml.devicesettings_sync_calendar); + calendar.add(R.xml.devicesettings_reserve_alarms_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2FWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2FWHelper.java index 323da7bc8..97446975c 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2FWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2FWHelper.java @@ -27,7 +27,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband2.Mi2Fir public class MiBand2FWHelper extends HuamiFWHelper { - public MiBand2FWHelper(Uri uri, Context context) throws IOException { + public MiBand2FWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2FWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2FWInstallHandler.java index 647df1d14..b442c9ea9 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2FWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2FWInstallHandler.java @@ -37,7 +37,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.Version; public class MiBand2FWInstallHandler extends AbstractMiBandFWInstallHandler { private static final Logger LOG = LoggerFactory.getLogger(MiBand2FWInstallHandler.class); - MiBand2FWInstallHandler(Uri uri, Context context) { + MiBand2FWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -86,7 +86,7 @@ public class MiBand2FWInstallHandler extends AbstractMiBandFWInstallHandler { } } - private Version getFirmwareVersionOf(GBDevice device) { + private Version getFirmwareVersionOf(final GBDevice device) { String version = device.getFirmwareVersion(); if (version == null || version.length() == 0) { return null; @@ -111,12 +111,12 @@ public class MiBand2FWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new MiBand2FWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.MIBAND2 || device.getType() == DeviceType.MIBAND2_HRX; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2HRXCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2HRXCoordinator.java index 524e2aa82..8550a3f93 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2HRXCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2HRXCoordinator.java @@ -23,10 +23,13 @@ import android.net.Uri; import androidx.annotation.NonNull; import java.util.EnumSet; +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.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; @@ -46,7 +49,7 @@ public class MiBand2HRXCoordinator extends HuamiCoordinator { } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { + public InstallHandler findInstallHandler(final Uri uri, final Context context) { return null; } @@ -61,21 +64,31 @@ public class MiBand2HRXCoordinator extends HuamiCoordinator { } @Override - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_miband2, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_donotdisturb_withauto, - R.xml.devicesettings_liftwrist_display, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_rotatewrist_cycleinfo, - R.xml.devicesettings_miband_vibrationpatterns, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - 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_miband2_dateformat); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_miband2_display); + display.add(R.xml.devicesettings_liftwrist_display); + display.add(R.xml.devicesettings_rotatewrist_cycleinfo); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_donotdisturb_withauto); + notifications.add(R.xml.devicesettings_miband_vibrationpatterns); + notifications.add(R.xml.devicesettings_transliteration); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3Coordinator.java index 95539c3f8..8df6b0f57 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3Coordinator.java @@ -22,28 +22,24 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.util.Date; +import java.util.List; import java.util.regex.Pattern; import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.R; +import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettings; +import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband3.MiBand3Support; import nodomain.freeyourgadget.gadgetbridge.util.Prefs; public class MiBand3Coordinator extends HuamiCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(MiBand3Coordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile( @@ -53,13 +49,13 @@ public class MiBand3Coordinator extends HuamiCoordinator { } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - MiBand3FWInstallHandler handler = new MiBand3FWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final MiBand3FWInstallHandler handler = new MiBand3FWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { + public boolean supportsHeartRateMeasurement(final GBDevice device) { return true; } @@ -73,49 +69,59 @@ public class MiBand3Coordinator extends HuamiCoordinator { return true; } - public static String getNightMode(String deviceAddress) { + public static String getNightMode(final String deviceAddress) { Prefs prefs = new Prefs(GBApplication.getDeviceSpecificSharedPrefs(deviceAddress)); return prefs.getString(MiBandConst.PREF_NIGHT_MODE, MiBandConst.PREF_NIGHT_MODE_OFF); } - public static Date getNightModeStart(String deviceAddress) { + public static Date getNightModeStart(final String deviceAddress) { return getTimePreference(MiBandConst.PREF_NIGHT_MODE_START, "16:00", deviceAddress); } - public static Date getNightModeEnd(String deviceAddress) { + public static Date getNightModeEnd(final String deviceAddress) { return getTimePreference(MiBandConst.PREF_NIGHT_MODE_END, "07:00", deviceAddress); } @Override - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_miband3, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_dateformat, - R.xml.devicesettings_nightmode, - R.xml.devicesettings_donotdisturb_withauto, - R.xml.devicesettings_liftwrist_display, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_donotdisturb_lift_wrist, - R.xml.devicesettings_swipeunlock, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_reserve_reminders_calendar, - R.xml.devicesettings_expose_hr_thirdparty, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_device_actions, - R.xml.devicesettings_phone_silent_mode, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - 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_dateformat); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_miband3); + display.add(R.xml.devicesettings_nightmode); + display.add(R.xml.devicesettings_liftwrist_display); + display.add(R.xml.devicesettings_donotdisturb_lift_wrist); + display.add(R.xml.devicesettings_swipeunlock); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_donotdisturb_withauto); + notifications.add(R.xml.devicesettings_phone_silent_mode); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_expose_hr_thirdparty); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_device_actions); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; } @Override - public String[] getSupportedLanguageSettings(GBDevice device) { + public String[] getSupportedLanguageSettings(final GBDevice device) { return new String[]{ "auto", "ar_SA", @@ -146,13 +152,11 @@ public class MiBand3Coordinator extends HuamiCoordinator { return MiBand3Support.class; } - @Override public int getDeviceNameResource() { return R.string.devicetype_miband3; } - @Override public int getDefaultIconResource() { return R.drawable.ic_device_miband2; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3FWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3FWHelper.java index 0e0ed4ef2..7f3ff2930 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3FWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3FWHelper.java @@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband3.MiBand public class MiBand3FWHelper extends HuamiFWHelper { - public MiBand3FWHelper(Uri uri, Context context) throws IOException { + public MiBand3FWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3FWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3FWInstallHandler.java index 66314c2e5..e9f52b5f1 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3FWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband3/MiBand3FWInstallHandler.java @@ -28,7 +28,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class MiBand3FWInstallHandler extends AbstractMiBandFWInstallHandler { - MiBand3FWInstallHandler(Uri uri, Context context) { + MiBand3FWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -38,12 +38,12 @@ class MiBand3FWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new MiBand3FWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.MIBAND3; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband4/MiBand4Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband4/MiBand4Coordinator.java index 586c15ee2..9fcd0762e 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband4/MiBand4Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband4/MiBand4Coordinator.java @@ -22,41 +22,36 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - 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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.capabilities.HeartRateCapability; import nodomain.freeyourgadget.gadgetbridge.capabilities.password.PasswordCapabilityImpl; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband4.MiBand4Support; public class MiBand4Coordinator extends HuamiCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(MiBand4Coordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile(HuamiConst.MI_BAND4_NAME, Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - MiBand4FWInstallHandler handler = new MiBand4FWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final MiBand4FWInstallHandler handler = new MiBand4FWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { + public boolean supportsHeartRateMeasurement(final GBDevice device) { return true; } @@ -76,37 +71,48 @@ public class MiBand4Coordinator extends HuamiCoordinator { } @Override - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_miband3, - R.xml.devicesettings_vibrationpatterns, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep_activity, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_custom_emoji_font, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_dateformat, - R.xml.devicesettings_nightmode, - R.xml.devicesettings_liftwrist_display_sensitivity, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_workout_start_on_phone, - R.xml.devicesettings_workout_send_gps_to_band, - R.xml.devicesettings_swipeunlock, - R.xml.devicesettings_password, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_reserve_reminders_calendar, - R.xml.devicesettings_expose_hr_thirdparty, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_device_actions, - R.xml.devicesettings_high_mtu, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - 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_dateformat); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_miband3); + display.add(R.xml.devicesettings_nightmode); + display.add(R.xml.devicesettings_liftwrist_display_sensitivity); + display.add(R.xml.devicesettings_swipeunlock); + display.add(R.xml.devicesettings_password); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep_activity); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List workout = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.WORKOUT); + workout.add(R.xml.devicesettings_workout_start_on_phone); + workout.add(R.xml.devicesettings_workout_send_gps_to_band); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_custom_emoji_font); + notifications.add(R.xml.devicesettings_vibrationpatterns); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_expose_hr_thirdparty); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_device_actions); + connection.add(R.xml.devicesettings_high_mtu); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; } @Override - public String[] getSupportedLanguageSettings(GBDevice device) { + public String[] getSupportedLanguageSettings(final GBDevice device) { return new String[]{ "auto", "ar_SA", @@ -156,13 +162,11 @@ public class MiBand4Coordinator extends HuamiCoordinator { return MiBand4Support.class; } - @Override public int getDeviceNameResource() { return R.string.devicetype_miband4; } - @Override public int getDefaultIconResource() { return R.drawable.ic_device_miband2; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband4/MiBand4FWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband4/MiBand4FWHelper.java index 9ef7839a2..6717540de 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband4/MiBand4FWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband4/MiBand4FWHelper.java @@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband4.MiBand public class MiBand4FWHelper extends HuamiFWHelper { - public MiBand4FWHelper(Uri uri, Context context) throws IOException { + public MiBand4FWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband4/MiBand4FWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband4/MiBand4FWInstallHandler.java index 673777fc7..3581eeaf5 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband4/MiBand4FWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband4/MiBand4FWInstallHandler.java @@ -29,7 +29,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class MiBand4FWInstallHandler extends AbstractMiBandFWInstallHandler { - MiBand4FWInstallHandler(Uri uri, Context context) { + MiBand4FWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -39,12 +39,12 @@ class MiBand4FWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new MiBand4FWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.MIBAND4; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband5/MiBand5Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband5/MiBand5Coordinator.java index a3cabec92..beb049f1e 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband5/MiBand5Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband5/MiBand5Coordinator.java @@ -22,41 +22,35 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - 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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.capabilities.HeartRateCapability; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband5.MiBand5Support; public class MiBand5Coordinator extends HuamiCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(MiBand5Coordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile(HuamiConst.MI_BAND5_NAME, Pattern.CASE_INSENSITIVE); } - @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - MiBand5FWInstallHandler handler = new MiBand5FWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final MiBand5FWInstallHandler handler = new MiBand5FWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { + public boolean supportsHeartRateMeasurement(final GBDevice device) { return true; } @@ -96,38 +90,49 @@ public class MiBand5Coordinator extends HuamiCoordinator { } @Override - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_miband5, - R.xml.devicesettings_vibrationpatterns, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep_alert_activity_stress, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_custom_emoji_font, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_dateformat, - R.xml.devicesettings_world_clocks, - R.xml.devicesettings_nightmode, - R.xml.devicesettings_liftwrist_display_sensitivity, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_workout_start_on_phone, - R.xml.devicesettings_workout_send_gps_to_band, - R.xml.devicesettings_swipeunlock, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_reserve_reminders_calendar, - R.xml.devicesettings_expose_hr_thirdparty, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_device_actions, - R.xml.devicesettings_phone_silent_mode, - R.xml.devicesettings_high_mtu, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - 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_dateformat); + dateTime.add(R.xml.devicesettings_world_clocks); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_miband5); + display.add(R.xml.devicesettings_nightmode); + display.add(R.xml.devicesettings_liftwrist_display_sensitivity); + display.add(R.xml.devicesettings_swipeunlock); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep_alert_activity_stress); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List workout = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.WORKOUT); + workout.add(R.xml.devicesettings_workout_start_on_phone); + workout.add(R.xml.devicesettings_workout_send_gps_to_band); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_custom_emoji_font); + notifications.add(R.xml.devicesettings_vibrationpatterns); + notifications.add(R.xml.devicesettings_phone_silent_mode); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_expose_hr_thirdparty); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_device_actions); + connection.add(R.xml.devicesettings_high_mtu); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; } @Override - public String[] getSupportedLanguageSettings(GBDevice device) { + public String[] getSupportedLanguageSettings(final GBDevice device) { return new String[]{ "auto", "ar_SA", @@ -176,13 +181,11 @@ public class MiBand5Coordinator extends HuamiCoordinator { return MiBand5Support.class; } - @Override public int getDeviceNameResource() { return R.string.devicetype_miband5; } - @Override public int getDefaultIconResource() { return R.drawable.ic_device_miband2; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband5/MiBand5FWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband5/MiBand5FWHelper.java index f0f80393c..3dd3ed10b 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband5/MiBand5FWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband5/MiBand5FWHelper.java @@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband5.MiBand public class MiBand5FWHelper extends HuamiFWHelper { - public MiBand5FWHelper(Uri uri, Context context) throws IOException { + public MiBand5FWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband5/MiBand5FWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband5/MiBand5FWInstallHandler.java index 0e2b12b12..db9613901 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband5/MiBand5FWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband5/MiBand5FWInstallHandler.java @@ -29,7 +29,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class MiBand5FWInstallHandler extends AbstractMiBandFWInstallHandler { - MiBand5FWInstallHandler(Uri uri, Context context) { + MiBand5FWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -39,12 +39,12 @@ class MiBand5FWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new MiBand5FWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.MIBAND5; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6Coordinator.java index adfc87f8e..1ce6a3736 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6Coordinator.java @@ -30,6 +30,8 @@ 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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.capabilities.HeartRateCapability; import nodomain.freeyourgadget.gadgetbridge.capabilities.password.PasswordCapabilityImpl; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; @@ -48,13 +50,13 @@ public class MiBand6Coordinator extends HuamiCoordinator { } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - MiBand6FWInstallHandler handler = new MiBand6FWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final MiBand6FWInstallHandler handler = new MiBand6FWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { + public boolean supportsHeartRateMeasurement(final GBDevice device) { return true; } @@ -99,35 +101,45 @@ public class MiBand6Coordinator extends HuamiCoordinator { } @Override - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_miband6, - R.xml.devicesettings_miband6_new_protocol, - R.xml.devicesettings_vibrationpatterns, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep_alert_activity_stress, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_custom_emoji_font, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_dateformat, - R.xml.devicesettings_world_clocks, - R.xml.devicesettings_nightmode, - R.xml.devicesettings_liftwrist_display_sensitivity, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_workout_start_on_phone, - R.xml.devicesettings_workout_send_gps_to_band, - R.xml.devicesettings_swipeunlock, - R.xml.devicesettings_password, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_reserve_reminders_calendar, - R.xml.devicesettings_expose_hr_thirdparty, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_phone_silent_mode, - R.xml.devicesettings_high_mtu, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - 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_dateformat); + dateTime.add(R.xml.devicesettings_world_clocks); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_miband6); + display.add(R.xml.devicesettings_nightmode); + display.add(R.xml.devicesettings_liftwrist_display_sensitivity); + display.add(R.xml.devicesettings_swipeunlock); + display.add(R.xml.devicesettings_password); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep_alert_activity_stress); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List workout = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.WORKOUT); + workout.add(R.xml.devicesettings_workout_start_on_phone); + workout.add(R.xml.devicesettings_workout_send_gps_to_band); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_custom_emoji_font); + notifications.add(R.xml.devicesettings_vibrationpatterns); + notifications.add(R.xml.devicesettings_phone_silent_mode); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_expose_hr_thirdparty); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_high_mtu); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; } @Override @@ -140,7 +152,7 @@ public class MiBand6Coordinator extends HuamiCoordinator { } @Override - public String[] getSupportedLanguageSettings(GBDevice device) { + public String[] getSupportedLanguageSettings(final GBDevice device) { return new String[]{ "auto", "ar_SA", diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6FWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6FWHelper.java index eccc9413c..876461495 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6FWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6FWHelper.java @@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband6.MiBand public class MiBand6FWHelper extends HuamiFWHelper { - public MiBand6FWHelper(Uri uri, Context context) throws IOException { + public MiBand6FWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6FWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6FWInstallHandler.java index f9dba4d51..6bf497ae9 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6FWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband6/MiBand6FWInstallHandler.java @@ -29,7 +29,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class MiBand6FWInstallHandler extends AbstractMiBandFWInstallHandler { - MiBand6FWInstallHandler(Uri uri, Context context) { + MiBand6FWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -39,12 +39,12 @@ class MiBand6FWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new MiBand6FWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.MIBAND6; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppe/ZeppECoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppe/ZeppECoordinator.java index 6fb47ed53..98db99ce5 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppe/ZeppECoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppe/ZeppECoordinator.java @@ -22,31 +22,27 @@ import android.net.Uri; import androidx.annotation.NonNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +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.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.zeppe.ZeppESupport; public class ZeppECoordinator extends HuamiCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(ZeppECoordinator.class); - @Override protected Pattern getSupportedDeviceName() { return Pattern.compile("Zepp E", Pattern.CASE_INSENSITIVE); } @Override - public InstallHandler findInstallHandler(Uri uri, Context context) { - ZeppEFWInstallHandler handler = new ZeppEFWInstallHandler(uri, context); + public InstallHandler findInstallHandler(final Uri uri, final Context context) { + final ZeppEFWInstallHandler handler = new ZeppEFWInstallHandler(uri, context); return handler.isValid() ? handler : null; } @@ -56,7 +52,7 @@ public class ZeppECoordinator extends HuamiCoordinator { } @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { + public boolean supportsHeartRateMeasurement(final GBDevice device) { return true; } @@ -74,26 +70,57 @@ public class ZeppECoordinator extends HuamiCoordinator { public boolean supportsMusicInfo() { return true; } - public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - return new int[]{ - R.xml.devicesettings_amazfitgtsgtr, - R.xml.devicesettings_vibrationpatterns, - R.xml.devicesettings_wearlocation, - R.xml.devicesettings_heartrate_sleep, - R.xml.devicesettings_goal_notification, - R.xml.devicesettings_timeformat, - R.xml.devicesettings_liftwrist_display, - R.xml.devicesettings_inactivity_dnd, - R.xml.devicesettings_disconnectnotification, - R.xml.devicesettings_sync_calendar, - R.xml.devicesettings_expose_hr_thirdparty, - R.xml.devicesettings_bt_connected_advertisement, - R.xml.devicesettings_device_actions, - R.xml.devicesettings_phone_silent_mode, - R.xml.devicesettings_high_mtu, - R.xml.devicesettings_overwrite_settings_on_connection, - R.xml.devicesettings_huami2021_fetch_operation_time_unit, - R.xml.devicesettings_transliteration + + @Override + 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); + final List display = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY); + display.add(R.xml.devicesettings_amazfitgtsgtr); + display.add(R.xml.devicesettings_liftwrist_display); + final List health = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH); + health.add(R.xml.devicesettings_heartrate_sleep); + health.add(R.xml.devicesettings_inactivity_dnd); + health.add(R.xml.devicesettings_goal_notification); + final List notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS); + notifications.add(R.xml.devicesettings_vibrationpatterns); + notifications.add(R.xml.devicesettings_phone_silent_mode); + notifications.add(R.xml.devicesettings_transliteration); + final List calendar = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR); + calendar.add(R.xml.devicesettings_sync_calendar); + //calendar.add(R.xml.devicesettings_reserve_reminders_calendar); + final List connection = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CONNECTION); + connection.add(R.xml.devicesettings_disconnectnotification); + connection.add(R.xml.devicesettings_expose_hr_thirdparty); + connection.add(R.xml.devicesettings_bt_connected_advertisement); + connection.add(R.xml.devicesettings_device_actions); + connection.add(R.xml.devicesettings_high_mtu); + connection.add(R.xml.devicesettings_overwrite_settings_on_connection); + final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_huami2021_fetch_operation_time_unit); + + return deviceSpecificSettings; + } + + @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_BR", + "tr_TR", + "cs_CZ", + "ru_RU", }; } @@ -103,7 +130,6 @@ public class ZeppECoordinator extends HuamiCoordinator { return ZeppESupport.class; } - @Override public int getDeviceNameResource() { return R.string.devicetype_zepp_e; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppe/ZeppEFWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppe/ZeppEFWHelper.java index 475547ffa..2c36c14fb 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppe/ZeppEFWHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppe/ZeppEFWHelper.java @@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.zeppe.ZeppEFir public class ZeppEFWHelper extends HuamiFWHelper { - public ZeppEFWHelper(Uri uri, Context context) throws IOException { + public ZeppEFWHelper(final Uri uri, final Context context) throws IOException { super(uri, context); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppe/ZeppEFWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppe/ZeppEFWInstallHandler.java index 262397ed3..78a1d5c34 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppe/ZeppEFWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppe/ZeppEFWInstallHandler.java @@ -28,7 +28,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; class ZeppEFWInstallHandler extends AbstractMiBandFWInstallHandler { - ZeppEFWInstallHandler(Uri uri, Context context) { + ZeppEFWInstallHandler(final Uri uri, final Context context) { super(uri, context); } @@ -38,12 +38,12 @@ class ZeppEFWInstallHandler extends AbstractMiBandFWInstallHandler { } @Override - protected AbstractMiBandFWHelper createHelper(Uri uri, Context context) throws IOException { + protected AbstractMiBandFWHelper createHelper(final Uri uri, final Context context) throws IOException { return new ZeppEFWHelper(uri, context); } @Override - protected boolean isSupportedDeviceType(GBDevice device) { + protected boolean isSupportedDeviceType(final GBDevice device) { return device.getType() == DeviceType.ZEPP_E; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppos/ZeppOsCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppos/ZeppOsCoordinator.java index f0988da63..83dd0e407 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppos/ZeppOsCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppos/ZeppOsCoordinator.java @@ -28,7 +28,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.EnumSet; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -36,7 +35,6 @@ import java.util.regex.Pattern; import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.activities.appmanager.AppManagerActivity; -import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsUtils; import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettingsScreen; import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettings; import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettingsCustomizer; @@ -45,7 +43,6 @@ import nodomain.freeyourgadget.gadgetbridge.capabilities.password.PasswordCapabi import nodomain.freeyourgadget.gadgetbridge.GBException; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider; -import nodomain.freeyourgadget.gadgetbridge.service.SleepAsAndroidSender; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiExtendedSampleProvider; import nodomain.freeyourgadget.gadgetbridge.entities.AbstractActivitySample; @@ -75,7 +72,6 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiLanguageT import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiVibrationPatternNotificationType; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.zeppos.services.ZeppOsPhoneService; import nodomain.freeyourgadget.gadgetbridge.util.FileUtils; -import nodomain.freeyourgadget.gadgetbridge.util.Prefs; import nodomain.freeyourgadget.gadgetbridge.devices.SleepAsAndroidFeature; public abstract class ZeppOsCoordinator extends HuamiCoordinator { @@ -145,11 +141,6 @@ public abstract class ZeppOsCoordinator extends HuamiCoordinator { return false; } - @Override - public boolean supportsRealtimeData() { - return true; - } - @Override public boolean supportsWeather() { return true; @@ -176,7 +167,7 @@ public abstract class ZeppOsCoordinator extends HuamiCoordinator { } @Override - public boolean supportsSpo2(GBDevice device) { + public boolean supportsSpo2(final GBDevice device) { return true; } @@ -255,11 +246,6 @@ public abstract class ZeppOsCoordinator extends HuamiCoordinator { return true; } - @Override - public boolean supportsAppReordering() { - return false; - } - @Override public boolean supportsCalendarEvents() { return true; @@ -607,10 +593,6 @@ public abstract class ZeppOsCoordinator extends HuamiCoordinator { return ZeppOsConfigService.deviceHasConfig(getPrefs(device), config); } - public static boolean deviceHasConfig(final Prefs devicePrefs, final ZeppOsConfigService.ConfigArg config) { - return devicePrefs.getBoolean(DeviceSettingsUtils.getPrefKnownConfig(config.name()), false); - } - public static boolean experimentalFeatures(final GBDevice device) { return getPrefs(device).getBoolean("zepp_os_experimental_features", false); } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 596984b3a..31020e8ab 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -204,6 +204,7 @@ Health Sound & Vibration Offline Voice + Sound Time Workout Equalizer diff --git a/app/src/main/res/xml/devicesettings_amazfitbip.xml b/app/src/main/res/xml/devicesettings_amazfitbip.xml index 0a8456d69..03d0b9393 100644 --- a/app/src/main/res/xml/devicesettings_amazfitbip.xml +++ b/app/src/main/res/xml/devicesettings_amazfitbip.xml @@ -20,12 +20,4 @@ android:persistent="true" android:summary="@string/bip_prefs_shotcuts_summary" android:title="@string/bip_prefs_shortcuts" /> - diff --git a/app/src/main/res/xml/devicesettings_amazfitbips.xml b/app/src/main/res/xml/devicesettings_amazfitbips.xml index de3a162ac..7863b5209 100644 --- a/app/src/main/res/xml/devicesettings_amazfitbips.xml +++ b/app/src/main/res/xml/devicesettings_amazfitbips.xml @@ -20,12 +20,4 @@ android:persistent="true" android:summary="@string/bip_prefs_shotcuts_summary" android:title="@string/bip_prefs_shortcuts" /> - diff --git a/app/src/main/res/xml/devicesettings_amazfitcor.xml b/app/src/main/res/xml/devicesettings_amazfitcor.xml index 1671c575e..57f4451f5 100644 --- a/app/src/main/res/xml/devicesettings_amazfitcor.xml +++ b/app/src/main/res/xml/devicesettings_amazfitcor.xml @@ -10,12 +10,4 @@ android:persistent="true" android:summary="@string/mi2_prefs_display_items_summary" android:title="@string/mi2_prefs_display_items" /> - diff --git a/app/src/main/res/xml/devicesettings_amazfitgts2mini.xml b/app/src/main/res/xml/devicesettings_amazfitgts2mini.xml index 0281e8a04..ae4aab20e 100644 --- a/app/src/main/res/xml/devicesettings_amazfitgts2mini.xml +++ b/app/src/main/res/xml/devicesettings_amazfitgts2mini.xml @@ -10,12 +10,4 @@ android:persistent="true" android:summary="@string/mi2_prefs_display_items_summary" android:title="@string/mi2_prefs_display_items" /> - diff --git a/app/src/main/res/xml/devicesettings_amazfitgtsgtr.xml b/app/src/main/res/xml/devicesettings_amazfitgtsgtr.xml index f9064d779..2d11c00a8 100644 --- a/app/src/main/res/xml/devicesettings_amazfitgtsgtr.xml +++ b/app/src/main/res/xml/devicesettings_amazfitgtsgtr.xml @@ -10,12 +10,4 @@ android:persistent="true" android:summary="@string/mi2_prefs_display_items_summary" android:title="@string/mi2_prefs_display_items" /> - diff --git a/app/src/main/res/xml/devicesettings_amazfitgtsgtr2.xml b/app/src/main/res/xml/devicesettings_amazfitgtsgtr2.xml index e6c969f15..2858ce11a 100644 --- a/app/src/main/res/xml/devicesettings_amazfitgtsgtr2.xml +++ b/app/src/main/res/xml/devicesettings_amazfitgtsgtr2.xml @@ -10,12 +10,4 @@ android:persistent="true" android:summary="@string/mi2_prefs_display_items_summary" android:title="@string/mi2_prefs_display_items" /> - diff --git a/app/src/main/res/xml/devicesettings_amazfitneo.xml b/app/src/main/res/xml/devicesettings_amazfitneo_display.xml similarity index 60% rename from app/src/main/res/xml/devicesettings_amazfitneo.xml rename to app/src/main/res/xml/devicesettings_amazfitneo_display.xml index 437c78ca5..36087598a 100644 --- a/app/src/main/res/xml/devicesettings_amazfitneo.xml +++ b/app/src/main/res/xml/devicesettings_amazfitneo_display.xml @@ -10,16 +10,4 @@ android:persistent="true" android:summary="@string/mi2_prefs_display_items_summary" android:title="@string/mi2_prefs_display_items" /> - - - diff --git a/app/src/main/res/xml/devicesettings_amazfitneo_sound.xml b/app/src/main/res/xml/devicesettings_amazfitneo_sound.xml new file mode 100644 index 000000000..2ef00342b --- /dev/null +++ b/app/src/main/res/xml/devicesettings_amazfitneo_sound.xml @@ -0,0 +1,13 @@ + + + + diff --git a/app/src/main/res/xml/devicesettings_amazfittrex.xml b/app/src/main/res/xml/devicesettings_amazfittrex.xml index 2e41cefd9..0e7ab7fc4 100644 --- a/app/src/main/res/xml/devicesettings_amazfittrex.xml +++ b/app/src/main/res/xml/devicesettings_amazfittrex.xml @@ -10,12 +10,4 @@ android:persistent="true" android:summary="@string/mi2_prefs_display_items_summary" android:title="@string/mi2_prefs_display_items" /> - diff --git a/app/src/main/res/xml/devicesettings_amazfittrexpro.xml b/app/src/main/res/xml/devicesettings_amazfittrexpro.xml index 815a8b20a..b7690ddde 100644 --- a/app/src/main/res/xml/devicesettings_amazfittrexpro.xml +++ b/app/src/main/res/xml/devicesettings_amazfittrexpro.xml @@ -10,12 +10,4 @@ android:persistent="true" android:summary="@string/mi2_prefs_display_items_summary" android:title="@string/mi2_prefs_display_items" /> - diff --git a/app/src/main/res/xml/devicesettings_miband2_dateformat.xml b/app/src/main/res/xml/devicesettings_miband2_dateformat.xml new file mode 100644 index 000000000..9d55f94f6 --- /dev/null +++ b/app/src/main/res/xml/devicesettings_miband2_dateformat.xml @@ -0,0 +1,11 @@ + + + + diff --git a/app/src/main/res/xml/devicesettings_miband2.xml b/app/src/main/res/xml/devicesettings_miband2_display.xml similarity index 73% rename from app/src/main/res/xml/devicesettings_miband2.xml rename to app/src/main/res/xml/devicesettings_miband2_display.xml index e4decfdb2..d6e820f30 100644 --- a/app/src/main/res/xml/devicesettings_miband2.xml +++ b/app/src/main/res/xml/devicesettings_miband2_display.xml @@ -18,13 +18,4 @@ android:summary="@string/mi2_enable_text_notifications_summary" android:title="@string/mi2_enable_text_notifications" /> - - diff --git a/app/src/main/res/xml/devicesettings_root_sound.xml b/app/src/main/res/xml/devicesettings_root_sound.xml new file mode 100644 index 000000000..dc128b561 --- /dev/null +++ b/app/src/main/res/xml/devicesettings_root_sound.xml @@ -0,0 +1,9 @@ + + + + +