Merge pull request #30 from Someone0nEarth/widget_glance_prototype

This commit is contained in:
Joseph Abbey
2023-12-16 21:04:45 +00:00
committed by GitHub
43 changed files with 421 additions and 86 deletions

View File

@ -11,17 +11,17 @@
P A Abbey & J D Abbey, 31 October 2023
Test Application id="98c36259-498a-4458-9cef-74a273ad2bc3"
Live Application id="40131e87-31ff-454b-a8e2-92276ee399d6"
Widget/Glance App id="bf69be91-5833-4d96-92ea-c5f1a9db5dcc"
Test Application id="98c36259-498a-4458-9cef-74a273ad2bc3"
Live Application id="40131e87-31ff-454b-a8e2-92276ee399d6"
-->
<iq:manifest version="3" xmlns:iq="http://www.garmin.com/xml/connectiq">
<!--
Use "Monkey C: Edit Application" from the Visual Studio Code command palette
to update the application attributes.
-->
<iq:application id="98c36259-498a-4458-9cef-74a273ad2bc3" type="watch-app" name="@Strings.AppName" entry="HomeAssistantApp" launcherIcon="@Drawables.LauncherIcon" minApiLevel="3.1.0">
<iq:application id="bf69be91-5833-4d96-92ea-c5f1a9db5dcc" type="widget" name="@Strings.AppName" entry="HomeAssistantApp" launcherIcon="@Drawables.LauncherIcon" minApiLevel="3.1.0">
<!--
Use the following from the Visual Studio Code comand palette to edit
the build targets:

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">على</string>
<string id="MenuItemOff">عن</string>
<string id="MenuItemTap">مقبض</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">لم يتم العثور على عنوان URL. خطأ محتمل في عنوان URL للتكوين في الإعدادات.</string>
<string id="UnhandledHttpErr">قام طلب HTTP بإرجاع رمز الخطأ =</string>
<string id="TrailingSlashErr">يجب ألا يحتوي عنوان URL لواجهة برمجة التطبيقات على شرطة مائلة لاحقة '/'</string>
<string id="FetchingMenuConfig">جارٍ جلب تكوين القائمة..</string>
<string id="ExitViewTouch">مرّر سريعًا إلى اليمين للخروج\nانقر للبقاء</string>
<string id="ExitViewButtons">اضغط على "الرجوع للخروج"\nأدخل للبقاء</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">На</string>
<string id="MenuItemOff">Изкл</string>
<string id="MenuItemTap">Докоснете</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">URL не е намерен. Потенциална грешка в URL адреса на конфигурацията в настройките.</string>
<string id="UnhandledHttpErr">HTTP заявката върна код на грешка =</string>
<string id="TrailingSlashErr">URL адресът на API не трябва да има наклонена черта '/' в края</string>
<string id="FetchingMenuConfig">Извличане на конфигурацията на менюто..</string>
<string id="ExitViewTouch">Плъзнете надясно, за да излезете\nДокоснете, за да останете</string>
<string id="ExitViewButtons">Натиснете Назад, за да излезете\nВлезте, за да останете</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">Na</string>
<string id="MenuItemOff">Vypnuto</string>
<string id="MenuItemTap">Klepněte</string>
@ -33,8 +33,11 @@
<string id="NoApiUrl">V nastavení aplikace není žádná adresa URL API</string>
<string id="NoConfigUrl">V nastavení aplikace není žádná konfigurační URL</string>
<string id="ApiFlood">Příliš rychlá volání API. Zpomalte prosím své požadavky.</string>
<string id="ApiUrlNotFound">Adresa URL nenalezena. Potenciální chyba URL API v nastavení.</string>
<string id="ApiUrlNotFound">Adresa URL nenalezena. Potenciální chyba adresy URL rozhraní API v nastavení.</string>
<string id="ConfigUrlNotFound">Adresa URL nenalezena. Potenciální chyba konfigurační adresy URL v nastavení.</string>
<string id="UnhandledHttpErr">Požadavek HTTP vrátil kód chyby =</string>
<string id="TrailingSlashErr">Adresa URL rozhraní API nesmí mít koncové lomítko „/“</string>
<string id="FetchingMenuConfig">Načítání konfigurace nabídky...</string>
<string id="ExitViewTouch">Přejetím prstem doprava ukončíte\nKlepnutím zůstanete</string>
<string id="ExitViewButtons">Stisknutím Zpět ukončíte\nVstupte a zůstanete</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn"></string>
<string id="MenuItemOff">Af</string>
<string id="MenuItemTap">Tryk på</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">URL ikke fundet. Potentiel konfigurations-URL-fejl i indstillinger.</string>
<string id="UnhandledHttpErr">HTTP-anmodning returnerede fejlkode =</string>
<string id="TrailingSlashErr">API URL må ikke have en efterfølgende skråstreg '/'</string>
<string id="FetchingMenuConfig">Henter menukonfiguration..</string>
<string id="ExitViewTouch">Stryg til højre for at afslutte\nTryk for at blive</string>
<string id="ExitViewButtons">Tryk på Tilbage for at afslutte\nEnter for at blive</string>
</strings>

View File

