From c6734f542854042068eccfc86d258a6926958955 Mon Sep 17 00:00:00 2001 From: Arjan Schrijver Date: Tue, 3 Sep 2024 10:04:10 +0200 Subject: [PATCH] Moyoung: Implement language setting --- .../AbstractMoyoungDeviceCoordinator.java | 20 +++++- .../devices/moyoung/MoyoungDeviceSupport.java | 61 +++++++++++++++++-- 2 files changed, 74 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/moyoung/AbstractMoyoungDeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/moyoung/AbstractMoyoungDeviceCoordinator.java index d0d5abd05..4649fa932 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/moyoung/AbstractMoyoungDeviceCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/moyoung/AbstractMoyoungDeviceCoordinator.java @@ -212,12 +212,28 @@ public abstract class AbstractMoyoungDeviceCoordinator extends AbstractBLEDevice } @Override - public String[] getSupportedLanguageSettings(GBDevice device) { + public String[] getSupportedLanguageSettings(final GBDevice device) { + // TODO: use settings customizer to display the languages + // retrieved from the watch instead of this fixed list return new String[]{ + "ar_SA", + "cs_CZ", + "de_DE", "en_US", + "es_ES", + "fr_FR", + "it_IT", + "ja_JP", + "ko_KO", "nl_NL", + "pl_PL", + "pt_PT", + "ro_RO", + "ru_RU", + "uk_UA", + "zh_CN", }; - } + }; @Override public List getHeartRateMeasurementIntervals() { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/moyoung/MoyoungDeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/moyoung/MoyoungDeviceSupport.java index 20a67c901..3bf8eb8f6 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/moyoung/MoyoungDeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/moyoung/MoyoungDeviceSupport.java @@ -1235,12 +1235,63 @@ public class MoyoungDeviceSupport extends AbstractBTLEDeviceSupport { sendSetting(getSetting("DISPLAY_WATCH_FACE"), watchFace); break; - case MoyoungConstants.PREF_LANGUAGE: - String languagePref = prefs.getString(MoyoungConstants.PREF_LANGUAGE, - String.valueOf(MoyoungEnumLanguage.LANGUAGE_ENGLISH.value())); - byte languageNum = Byte.valueOf(languagePref); + case DeviceSettingsPreferenceConst.PREF_LANGUAGE: + String languagePref = prefs.getString(DeviceSettingsPreferenceConst.PREF_LANGUAGE, "en_US"); + byte languageCode; + switch (languagePref.substring(0, 2)) { + case "zh": + languageCode = MoyoungEnumLanguage.LANGUAGE_CHINESE.value(); + break; + case "it": + languageCode = MoyoungEnumLanguage.LANGUAGE_ITALIAN.value(); + break; + case "cs": + languageCode = MoyoungEnumLanguage.LANGUAGE_CZECH.value(); + break; + case "ru": + languageCode = MoyoungEnumLanguage.LANGUAGE_RUSSIAN.value(); + break; + case "pl": + languageCode = MoyoungEnumLanguage.LANGUAGE_POLISH.value(); + break; + case "nl": + languageCode = MoyoungEnumLanguage.LANGUAGE_DUTCH.value(); + break; + case "fr": + languageCode = MoyoungEnumLanguage.LANGUAGE_FRENCH.value(); + break; + case "es": + languageCode = MoyoungEnumLanguage.LANGUAGE_SPANISH.value(); + break; + case "de": + languageCode = MoyoungEnumLanguage.LANGUAGE_GERMAN.value(); + break; + case "pt": + languageCode = MoyoungEnumLanguage.LANGUAGE_PORTUGUESE.value(); + break; + case "jp": + languageCode = MoyoungEnumLanguage.LANGUAGE_JAPANESE.value(); + break; + case "ko": + languageCode = MoyoungEnumLanguage.LANGUAGE_KOREAN.value(); + break; + case "ar": + languageCode = MoyoungEnumLanguage.LANGUAGE_ARABIC.value(); + break; + case "uk": + languageCode = MoyoungEnumLanguage.LANGUAGE_UKRAINIAN.value(); + break; + case "hu": + languageCode = MoyoungEnumLanguage.LANGUAGE_HUNGARIAN.value(); + break; + case "ro": + languageCode = MoyoungEnumLanguage.LANGUAGE_ROMANIAN.value(); + break; + default: + languageCode = MoyoungEnumLanguage.LANGUAGE_ENGLISH.value(); + } MoyoungSettingEnum languageSetting = getSetting("DEVICE_LANGUAGE"); - sendSetting(languageSetting, languageSetting.findByValue(languageNum)); + sendSetting(languageSetting, languageSetting.findByValue(languageCode)); break; case MoyoungConstants.PREF_DEVICE_VERSION: