diff --git a/manifest.xml b/manifest.xml index 3f2a12b..6c011ed 100644 --- a/manifest.xml +++ b/manifest.xml @@ -21,7 +21,7 @@ Use "Monkey C: Edit Application" from the Visual Studio Code command palette to update the application attributes. --> - + @@ -24,6 +24,7 @@ Väljas Puudutage Menüü + Muidugi? Telefoniühendus puudub Interneti-ühendus puudub Ei reageeri, kontrollige Interneti-ühendust @@ -31,7 +32,7 @@ Rakenduse seadetes pole API-võtit Rakenduse seadetes pole API URL-i Rakenduse seadetes pole konfiguratsiooni URL-i - API-kõned liiga kiired. Palun aeglustage oma taotlusi. + API-kutsed liiga kiired. Palun aeglustage oma taotlusi. URL-i ei leitud. Võimalik API URL-i viga seadetes. URL-i ei leitud. Võimalik konfiguratsiooni URL-i viga seadetes. HTTP päring tagastas veakoodi = diff --git a/resources-fin/strings/strings.xml b/resources-fin/strings/strings.xml index fa32bf2..e754e2c 100644 --- a/resources-fin/strings/strings.xml +++ b/resources-fin/strings/strings.xml @@ -24,11 +24,12 @@ Vinossa Napauta Valikko + Varma? Ei puhelinyhteyttä Ei Internet-yhteyttä Ei vastausta, tarkista Internet-yhteys Valikkohakuvirhe - Sovellusasetuksissa ei ole API-avainta + Sovelluksen asetuksissa ei ole API-avainta Sovellusasetuksissa ei ole API URL-osoitetta Sovelluksen asetuksissa ei ole konfigurointi-URL-osoitetta API-kutsut liian nopeita. Hidasta pyyntöjäsi. diff --git a/resources-fre/strings/strings.xml b/resources-fre/strings/strings.xml index 1efc9ea..b143787 100644 --- a/resources-fre/strings/strings.xml +++ b/resources-fre/strings/strings.xml @@ -20,10 +20,11 @@ HomeAssistant - Activé + Activé Désactivé Clic Menu + Bien sûr? Pas de connexion téléphonique Pas de connexion Internet Pas de réponse, vérifiez la connexion Internet @@ -31,7 +32,7 @@ Pas de clé API dans les paramètres de l'application Aucune URL API dans les paramètres de l'application Aucune URL de configuration dans les paramètres de l'application - Appels API trop rapide. Veuillez signaler cette erreur avec les détails de l'appareil. + Appels API trop rapide. Veuillez signaler cette erreur avec les détails de l'appareil. URL introuvable. Erreur potentielle d'URL d'API dans les paramètres. URL introuvable. Erreur potentielle d'URL de configuration dans les paramètres. La requête HTTP a renvoyé un code d'erreur = diff --git a/resources-gre/strings/strings.xml b/resources-gre/strings/strings.xml index cc531f3..5660b65 100644 --- a/resources-gre/strings/strings.xml +++ b/resources-gre/strings/strings.xml @@ -24,6 +24,7 @@ Μακριά από Παρακέντηση Μενού + Σίγουρος? Δεν υπάρχει σύνδεση τηλεφώνου Δεν υπάρχει σύνδεση στο διαδίκτυο Καμία απάντηση, ελέγξτε τη σύνδεση στο Διαδίκτυο diff --git a/resources-heb/strings/strings.xml b/resources-heb/strings/strings.xml index f17e60d..ff5d53c 100644 --- a/resources-heb/strings/strings.xml +++ b/resources-heb/strings/strings.xml @@ -24,6 +24,7 @@ כבוי בֶּרֶז תַפרִיט + בטוח? אין חיבור לטלפון אין חיבור אינטרנט אין תגובה, בדוק חיבור לאינטרנט diff --git a/resources-hrv/strings/strings.xml b/resources-hrv/strings/strings.xml index f483f23..f146d63 100644 --- a/resources-hrv/strings/strings.xml +++ b/resources-hrv/strings/strings.xml @@ -24,6 +24,7 @@ Isključeno Dodirnite Jelovnik + Naravno? Nema telefonske veze Nema internetske veze Nema odgovora, provjerite internetsku vezu diff --git a/resources-hun/strings/strings.xml b/resources-hun/strings/strings.xml index 2a9b120..82d7395 100644 --- a/resources-hun/strings/strings.xml +++ b/resources-hun/strings/strings.xml @@ -24,6 +24,7 @@ Ki Koppintson a Menü + Biztos? Nincs telefonkapcsolat Nincs internetkapcsolat Nincs válasz, ellenőrizze az internetkapcsolatot diff --git a/resources-ind/strings/strings.xml b/resources-ind/strings/strings.xml index f2f617a..a4ab5c5 100644 --- a/resources-ind/strings/strings.xml +++ b/resources-ind/strings/strings.xml @@ -24,6 +24,7 @@ Mati Mengetuk Menu + Tentu? Tidak ada koneksi Telepon Tidak ada koneksi internet Tidak Ada Respon, periksa koneksi Internet diff --git a/resources-ita/strings/strings.xml b/resources-ita/strings/strings.xml index f0fc0ea..57fd138 100644 --- a/resources-ita/strings/strings.xml +++ b/resources-ita/strings/strings.xml @@ -24,6 +24,7 @@ Spento Rubinetto Menù + Sicuro? Nessuna connessione telefonica Nessuna connessione internet Nessuna risposta, controlla la connessione Internet diff --git a/resources-jpn/strings/strings.xml b/resources-jpn/strings/strings.xml index 5cb6461..cfbbcae 100644 --- a/resources-jpn/strings/strings.xml +++ b/resources-jpn/strings/strings.xml @@ -24,6 +24,7 @@ オフ タップ メニュー + もちろん? 電話が接続されていません インターネット接続なし 応答がありません。インターネット接続を確認してください diff --git a/resources-kor/strings/strings.xml b/resources-kor/strings/strings.xml index b65012e..25025e7 100644 --- a/resources-kor/strings/strings.xml +++ b/resources-kor/strings/strings.xml @@ -24,6 +24,7 @@ 끄다 수도꼭지 메뉴 + 확신하는? 전화 연결 없음 인터넷에 연결되지 않음 응답이 없습니다. 인터넷 연결을 확인하세요. @@ -35,5 +36,5 @@ URL을 찾을 수 없습니다. 설정에 잠재적인 API URL 오류가 있습니다. URL을 찾을 수 없습니다. 설정에 잠재적인 구성 URL 오류가 있습니다. HTTP 요청이 오류 코드를 반환했습니다 = - API URL에는 후행 슬래시 '/'가 없어야 합니다. + API URL에는 후행 슬래시 '/'가 있어서는 안 됩니다. \ No newline at end of file diff --git a/resources-lav/strings/strings.xml b/resources-lav/strings/strings.xml index 727c7f7..c4310f5 100644 --- a/resources-lav/strings/strings.xml +++ b/resources-lav/strings/strings.xml @@ -24,6 +24,7 @@ Izslēgts Krāns Izvēlne + Protams? Nav tālruņa savienojuma Nav interneta savienojuma Nav atbildes, pārbaudiet interneta savienojumu diff --git a/resources-lit/strings/strings.xml b/resources-lit/strings/strings.xml index 8627cf6..0a226a7 100644 --- a/resources-lit/strings/strings.xml +++ b/resources-lit/strings/strings.xml @@ -24,6 +24,7 @@ Išjungta Bakstelėkite Meniu + Žinoma? Nėra telefono ryšio Nėra interneto ryšio Neatsako, patikrinkite interneto ryšį diff --git a/resources-nob/strings/strings.xml b/resources-nob/strings/strings.xml index 3974ee7..f05d71c 100644 --- a/resources-nob/strings/strings.xml +++ b/resources-nob/strings/strings.xml @@ -24,6 +24,7 @@ Av Trykk på Meny + Sikker? Ingen telefonforbindelse Ingen Internett-tilkobling Ingen svar, sjekk Internett-tilkoblingen diff --git a/resources-pol/strings/strings.xml b/resources-pol/strings/strings.xml index a1b68c0..68e9eaf 100644 --- a/resources-pol/strings/strings.xml +++ b/resources-pol/strings/strings.xml @@ -24,6 +24,7 @@ Wyłączony Uzyskiwać Menu + Jasne? Brak połączenia telefonicznego Brak połączenia z internetem Brak odpowiedzi, sprawdź połączenie internetowe diff --git a/resources-por/strings/strings.xml b/resources-por/strings/strings.xml index e1b248d..6e836c7 100644 --- a/resources-por/strings/strings.xml +++ b/resources-por/strings/strings.xml @@ -24,6 +24,7 @@ Desligado Tocar Cardápio + Claro? Sem conexão telefônica Sem conexão com a Internet Sem resposta, verifique a conexão com a Internet diff --git a/resources-ron/strings/strings.xml b/resources-ron/strings/strings.xml index 31ebd98..5928813 100644 --- a/resources-ron/strings/strings.xml +++ b/resources-ron/strings/strings.xml @@ -21,9 +21,10 @@ HomeAssistant Pe - Oprit + Off Atingeți Meniul + Sigur? Fără conexiune telefonică Fără conexiune internet Niciun răspuns, verificați conexiunea la internet @@ -31,7 +32,7 @@ Nicio cheie API în setările aplicației Nicio adresă URL API în setările aplicației Nicio adresă URL de configurare în setările aplicației - Apeluri API prea rapide. Vă rugăm să vă încetiniți solicitările. + Apeluri API prea rapide. Vă rugăm să încetiniți cererile dvs. Adresa URL nu a fost găsită. Potențială eroare URL API în setări. Adresa URL nu a fost găsită. Potențială eroare URL de configurare în setări. Solicitarea HTTP a returnat codul de eroare = diff --git a/resources-slo/strings/strings.xml b/resources-slo/strings/strings.xml index 67c02d1..036c04b 100644 --- a/resources-slo/strings/strings.xml +++ b/resources-slo/strings/strings.xml @@ -24,6 +24,7 @@ Vypnuté Klepnite Ponuka + Samozrejme? Žiadne telefónne spojenie Žiadne internetové pripojenie Žiadna odpoveď, skontrolujte internetové pripojenie diff --git a/resources-slv/strings/strings.xml b/resources-slv/strings/strings.xml index 57a321c..55ae72d 100644 --- a/resources-slv/strings/strings.xml +++ b/resources-slv/strings/strings.xml @@ -24,6 +24,7 @@ Izključeno Tapnite meni + Seveda? Ni telefonske povezave Ni internetne povezave Ni odgovora, preverite internetno povezavo diff --git a/resources-spa/strings/strings.xml b/resources-spa/strings/strings.xml index 95fe1f0..5d5397a 100644 --- a/resources-spa/strings/strings.xml +++ b/resources-spa/strings/strings.xml @@ -24,6 +24,7 @@ Apagado Grifo Menú + ¿Seguro? Sin conexión telefónica Sin conexión a Internet No hay respuesta, verifique la conexión a Internet diff --git a/resources-swe/strings/strings.xml b/resources-swe/strings/strings.xml index e0e131a..8daf71f 100644 --- a/resources-swe/strings/strings.xml +++ b/resources-swe/strings/strings.xml @@ -24,6 +24,7 @@ Av Knacka Meny + Säker? Ingen telefonanslutning Ingen internetanslutning Inget svar, kontrollera internetanslutningen diff --git a/resources-tha/strings/strings.xml b/resources-tha/strings/strings.xml index 9b12cc7..c1e8db1 100644 --- a/resources-tha/strings/strings.xml +++ b/resources-tha/strings/strings.xml @@ -24,6 +24,7 @@ ปิด แตะ เมนู + แน่นอน? ไม่มีการเชื่อมต่อโทรศัพท์ ไม่มีการเชื่อมต่ออินเทอร์เน็ต ไม่มีการตอบสนอง ตรวจสอบการเชื่อมต่ออินเทอร์เน็ต diff --git a/resources-tur/strings/strings.xml b/resources-tur/strings/strings.xml index 690aeb2..57f8dc2 100644 --- a/resources-tur/strings/strings.xml +++ b/resources-tur/strings/strings.xml @@ -24,6 +24,7 @@ Kapalı Musluk Menü + Elbette? Telefon bağlantısı yok İnternet bağlantısı yok Yanıt Yok, İnternet bağlantısını kontrol edin @@ -35,5 +36,5 @@ URL bulunamadı. Ayarlarda olası API URL hatası. URL bulunamadı. Ayarlarda Olası Yapılandırma URL'si hatası. HTTP isteği hata kodunu döndürdü = - API URL'sinin sonunda eğik çizgi '/' olmamalıdır + API URL'sinin sonunda '/' eğik çizgi olmamalıdır \ No newline at end of file diff --git a/resources-ukr/strings/strings.xml b/resources-ukr/strings/strings.xml index 4916e32..1f410f7 100644 --- a/resources-ukr/strings/strings.xml +++ b/resources-ukr/strings/strings.xml @@ -15,7 +15,7 @@ @@ -24,6 +24,7 @@ Вимкнено Торкніться Меню + Зрозуміло? Немає телефонного зв'язку Немає підключення до Інтернету Немає відповіді, перевірте підключення до Інтернету diff --git a/resources-vie/strings/strings.xml b/resources-vie/strings/strings.xml index 782fee7..d6769c6 100644 --- a/resources-vie/strings/strings.xml +++ b/resources-vie/strings/strings.xml @@ -24,6 +24,7 @@ Tắt Vỗ nhẹ Thực đơn + Chắc chắn? Không có kết nối điện thoại Không có kết nối Internet Không có phản hồi, kiểm tra kết nối Internet diff --git a/resources-zhs/strings/strings.xml b/resources-zhs/strings/strings.xml index 9d603cf..ae2d75d 100644 --- a/resources-zhs/strings/strings.xml +++ b/resources-zhs/strings/strings.xml @@ -24,6 +24,7 @@ 离开 轻敲 菜单 + 当然? 没有电话连接 没有网络连接 无响应,请检查互联网连接 diff --git a/resources-zht/strings/strings.xml b/resources-zht/strings/strings.xml index 2aa3c34..3950bab 100644 --- a/resources-zht/strings/strings.xml +++ b/resources-zht/strings/strings.xml @@ -24,6 +24,7 @@ 離開 輕敲 選單 + 當然? 沒有電話連接 沒有網路連線 無響應,請檢查互聯網連接 diff --git a/resources-zsm/strings/strings.xml b/resources-zsm/strings/strings.xml index c805903..c0c505c 100644 --- a/resources-zsm/strings/strings.xml +++ b/resources-zsm/strings/strings.xml @@ -24,6 +24,7 @@ Mati Ketik Menu + pasti? Tiada sambungan Telefon Tiada sambungan internet Tiada Respons, semak sambungan Internet diff --git a/resources/strings/strings.xml b/resources/strings/strings.xml index 057cac9..ea590e7 100644 --- a/resources/strings/strings.xml +++ b/resources/strings/strings.xml @@ -18,6 +18,7 @@ Off Tap Menu + Sure? No Phone connection No Internet connection No Response, check Internet connection diff --git a/source/HomeAssistantConfirmation.mc b/source/HomeAssistantConfirmation.mc new file mode 100644 index 0000000..243a685 --- /dev/null +++ b/source/HomeAssistantConfirmation.mc @@ -0,0 +1,48 @@ +//----------------------------------------------------------------------------------- +// +// Distributed under MIT Licence +// See https://github.com/house-of-abbey/GarminHomeAssistant/blob/main/LICENSE. +// +//----------------------------------------------------------------------------------- +// +// GarminHomeAssistant is a Garmin IQ application written in Monkey C and routinely +// tested on a Venu 2 device. The source code is provided at: +// https://github.com/house-of-abbey/GarminHomeAssistant. +// +// P A Abbey & J D Abbey & SomeoneOnEarth, 19 November 2023 +// +// +// Description: +// +// Calling a Home Assistant confirmation dialogue view. +// +//----------------------------------------------------------------------------------- + +using Toybox.Lang; +// Required for callback method definition +typedef Method as Toybox.Lang.Method; +using Toybox.WatchUi; + +class HomeAssistantConfirmation extends WatchUi.Confirmation { + + function initialize() { + WatchUi.Confirmation.initialize(WatchUi.loadResource($.Rez.Strings.Confirm)); + } + +} + +class HomeAssistantConfirmationDelegate extends WatchUi.ConfirmationDelegate { + private var confirmMethod; + + function initialize(callback as Method() as Void) { + WatchUi.ConfirmationDelegate.initialize(); + confirmMethod = callback; + } + + function onResponse(response) as Lang.Boolean { + if (response == WatchUi.CONFIRM_YES) { + confirmMethod.invoke(); + } + return true; + } +} diff --git a/source/HomeAssistantIconMenuItem.mc b/source/HomeAssistantIconMenuItem.mc index f932807..a42055d 100644 --- a/source/HomeAssistantIconMenuItem.mc +++ b/source/HomeAssistantIconMenuItem.mc @@ -21,17 +21,18 @@ using Toybox.Lang; using Toybox.WatchUi; using Toybox.Graphics; -using Toybox.Application.Properties; class HomeAssistantIconMenuItem extends WatchUi.IconMenuItem { private var mHomeAssistantService as HomeAssistantService; private var mService as Lang.String; + private var mConfirm as Lang.Boolean; function initialize( label as Lang.String or Lang.Symbol, subLabel as Lang.String or Lang.Symbol or Null, identifier as Lang.Object or Null, service as Lang.String or Null, + confirm as Lang.Boolean, icon as Graphics.BitmapType or WatchUi.Drawable, options as { :alignment as WatchUi.MenuItem.Alignment @@ -49,9 +50,22 @@ class HomeAssistantIconMenuItem extends WatchUi.IconMenuItem { mHomeAssistantService = haService; mIdentifier = identifier; mService = service; + mConfirm = confirm; } function callService() as Void { + if (mConfirm) { + WatchUi.pushView( + new HomeAssistantConfirmation(), + new HomeAssistantConfirmationDelegate(method(:onConfirm)), + WatchUi.SLIDE_IMMEDIATE + ); + } else { + onConfirm(); + } + } + + function onConfirm() as Void { mHomeAssistantService.call(mIdentifier as Lang.String, mService); } diff --git a/source/HomeAssistantMenuItem.mc b/source/HomeAssistantMenuItem.mc index a2f914f..8b4166e 100644 --- a/source/HomeAssistantMenuItem.mc +++ b/source/HomeAssistantMenuItem.mc @@ -21,17 +21,18 @@ using Toybox.Lang; using Toybox.WatchUi; using Toybox.Graphics; -using Toybox.Application.Properties; class HomeAssistantMenuItem extends WatchUi.MenuItem { private var mHomeAssistantService as HomeAssistantService; private var mService as Lang.String; + private var mConfirm as Lang.Boolean; function initialize( label as Lang.String or Lang.Symbol, subLabel as Lang.String or Lang.Symbol or Null, identifier as Lang.Object or Null, service as Lang.String or Null, + confirm as Lang.Boolean, options as { :alignment as WatchUi.MenuItem.Alignment, :icon as Graphics.BitmapType or WatchUi.Drawable or Lang.Symbol @@ -47,9 +48,22 @@ class HomeAssistantMenuItem extends WatchUi.MenuItem { mHomeAssistantService = haService; mService = service; + mConfirm = confirm; } function callService() as Void { + if (mConfirm) { + WatchUi.pushView( + new HomeAssistantConfirmation(), + new HomeAssistantConfirmationDelegate(method(:onConfirm)), + WatchUi.SLIDE_IMMEDIATE + ); + } else { + onConfirm(); + } + } + + function onConfirm() as Void { mHomeAssistantService.call(mIdentifier as Lang.String, mService); } diff --git a/source/HomeAssistantMenuItemFactory.mc b/source/HomeAssistantMenuItemFactory.mc index faa9303..a98e283 100644 --- a/source/HomeAssistantMenuItemFactory.mc +++ b/source/HomeAssistantMenuItemFactory.mc @@ -89,13 +89,19 @@ class HomeAssistantMenuItemFactory { ); } - function tap(label as Lang.String or Lang.Symbol, identifier as Lang.Object or Null, service as Lang.String or Null) as WatchUi.MenuItem { + function tap( + label as Lang.String or Lang.Symbol, + identifier as Lang.Object or Null, + service as Lang.String or Null, + confirm as Lang.Boolean + ) as WatchUi.MenuItem { if (bRepresentTypesWithLabels) { return new HomeAssistantMenuItem( label, strMenuItemTap, identifier, service, + confirm, mMenuItemOptions, mHomeAssistantService ); @@ -105,6 +111,7 @@ class HomeAssistantMenuItemFactory { null, identifier, service, + confirm, mTapTypeIcon, mMenuItemOptions, mHomeAssistantService diff --git a/source/HomeAssistantView.mc b/source/HomeAssistantView.mc index d8308de..5b5f3cb 100644 --- a/source/HomeAssistantView.mc +++ b/source/HomeAssistantView.mc @@ -48,17 +48,26 @@ class HomeAssistantView extends WatchUi.Menu2 { var items = definition.get("items") as Lang.Dictionary; for(var i = 0; i < items.size(); i++) { - var type = items[i].get("type") as Lang.String or Null; - var name = items[i].get("name") as Lang.String or Null; - var entity = items[i].get("entity") as Lang.String or Null; - var service = items[i].get("service") as Lang.String or Null; + var type = items[i].get("type") as Lang.String or Null; + var name = items[i].get("name") as Lang.String or Null; + var entity = items[i].get("entity") as Lang.String or Null; + var tap_action = items[i].get("tap_action") as Lang.Dictionary or Null; + var service = items[i].get("service") as Lang.String or Null; + var confirm = false as Lang.Boolean; + if (tap_action != null) { + service = tap_action.get("service"); + confirm = tap_action.get("confirm"); + if (confirm == null) { + confirm = false; + } + } if (type != null && name != null && entity != null) { if (type.equals("toggle")) { var item = HomeAssistantMenuItemFactory.create().toggle(name, entity); addItem(item); mListToggleItems.add(item); } else if (type.equals("tap") && service != null) { - addItem( HomeAssistantMenuItemFactory.create().tap(name, entity, service)); + addItem( HomeAssistantMenuItemFactory.create().tap(name, entity, service, confirm)); } else if (type.equals("group")) { var item = HomeAssistantMenuItemFactory.create().group(items[i]); addItem(item);