@ -22,4 +22,7 @@
<string id="MenuItemTap">Antippen</string>
<string id="MenuItemMenu">Menü</string>
<string id="UnhandledHttpErr">Die HTTP-Anfrage gab folgenden Fehlercode zurück = </string>
<string id="ExitViewTouch">Zum Beenden nach rechts swipen\nZum Bleiben antippen</string>
<string id="ExitViewButtons">Drücke „Zurück“, um zu Beenden.\n„Enter“, um zu bleiben</string>
<string id="FetchingMenuConfig">Lade Config vom Server ... </string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">An</string>
<string id="MenuItemOff">Aus</string>
<string id="MenuItemTap">Antippen</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">URL nicht gefunden. Möglicher Konfigurations-URL-Fehler in den Einstellungen.</string>
<string id="UnhandledHttpErr">Die HTTP-Anfrage gab folgenden Fehlercode zurück = </string>
<string id="TrailingSlashErr">Die API-URL darf keinen abschließenden Schrägstrich „/“ enthalten.</string>
<string id="FetchingMenuConfig">Lade Config vom Server ... </string>
<string id="ExitViewTouch">Zum Beenden nach rechts swipen\nZum Bleiben antippen</string>
<string id="ExitViewButtons">Drücke „Zurück“, um zu Beenden.\n„Enter“, um zu bleiben</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">Op</string>
<string id="MenuItemOff">Uit</string>
<string id="MenuItemTap">Kraan</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">URL niet gevonden. Mogelijke configuratie-URL-fout in de instellingen.</string>
<string id="UnhandledHttpErr">HTTP-verzoek retourneerde foutcode =</string>
<string id="TrailingSlashErr">API-URL mag geen afsluitende slash '/' bevatten</string>
<string id="FetchingMenuConfig">Menuconfiguratie ophalen..</string>
<string id="ExitViewTouch">Veeg naar rechts om af te sluiten\nTik om te blijven</string>
<string id="ExitViewButtons">Druk op Terug om af te sluiten\nEnter om te blijven</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">Peal</string>
<string id="MenuItemOff">Väljas</string>
<string id="MenuItemTap">Puudutage</string>
@ -32,9 +32,12 @@
<string id="NoAPIKey">Rakenduse seadetes pole API-võtit</string>
<string id="NoApiUrl">Rakenduse seadetes pole API URL-i</string>
<string id="NoConfigUrl">Rakenduse seadetes pole konfiguratsiooni URL-i</string>
<string id="ApiFlood">API-kutsed liiga kiired. Palun aeglustage oma taotlusi.</string>
<string id="ApiFlood">API-kutsed liiga kiired. Palun aeglustage taotluste esitamist.</string>
<string id="ApiUrlNotFound">URL-i ei leitud. Võimalik API URL-i viga seadetes.</string>
<string id="ConfigUrlNotFound">URL-i ei leitud. Võimalik konfiguratsiooni URL-i viga seadetes.</string>
<string id="UnhandledHttpErr">HTTP päring tagastas veakoodi =</string>
<string id="TrailingSlashErr">API URL-i lõpus ei tohi olla kaldkriipsu „/”</string>
<string id="FetchingMenuConfig">Menüü konfiguratsiooni toomine...</string>
<string id="ExitViewTouch">Väljumiseks pühkige paremale\nPuudutage, et jääda</string>
<string id="ExitViewButtons">Väljumiseks vajutage Tagasi\nSisestage, et jääda</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">Päällä</string>
<string id="MenuItemOff">Vinossa</string>
<string id="MenuItemTap">Napauta</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">URL-osoitetta ei löydy. Mahdollinen konfigurointi-URL-virhe asetuksissa.</string>
<string id="UnhandledHttpErr">HTTP-pyyntö palautti virhekoodin =</string>
<string id="TrailingSlashErr">API-URL-osoitteessa ei saa olla perässä olevaa kauttaviivaa '/'</string>
<string id="FetchingMenuConfig">Haetaan valikon asetuksia...</string>
<string id="ExitViewTouch">Poistu pyyhkäisemällä oikealle\nPysy napauttamalla</string>
<string id="ExitViewButtons">Poistu painamalla Takaisin\nSyötä jäädäksesi</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">Activé</string>
<string id="MenuItemOff">Désactivé</string>
<string id="MenuItemTap">Clic</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">URL introuvable. Erreur potentielle d'URL de configuration dans les paramètres.</string>
<string id="UnhandledHttpErr">La requête HTTP a renvoyé un code d'erreur =</string>
<string id="TrailingSlashErr">L'URL de l'API ne doit pas comporter de barre oblique finale '/'</string>
<string id="FetchingMenuConfig">Récupération de la configuration du menu.</string>
<string id="ExitViewTouch">Balayez vers la droite pour quitter\nAppuyez pour rester</string>
<string id="ExitViewButtons">Appuyez sur Retour pour quitter\nEntrez pour rester</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">Επί</string>
<string id="MenuItemOff">Μακριά από</string>
<string id="MenuItemTap">Παρακέντηση</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">Η διεύθυνση URL δεν βρέθηκε. Πιθανό σφάλμα διεύθυνσης URL διαμόρφωσης στις ρυθμίσεις.</string>
<string id="UnhandledHttpErr">Το αίτημα HTTP επέστρεψε κωδικό σφάλματος =</string>
<string id="TrailingSlashErr">Η διεύθυνση URL του API δεν πρέπει να έχει τελική κάθετο "/"</string>
<string id="FetchingMenuConfig">Ανάκτηση παραμέτρων μενού..</string>
<string id="ExitViewTouch">Σύρετε προς τα δεξιά για έξοδο\nΠατήστε για να μείνετε</string>
<string id="ExitViewButtons">Πατήστε Επιστροφή για Έξοδος\nEnter για να μείνετε</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">עַל</string>
<string id="MenuItemOff">כבוי</string>
<string id="MenuItemTap">בֶּרֶז</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">כתובת האתר לא נמצאה. שגיאת כתובת אתר פוטנציאלית של תצורה בהגדרות.</string>
<string id="UnhandledHttpErr">בקשת HTTP החזירה קוד שגיאה =</string>
<string id="TrailingSlashErr">כתובת ה-API לא חייבת לכלול לוכסן אחורי '/'</string>
<string id="FetchingMenuConfig">מביא את תצורת התפריט...</string>
<string id="ExitViewTouch">החלק ימינה כדי לצאת\nהקש כדי להישאר</string>
<string id="ExitViewButtons">לחץ על חזרה ליציאה\nEnter כדי להישאר</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">Na</string>
<string id="MenuItemOff">Isključeno</string>
<string id="MenuItemTap">Dodirnite</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">URL nije pronađen. Potencijalna pogreška URL-a konfiguracije u postavkama.</string>
<string id="UnhandledHttpErr">HTTP zahtjev vratio je kod greške =</string>
<string id="TrailingSlashErr">API URL ne smije imati kosu crtu na kraju '/'</string>
<string id="FetchingMenuConfig">Dohvaćanje konfiguracije izbornika..</string>
<string id="ExitViewTouch">Prijeđite prstom udesno za izlaz\nDodirnite za ostanak</string>
<string id="ExitViewButtons">Pritisnite Natrag za izlaz\nUnesite za ostanak</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">Tovább</string>
<string id="MenuItemOff">Ki</string>
<string id="MenuItemTap">Koppintson a</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">Az URL nem található. Lehetséges konfigurációs URL hiba a beállításokban.</string>
<string id="UnhandledHttpErr">A HTTP-kérés = hibakódot adott vissza</string>
<string id="TrailingSlashErr">Az API URL-ben nem lehet perjel a „/”</string>
<string id="FetchingMenuConfig">Menükonfiguráció lekérése...</string>
<string id="ExitViewTouch">Csúsztassa jobbra a kilépéshez.\nKoppintson a Maradáshoz</string>
<string id="ExitViewButtons">Nyomja meg a Vissza gombot a kilépéshez\nEnter a Maradáshoz</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">Pada</string>
<string id="MenuItemOff">Mati</string>
<string id="MenuItemTap">Mengetuk</string>
@ -31,10 +31,13 @@
<string id="NoMenu">Kesalahan Pengambilan Menu</string>
<string id="NoAPIKey">Tidak ada kunci API di pengaturan aplikasi</string>
<string id="NoApiUrl">Tidak ada URL API di pengaturan aplikasi</string>
<string id="NoConfigUrl">Tidak ada URL konfigurasi dalam pengaturan aplikasi</string>
<string id="NoConfigUrl">Tidak ada URL konfigurasi di pengaturan aplikasi</string>
<string id="ApiFlood">Panggilan API terlalu cepat. Harap memperlambat permintaan Anda.</string>
<string id="ApiUrlNotFound">URL tidak ditemukan. Potensi kesalahan URL API dalam pengaturan.</string>
<string id="ConfigUrlNotFound">URL tidak ditemukan. Potensi kesalahan URL Konfigurasi dalam pengaturan.</string>
<string id="UnhandledHttpErr">Permintaan HTTP mengembalikan kode kesalahan =</string>
<string id="TrailingSlashErr">URL API tidak boleh memiliki garis miring '/'</string>
<string id="FetchingMenuConfig">Mengambil Konfigurasi Menu..</string>
<string id="ExitViewTouch">Geser ke Kanan untuk Keluar\nKetuk untuk Tetap</string>
<string id="ExitViewButtons">Tekan Kembali untuk Keluar\nMasuk untuk Tetap</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">SU</string>
<string id="MenuItemOff">Spento</string>
<string id="MenuItemTap">Rubinetto</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">URL non trovato. Potenziale errore dell'URL di configurazione nelle impostazioni.</string>
<string id="UnhandledHttpErr">La richiesta HTTP ha restituito il codice di errore =</string>
<string id="TrailingSlashErr">L'URL dell'API non deve avere una barra finale "/"</string>
<string id="FetchingMenuConfig">Recupero configurazione menu..</string>
<string id="ExitViewTouch">Scorri verso destra per uscire\nTocca per restare</string>
<string id="ExitViewButtons">Premi Indietro per uscire\nInvio per restare</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">の上</string>
<string id="MenuItemOff">オフ</string>
<string id="MenuItemTap">タップ</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">URLが見つかりません。設定内の構成 URL エラーの可能性があります。</string>
<string id="UnhandledHttpErr">HTTP リクエストがエラー コードを返しました =</string>
<string id="TrailingSlashErr">API URL の末尾にスラッシュ「/」を含めることはできません</string>
<string id="FetchingMenuConfig">メニュー構成を取得しています。</string>
<string id="ExitViewTouch">右にスワイプして終了\nタップしてそのまま残ります</string>
<string id="ExitViewButtons">終了するには戻るキーを押してください\n続行するには Enter キーを押してください</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">~에</string>
<string id="MenuItemOff">끄다</string>
<string id="MenuItemTap">수도꼭지</string>
@ -36,5 +36,8 @@
<string id="ApiUrlNotFound">URL을 찾을 수 없습니다. 설정에 잠재적인 API URL 오류가 있습니다.</string>
<string id="ConfigUrlNotFound">URL을 찾을 수 없습니다. 설정에 잠재적인 구성 URL 오류가 있습니다.</string>
<string id="UnhandledHttpErr">HTTP 요청이 오류 코드를 반환했습니다 =</string>
<string id="TrailingSlashErr">API URL에는 후행 슬래시 '/'가 없어야 합니다.</string>
<string id="TrailingSlashErr">API URL에는 후행 슬래시 '/'가 있어서는 안 됩니다.</string>
<string id="FetchingMenuConfig">메뉴 구성을 가져오는 중..</string>
<string id="ExitViewTouch">종료하려면 오른쪽으로 스와이프하세요.\n계속 유지하려면 탭하세요.</string>
<string id="ExitViewButtons">종료하려면 뒤로 버튼을 누르세요.\n계속하려면 입력하세요.</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">Ieslēgts</string>
<string id="MenuItemOff">Izslēgts</string>
<string id="MenuItemTap">Krāns</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">URL nav atrasts. Iespējama konfigurācijas URL kļūda iestatījumos.</string>
<string id="UnhandledHttpErr">HTTP pieprasījums atgrieza kļūdas kodu =</string>
<string id="TrailingSlashErr">API URL beigās nedrīkst būt slīpsvītra “/”</string>
<string id="FetchingMenuConfig">Notiek izvēlnes konfigurācijas iegūšana...</string>
<string id="ExitViewTouch">Lai izietu, velciet pa labi\nPieskarieties, lai paliktu</string>
<string id="ExitViewButtons">Noklikšķiniet uz Atpakaļ, lai izietu.\nIevadiet, lai paliktu</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">Įjungta</string>
<string id="MenuItemOff">Išjungta</string>
<string id="MenuItemTap">Bakstelėkite</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">URL nerastas. Galima konfigūracijos URL klaida nustatymuose.</string>
<string id="UnhandledHttpErr">HTTP užklausa grąžino klaidos kodą =</string>
<string id="TrailingSlashErr">API URL pabaigoje negali būti pasvirojo brūkšnio „/“</string>
<string id="FetchingMenuConfig">Gaunama meniu konfigūracija...</string>
<string id="ExitViewTouch">Norėdami išeiti, braukite į dešinę\nPalieskite, kad pasiliktumėte</string>
<string id="ExitViewButtons">Norėdami išeiti, paspauskite „Atgal“\nĮveskite, kad pasiliktumėte</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn"></string>
<string id="MenuItemOff">Av</string>
<string id="MenuItemTap">Trykk på</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">Finner ikke URL. Potensiell konfigurasjons-URL-feil i innstillingene.</string>
<string id="UnhandledHttpErr">HTTP-forespørsel returnerte feilkode =</string>
<string id="TrailingSlashErr">API URL må ikke ha en etterfølgende skråstrek '/'</string>
<string id="FetchingMenuConfig">Henter menykonfigurasjon..</string>
<string id="ExitViewTouch">Sveip til høyre for å avslutte\nTrykk for å bli</string>
<string id="ExitViewButtons">Trykk Tilbake for å avslutte\nEnter for å bli</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">NA</string>
<string id="MenuItemOff">Wyłączony</string>
<string id="MenuItemTap">Uzyskiwać</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">Nie znaleziono adresu URL. Potencjalny błąd adresu URL konfiguracji w ustawieniach.</string>
<string id="UnhandledHttpErr">Żądanie HTTP zwróciło kod błędu =</string>
<string id="TrailingSlashErr">Adres URL interfejsu API nie może zawierać końcowego ukośnika „/”</string>
<string id="FetchingMenuConfig">Pobieranie konfiguracji menu..</string>
<string id="ExitViewTouch">Przesuń w prawo, aby wyjść\nDotknij, aby pozostać</string>
<string id="ExitViewButtons">Naciśnij Wstecz, aby wyjść\nEnter, aby pozostać</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">Sobre</string>
<string id="MenuItemOff">Desligado</string>
<string id="MenuItemTap">Tocar</string>
@ -32,9 +32,12 @@
<string id="NoAPIKey">Nenhuma chave de API nas configurações do aplicativo</string>
<string id="NoApiUrl">Nenhum URL de API nas configurações do aplicativo</string>
<string id="NoConfigUrl">Nenhum URL de configuração nas configurações do aplicativo</string>
<string id="ApiFlood">Chamadas de API muito rápidas. Por favor, desacelere seus pedidos.</string>
<string id="ApiFlood">Chamadas de API muito rápidas. Por favor, diminua a velocidade de seus pedidos.</string>
<string id="ApiUrlNotFound">URL não encontrado. Possível erro de URL da API nas configurações.</string>
<string id="ConfigUrlNotFound">URL não encontrado. Possível erro de URL de configuração nas configurações.</string>
<string id="UnhandledHttpErr">Solicitação HTTP retornou código de erro =</string>
<string id="TrailingSlashErr">O URL da API não deve ter uma barra final '/'</string>
<string id="FetchingMenuConfig">Buscando configuração do menu..</string>
<string id="ExitViewTouch">Deslize para a direita para sair\nToque para permanecer</string>
<string id="ExitViewButtons">Volte para sair\nEntre para ficar</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">Pe</string>
<string id="MenuItemOff">Oprit</string>
<string id="MenuItemTap">Atingeți</string>
@ -32,9 +32,12 @@
<string id="NoAPIKey">Nicio cheie API în setările aplicației</string>
<string id="NoApiUrl">Nicio adresă URL API în setările aplicației</string>
<string id="NoConfigUrl">Nicio adresă URL de configurare în setările aplicației</string>
<string id="ApiFlood">Apeluri API prea rapide. Vă rugăm să încetiniți solicitările.</string>
<string id="ApiFlood">Apeluri API prea rapide. Vă rugăm să încetiniți cererile dvs.</string>
<string id="ApiUrlNotFound">Adresa URL nu a fost găsită. Potențială eroare URL API în setări.</string>
<string id="ConfigUrlNotFound">Adresa URL nu a fost găsită. Potențială eroare URL de configurare în setări.</string>
<string id="UnhandledHttpErr">Solicitarea HTTP a returnat codul de eroare =</string>
<string id="TrailingSlashErr">Adresa URL API nu trebuie să aibă o bară oblică „/”</string>
<string id="FetchingMenuConfig">Se preiau configurarea meniului...</string>
<string id="ExitViewTouch">Glisați spre dreapta pentru a ieși\nAtingeți pentru a rămâne</string>
<string id="ExitViewButtons">Apăsați Înapoi pentru a ieși\nIntră pentru a rămâne</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">Zapnuté</string>
<string id="MenuItemOff">Vypnuté</string>
<string id="MenuItemTap">Klepnite</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">Adresa URL sa nenašla. Potenciálna chyba konfiguračnej adresy URL v nastaveniach.</string>
<string id="UnhandledHttpErr">Požiadavka HTTP vrátila kód chyby =</string>
<string id="TrailingSlashErr">Adresa URL rozhrania API nesmie obsahovať koncovú lomku „/“</string>
<string id="FetchingMenuConfig">Načítava sa konfigurácia ponuky...</string>
<string id="ExitViewTouch">Ukončite prejdením prstom doprava\nKlepnutím zostanete</string>
<string id="ExitViewButtons">Stlačte Späť na ukončenie\nVstúpte a zostaňte</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">Vklopljeno</string>
<string id="MenuItemOff">Izključeno</string>
<string id="MenuItemTap">Tapnite</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">URL-ja ni bilo mogoče najti. Morebitna napaka URL-ja konfiguracije v nastavitvah.</string>
<string id="UnhandledHttpErr">Zahteva HTTP je vrnila kodo napake =</string>
<string id="TrailingSlashErr">URL API-ja ne sme imeti končne poševnice '/'</string>
<string id="FetchingMenuConfig">Pridobivanje konfiguracije menija..</string>
<string id="ExitViewTouch">Povlecite v desno za izhod\nDotaknite se, da ostanete</string>
<string id="ExitViewButtons">Pritisnite Nazaj za izhod\nVstopite, da ostanete</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">En</string>
<string id="MenuItemOff">Apagado</string>
<string id="MenuItemTap">Grifo</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">URL no encontrada. Posible error de URL de configuración en la configuración.</string>
<string id="UnhandledHttpErr">La solicitud HTTP devolvió el código de error =</string>
<string id="TrailingSlashErr">La URL de API no debe tener una barra diagonal '/'</string>
<string id="FetchingMenuConfig">Obteniendo configuración del menú..</string>
<string id="ExitViewTouch">Desliza hacia la derecha para salir\nToca para permanecer</string>
<string id="ExitViewButtons">Presione Atrás para salir\nEntrar para permanecer</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn"></string>
<string id="MenuItemOff">Av</string>
<string id="MenuItemTap">Knacka</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">Webbadressen hittades inte. Potentiellt konfigurations-URL-fel i inställningarna.</string>
<string id="UnhandledHttpErr">HTTP-begäran returnerade felkod =</string>
<string id="TrailingSlashErr">API-URL får inte ha ett snedstreck '/'</string>
<string id="FetchingMenuConfig">Hämtar menykonfiguration..</string>
<string id="ExitViewTouch">Svep åt höger för att avsluta\nKnacka för att stanna</string>
<string id="ExitViewButtons">Tryck på Tillbaka för att avsluta\nEnter för att stanna</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">บน</string>
<string id="MenuItemOff">ปิด</string>
<string id="MenuItemTap">แตะ</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">ไม่พบ URL ข้อผิดพลาด URL การกำหนดค่าที่อาจเกิดขึ้นในการตั้งค่า</string>
<string id="UnhandledHttpErr">คำขอ HTTP ส่งคืนรหัสข้อผิดพลาด =</string>
<string id="TrailingSlashErr">URL ของ API ต้องไม่มีเครื่องหมายทับต่อท้าย '/'</string>
<string id="FetchingMenuConfig">กำลังดึงข้อมูลการกำหนดค่าเมนู..</string>
<string id="ExitViewTouch">ปัดไปทางขวาเพื่อออก\nแตะเพื่ออยู่ต่อ</string>
<string id="ExitViewButtons">กดกลับเพื่อออก\nเข้าไปเพื่ออยู่ต่อ</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">ık</string>
<string id="MenuItemOff">Kapalı</string>
<string id="MenuItemTap">Musluk</string>
@ -36,5 +36,8 @@
<string id="ApiUrlNotFound">URL bulunamadı. Ayarlarda olası API URL hatası.</string>
<string id="ConfigUrlNotFound">URL bulunamadı. Ayarlarda Olası Yapılandırma URL'si hatası.</string>
<string id="UnhandledHttpErr">HTTP isteği hata kodunu döndürdü =</string>
<string id="TrailingSlashErr">API URL'sinin sonunda eğik çizgi '/' olmamalıdır</string>
<string id="TrailingSlashErr">API URL'sinin sonunda '/' eğik çizgi olmamalıdır</string>
<string id="FetchingMenuConfig">Menü Yapılandırması alınıyor..</string>
<string id="ExitViewTouch">Çıkmak için Sağa Kaydırın\nKalmak için Dokunun</string>
<string id="ExitViewButtons">Çıkış için Geri tuşuna basın\nKalmak için Enter'a basın</string>
</strings>

