mirror of
				https://github.com/house-of-abbey/GarminHomeAssistant.git
				synced 2025-10-31 15:48:13 +00:00 
			
		
		
		
	Merge branch 'main' into 22-add-internationalisation-for-application-settings
This commit is contained in:
		
							
								
								
									
										10
									
								
								manifest.xml
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								manifest.xml
									
									
									
									
									
								
							| @@ -9,19 +9,19 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
|   Test Application id="98c36259-498a-4458-9cef-74a273ad2bc3" | ||||
|   Live Application id="40131e87-31ff-454b-a8e2-92276ee399d6" | ||||
|   SomeoneOnEarth's Test App id="bf69be91-5833-4d96-92ea-c5f1a9db5dcc" | ||||
|   philipabbey's Test App    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: | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- لإعدادات واجهة المستخدم الرسومية --> | ||||
|   <string id="SettingsApiKey">مفتاح API لمساعد المنزل.</string> | ||||
|   <string id="SettingsApiKey">مفتاح API لـ HomeAssistant.</string> | ||||
|   <string id="SettingsApiKeyPrompt">رمز الوصول طويل الأمد.</string> | ||||
|   <string id="SettingsApiUrl">عنوان URL لواجهة برمجة تطبيقات Home Assistant.</string> | ||||
|   <string id="SettingsApiUrl">عنوان URL لواجهة برمجة تطبيقات HomeAssistant.</string> | ||||
|   <string id="SettingsConfigUrl">عنوان URL لتكوين القائمة (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">المهلة بالثواني. قم بالخروج من التطبيق بعد هذه الفترة من عدم النشاط لحفظ بطارية الجهاز.</string> | ||||
|   <string id="SettingsConfirmTimeout">بعد هذا الوقت (بالثواني)، يتم إغلاق مربع حوار تأكيد الإجراء تلقائيًا ويتم إلغاء الإجراء. اضبط على 0 لتعطيل المهلة.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- За GUI за настройки --> | ||||
|   <string id="SettingsApiKey">API ключ за домашен асистент.</string> | ||||
|   <string id="SettingsApiKey">API ключ за HomeAssistant.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Токен за дълготраен достъп.</string> | ||||
|   <string id="SettingsApiUrl">URL адрес за API на Home Assistant.</string> | ||||
|   <string id="SettingsApiUrl">URL адрес за API на HomeAssistant.</string> | ||||
|   <string id="SettingsConfigUrl">URL за конфигурация на менюто (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Изчакване в секунди. Излезте от приложението след този период на неактивност, за да запазите батерията на устройството.</string> | ||||
|   <string id="SettingsConfirmTimeout">След това време (в секунди) диалоговият прозорец за потвърждение за действие се затваря автоматично и действието се отменя. Задайте 0, за да деактивирате изчакването.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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> | ||||
| @@ -37,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- Pro nastavení GUI --> | ||||
|   <string id="SettingsApiKey">Klíč API pro domácího asistenta.</string> | ||||
|   <string id="SettingsApiKey">Klíč API pro HomeAssistant.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Přístupový token s dlouhou životností.</string> | ||||
|   <string id="SettingsApiUrl">URL pro Home Assistant API.</string> | ||||
|   <string id="SettingsApiUrl">URL pro HomeAssistant API.</string> | ||||
|   <string id="SettingsConfigUrl">Adresa URL pro konfiguraci nabídky (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Časový limit v sekundách. Po této době nečinnosti aplikaci ukončete, abyste šetřili baterii zařízení.</string> | ||||
|   <string id="SettingsConfirmTimeout">Po uplynutí této doby (v sekundách) se dialog pro potvrzení akce automaticky zavře a akce se zruší. Nastavením na 0 deaktivujete časový limit.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -19,7 +19,7 @@ | ||||
| --> | ||||
|  | ||||
| <strings> | ||||
|   <string id="AppName">HomeAssistant</string> | ||||
|   <string id="AppName" scope="glance">HomeAssistant</string> | ||||
|   <string id="MenuItemOn">På</string> | ||||
|   <string id="MenuItemOff">Af</string> | ||||
|   <string id="MenuItemTap">Tryk på</string> | ||||
| @@ -37,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- Til indstillingerne GUI --> | ||||
|   <string id="SettingsApiKey">API-nøgle til Home Assistant.</string> | ||||
|   <string id="SettingsApiKey">API-nøgle til HomeAssistant.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Adgangstoken med lang levetid.</string> | ||||
|   <string id="SettingsApiUrl">URL til Home Assistant API.</string> | ||||
|   <string id="SettingsApiUrl">URL til HomeAssistant API.</string> | ||||
|   <string id="SettingsConfigUrl">URL til menukonfiguration (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Timeout i sekunder. Afslut applikationen efter denne periode med inaktivitet for at spare på enhedens batteri.</string> | ||||
|   <string id="SettingsConfirmTimeout">Efter dette tidspunkt (i sekunder) lukkes en bekræftelsesdialog for en handling automatisk, og handlingen annulleres. Indstil til 0 for at deaktivere timeout.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 14 November 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 14 November 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- Für die Einstellungs-GUI --> | ||||
|   <string id="SettingsApiKey">API-Schlüssel für Home Assistant.</string> | ||||
|   <string id="SettingsApiKey">API-Schlüssel für HomeAssistant.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Langlebiges Zugriffstoken.</string> | ||||
|   <string id="SettingsApiUrl">URL für die Home Assistant-API.</string> | ||||
|   <string id="SettingsApiUrl">URL für die HomeAssistant-API.</string> | ||||
|   <string id="SettingsConfigUrl">URL zur Menükonfiguration (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Timeout in Sekunden. Beenden Sie die Anwendung nach dieser Zeit der Inaktivität, um den Akku des Geräts zu schonen.</string> | ||||
|   <string id="SettingsConfirmTimeout">Nach dieser Zeit (in Sekunden) wird automatisch ein Bestätigungsdialog für eine Aktion geschlossen und die Aktion abgebrochen. Auf 0 setzen, um das Timeout zu deaktivieren.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- Voor de instellingen-GUI --> | ||||
|   <string id="SettingsApiKey">API-sleutel voor Home Assistant.</string> | ||||
|   <string id="SettingsApiKey">API-sleutel voor HomeAssistant.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Toegangstoken met lange levensduur.</string> | ||||
|   <string id="SettingsApiUrl">URL voor Home Assistant-API.</string> | ||||
|   <string id="SettingsApiUrl">URL voor HomeAssistant API.</string> | ||||
|   <string id="SettingsConfigUrl">URL voor menuconfiguratie (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Time-out in seconden. Sluit de applicatie af na deze periode van inactiviteit om de batterij van het apparaat te sparen.</string> | ||||
|   <string id="SettingsConfirmTimeout">Na deze tijd (in seconden) wordt automatisch een bevestigingsvenster voor een actie gesloten en wordt de actie geannuleerd. Stel in op 0 om de time-out uit te schakelen.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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,15 +32,18 @@ | ||||
|   <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-kõned 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> | ||||
|   <!-- Seadete GUI jaoks --> | ||||
|   <string id="SettingsApiKey">Koduabilise API võti.</string> | ||||
|   <string id="SettingsApiKey">API-võti HomeAssistantile.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Pikaealine juurdepääsuluba.</string> | ||||
|   <string id="SettingsApiUrl">Koduabilise API URL.</string> | ||||
|   <string id="SettingsApiUrl">HomeAssistant API URL.</string> | ||||
|   <string id="SettingsConfigUrl">URL menüü konfigureerimiseks (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Aegumine sekundites. Seadme aku säästmiseks sulgege rakendus pärast seda tegevusetusperioodi.</string> | ||||
|   <string id="SettingsConfirmTimeout">Pärast seda aega (sekundites) suletakse automaatselt toimingu kinnitusdialoog ja toiming tühistatakse. Ajalõpu keelamiseks määrake väärtusele 0.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- GUI-asetusten osalta --> | ||||
|   <string id="SettingsApiKey">API-avain Home Assistantille.</string> | ||||
|   <string id="SettingsApiKey">API-avain HomeAssistantille.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Pitkäikäinen pääsytunnus.</string> | ||||
|   <string id="SettingsApiUrl">URL Home Assistant API:lle.</string> | ||||
|   <string id="SettingsApiUrl">HomeAssistant API:n URL-osoite.</string> | ||||
|   <string id="SettingsConfigUrl">URL-osoite valikon määrityksiä varten (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Aikakatkaisu sekunneissa. Poistu sovelluksesta tämän käyttämättömyyden jälkeen säästääksesi laitteen akkua.</string> | ||||
|   <string id="SettingsConfirmTimeout">Tämän ajan kuluttua (sekunneissa) toiminnon vahvistusikkuna suljetaan automaattisesti ja toiminto peruutetaan. Aseta arvoksi 0 poistaaksesi aikakatkaisun käytöstä.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 14 November 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 14 November 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- Pour l'interface graphique des paramètres --> | ||||
|   <string id="SettingsApiKey">Clé API pour Home Assistant.</string> | ||||
|   <string id="SettingsApiKey">Clé API pour HomeAssistant.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Jeton d'accès de longue durée.</string> | ||||
|   <string id="SettingsApiUrl">URL de l’API Home Assistant.</string> | ||||
|   <string id="SettingsApiUrl">URL de l’API HomeAssistant.</string> | ||||
|   <string id="SettingsConfigUrl">URL de configuration des menus (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Délai d'expiration en secondes. Quittez l'application après cette période d'inactivité pour économiser la batterie de l'appareil.</string> | ||||
|   <string id="SettingsConfirmTimeout">Passé ce délai (en secondes), une boîte de dialogue de confirmation d'une action se ferme automatiquement et l'action est annulée. Réglez sur 0 pour désactiver le délai d'attente.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- Για τις ρυθμίσεις GUI --> | ||||
|   <string id="SettingsApiKey">Κλειδί API για Home Assistant.</string> | ||||
|   <string id="SettingsApiKey">Κλειδί API για το HomeAssistant.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Διακριτικό πρόσβασης μακράς διαρκείας.</string> | ||||
|   <string id="SettingsApiUrl">URL για το Home Assistant API.</string> | ||||
|   <string id="SettingsApiUrl">URL για το HomeAssistant API.</string> | ||||
|   <string id="SettingsConfigUrl">URL για τη διαμόρφωση μενού (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Timeout σε δευτερόλεπτα. Κλείστε την εφαρμογή μετά από αυτήν την περίοδο αδράνειας για να εξοικονομήσετε την μπαταρία της συσκευής.</string> | ||||
|   <string id="SettingsConfirmTimeout">Μετά από αυτό το χρονικό διάστημα (σε δευτερόλεπτα), ένα παράθυρο διαλόγου επιβεβαίωσης για μια ενέργεια κλείνει αυτόματα και η ενέργεια ακυρώνεται. Ορίστε στο 0 για να απενεργοποιήσετε το χρονικό όριο.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- עבור ה-GUI של ההגדרות --> | ||||
|   <string id="SettingsApiKey">מפתח API עבור Home Assistant.</string> | ||||
|   <string id="SettingsApiKey">מפתח API עבור HomeAssistant.</string> | ||||
|   <string id="SettingsApiKeyPrompt">אסימון גישה ארוך-חיים.</string> | ||||
|   <string id="SettingsApiUrl">כתובת URL עבור Home Assistant API.</string> | ||||
|   <string id="SettingsApiUrl">כתובת URL עבור HomeAssistant API.</string> | ||||
|   <string id="SettingsConfigUrl">כתובת URL לתצורת תפריט (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">פסק זמן בשניות. צא מהאפליקציה לאחר תקופה זו של חוסר פעילות כדי לחסוך בסוללת המכשיר.</string> | ||||
|   <string id="SettingsConfirmTimeout">לאחר זמן זה (בשניות), תיבת דו-שיח לאישור פעולה נסגרת אוטומטית והפעולה מבוטלת. הגדר ל-0 כדי לבטל את הזמן הקצוב.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- Za GUI postavki --> | ||||
|   <string id="SettingsApiKey">API ključ za kućnog pomoćnika.</string> | ||||
|   <string id="SettingsApiKey">API ključ za HomeAssistant.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Dugotrajni pristupni token.</string> | ||||
|   <string id="SettingsApiUrl">URL za Home Assistant API.</string> | ||||
|   <string id="SettingsApiUrl">URL za HomeAssistant API.</string> | ||||
|   <string id="SettingsConfigUrl">URL za konfiguraciju izbornika (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Istek u sekundama. Izađite iz aplikacije nakon ovog razdoblja neaktivnosti kako biste uštedjeli bateriju uređaja.</string> | ||||
|   <string id="SettingsConfirmTimeout">Nakon tog vremena (u sekundama), dijaloški okvir za potvrdu radnje automatski se zatvara i radnja se poništava. Postavite na 0 da onemogućite vremensko ograničenje.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- A beállítások GUI-hoz --> | ||||
|   <string id="SettingsApiKey">API kulcs az otthoni asszisztenshez.</string> | ||||
|   <string id="SettingsApiKey">API-kulcs a HomeAssistant számára.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Hosszú életű hozzáférési token.</string> | ||||
|   <string id="SettingsApiUrl">A Home Assistant API URL-je.</string> | ||||
|   <string id="SettingsApiUrl">A HomeAssistant API URL-je.</string> | ||||
|   <string id="SettingsConfigUrl">URL a menükonfigurációhoz (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Időtúllépés másodpercben. Az eszköz akkumulátorának kímélése érdekében lépjen ki az alkalmazásból ezen inaktivitási időszak után.</string> | ||||
|   <string id="SettingsConfirmTimeout">Ezen idő letelte után (másodpercben) a művelet megerősítő párbeszédablakja automatikusan bezárul, és a művelet megszakad. Állítsa 0-ra az időtúllépés letiltásához.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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> | ||||
| @@ -37,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- Untuk pengaturan GUI --> | ||||
|   <string id="SettingsApiKey">Kunci API untuk Asisten Rumah.</string> | ||||
|   <string id="SettingsApiKey">Kunci API untuk HomeAssistant.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Token Akses Berumur Panjang.</string> | ||||
|   <string id="SettingsApiUrl">URL untuk API Asisten Rumah.</string> | ||||
|   <string id="SettingsApiUrl">URL untuk API HomeAssistant.</string> | ||||
|   <string id="SettingsConfigUrl">URL untuk konfigurasi menu (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Batas waktu dalam hitungan detik. Keluar dari aplikasi setelah periode tidak aktif ini untuk menghemat baterai perangkat.</string> | ||||
|   <string id="SettingsConfirmTimeout">Setelah waktu ini (dalam detik), dialog konfirmasi untuk suatu tindakan secara otomatis ditutup dan tindakan tersebut dibatalkan. Setel ke 0 untuk menonaktifkan batas waktu.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- Per la GUI delle impostazioni --> | ||||
|   <string id="SettingsApiKey">Chiave API per Home Assistant.</string> | ||||
|   <string id="SettingsApiKey">Chiave API per HomeAssistant.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Token di accesso di lunga durata.</string> | ||||
|   <string id="SettingsApiUrl">URL per l'API Home Assistant.</string> | ||||
|   <string id="SettingsApiUrl">URL per l'API HomeAssistant.</string> | ||||
|   <string id="SettingsConfigUrl">URL per la configurazione del menu (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Timeout in secondi. Uscire dall'applicazione dopo questo periodo di inattività per risparmiare la batteria del dispositivo.</string> | ||||
|   <string id="SettingsConfirmTimeout">Trascorso questo tempo (in secondi), una finestra di dialogo di conferma per un'azione viene chiusa automaticamente e l'azione viene annullata. Impostare su 0 per disabilitare il timeout.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- 設定GUIの場合 --> | ||||
|   <string id="SettingsApiKey">ホームアシスタントのAPIキー。</string> | ||||
|   <string id="SettingsApiKey">ホームアシスタントの API キー。</string> | ||||
|   <string id="SettingsApiKeyPrompt">有効期間の長いアクセス トークン。</string> | ||||
|   <string id="SettingsApiUrl">ホーム アシスタント API の URL。</string> | ||||
|   <string id="SettingsApiUrl">ホームアシスタント API の URL。</string> | ||||
|   <string id="SettingsConfigUrl">メニュー構成の URL (JSON)。</string> | ||||
|   <string id="SettingsAppTimeout">秒単位のタイムアウト。デバイスのバッテリーを節約するために、この期間非アクティブになった後はアプリケーションを終了してください。</string> | ||||
|   <string id="SettingsConfirmTimeout">この時間 (秒単位) が経過すると、アクションの確認ダイアログが自動的に閉じられ、アクションがキャンセルされます。タイムアウトを無効にするには、0 に設定します。</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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,10 +37,13 @@ | ||||
|   <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계속하려면 입력하세요.</string> | ||||
|   <!-- 설정 GUI의 경우 --> | ||||
|   <string id="SettingsApiKey">홈어시스턴트용 API 키.</string> | ||||
|   <string id="SettingsApiKey">HomeAssistant용 API 키.</string> | ||||
|   <string id="SettingsApiKeyPrompt">장기 액세스 토큰.</string> | ||||
|   <string id="SettingsApiUrl">홈어시스턴트 API의 URL입니다.</string> | ||||
|   <string id="SettingsApiUrl">HomeAssistant API의 URL입니다.</string> | ||||
|   <string id="SettingsConfigUrl">메뉴 구성을 위한 URL(JSON)입니다.</string> | ||||
|   <string id="SettingsAppTimeout">시간 초과(초)입니다. 장치 배터리를 절약하려면 이 비활성 기간 후에 애플리케이션을 종료하십시오.</string> | ||||
|   <string id="SettingsConfirmTimeout">이 시간(초)이 지나면 작업에 대한 확인 대화 상자가 자동으로 닫히고 작업이 취소됩니다. 시간 초과를 비활성화하려면 0으로 설정합니다.</string> | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- Iestatījumu GUI --> | ||||
|   <string id="SettingsApiKey">Mājas palīga API atslēga.</string> | ||||
|   <string id="SettingsApiKey">API atslēga Home Assistant.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Ilgmūžīgs piekļuves marķieris.</string> | ||||
|   <string id="SettingsApiUrl">Mājas palīga API URL.</string> | ||||
|   <string id="SettingsApiUrl">HomeAssistant API URL.</string> | ||||
|   <string id="SettingsConfigUrl">URL izvēlnes konfigurācijai (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Taimauts sekundēs. Pēc šī neaktivitātes perioda izejiet no lietojumprogrammas, lai taupītu ierīces akumulatoru.</string> | ||||
|   <string id="SettingsConfirmTimeout">Pēc šī laika (sekundēs) tiek automātiski aizvērts darbības apstiprinājuma dialoglodziņš un darbība tiek atcelta. Iestatiet uz 0, lai atspējotu taimautu.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- Dėl nustatymų GUI --> | ||||
|   <string id="SettingsApiKey">API raktas, skirtas namų asistentui.</string> | ||||
|   <string id="SettingsApiKey">API raktas, skirtas HomeAssistant.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Ilgalaikis prieigos raktas.</string> | ||||
|   <string id="SettingsApiUrl">„Home Assistant“ API URL.</string> | ||||
|   <string id="SettingsApiUrl">„HomeAssistant“ API URL.</string> | ||||
|   <string id="SettingsConfigUrl">Meniu konfigūravimo URL (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Skirtasis laikas sekundėmis. Po šio neveiklumo laikotarpio išeikite iš programos, kad taupytumėte įrenginio akumuliatorių.</string> | ||||
|   <string id="SettingsConfirmTimeout">Praėjus šiam laikui (sekundėmis), veiksmo patvirtinimo dialogo langas automatiškai uždaromas ir veiksmas atšaukiamas. Nustatykite 0, kad išjungtumėte skirtąjį laiką.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -19,7 +19,7 @@ | ||||
| --> | ||||
|  | ||||
| <strings> | ||||
|   <string id="AppName">HomeAssistant</string> | ||||
|   <string id="AppName" scope="glance">HomeAssistant</string> | ||||
|   <string id="MenuItemOn">På</string> | ||||
|   <string id="MenuItemOff">Av</string> | ||||
|   <string id="MenuItemTap">Trykk på</string> | ||||
| @@ -37,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- For innstillingene GUI --> | ||||
|   <string id="SettingsApiKey">API-nøkkel for Home Assistant.</string> | ||||
|   <string id="SettingsApiKey">API-nøkkel for HomeAssistant.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Langlevd tilgangstoken.</string> | ||||
|   <string id="SettingsApiUrl">URL for Home Assistant API.</string> | ||||
|   <string id="SettingsApiUrl">URL for HomeAssistant API.</string> | ||||
|   <string id="SettingsConfigUrl">URL for menykonfigurasjon (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Tidsavbrudd i sekunder. Avslutt applikasjonen etter denne perioden med inaktivitet for å spare enhetens batteri.</string> | ||||
|   <string id="SettingsConfirmTimeout">Etter denne tiden (i sekunder), lukkes en bekreftelsesdialog for en handling automatisk og handlingen avbrytes. Sett til 0 for å deaktivere tidsavbruddet.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- Dla ustawień GUI --> | ||||
|   <string id="SettingsApiKey">Klucz API dla Asystenta Domowego.</string> | ||||
|   <string id="SettingsApiKey">Klucz API dla HomeAssistant.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Długowieczny token dostępu.</string> | ||||
|   <string id="SettingsApiUrl">Adres URL interfejsu API Home Assistant.</string> | ||||
|   <string id="SettingsApiUrl">Adres URL interfejsu API HomeAssistant.</string> | ||||
|   <string id="SettingsConfigUrl">Adres URL konfiguracji menu (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Limit czasu w sekundach. Wyjdź z aplikacji po tym okresie bezczynności, aby oszczędzać baterię urządzenia.</string> | ||||
|   <string id="SettingsConfirmTimeout">Po tym czasie (w sekundach) okno dialogowe z potwierdzeniem akcji zamyka się automatycznie, a akcja zostaje anulowana. Ustaw na 0, aby wyłączyć limit czasu.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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> | ||||
| @@ -37,10 +37,13 @@ | ||||
|   <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 permanecer</string> | ||||
|   <!-- Para a GUI de configurações --> | ||||
|   <string id="SettingsApiKey">Chave de API para Home Assistant.</string> | ||||
|   <string id="SettingsApiKey">Chave de API para HomeAssistant.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Token de acesso de longa duração.</string> | ||||
|   <string id="SettingsApiUrl">URL para API do Home Assistant.</string> | ||||
|   <string id="SettingsApiUrl">URL para API HomeAssistant.</string> | ||||
|   <string id="SettingsConfigUrl">URL para configuração do menu (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Tempo limite em segundos. Saia do aplicativo após esse período de inatividade para economizar bateria do aparelho.</string> | ||||
|   <string id="SettingsConfirmTimeout">Após esse tempo (em segundos), uma caixa de diálogo de confirmação de uma ação é automaticamente fechada e a ação é cancelada. Defina como 0 para desativar o tempo limite.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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> | ||||
| @@ -37,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- Pentru GUI de setări --> | ||||
|   <string id="SettingsApiKey">Cheie API pentru Home Assistant.</string> | ||||
|   <string id="SettingsApiKey">Cheie API pentru HomeAssistant.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Token de acces cu viață lungă.</string> | ||||
|   <string id="SettingsApiUrl">Adresa URL pentru Home Assistant API.</string> | ||||
|   <string id="SettingsApiUrl">Adresa URL pentru API-ul HomeAssistant.</string> | ||||
|   <string id="SettingsConfigUrl">URL pentru configurarea meniului (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Timeout în secunde. Ieșiți din aplicație după această perioadă de inactivitate pentru a economisi bateria dispozitivului.</string> | ||||
|   <string id="SettingsConfirmTimeout">După acest timp (în secunde), un dialog de confirmare pentru o acțiune este închis automat și acțiunea este anulată. Setați la 0 pentru a dezactiva timeout-ul.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- Pre nastavenia GUI --> | ||||
|   <string id="SettingsApiKey">API kľúč pre domáceho asistenta.</string> | ||||
|   <string id="SettingsApiKey">Kľúč API pre HomeAssistant.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Prístupový token s dlhou životnosťou.</string> | ||||
|   <string id="SettingsApiUrl">Adresa URL rozhrania Home Assistant API.</string> | ||||
|   <string id="SettingsApiUrl">URL pre HomeAssistant API.</string> | ||||
|   <string id="SettingsConfigUrl">Webová adresa pre konfiguráciu ponuky (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Časový limit v sekundách. Po tejto dobe nečinnosti ukončite aplikáciu, aby ste šetrili batériu zariadenia.</string> | ||||
|   <string id="SettingsConfirmTimeout">Po tomto čase (v sekundách) sa dialógové okno s potvrdením akcie automaticky zatvorí a akcia sa zruší. Ak chcete časový limit deaktivovať, nastavte na 0.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- Za nastavitve GUI --> | ||||
|   <string id="SettingsApiKey">API ključ za domačega pomočnika.</string> | ||||
|   <string id="SettingsApiKey">API ključ za HomeAssistant.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Dolgoživ dostopni žeton.</string> | ||||
|   <string id="SettingsApiUrl">URL za API za domačega pomočnika.</string> | ||||
|   <string id="SettingsApiUrl">URL za HomeAssistant API.</string> | ||||
|   <string id="SettingsConfigUrl">URL za konfiguracijo menija (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Časovna omejitev v sekundah. Po tem obdobju nedejavnosti zaprite aplikacijo, da prihranite baterijo naprave.</string> | ||||
|   <string id="SettingsConfirmTimeout">Po tem času (v sekundah) se potrditveno pogovorno okno za dejanje samodejno zapre in dejanje je preklicano. Nastavite na 0, da onemogočite časovno omejitev.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- Para la configuración GUI --> | ||||
|   <string id="SettingsApiKey">Clave API para Home Assistant.</string> | ||||
|   <string id="SettingsApiKey">Clave API para HomeAssistant.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Token de acceso de larga duración.</string> | ||||
|   <string id="SettingsApiUrl">URL para la API de Home Assistant.</string> | ||||
|   <string id="SettingsApiUrl">URL para la API de HomeAssistant.</string> | ||||
|   <string id="SettingsConfigUrl">URL para configuración del menú (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Tiempo de espera en segundos. Salga de la aplicación después de este período de inactividad para ahorrar batería del dispositivo.</string> | ||||
|   <string id="SettingsConfirmTimeout">Después de este tiempo (en segundos), se cierra automáticamente un cuadro de diálogo de confirmación de una acción y se cancela la acción. Establezca en 0 para desactivar el tiempo de espera.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -19,7 +19,7 @@ | ||||
| --> | ||||
|  | ||||
| <strings> | ||||
|   <string id="AppName">HomeAssistant</string> | ||||
|   <string id="AppName" scope="glance">HomeAssistant</string> | ||||
|   <string id="MenuItemOn">På</string> | ||||
|   <string id="MenuItemOff">Av</string> | ||||
|   <string id="MenuItemTap">Knacka</string> | ||||
| @@ -37,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- För inställningar GUI --> | ||||
|   <string id="SettingsApiKey">API-nyckel för Home Assistant.</string> | ||||
|   <string id="SettingsApiKey">API-nyckel för HomeAssistant.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Långlivad åtkomsttoken.</string> | ||||
|   <string id="SettingsApiUrl">URL för Home Assistant API.</string> | ||||
|   <string id="SettingsApiUrl">URL för HomeAssistant API.</string> | ||||
|   <string id="SettingsConfigUrl">URL för menykonfiguration (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Timeout på sekunder. Avsluta programmet efter denna period av inaktivitet för att spara enhetens batteri.</string> | ||||
|   <string id="SettingsConfirmTimeout">Efter denna tid (i sekunder) stängs en bekräftelsedialog för en åtgärd automatiskt och åtgärden avbryts. Ställ in på 0 för att inaktivera timeout.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- สำหรับการตั้งค่า GUI --> | ||||
|   <string id="SettingsApiKey">รหัส API สำหรับผู้ช่วยที่บ้าน</string> | ||||
|   <string id="SettingsApiKey">คีย์ API สำหรับ HomeAssistant</string> | ||||
|   <string id="SettingsApiKeyPrompt">โทเค็นการเข้าถึงที่มีอายุการใช้งานยาวนาน</string> | ||||
|   <string id="SettingsApiUrl">URL สำหรับ Home Assistant API</string> | ||||
|   <string id="SettingsApiUrl">URL สำหรับ HomeAssistant API</string> | ||||
|   <string id="SettingsConfigUrl">URL สำหรับการกำหนดค่าเมนู (JSON)</string> | ||||
|   <string id="SettingsAppTimeout">หมดเวลาเป็นวินาที ออกจากแอปพลิเคชันหลังจากไม่มีการใช้งานเป็นระยะเวลาหนึ่งเพื่อประหยัดแบตเตอรี่ของอุปกรณ์</string> | ||||
|   <string id="SettingsConfirmTimeout">หลังจากเวลานี้ (เป็นวินาที) กล่องโต้ตอบการยืนยันสำหรับการดำเนินการจะปิดโดยอัตโนมัติและการดำเนินการจะถูกยกเลิก ตั้งค่าเป็น 0 เพื่อปิดใช้งานการหมดเวลา</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -19,7 +19,7 @@ | ||||
| --> | ||||
|  | ||||
| <strings> | ||||
|   <string id="AppName">HomeAssistant</string> | ||||
|   <string id="AppName" scope="glance">HomeAssistant</string> | ||||
|   <string id="MenuItemOn">Açık</string> | ||||
|   <string id="MenuItemOff">Kapalı</string> | ||||
|   <string id="MenuItemTap">Musluk</string> | ||||
| @@ -37,10 +37,13 @@ | ||||
|   <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="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> | ||||
|   <!-- Ayarlar GUI'si için --> | ||||
|   <string id="SettingsApiKey">Ev Asistanı için API Anahtarı.</string> | ||||
|   <string id="SettingsApiKey">HomeAssistant için API Anahtarı.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Uzun Ömürlü Erişim Jetonu.</string> | ||||
|   <string id="SettingsApiUrl">Ev Asistanı API'sinin URL'si.</string> | ||||
|   <string id="SettingsApiUrl">HomeAssistant API'sinin URL'si.</string> | ||||
|   <string id="SettingsConfigUrl">Menü yapılandırmasının URL'si (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Saniye cinsinden zaman aşımı. Cihazın pilinden tasarruf etmek için bu süre boyunca işlem yapılmadığında uygulamadan çıkın.</string> | ||||
|   <string id="SettingsConfirmTimeout">Bu sürenin sonunda (saniye olarak), bir eyleme ilişkin onay iletişim kutusu otomatik olarak kapatılır ve eylem iptal edilir. Zaman aşımını devre dışı bırakmak için 0'a ayarlayın.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- Для налаштування GUI --> | ||||
|   <string id="SettingsApiKey">Ключ API для домашнього помічника.</string> | ||||
|   <string id="SettingsApiKey">Ключ API для HomeAssistant.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Довговічний маркер доступу.</string> | ||||
|   <string id="SettingsApiUrl">URL для Home Assistant API.</string> | ||||
|   <string id="SettingsApiUrl">URL для HomeAssistant API.</string> | ||||
|   <string id="SettingsConfigUrl">URL-адреса для налаштування меню (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Час очікування в секундах. Вийдіть із програми після цього періоду бездіяльності, щоб заощадити батарею пристрою.</string> | ||||
|   <string id="SettingsConfirmTimeout">Після закінчення цього часу (у секундах) діалогове вікно підтвердження дії автоматично закривається, а дія скасовується. Встановіть 0, щоб вимкнути тайм-аут.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- Đối với GUI cài đặt --> | ||||
|   <string id="SettingsApiKey">Khóa API cho Trợ lý tại nhà.</string> | ||||
|   <string id="SettingsApiKey">Khóa API cho HomeAssistant.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Mã thông báo truy cập tồn tại lâu dài.</string> | ||||
|   <string id="SettingsApiUrl">URL cho API Trợ lý gia đình.</string> | ||||
|   <string id="SettingsApiUrl">URL cho API HomeAssistant.</string> | ||||
|   <string id="SettingsConfigUrl">URL cho cấu hình menu (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Thời gian chờ tính bằng giây. Thoát khỏi ứng dụng sau khoảng thời gian không hoạt động này để tiết kiệm pin cho thiết bị.</string> | ||||
|   <string id="SettingsConfirmTimeout">Sau thời gian này (tính bằng giây), hộp thoại xác nhận cho một hành động sẽ tự động đóng và hành động đó sẽ bị hủy. Đặt thành 0 để tắt thời gian chờ.</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- 对于设置 GUI --> | ||||
|   <string id="SettingsApiKey">家庭助理的 API 密钥。</string> | ||||
|   <string id="SettingsApiKey">HomeAssistant 的 API 密钥。</string> | ||||
|   <string id="SettingsApiKeyPrompt">长期访问令牌。</string> | ||||
|   <string id="SettingsApiUrl">Home Assistant API 的 URL。</string> | ||||
|   <string id="SettingsApiUrl">HomeAssistant API 的 URL。</string> | ||||
|   <string id="SettingsConfigUrl">菜单配置的 URL (JSON)。</string> | ||||
|   <string id="SettingsAppTimeout">超时(以秒为单位)。闲置一段时间后退出应用程序以节省设备电池。</string> | ||||
|   <string id="SettingsConfirmTimeout">在此时间(以秒为单位)之后,操作的确认对话框将自动关闭并取消该操作。设置为 0 以禁用超时。</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- 對於設定 GUI --> | ||||
|   <string id="SettingsApiKey">家庭助理的 API 金鑰。</string> | ||||
|   <string id="SettingsApiKey">HomeAssistant 的 API 金鑰。</string> | ||||
|   <string id="SettingsApiKeyPrompt">長期訪問令牌。</string> | ||||
|   <string id="SettingsApiUrl">Home Assistant API 的 URL。</string> | ||||
|   <string id="SettingsApiUrl">HomeAssistant API 的 URL。</string> | ||||
|   <string id="SettingsConfigUrl">選單配置的 URL (JSON)。</string> | ||||
|   <string id="SettingsAppTimeout">超時(以秒為單位)。閒置一段時間後退出應用程式以節省設備電池。</string> | ||||
|   <string id="SettingsConfirmTimeout">在此時間(以秒為單位)之後,操作的確認對話方塊將自動關閉並取消該操作。設定為 0 以停用逾時。</string> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| @@ -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,10 +37,13 @@ | ||||
|   <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> | ||||
|   <!-- Untuk GUI tetapan --> | ||||
|   <string id="SettingsApiKey">Kunci API untuk Pembantu Rumah.</string> | ||||
|   <string id="SettingsApiKey">Kunci API untuk HomeAssistant.</string> | ||||
|   <string id="SettingsApiKeyPrompt">Token Akses Berumur Panjang.</string> | ||||
|   <string id="SettingsApiUrl">URL untuk API Pembantu Rumah.</string> | ||||
|   <string id="SettingsApiUrl">URL untuk API HomeAssistant.</string> | ||||
|   <string id="SettingsConfigUrl">URL untuk konfigurasi menu (JSON).</string> | ||||
|   <string id="SettingsAppTimeout">Tamat masa dalam beberapa saat. Keluar dari aplikasi selepas tempoh tidak aktif ini untuk menjimatkan bateri peranti.</string> | ||||
|   <string id="SettingsConfirmTimeout">Selepas masa ini (dalam beberapa saat), dialog pengesahan untuk tindakan ditutup secara automatik dan tindakan itu dibatalkan. Tetapkan kepada 0 untuk melumpuhkan tamat masa.</string> | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
|   | ||||
| @@ -8,12 +8,12 @@ | ||||
|    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, 31 October 2023 | ||||
|    P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| <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,6 +31,9 @@ | ||||
|     <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> | ||||
|  | ||||
|     <!-- For the settings GUI --> | ||||
|     <string id="SettingsApiKey">API Key for HomeAssistant.</string> | ||||
| @@ -41,5 +44,4 @@ | ||||
|     <string id="SettingsConfirmTimeout">After this time (in seconds), a confirmation dialog for an action is automatically closed and the action is cancelled. Set to 0 to disable the timeout.</string> | ||||
|     <string id="SettingsUi">Representing types with icons (off) or with labels (on).</string> | ||||
|     <string id="SettingsTextAlign">Left (off) or Right (on) Menu Alignment.</string> | ||||
|  | ||||
| </strings> | ||||
|   | ||||
| @@ -18,6 +18,15 @@ | ||||
| // should not happen of course... but they do, so best make sure errors can be | ||||
| // reported. | ||||
| // | ||||
| // Designed so that a single ErrorView is used for all errors and hence can ensure | ||||
| // that only the first call to display is honoured until the view is dismissed. | ||||
| // This compensates for older devices not being able to call WatchUi.getCurrentView() | ||||
| // due to not supporting API level 3.4.0. | ||||
| // | ||||
| // Usage: | ||||
| //   1) ErrorView.show("Error message"); | ||||
| //   2) return ErrorView.create("Error message"); // as Lang.Array<WatchUi.Views or WatchUi.InputDelegates> | ||||
| // | ||||
| //----------------------------------------------------------------------------------- | ||||
|  | ||||
| using Toybox.Graphics; | ||||
| @@ -26,18 +35,22 @@ using Toybox.WatchUi; | ||||
| using Toybox.Communications; | ||||
|  | ||||
| class ErrorView extends ScalableView { | ||||
|     private const cSettings as Lang.Dictionary = { | ||||
|     private var mText            as Lang.String = ""; | ||||
|     private var mDelegate        as ErrorDelegate; | ||||
|     private const cSettings      as Lang.Dictionary = { | ||||
|         :errorIconMargin => 7f | ||||
|     }; | ||||
|     // Vertical spacing between the top of the face and the error icon | ||||
|     private var mErrorIconMargin; | ||||
|     private var mText as Lang.String; | ||||
|     private var mErrorIconMargin as Lang.Number; | ||||
|     private var mErrorIcon; | ||||
|     private var mTextArea; | ||||
|  | ||||
|     function initialize(text as Lang.String) { | ||||
|     private static var instance; | ||||
|     private static var mShown as Lang.Boolean = false; | ||||
|  | ||||
|     function initialize() { | ||||
|         ScalableView.initialize(); | ||||
|         mText = text; | ||||
|         mDelegate = new ErrorDelegate(self); | ||||
|         // Convert the settings from % of screen size to pixels | ||||
|         mErrorIconMargin = pixelsForScreen(cSettings.get(:errorIconMargin) as Lang.Float); | ||||
|     } | ||||
| @@ -65,25 +78,66 @@ 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); | ||||
|     } | ||||
|  | ||||
|     function getDelegate() as ErrorDelegate { | ||||
|         return mDelegate; | ||||
|     } | ||||
|  | ||||
|     static function create(text as Lang.String) as Lang.Array<ErrorView or ErrorDelegate> { | ||||
|         if (instance == null) { | ||||
|             instance = new ErrorView(); | ||||
|         } | ||||
|         if (!mShown) { | ||||
|             instance.setText(text); | ||||
|         } | ||||
|         return [instance, instance.getDelegate()]; | ||||
|     } | ||||
|  | ||||
|     // Create or reuse an existing ErrorView, and pass on the text. | ||||
|     static function show(text as Lang.String) as Void { | ||||
|         create(text); // Ignore returned values | ||||
|         if (!mShown) { | ||||
|             WatchUi.pushView(instance, instance.getDelegate(), WatchUi.SLIDE_UP); | ||||
|             mShown = true; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     // Internal show now we're not a static method like 'show()'. | ||||
|     function setText(text as Lang.String) as Void { | ||||
|         mText = text; | ||||
|         if (mTextArea != null) { | ||||
|             mTextArea.setText(text); | ||||
|             requestUpdate(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     static function unShow() as Void { | ||||
|         if (mShown) { | ||||
|             mShown = false; | ||||
|             WatchUi.popView(WatchUi.SLIDE_DOWN); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| } | ||||
|  | ||||
| class ErrorDelegate extends WatchUi.BehaviorDelegate { | ||||
|     function initialize() { | ||||
|  | ||||
|     function initialize(view as ErrorView) { | ||||
|         WatchUi.BehaviorDelegate.initialize(); | ||||
|     } | ||||
|  | ||||
|     function onBack() { | ||||
|         getApp().getQuitTimer().reset(); | ||||
|         WatchUi.popView(WatchUi.SLIDE_DOWN); | ||||
|         ErrorView.unShow(); | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -9,7 +9,7 @@ | ||||
| // 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, 31 October 2023 | ||||
| // P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
| // | ||||
| // | ||||
| // Description: | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
| // 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, 31 October 2023 | ||||
| // P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
| // | ||||
| // | ||||
| // Description: | ||||
| @@ -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,56 +100,43 @@ 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) { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantApp getInitialView(): No API key in the application settings."); | ||||
|             } | ||||
|             return [new ErrorView(strNoApiKey + "."), new ErrorDelegate()] as Lang.Array<WatchUi.Views or WatchUi.InputDelegates>; | ||||
|             return ErrorView.create(strNoApiKey + "."); | ||||
|         } else if (api_url.length() == 0) { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantApp getInitialView(): No API URL in the application settings."); | ||||
|             } | ||||
|             return [new ErrorView(strNoApiUrl + "."), new ErrorDelegate()] as Lang.Array<WatchUi.Views or WatchUi.InputDelegates>; | ||||
|             return ErrorView.create(strNoApiUrl + "."); | ||||
|         } else if (api_url.substring(-1, api_url.length()).equals("/")) { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantApp getInitialView(): API URL must not have a trailing slash '/'."); | ||||
|             } | ||||
|             return [new ErrorView(strTrailingSlashErr + "."), new ErrorDelegate()] as Lang.Array<WatchUi.Views or WatchUi.InputDelegates>; | ||||
|             return ErrorView.create(strTrailingSlashErr + "."); | ||||
|         } else if ((Properties.getValue("config_url") as Lang.String).length() == 0) { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantApp getInitialView(): No configuration URL in the application settings."); | ||||
|             } | ||||
|             return [new ErrorView(strNoConfigUrl + "."), new ErrorDelegate()] as Lang.Array<WatchUi.Views or WatchUi.InputDelegates>; | ||||
|             return ErrorView.create(strNoConfigUrl + "."); | ||||
|         } else if (! System.getDeviceSettings().phoneConnected) { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantApp fetchMenuConfig(): No Phone connection, skipping API call."); | ||||
|             } | ||||
|             return [new ErrorView(strNoPhone + "."), new ErrorDelegate()] as Lang.Array<WatchUi.Views or WatchUi.InputDelegates>; | ||||
|             return ErrorView.create(strNoPhone + "."); | ||||
|         } else if (! System.getDeviceSettings().connectionAvailable) { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantApp fetchMenuConfig(): No Internet connection, skipping API call."); | ||||
|             } | ||||
|             return [new ErrorView(strNoInternet + "."), new ErrorDelegate()] as Lang.Array<WatchUi.Views or WatchUi.InputDelegates>; | ||||
|             return ErrorView.create(strNoInternet + "."); | ||||
|         } 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>; | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -117,28 +151,27 @@ class HomeAssistantApp extends Application.AppBase { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed."); | ||||
|             } | ||||
|             WatchUi.pushView(new ErrorView(strNoPhone + "."), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             ErrorView.show(strNoPhone + "."); | ||||
|         } else if (responseCode == Communications.BLE_QUEUE_FULL) { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: BLE_QUEUE_FULL, API calls too rapid."); | ||||
|             } | ||||
|             if (!(WatchUi.getCurrentView()[0] instanceof ErrorView)) { | ||||
|                 // Avoid pushing multiple ErrorViews | ||||
|                 WatchUi.pushView(new ErrorView(strApiFlood), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             } | ||||
|             // Don't need to worry about multiple ErrorViews here as the fetch does not happen a second time. | ||||
|             ErrorView.show(strApiFlood); | ||||
|         } else if (responseCode == Communications.NETWORK_REQUEST_TIMED_OUT) { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection."); | ||||
|             } | ||||
|             WatchUi.pushView(new ErrorView(strNoResponse), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             ErrorView.show(strNoResponse); | ||||
|         } else if (responseCode == 404) { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: 404, page not found. Check Configuration URL setting."); | ||||
|             } | ||||
|             WatchUi.pushView(new ErrorView(strConfigUrlNotFound), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             ErrorView.show(strConfigUrlNotFound); | ||||
|         } 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. | ||||
| @@ -149,12 +182,12 @@ class HomeAssistantApp extends Application.AppBase { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantApp onReturnFetchMenuConfig(): Network request timeout."); | ||||
|             } | ||||
|             WatchUi.pushView(new ErrorView(strNoMenu + ". " + strNoInternet + "?"), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             ErrorView.show(strNoMenu + ". " + strNoInternet + "?"); | ||||
|         } else { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantApp onReturnFetchMenuConfig(): Unhandled HTTP response code = " + responseCode); | ||||
|             } | ||||
|             WatchUi.pushView(new ErrorView(strUnhandledHttpErr + responseCode ), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             ErrorView.show(strUnhandledHttpErr + responseCode ); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -171,6 +204,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 +221,13 @@ class HomeAssistantApp extends Application.AppBase { | ||||
|     } | ||||
|  | ||||
|     function getQuitTimer() as QuitTimer{ | ||||
|         return quitTimer; | ||||
|         return mQuitTimer; | ||||
|     } | ||||
|  | ||||
|     (:glance) | ||||
|     function getGlanceView() { | ||||
|         return [new HomeAssistantGlanceView()]; | ||||
|     } | ||||
| } | ||||
|  | ||||
| function getApp() as HomeAssistantApp { | ||||
|   | ||||
| @@ -26,6 +26,7 @@ using Toybox.Timer; | ||||
| using Toybox.Application.Properties; | ||||
|  | ||||
| class HomeAssistantConfirmation extends WatchUi.Confirmation { | ||||
|  | ||||
|     function initialize() { | ||||
|         WatchUi.Confirmation.initialize(WatchUi.loadResource($.Rez.Strings.Confirm)); | ||||
|     } | ||||
| @@ -33,32 +34,32 @@ class HomeAssistantConfirmation extends WatchUi.Confirmation { | ||||
| } | ||||
|  | ||||
| class HomeAssistantConfirmationDelegate extends WatchUi.ConfirmationDelegate { | ||||
|     private var confirmMethod; | ||||
|     private var timeout; | ||||
|     private var mConfirmMethod; | ||||
|     private var mTimer; | ||||
|  | ||||
|     function initialize(callback as Method() as Void) { | ||||
|         WatchUi.ConfirmationDelegate.initialize(); | ||||
|         confirmMethod = callback; | ||||
|         mConfirmMethod = callback; | ||||
|         var timeoutSeconds = Properties.getValue("confirm_timeout") as Lang.Number;  | ||||
|         if (timeoutSeconds > 0) { | ||||
|             timeout = new Timer.Timer(); | ||||
|             timeout.start(method(:onTimeout), timeoutSeconds * 1000, true); | ||||
|             mTimer = new Timer.Timer(); | ||||
|             mTimer.start(method(:onTimeout), timeoutSeconds * 1000, true); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     function onResponse(response) as Lang.Boolean { | ||||
|         getApp().getQuitTimer().reset(); | ||||
|         if (timeout) { | ||||
|             timeout.stop(); | ||||
|         if (mTimer) { | ||||
|             mTimer.stop(); | ||||
|         } | ||||
|         if (response == WatchUi.CONFIRM_YES) { | ||||
|             confirmMethod.invoke(); | ||||
|             mConfirmMethod.invoke(); | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     function onTimeout() as Void { | ||||
|         timeout.stop(); | ||||
|         mTimer.stop(); | ||||
|         WatchUi.popView(WatchUi.SLIDE_RIGHT); | ||||
|     } | ||||
| } | ||||
|   | ||||
							
								
								
									
										42
									
								
								source/HomeAssistantGlanceView.mc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								source/HomeAssistantGlanceView.mc
									
									
									
									
									
										Normal 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); | ||||
|     } | ||||
| } | ||||
| @@ -9,7 +9,7 @@ | ||||
| // 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, 31 October 2023 | ||||
| // P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
| // | ||||
| // | ||||
| // Description: | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
| // 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, 31 October 2023 | ||||
| // P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
| // | ||||
| // | ||||
| // Description: | ||||
|   | ||||
| @@ -54,25 +54,23 @@ class HomeAssistantService { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantService onReturnCall() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed."); | ||||
|             } | ||||
|             WatchUi.pushView(new ErrorView(strNoPhone + "."), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             ErrorView.show(strNoPhone + "."); | ||||
|         } else if (responseCode == Communications.BLE_QUEUE_FULL) { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantService onReturnCall() Response Code: BLE_QUEUE_FULL, API calls too rapid."); | ||||
|             } | ||||
|             if (!(WatchUi.getCurrentView()[0] instanceof ErrorView)) { | ||||
|                 // Avoid pushing multiple ErrorViews | ||||
|                 WatchUi.pushView(new ErrorView(strApiFlood), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             } | ||||
|             // Don't need to worry about multiple ErrorViews here as the call is not on a repeat timer. | ||||
|             ErrorView.show(strApiFlood); | ||||
|         } else if (responseCode == Communications.NETWORK_REQUEST_TIMED_OUT) { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantService onReturnCall() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection."); | ||||
|             } | ||||
|             WatchUi.pushView(new ErrorView(strNoResponse), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             ErrorView.show(strNoResponse); | ||||
|         } else if (responseCode == 404) { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantService onReturnCall() Response Code: 404, page not found. Check API URL setting."); | ||||
|             } | ||||
|             WatchUi.pushView(new ErrorView(strApiUrlNotFound), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             ErrorView.show(strApiUrlNotFound); | ||||
|         } else if (responseCode == 200) { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantService onReturnCall(): Service executed."); | ||||
| @@ -99,7 +97,7 @@ class HomeAssistantService { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantService onReturnCall(): Unhandled HTTP response code = " + responseCode); | ||||
|             } | ||||
|             WatchUi.pushView(new ErrorView(strUnhandledHttpErr + responseCode ), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             ErrorView.show(strUnhandledHttpErr + responseCode ); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -117,14 +115,15 @@ class HomeAssistantService { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantService call(): No Phone connection, skipping API call."); | ||||
|             } | ||||
|             WatchUi.pushView(new ErrorView(strNoPhone + "."), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             ErrorView.show(strNoPhone + "."); | ||||
|         } else if (! System.getDeviceSettings().connectionAvailable) { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantService call(): No Internet connection, skipping API call."); | ||||
|             } | ||||
|             WatchUi.pushView(new ErrorView(strNoInternet + "."), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             ErrorView.show(strNoInternet + "."); | ||||
|         } else { | ||||
|             var url = (Properties.getValue("api_url") as Lang.String) + "/services/" + service.substring(0, service.find(".")) + "/" + service.substring(service.find(".")+1, null); | ||||
|             // Can't use null for substring() parameters due to API version level. | ||||
|             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); | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
| // 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, 31 October 2023 | ||||
| // P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
| // | ||||
| // | ||||
| // Description: | ||||
| @@ -77,56 +77,68 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { | ||||
|         } | ||||
|         // Provide the ability to terminate updating chain of calls for a permanent network error. | ||||
|         var keepUpdating = true; | ||||
|         if (responseCode == Communications.BLE_HOST_TIMEOUT || responseCode == Communications.BLE_CONNECTION_UNAVAILABLE) { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed."); | ||||
|             } | ||||
|             if (!(WatchUi.getCurrentView()[0] instanceof ErrorView)) { | ||||
|                 // Avoid pushing multiple ErrorViews | ||||
|                 WatchUi.pushView(new ErrorView(strNoPhone + "."), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             } | ||||
|         } else if (responseCode == Communications.BLE_QUEUE_FULL) { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: BLE_QUEUE_FULL, API calls too rapid."); | ||||
|             } | ||||
|             if (!(WatchUi.getCurrentView()[0] instanceof ErrorView)) { | ||||
|                 // Avoid pushing multiple ErrorViews | ||||
|                 WatchUi.pushView(new ErrorView(strApiFlood), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             } | ||||
|         } else if (responseCode == Communications.NETWORK_REQUEST_TIMED_OUT) { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection."); | ||||
|             } | ||||
|             if (!(WatchUi.getCurrentView()[0] instanceof ErrorView)) { | ||||
|                 // Avoid pushing multiple ErrorViews | ||||
|                 WatchUi.pushView(new ErrorView(strNoResponse), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             } | ||||
|         } else if (responseCode == 404) { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: 404, page not found. Check API URL setting."); | ||||
|             } | ||||
|             if (!(WatchUi.getCurrentView()[0] instanceof ErrorView)) { | ||||
|                 // Avoid pushing multiple ErrorViews | ||||
|                 WatchUi.pushView(new ErrorView(strApiUrlNotFound), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             } | ||||
|             keepUpdating = false; | ||||
|         } else if (responseCode == 200) { | ||||
|             var state = data.get("state") as Lang.String; | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println((data.get("attributes") as Lang.Dictionary).get("friendly_name") + " State=" + state); | ||||
|             } | ||||
|             if (getLabel().equals("...")) { | ||||
|                 setLabel((data.get("attributes") as Lang.Dictionary).get("friendly_name") as Lang.String); | ||||
|             } | ||||
|             setUiToggle(state); | ||||
|         } else { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantToggleMenuItem onReturnGetState(): Unhandled HTTP response code = " + responseCode); | ||||
|             } | ||||
|             if (!(WatchUi.getCurrentView()[0] instanceof ErrorView)) { | ||||
|                 // Avoid pushing multiple ErrorViews | ||||
|                 WatchUi.pushView(new ErrorView(strUnhandledHttpErr + responseCode ), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             } | ||||
|         switch (responseCode) { | ||||
|             case Communications.BLE_HOST_TIMEOUT: | ||||
|             case Communications.BLE_CONNECTION_UNAVAILABLE: | ||||
|                 if (Globals.scDebug) { | ||||
|                     System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed."); | ||||
|                 } | ||||
|                 ErrorView.show(strNoPhone + "."); | ||||
|                 break; | ||||
|             case Communications.BLE_QUEUE_FULL: | ||||
|                 if (Globals.scDebug) { | ||||
|                     System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: BLE_QUEUE_FULL, API calls too rapid."); | ||||
|                 } | ||||
|                 ErrorView.show(strApiFlood); | ||||
|                 break; | ||||
|             case Communications.NETWORK_REQUEST_TIMED_OUT: | ||||
|                 if (Globals.scDebug) { | ||||
|                     System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection."); | ||||
|                 } | ||||
|                 ErrorView.show(strNoResponse); | ||||
|                 break; | ||||
|             case 404: | ||||
|                 var msg = null; | ||||
|                 if (data != null) { | ||||
|                     msg = data.get("message"); | ||||
|                 } | ||||
|                 if (msg != null) { | ||||
|                     // Should be an HTTP 405 according to curl queries | ||||
|                     if (Globals.scDebug) { | ||||
|                         System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: 404. " + mIdentifier + " " + msg); | ||||
|                     } | ||||
|                     ErrorView.show("HTTP 405, " + mIdentifier + ". " + data.get("message")); | ||||
|                 } else { | ||||
|                     if (Globals.scDebug) { | ||||
|                         System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: 404, page not found. Check API URL setting."); | ||||
|                     } | ||||
|                     ErrorView.show(strApiUrlNotFound); | ||||
|                 } | ||||
|                 keepUpdating = false; | ||||
|                 break; | ||||
|             case 405: | ||||
|                 if (Globals.scDebug) { | ||||
|                     System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: 405. " + mIdentifier + " " + data.get("message")); | ||||
|                 } | ||||
|                 ErrorView.show("HTTP 405, " + mIdentifier + ". " + data.get("message")); | ||||
|                 keepUpdating = false; | ||||
|                 break; | ||||
|             case 200: | ||||
|                 var state = data.get("state") as Lang.String; | ||||
|                 if (Globals.scDebug) { | ||||
|                     System.println((data.get("attributes") as Lang.Dictionary).get("friendly_name") + " State=" + state); | ||||
|                 } | ||||
|                 if (getLabel().equals("...")) { | ||||
|                     setLabel((data.get("attributes") as Lang.Dictionary).get("friendly_name") as Lang.String); | ||||
|                 } | ||||
|                 setUiToggle(state); | ||||
|                 ErrorView.unShow(); | ||||
|                 break; | ||||
|             default: | ||||
|                 if (Globals.scDebug) { | ||||
|                     System.println("HomeAssistantToggleMenuItem onReturnGetState(): Unhandled HTTP response code = " + responseCode); | ||||
|                 } | ||||
|                 ErrorView.show(strUnhandledHttpErr + responseCode); | ||||
|         } | ||||
|         if (keepUpdating) { | ||||
|             // Now this feels very "closely coupled" to the application, but it is the most reliable method instead of using a timer. | ||||
| @@ -147,18 +159,12 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call."); | ||||
|             } | ||||
|             if (!(WatchUi.getCurrentView()[0] instanceof ErrorView)) { | ||||
|                 // Avoid pushing multiple ErrorViews | ||||
|                 WatchUi.pushView(new ErrorView(strNoPhone + "."), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             } | ||||
|             ErrorView.show(strNoPhone + "."); | ||||
|         } else if (! System.getDeviceSettings().connectionAvailable) { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call."); | ||||
|             } | ||||
|             if (!(WatchUi.getCurrentView()[0] instanceof ErrorView)) { | ||||
|                 // Avoid pushing multiple ErrorViews | ||||
|                 WatchUi.pushView(new ErrorView(strNoInternet + "."), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             } | ||||
|             ErrorView.show(strNoInternet + "."); | ||||
|         } else { | ||||
|             var url = Properties.getValue("api_url") + "/states/" + mIdentifier; | ||||
|             if (Globals.scDebug) { | ||||
| @@ -180,7 +186,9 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { | ||||
|             var myTimer = new Timer.Timer(); | ||||
|             // Now this feels very "closely coupled" to the application, but it is the most reliable method instead of using a timer. | ||||
|             myTimer.start(getApp().method(:updateNextMenuItem), 500, false); | ||||
|             System.println("HomeAssistantToggleMenuItem getState(): Updated failed " + mIdentifier); | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantToggleMenuItem getState(): Updated failed " + mIdentifier); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -195,22 +203,22 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed."); | ||||
|             } | ||||
|             WatchUi.pushView(new ErrorView(strNoPhone + "."), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             ErrorView.show(strNoPhone + "."); | ||||
|         } else if (responseCode == Communications.BLE_QUEUE_FULL) { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: BLE_QUEUE_FULL, API calls too rapid."); | ||||
|             } | ||||
|             WatchUi.pushView(new ErrorView(strApiFlood), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             ErrorView.show(strApiFlood); | ||||
|         } else if (responseCode == Communications.NETWORK_REQUEST_TIMED_OUT) { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection."); | ||||
|             } | ||||
|             WatchUi.pushView(new ErrorView(strNoResponse), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             ErrorView.show(strNoResponse); | ||||
|         } else if (responseCode == 404) { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: 404, page not found. Check API URL setting."); | ||||
|             } | ||||
|             WatchUi.pushView(new ErrorView(strApiUrlNotFound), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             ErrorView.show(strApiUrlNotFound); | ||||
|         } else if (responseCode == 200) { | ||||
|             var state; | ||||
|             var d = data as Lang.Array; | ||||
| @@ -227,7 +235,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantToggleMenuItem onReturnSetState(): Unhandled HTTP response code = " + responseCode); | ||||
|             } | ||||
|             WatchUi.pushView(new ErrorView(strUnhandledHttpErr + responseCode ), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             ErrorView.show(strUnhandledHttpErr + responseCode ); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -246,14 +254,14 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { | ||||
|             } | ||||
|             // Toggle the UI back | ||||
|             setEnabled(!isEnabled()); | ||||
|             WatchUi.pushView(new ErrorView(strNoPhone + "."), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             ErrorView.show(strNoPhone + "."); | ||||
|         } else if (! System.getDeviceSettings().connectionAvailable) { | ||||
|             if (Globals.scDebug) { | ||||
|                 System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call."); | ||||
|             } | ||||
|             // Toggle the UI back | ||||
|             setEnabled(!isEnabled()); | ||||
|             WatchUi.pushView(new ErrorView(strNoInternet + "."), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|             ErrorView.show(strNoInternet + "."); | ||||
|         } else { | ||||
|             // Updated SDK and got a new error | ||||
|             // ERROR: venu: Cannot find symbol ':substring' on type 'PolyType<Null or $.Toybox.Lang.Object>'. | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
| // 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, 31 October 2023 | ||||
| // P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
| // | ||||
| // | ||||
| // Description: | ||||
| @@ -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()); | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
| // 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, 31 October 2023 | ||||
| // P A Abbey & J D Abbey & SomeoneOnEarth, 31 October 2023 | ||||
| // | ||||
| // | ||||
| // Description: | ||||
|   | ||||
							
								
								
									
										129
									
								
								source/RootView.mc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										129
									
								
								source/RootView.mc
									
									
									
									
									
										Normal 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; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user