View File

@ -15,11 +15,11 @@
<!--
Generated by Google Translate: English to Ukrainian
Згенеровано Google Translate з англійської
Створено Google Translate з англійської
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">Увімкнено</string>
<string id="MenuItemOff">Вимкнено</string>
<string id="MenuItemTap">Торкніться</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">URL не знайдено. Потенційна помилка URL-адреси конфігурації в налаштуваннях.</string>
<string id="UnhandledHttpErr">Запит HTTP повернув код помилки =</string>
<string id="TrailingSlashErr">URL-адреса API не повинна містити косу риску '/'</string>
<string id="FetchingMenuConfig">Отримання конфігурації меню..</string>
<string id="ExitViewTouch">Проведіть праворуч, щоб вийти\nТоркніться, щоб залишитися</string>
<string id="ExitViewButtons">Натисніть «Назад», щоб вийти\nВведіть, щоб залишитися</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">TRÊN</string>
<string id="MenuItemOff">Tắt</string>
<string id="MenuItemTap">Vỗ nhẹ</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">Không tìm thấy URL. Lỗi URL cấu hình tiềm ẩn trong cài đặt.</string>
<string id="UnhandledHttpErr">Yêu cầu HTTP trả về mã lỗi =</string>
<string id="TrailingSlashErr">URL API không được có dấu gạch chéo ở cuối '/'</string>
<string id="FetchingMenuConfig">Đang tìm nạp cấu hình menu..</string>
<string id="ExitViewTouch">Vuốt sang phải để thoát\nNhấn để ở lại</string>
<string id="ExitViewButtons">Nhấn Quay lại để thoát\nNhập để ở lại</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn"></string>
<string id="MenuItemOff">离开</string>
<string id="MenuItemTap">轻敲</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">找不到网址。设置中可能存在配置 URL 错误。</string>
<string id="UnhandledHttpErr">HTTP请求返回错误码=</string>
<string id="TrailingSlashErr">API URL 不得有尾部斜杠“/”</string>
<string id="FetchingMenuConfig">正在获取菜单配置..</string>
<string id="ExitViewTouch">向右滑动即可退出\n点击即可停留</string>
<string id="ExitViewButtons">按回车键退出\n按回车键继续</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn"></string>
<string id="MenuItemOff">離開</string>
<string id="MenuItemTap">輕敲</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">找不到網址。設定中可能存在配置 URL 錯誤。</string>
<string id="UnhandledHttpErr">HTTP請求回傳錯誤碼=</string>
<string id="TrailingSlashErr">API URL 不得有尾部斜線“/”</string>
<string id="FetchingMenuConfig">正在取得選單配置..</string>
<string id="ExitViewTouch">向右滑動即可退出\n點選即可停留</string>
<string id="ExitViewButtons">按回車鍵退出\n按回車鍵繼續</string>
</strings>

View File

@ -19,7 +19,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">hidup</string>
<string id="MenuItemOff">Mati</string>
<string id="MenuItemTap">Ketik</string>
@ -37,4 +37,7 @@
<string id="ConfigUrlNotFound">URL tidak ditemui. Ralat URL Konfigurasi Potensi dalam tetapan.</string>
<string id="UnhandledHttpErr">Permintaan HTTP mengembalikan kod ralat =</string>
<string id="TrailingSlashErr">URL API tidak boleh mempunyai garis miring '/'</string>
<string id="FetchingMenuConfig">Mengambil Konfigurasi Menu..</string>
<string id="ExitViewTouch">Leret ke Kanan untuk Keluar\nKetik untuk Kekal</string>
<string id="ExitViewButtons">Tekan Kembali untuk Keluar\nMasuk untuk Kekal</string>
</strings>

View File

@ -13,7 +13,7 @@
-->
<strings>
<string id="AppName">HomeAssistant</string>
<string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">On</string>
<string id="MenuItemOff">Off</string>
<string id="MenuItemTap">Tap</string>
@ -31,4 +31,7 @@
<string id="ConfigUrlNotFound">URL not found. Potential Configuration URL error in settings.</string>
<string id="UnhandledHttpErr">HTTP request returned error code = </string>
<string id="TrailingSlashErr">API URL must not have a trailing slash '/'</string>
<string id="FetchingMenuConfig">Fetching Menu Config..</string>
<string id="ExitViewTouch">Swipe to Right to Exit\nTap to Stay</string>
<string id="ExitViewButtons">Hit Back to Exit\nEnter to Stay</string>
</strings>

View File

@ -65,11 +65,10 @@ class ErrorView extends ScalableView {
function onUpdate(dc as Graphics.Dc) as Void {
var w = dc.getWidth();
var hw = w/2;
var bg = 0x3B444C;
if(dc has :setAntiAlias) {
dc.setAntiAlias(true);
}
dc.setColor(Graphics.COLOR_WHITE, bg);
dc.setColor(Graphics.COLOR_WHITE, Graphics.COLOR_BLUE);
dc.clear();
dc.drawBitmap(hw - mErrorIcon.getWidth()/2, mErrorIconMargin, mErrorIcon);
mTextArea.draw(dc);
@ -86,4 +85,4 @@ class ErrorDelegate extends WatchUi.BehaviorDelegate {
WatchUi.popView(WatchUi.SLIDE_DOWN);
return true;
}
}
}

View File

@ -24,24 +24,71 @@ using Toybox.WatchUi;
using Toybox.Application.Properties;
class HomeAssistantApp extends Application.AppBase {
private var mHaMenu;
private var quitTimer as QuitTimer;
private var strNoApiKey as Lang.String;
private var strNoApiUrl as Lang.String;
private var strNoConfigUrl as Lang.String;
private var strNoPhone as Lang.String;
private var strNoInternet as Lang.String;
private var strNoResponse as Lang.String;
private var strNoMenu as Lang.String;
private var strApiFlood as Lang.String;
private var strConfigUrlNotFound as Lang.String;
private var strUnhandledHttpErr as Lang.String;
private var strTrailingSlashErr as Lang.String;
private var mHaMenu as HomeAssistantView or Null;
private var mQuitTimer as QuitTimer or Null;
private var strNoApiKey as Lang.String or Null;
private var strNoApiUrl as Lang.String or Null;
private var strNoConfigUrl as Lang.String or Null;
private var strNoPhone as Lang.String or Null;
private var strNoInternet as Lang.String or Null;
private var strNoResponse as Lang.String or Null;
private var strNoMenu as Lang.String or Null;
private var strApiFlood as Lang.String or Null;
private var strConfigUrlNotFound as Lang.String or Null;
private var strUnhandledHttpErr as Lang.String or Null;
private var strTrailingSlashErr as Lang.String or Null;
private var mItemsToUpdate; // Array initialised by onReturnFetchMenuConfig()
private var mNextItemToUpdate = 0; // Index into the above array
function initialize() {
AppBase.initialize();
// ATTENTION when adding stuff into this block:
// Because of the >>GlanceView<<, it should contain only
// code, which is used as well for the glance:
// - https://developer.garmin.com/connect-iq/core-topics/glances/
//
// Also dealing with resources "Rez" needs attention, too. See
// "Resource Scopes":
// - https://developer.garmin.com/connect-iq/core-topics/resources/
//
// Classes which are used for the glance view, needed to be tagged
// with "(:glance)".
}
// onStart() is called on application start up
function onStart(state as Lang.Dictionary?) as Void {
// ATTENTION when adding stuff into this block:
// Because of the >>GlanceView<<, it should contain only
// code, which is used as well for the glance:
// - https://developer.garmin.com/connect-iq/core-topics/glances/
//
// Also dealing with resources "Rez" needs attention, too. See
// "Resource Scopes":
// - https://developer.garmin.com/connect-iq/core-topics/resources/
//
// Classes which are used for the glance view, needed to be tagged
// with "(:glance)".
}
// onStop() is called when your application is exiting
function onStop(state as Lang.Dictionary?) as Void {
// ATTENTION when adding stuff into this block:
// Because of the >>GlanceView<<, it should contain only
// code, which is used as well for the glance:
// - https://developer.garmin.com/connect-iq/core-topics/glances/
//
// Also dealing with resources "Rez" needs attention, too. See
// "Resource Scopes":
// - https://developer.garmin.com/connect-iq/core-topics/resources/
//
// Classes which are used for the glance view, needed to be tagged
// with "(:glance)".
}
// Return the initial view of your application here
function getInitialView() as Lang.Array<WatchUi.Views or WatchUi.InputDelegates>? {
strNoApiKey = WatchUi.loadResource($.Rez.Strings.NoAPIKey);
strNoApiUrl = WatchUi.loadResource($.Rez.Strings.NoApiUrl);
strNoConfigUrl = WatchUi.loadResource($.Rez.Strings.NoConfigUrl);
@ -53,21 +100,8 @@ class HomeAssistantApp extends Application.AppBase {
strConfigUrlNotFound = WatchUi.loadResource($.Rez.Strings.ConfigUrlNotFound);
strUnhandledHttpErr = WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr);
strTrailingSlashErr = WatchUi.loadResource($.Rez.Strings.TrailingSlashErr);
quitTimer = new QuitTimer();
}
mQuitTimer = new QuitTimer();
// onStart() is called on application start up
function onStart(state as Lang.Dictionary?) as Void {
quitTimer.begin();
}
// onStop() is called when your application is exiting
function onStop(state as Lang.Dictionary?) as Void {
quitTimer.stop();
}
// Return the initial view of your application here
function getInitialView() as Lang.Array<WatchUi.Views or WatchUi.InputDelegates>? {
var api_url = Properties.getValue("api_url") as Lang.String;
if ((Properties.getValue("api_key") as Lang.String).length() == 0) {
@ -102,7 +136,7 @@ class HomeAssistantApp extends Application.AppBase {
return [new ErrorView(strNoInternet + "."), new ErrorDelegate()] as Lang.Array<WatchUi.Views or WatchUi.InputDelegates>;
} else {
fetchMenuConfig();
return [new WatchUi.View(), new WatchUi.BehaviorDelegate()] as Lang.Array<WatchUi.Views or WatchUi.InputDelegates>;
return [new RootView(self), new RootViewDelegate(self)] as Lang.Array<WatchUi.Views or WatchUi.InputDelegates>;
}
}
@ -138,7 +172,8 @@ class HomeAssistantApp extends Application.AppBase {
WatchUi.pushView(new ErrorView(strConfigUrlNotFound), new ErrorDelegate(), WatchUi.SLIDE_UP);
} else if (responseCode == 200) {
mHaMenu = new HomeAssistantView(data, null);
WatchUi.switchToView(mHaMenu, new HomeAssistantViewDelegate(), WatchUi.SLIDE_IMMEDIATE);
mQuitTimer.begin();
pushHomeAssistantMenuView();
mItemsToUpdate = mHaMenu.getItemsToUpdate();
// Start the continuous update process that continues for as long as the application is running.
// The chain of functions from 'updateNextMenuItem()' calls 'updateNextMenuItem()' on completion.
@ -171,6 +206,14 @@ class HomeAssistantApp extends Application.AppBase {
);
}
function homeAssistantMenuIsLoaded() as Lang.Boolean{
return mHaMenu!=null;
}
function pushHomeAssistantMenuView() as Void{
WatchUi.pushView(mHaMenu, new HomeAssistantViewDelegate(true), WatchUi.SLIDE_IMMEDIATE);
}
// We need to spread out the API calls so as not to overload the results queue and cause Communications.BLE_QUEUE_FULL (-101) error.
// This function is called by a timer every Globals.menuItemUpdateInterval ms.
function updateNextMenuItem() as Void {
@ -180,9 +223,13 @@ class HomeAssistantApp extends Application.AppBase {
}
function getQuitTimer() as QuitTimer{
return quitTimer;
return mQuitTimer;
}
(:glance)
function getGlanceView() {
return [new HomeAssistantGlanceView()];
}
}
function getApp() as HomeAssistantApp {

View File

@ -0,0 +1,42 @@
//-----------------------------------------------------------------------------------
//
// 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, 23 November 2023
//
//
// Description:
//
// Glance view for GarminHomeAssistant
//
//-----------------------------------------------------------------------------------
using Toybox.Lang;
using Toybox.WatchUi;
using Toybox.Graphics;
(:glance)
class HomeAssistantGlanceView extends WatchUi.GlanceView {
private var mText as Lang.String;
function initialize() {
GlanceView.initialize();
mText = WatchUi.loadResource($.Rez.Strings.AppName);
}
function onUpdate(dc) as Void {
GlanceView.onUpdate(dc);
dc.setColor(Graphics.COLOR_WHITE, Graphics.COLOR_BLACK);
dc.drawText(0, dc.getHeight() / 2, Graphics.FONT_TINY, mText, Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER);
}
}

View File

@ -124,7 +124,7 @@ class HomeAssistantService {
}
WatchUi.pushView(new ErrorView(strNoInternet + "."), new ErrorDelegate(), WatchUi.SLIDE_UP);
} else {
var url = (Properties.getValue("api_url") as Lang.String) + "/services/" + service.substring(0, service.find(".")) + "/" + service.substring(service.find(".")+1, null);
var url = (Properties.getValue("api_url") as Lang.String) + "/services/" + service.substring(0, service.find(".")) + "/" + service.substring(service.find(".")+1, service.length());
if (Globals.scDebug) {
System.println("HomeAssistantService call() URL=" + url);
System.println("HomeAssistantService call() service=" + service);

View File

@ -21,6 +21,7 @@
using Toybox.Application;
using Toybox.Lang;
using Toybox.Graphics;
using Toybox.System;
using Toybox.WatchUi;
class HomeAssistantView extends WatchUi.Menu2 {
@ -103,12 +104,23 @@ class HomeAssistantView extends WatchUi.Menu2 {
//
class HomeAssistantViewDelegate extends WatchUi.Menu2InputDelegate {
function initialize() {
private var mIsRootMenuView = false;
function initialize(isRootMenuView as Lang.Boolean) {
Menu2InputDelegate.initialize();
mIsRootMenuView = isRootMenuView;
}
function onBack() {
getApp().getQuitTimer().reset();
if (mIsRootMenuView){
// If its started from glance or as an activity, directly exit the widget/app
// (on widgets without glance, this exit() won`t do anything,
// so the base view will be shown instead, through the popView below this "if body")
System.exit();
}
WatchUi.popView(WatchUi.SLIDE_RIGHT);
}
@ -147,15 +159,13 @@ class HomeAssistantViewDelegate extends WatchUi.Menu2InputDelegate {
if (Globals.scDebug) {
System.println("Menu: " + haMenuItem.getLabel() + " " + haMenuItem.getId());
}
// No delegate state to be amended, so re-use 'self'.
WatchUi.pushView(haMenuItem.getMenuView(), self, WatchUi.SLIDE_LEFT);
WatchUi.pushView(haMenuItem.getMenuView(), new HomeAssistantViewDelegate(false), WatchUi.SLIDE_LEFT);
} else if (item instanceof HomeAssistantViewIconMenuItem) {
var haMenuItem = item as HomeAssistantViewIconMenuItem;
if (Globals.scDebug) {
System.println("IconMenu: " + haMenuItem.getLabel() + " " + haMenuItem.getId());
}
// No delegate state to be amended, so re-use 'self'.
WatchUi.pushView(haMenuItem.getMenuView(), self, WatchUi.SLIDE_LEFT);
WatchUi.pushView(haMenuItem.getMenuView(), new HomeAssistantViewDelegate(false), WatchUi.SLIDE_LEFT);
} else {
if (Globals.scDebug) {
System.println(item.getLabel() + " " + item.getId());

129
source/RootView.mc Normal file
View File

@ -0,0 +1,129 @@
//-----------------------------------------------------------------------------------
//
// 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, 5 December 2023
//
//
// Description:
//
// Application root view for GarminHomeAssistant
//
//-----------------------------------------------------------------------------------
using Toybox.Graphics;
using Toybox.Lang;
using Toybox.WatchUi;
class RootView extends ScalableView {
// ATTENTION when the app is running as a "widget" (that means, it runs on devices
// without glance view support), the input events in this view are limited, as
// described under "Base View and the Widget Carousel" on:
//
// https://developer.garmin.com/connect-iq/connect-iq-basics/app-types/
//
// Also the view type of the base view is limited too (for example "WatchUi.Menu2"
// is not possible)).
//
// Also System.exit() is not working/do nothing when running as a widget: A widget will be
// terminated automatically by OS after some time or can be quit manually, when on the base
// view a swipe to left / "back button" press is done.
private var mApp as HomeAssistantApp;
private var strFetchingMenuConfig as Lang.String;
private var strExit as Lang.String;
private var mTextAreaExit as WatchUi.TextArea or Null;
private var mTextAreaFetching as WatchUi.TextArea or Null;
function initialize(app as HomeAssistantApp) {
ScalableView.initialize();
mApp=app;
strFetchingMenuConfig = WatchUi.loadResource($.Rez.Strings.FetchingMenuConfig);
if (System.getDeviceSettings().isTouchScreen){
strExit = WatchUi.loadResource($.Rez.Strings.ExitViewTouch);
} else {
strExit = WatchUi.loadResource($.Rez.Strings.ExitViewButtons);
}
}
function onLayout(dc as Graphics.Dc) as Void {
var w = dc.getWidth();
var h = dc.getHeight();
mTextAreaExit = new WatchUi.TextArea({
:text => strExit,
:color => Graphics.COLOR_WHITE,
:font => Graphics.FONT_XTINY,
:justification => Graphics.TEXT_JUSTIFY_CENTER | Graphics.TEXT_JUSTIFY_VCENTER,
:locX => 0,
:locY => 83,
:width => w,
:height => h - 166
});
mTextAreaFetching = new WatchUi.TextArea({
:text => strFetchingMenuConfig,
:color => Graphics.COLOR_WHITE,
:font => Graphics.FONT_XTINY,
:justification => Graphics.TEXT_JUSTIFY_CENTER | Graphics.TEXT_JUSTIFY_VCENTER,
:locX => 0,
:locY => 83,
:width => w,
:height => h - 166
});
}
function onUpdate(dc as Graphics.Dc) as Void {
if(dc has :setAntiAlias) {
dc.setAntiAlias(true);
}
dc.setColor(Graphics.COLOR_WHITE, Graphics.COLOR_BLACK);
dc.clear();
if(mApp.homeAssistantMenuIsLoaded()) {
mTextAreaExit.draw(dc);
} else {
mTextAreaFetching.draw(dc);
}
}
}
class RootViewDelegate extends WatchUi.BehaviorDelegate {
var mApp as HomeAssistantApp;
function initialize(app as HomeAssistantApp ) {
BehaviorDelegate.initialize();
mApp=app;
}
function onTap(evt as WatchUi.ClickEvent) as Lang.Boolean {
return backToMainMenu();
}
function onSelect() as Lang.Boolean {
return backToMainMenu();
}
function onMenu() as Lang.Boolean{
return backToMainMenu();
}
private function backToMainMenu() as Lang.Boolean{
if(mApp.homeAssistantMenuIsLoaded()){
mApp.pushHomeAssistantMenuView();
return true;
}
return false;
}
}