mirror of
https://github.com/house-of-abbey/GarminHomeAssistant.git
synced 2025-07-31 08:58:31 +00:00
Finishing off widget+app code changes.
Glance now updates the status. Fix for quitting the application when persistently displaying an ErrorView. Added option for Widget RootView to immediately start HomeAssistant without waiting for a tap as requested by a user.
This commit is contained in:
@ -40,6 +40,7 @@
|
||||
<string id="Available" scope="glance">متاح</string>
|
||||
<string id="Checking" scope="glance">تدقيق...</string>
|
||||
<string id="Unavailable" scope="glance">غير متوفره</string>
|
||||
<string id="Unconfigured" scope="glance">غير مهيأ</string>
|
||||
<string id="GlanceMenu" scope="glance">قائمة طعام</string>
|
||||
<!-- لإعدادات واجهة المستخدم الرسومية -->
|
||||
<string id="SettingsApiKey">مفتاح API لـ HomeAssistant.</string>
|
||||
@ -50,4 +51,5 @@
|
||||
<string id="SettingsConfirmTimeout">بعد هذا الوقت (بالثواني)، يتم إغلاق مربع حوار تأكيد الإجراء تلقائيًا ويتم إلغاء الإجراء. اضبط على 0 لتعطيل المهلة.</string>
|
||||
<string id="SettingsUi">تمثيل الأنواع بأيقونات (إيقاف) أو بالتسميات (تشغيل).</string>
|
||||
<string id="SettingsTextAlign">محاذاة القائمة لليسار (إيقاف) أو لليمين (تشغيل).</string>
|
||||
<string id="SettingsWidgetStart">(القطعة فقط) قم بتشغيل التطبيق تلقائيًا من الأداة دون انتظار نقرة واحدة.</string>
|
||||
</strings>
|
@ -40,6 +40,7 @@
|
||||
<string id="Available" scope="glance">На разположение</string>
|
||||
<string id="Checking" scope="glance">Проверка...</string>
|
||||
<string id="Unavailable" scope="glance">Недостъпен</string>
|
||||
<string id="Unconfigured" scope="glance">Неконфигуриран</string>
|
||||
<string id="GlanceMenu" scope="glance">Меню</string>
|
||||
<!-- За GUI за настройки -->
|
||||
<string id="SettingsApiKey">API ключ за HomeAssistant.</string>
|
||||
@ -50,4 +51,5 @@
|
||||
<string id="SettingsConfirmTimeout">След това време (в секунди) диалоговият прозорец за потвърждение за действие се затваря автоматично и действието се отменя. Задайте 0, за да деактивирате изчакването.</string>
|
||||
<string id="SettingsUi">Представяне на типове с икони (изключено) или с етикети (включено).</string>
|
||||
<string id="SettingsTextAlign">Ляво (изключено) или дясно (включено) подравняване на менюто.</string>
|
||||
<string id="SettingsWidgetStart">(Само за джаджа) Автоматично стартирайте приложението от джаджата, без да чакате докосване.</string>
|
||||
</strings>
|
@ -40,6 +40,7 @@
|
||||
<string id="Available" scope="glance">Dostupný</string>
|
||||
<string id="Checking" scope="glance">Kontrola...</string>
|
||||
<string id="Unavailable" scope="glance">Není k dispozici</string>
|
||||
<string id="Unconfigured" scope="glance">Nenakonfigurováno</string>
|
||||
<string id="GlanceMenu" scope="glance">Jídelní lístek</string>
|
||||
<!-- Pro nastavení GUI -->
|
||||
<string id="SettingsApiKey">Klíč API pro HomeAssistant.</string>
|
||||
@ -50,4 +51,5 @@
|
||||
<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>
|
||||
<string id="SettingsUi">Znázornění typů pomocí ikon (vypnuto) nebo pomocí štítků (zapnuto).</string>
|
||||
<string id="SettingsTextAlign">Zarovnání nabídky vlevo (vypnuto) nebo vpravo (zapnuto).</string>
|
||||
<string id="SettingsWidgetStart">(Pouze widget) Automaticky spusťte aplikaci z widgetu bez čekání na klepnutí.</string>
|
||||
</strings>
|
@ -40,6 +40,7 @@
|
||||
<string id="Available" scope="glance">Ledig</string>
|
||||
<string id="Checking" scope="glance">Tjekker...</string>
|
||||
<string id="Unavailable" scope="glance">Ikke tilgængelig</string>
|
||||
<string id="Unconfigured" scope="glance">Ukonfigureret</string>
|
||||
<string id="GlanceMenu" scope="glance">Menu</string>
|
||||
<!-- Til indstillingerne GUI -->
|
||||
<string id="SettingsApiKey">API-nøgle til HomeAssistant.</string>
|
||||
@ -50,4 +51,5 @@
|
||||
<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>
|
||||
<string id="SettingsUi">Repræsenterer typer med ikoner (fra) eller med etiketter (til).</string>
|
||||
<string id="SettingsTextAlign">Venstre (fra) eller Højre (til) menujustering.</string>
|
||||
<string id="SettingsWidgetStart">(Kun widget) Start automatisk applikationen fra widgetten uden at vente på et tryk.</string>
|
||||
</strings>
|
@ -23,7 +23,7 @@
|
||||
<string id="MenuItemOn">An</string>
|
||||
<string id="MenuItemOff">Aus</string>
|
||||
<string id="MenuItemTap">Antippen</string>
|
||||
<string id="MenuItemMenu">Menü</string>
|
||||
<string id="MenuItemMenu">Menü</string>
|
||||
<string id="Confirm">Sicher?</string>
|
||||
<string id="NoPhone" scope="glance">Keine Telefonverbindung</string>
|
||||
<string id="NoInternet">Keine Internetverbindung</string>
|
||||
@ -35,11 +35,12 @@
|
||||
<string id="ApiUrlNotFound">URL nicht gefunden. Möglicher API-URL-Fehler in den Einstellungen.</string>
|
||||
<string id="ConfigUrlNotFound">URL nicht gefunden. Möglicher Konfigurations-URL-Fehler in den Einstellungen.</string>
|
||||
<string id="NoJson">Von der HTTP-Anfrage wurde kein JSON zurückgegeben.</string>
|
||||
<string id="UnhandledHttpErr">Die HTTP-Anfrage gab folgenden Fehlercode zurück = </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="Available" scope="glance">Verfügbar</string>
|
||||
<string id="Checking" scope="glance">Überprüfung...</string>
|
||||
<string id="Unavailable" scope="glance">Nicht verfügbar</string>
|
||||
<string id="Unconfigured" scope="glance">Unkonfiguriert</string>
|
||||
<string id="GlanceMenu" scope="glance">Speisekarte</string>
|
||||
<!-- Für die Einstellungs-GUI -->
|
||||
<string id="SettingsApiKey">API-Schlüssel für HomeAssistant.</string>
|
||||
@ -50,4 +51,5 @@
|
||||
<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>
|
||||
<string id="SettingsUi">Darstellen von Typen mit Symbolen (aus) oder mit Beschriftungen (ein).</string>
|
||||
<string id="SettingsTextAlign">Menüausrichtung links (aus) oder rechts (ein).</string>
|
||||
<string id="SettingsWidgetStart">(Nur Widget) Starten Sie die Anwendung automatisch über das Widget, ohne auf einen Tipp warten zu müssen.</string>
|
||||
</strings>
|
@ -40,8 +40,9 @@
|
||||
<string id="Available" scope="glance">Beschikbaar</string>
|
||||
<string id="Checking" scope="glance">Controleren...</string>
|
||||
<string id="Unavailable" scope="glance">Niet beschikbaar</string>
|
||||
<string id="Unconfigured" scope="glance">Niet geconfigureerd</string>
|
||||
<string id="GlanceMenu" scope="glance">Menu</string>
|
||||
<!-- Voor de instellingen GUI -->
|
||||
<!-- Voor de instellingen-GUI -->
|
||||
<string id="SettingsApiKey">API-sleutel voor HomeAssistant.</string>
|
||||
<string id="SettingsApiKeyPrompt">Toegangstoken met lange levensduur.</string>
|
||||
<string id="SettingsApiUrl">URL voor HomeAssistant API.</string>
|
||||
@ -50,4 +51,5 @@
|
||||
<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>
|
||||
<string id="SettingsUi">Typen weergeven met pictogrammen (uit) of met labels (aan).</string>
|
||||
<string id="SettingsTextAlign">Links (uit) of rechts (aan) Menu-uitlijning.</string>
|
||||
<string id="SettingsWidgetStart">(Alleen Widget) Start de applicatie automatisch vanuit de widget zonder te wachten op een tik.</string>
|
||||
</strings>
|
@ -31,7 +31,7 @@
|
||||
<string id="NoAPIKey" scope="glance">Rakenduse seadetes pole API-võtit</string>
|
||||
<string id="NoApiUrl" scope="glance">Rakenduse seadetes pole API URL-i</string>
|
||||
<string id="NoConfigUrl" scope="glance">Rakenduse seadetes pole konfiguratsiooni URL-i</string>
|
||||
<string id="ApiFlood">API-kõned liiga kiired. Palun aeglustage oma taotlusi.</string>
|
||||
<string id="ApiFlood">API-kutsed liiga kiired. Palun aeglustage taotluste esitamist.</string>
|
||||
<string id="ApiUrlNotFound">URL-i ei leitud. Võimalik API URL-i viga seadetes.</string>
|
||||
<string id="ConfigUrlNotFound">URL-i ei leitud. Võimalik konfiguratsiooni URL-i viga seadetes.</string>
|
||||
<string id="NoJson">HTTP päringust ei tagastatud ühtegi JSON-i.</string>
|
||||
@ -40,6 +40,7 @@
|
||||
<string id="Available" scope="glance">Saadaval</string>
|
||||
<string id="Checking" scope="glance">Kontrollimine...</string>
|
||||
<string id="Unavailable" scope="glance">Pole saadaval</string>
|
||||
<string id="Unconfigured" scope="glance">Konfigureerimata</string>
|
||||
<string id="GlanceMenu" scope="glance">Menüü</string>
|
||||
<!-- Seadete GUI jaoks -->
|
||||
<string id="SettingsApiKey">API-võti HomeAssistantile.</string>
|
||||
@ -48,6 +49,7 @@
|
||||
<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>
|
||||
<string id="SettingsUi">Tüüpide esindamine ikoonidega (väljas) või siltidega (sees).</string>
|
||||
<string id="SettingsUi">Tüüpide tähistamine ikoonidega (väljas) või siltidega (sees).</string>
|
||||
<string id="SettingsTextAlign">Vasak (väljas) või parem (sees) menüü joondamine.</string>
|
||||
<string id="SettingsWidgetStart">(Ainult vidin) Käivitage rakendus automaatselt vidinast ilma puudutust ootamata.</string>
|
||||
</strings>
|
@ -40,6 +40,7 @@
|
||||
<string id="Available" scope="glance">Saatavilla</string>
|
||||
<string id="Checking" scope="glance">Tarkistetaan...</string>
|
||||
<string id="Unavailable" scope="glance">Ei saatavilla</string>
|
||||
<string id="Unconfigured" scope="glance">Määrittämätön</string>
|
||||
<string id="GlanceMenu" scope="glance">Valikko</string>
|
||||
<!-- GUI-asetusten osalta -->
|
||||
<string id="SettingsApiKey">API-avain HomeAssistantille.</string>
|
||||
@ -47,7 +48,8 @@
|
||||
<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>
|
||||
<string id="SettingsConfirmTimeout">Tämän ajan kuluttua (sekunneissa) toiminnon vahvistusikkuna suljetaan automaattisesti ja toiminto peruutetaan. Aseta arvoksi 0, jos haluat poistaa aikakatkaisun käytöstä.</string>
|
||||
<string id="SettingsUi">Esittää tyyppejä kuvakkeilla (pois päältä) tai tarroilla (päällä).</string>
|
||||
<string id="SettingsTextAlign">Vasen (pois) tai oikea (päällä) valikon kohdistus.</string>
|
||||
<string id="SettingsWidgetStart">(Vain widget) Käynnistä sovellus automaattisesti widgetistä odottamatta napautusta.</string>
|
||||
</strings>
|
@ -20,7 +20,7 @@
|
||||
|
||||
<strings>
|
||||
<string id="AppName" scope="glance">HomeAssistant</string>
|
||||
<string id="MenuItemOn">Activé</string>
|
||||
<string id="MenuItemOn">Activé</string>
|
||||
<string id="MenuItemOff">Désactivé</string>
|
||||
<string id="MenuItemTap">Clic</string>
|
||||
<string id="MenuItemMenu">Menu</string>
|
||||
@ -31,7 +31,7 @@
|
||||
<string id="NoAPIKey" scope="glance">Pas de clé API dans les paramètres de l'application</string>
|
||||
<string id="NoApiUrl" scope="glance">Aucune URL API dans les paramètres de l'application</string>
|
||||
<string id="NoConfigUrl" scope="glance">Aucune URL de configuration dans les paramètres de l'application</string>
|
||||
<string id="ApiFlood">Appels API trop rapide. Veuillez signaler cette erreur avec les détails de l'appareil.</string>
|
||||
<string id="ApiFlood">Appels API trop rapide. Veuillez signaler cette erreur avec les détails de l'appareil.</string>
|
||||
<string id="ApiUrlNotFound">URL introuvable. Erreur potentielle d'URL d'API dans les paramètres.</string>
|
||||
<string id="ConfigUrlNotFound">URL introuvable. Erreur potentielle d'URL de configuration dans les paramètres.</string>
|
||||
<string id="NoJson">Aucun JSON renvoyé par la requête HTTP.</string>
|
||||
@ -40,14 +40,16 @@
|
||||
<string id="Available" scope="glance">Disponible</string>
|
||||
<string id="Checking" scope="glance">Vérification...</string>
|
||||
<string id="Unavailable" scope="glance">Indisponible</string>
|
||||
<string id="Unconfigured" scope="glance">Non configuré</string>
|
||||
<string id="GlanceMenu" scope="glance">Menu</string>
|
||||
<!-- Pour l'interface graphique des paramètres -->
|
||||
<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 HomeAssistant.</string>
|
||||
<string id="SettingsConfigUrl">URL de configuration des menus (JSON).</string>
|
||||
<string id="SettingsAppTimeout">Délai d'attente en secondes. Quittez l'application après cette période d'inactivité pour économiser la batterie de l'appareil.</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>
|
||||
<string id="SettingsUi">Représentation des types avec des icônes (off) ou avec des étiquettes (on).</string>
|
||||
<string id="SettingsTextAlign">Alignement du menu à gauche (désactivé) ou à droite (activé).</string>
|
||||
<string id="SettingsWidgetStart">(Widget uniquement) Démarrez automatiquement l'application à partir du widget sans attendre un clic.</string>
|
||||
</strings>
|
@ -29,17 +29,18 @@
|
||||
<string id="NoInternet">Δεν υπάρχει σύνδεση στο διαδίκτυο</string>
|
||||
<string id="NoResponse">Καμία απάντηση, ελέγξτε τη σύνδεση στο Διαδίκτυο</string>
|
||||
<string id="NoAPIKey" scope="glance">Δεν υπάρχει κλειδί API στις ρυθμίσεις της εφαρμογής</string>
|
||||
<string id="NoApiUrl" scope="glance">Δεν υπάρχει διεύθυνση URL API στις ρυθμίσεις της εφαρμογής</string>
|
||||
<string id="NoApiUrl" scope="glance">Δεν υπάρχει URL API στις ρυθμίσεις της εφαρμογής</string>
|
||||
<string id="NoConfigUrl" scope="glance">Δεν υπάρχει διεύθυνση URL διαμόρφωσης στις ρυθμίσεις της εφαρμογής</string>
|
||||
<string id="ApiFlood">Κλήσεις API πολύ γρήγορες. Παρακαλώ επιβραδύνετε τα αιτήματά σας.</string>
|
||||
<string id="ApiUrlNotFound">Η διεύθυνση URL δεν βρέθηκε. Πιθανό σφάλμα διεύθυνσης URL API στις ρυθμίσεις.</string>
|
||||
<string id="ConfigUrlNotFound">Η διεύθυνση URL δεν βρέθηκε. Πιθανό σφάλμα διεύθυνσης URL διαμόρφωσης στις ρυθμίσεις.</string>
|
||||
<string id="ConfigUrlNotFound">Η διεύθυνση URL δεν βρέθηκε. Πιθανό σφάλμα διαμόρφωσης URL στις ρυθμίσεις.</string>
|
||||
<string id="NoJson">Δεν επιστράφηκε JSON από αίτημα HTTP.</string>
|
||||
<string id="UnhandledHttpErr">Το αίτημα HTTP επέστρεψε κωδικό σφάλματος =</string>
|
||||
<string id="TrailingSlashErr">Η διεύθυνση URL του API δεν πρέπει να έχει τελική κάθετο "/"</string>
|
||||
<string id="Available" scope="glance">Διαθέσιμος</string>
|
||||
<string id="Checking" scope="glance">Ελεγχος...</string>
|
||||
<string id="Unavailable" scope="glance">Μη διαθέσιμο</string>
|
||||
<string id="Unconfigured" scope="glance">Μη διαμορφωμένο</string>
|
||||
<string id="GlanceMenu" scope="glance">Μενού</string>
|
||||
<!-- Για τις ρυθμίσεις GUI -->
|
||||
<string id="SettingsApiKey">Κλειδί API για το HomeAssistant.</string>
|
||||
@ -50,4 +51,5 @@
|
||||
<string id="SettingsConfirmTimeout">Μετά από αυτό το χρονικό διάστημα (σε δευτερόλεπτα), ένα παράθυρο διαλόγου επιβεβαίωσης για μια ενέργεια κλείνει αυτόματα και η ενέργεια ακυρώνεται. Ορίστε στο 0 για να απενεργοποιήσετε το χρονικό όριο.</string>
|
||||
<string id="SettingsUi">Αναπαράσταση τύπων με εικονίδια (απενεργοποίηση) ή με ετικέτες (ενεργό).</string>
|
||||
<string id="SettingsTextAlign">Αριστερά (απενεργοποίηση) ή Δεξιά (ενεργό) Ευθυγράμμιση μενού.</string>
|
||||
<string id="SettingsWidgetStart">(Μόνο widget) Αυτόματη εκκίνηση της εφαρμογής από το widget χωρίς να περιμένετε ένα πάτημα.</string>
|
||||
</strings>
|
@ -30,7 +30,7 @@
|
||||
<string id="NoResponse">אין תגובה, בדוק חיבור לאינטרנט</string>
|
||||
<string id="NoAPIKey" scope="glance">אין מפתח API בהגדרות האפליקציה</string>
|
||||
<string id="NoApiUrl" scope="glance">אין כתובת API בהגדרות האפליקציה</string>
|
||||
<string id="NoConfigUrl" scope="glance">אין כתובת אתר תצורה בהגדרות האפליקציה</string>
|
||||
<string id="NoConfigUrl" scope="glance">אין כתובת URL לתצורה בהגדרות האפליקציה</string>
|
||||
<string id="ApiFlood">קריאות API מהירות מדי. נא להאט את הבקשות שלך.</string>
|
||||
<string id="ApiUrlNotFound">כתובת האתר לא נמצאה. שגיאה פוטנציאלית של כתובת ה-API בהגדרות.</string>
|
||||
<string id="ConfigUrlNotFound">כתובת האתר לא נמצאה. שגיאת כתובת אתר פוטנציאלית של תצורה בהגדרות.</string>
|
||||
@ -40,6 +40,7 @@
|
||||
<string id="Available" scope="glance">זמין</string>
|
||||
<string id="Checking" scope="glance">בודק...</string>
|
||||
<string id="Unavailable" scope="glance">אינו זמין</string>
|
||||
<string id="Unconfigured" scope="glance">לא מוגדר</string>
|
||||
<string id="GlanceMenu" scope="glance">תַפרִיט</string>
|
||||
<!-- עבור ה-GUI של ההגדרות -->
|
||||
<string id="SettingsApiKey">מפתח API עבור HomeAssistant.</string>
|
||||
@ -47,7 +48,8 @@
|
||||
<string id="SettingsApiUrl">כתובת URL עבור HomeAssistant API.</string>
|
||||
<string id="SettingsConfigUrl">כתובת URL לתצורת תפריט (JSON).</string>
|
||||
<string id="SettingsAppTimeout">פסק זמן בשניות. צא מהאפליקציה לאחר תקופה זו של חוסר פעילות כדי לחסוך בסוללת המכשיר.</string>
|
||||
<string id="SettingsConfirmTimeout">לאחר זמן זה (בשניות), תיבת דו-שיח לאישור פעולה נסגרת אוטומטית והפעולה מבוטלת. הגדר ל-0 כדי להשבית את הזמן הקצוב.</string>
|
||||
<string id="SettingsConfirmTimeout">לאחר זמן זה (בשניות), תיבת דו-שיח לאישור פעולה נסגרת אוטומטית והפעולה מבוטלת. הגדר ל-0 כדי לבטל את הזמן הקצוב.</string>
|
||||
<string id="SettingsUi">ייצוג סוגים עם סמלים (כבוי) או עם תוויות (מופעל).</string>
|
||||
<string id="SettingsTextAlign">יישור תפריט שמאלה (כבוי) או ימינה (מופעל).</string>
|
||||
<string id="SettingsWidgetStart">(יישומון בלבד) הפעל אוטומטית את האפליקציה מהווידג'ט מבלי לחכות להקשה.</string>
|
||||
</strings>
|
@ -40,6 +40,7 @@
|
||||
<string id="Available" scope="glance">Dostupno</string>
|
||||
<string id="Checking" scope="glance">Provjera...</string>
|
||||
<string id="Unavailable" scope="glance">Nedostupan</string>
|
||||
<string id="Unconfigured" scope="glance">Nekonfigurirano</string>
|
||||
<string id="GlanceMenu" scope="glance">Jelovnik</string>
|
||||
<!-- Za GUI postavki -->
|
||||
<string id="SettingsApiKey">API ključ za HomeAssistant.</string>
|
||||
@ -50,4 +51,5 @@
|
||||
<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>
|
||||
<string id="SettingsUi">Predstavljanje tipova ikonama (isključeno) ili oznakama (uključeno).</string>
|
||||
<string id="SettingsTextAlign">Lijevo (isključeno) ili desno (uključeno) poravnanje izbornika.</string>
|
||||
<string id="SettingsWidgetStart">(Samo widget) Automatski pokrenite aplikaciju iz widgeta bez čekanja na dodir.</string>
|
||||
</strings>
|
@ -40,6 +40,7 @@
|
||||
<string id="Available" scope="glance">Elérhető</string>
|
||||
<string id="Checking" scope="glance">Ellenőrzés...</string>
|
||||
<string id="Unavailable" scope="glance">Nem érhető el</string>
|
||||
<string id="Unconfigured" scope="glance">Nincs konfigurálva</string>
|
||||
<string id="GlanceMenu" scope="glance">Menü</string>
|
||||
<!-- A beállítások GUI-hoz -->
|
||||
<string id="SettingsApiKey">API-kulcs a HomeAssistant számára.</string>
|
||||
@ -47,7 +48,8 @@
|
||||
<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ő elteltével (másodpercben) egy művelet megerősítő párbeszédpanele automatikusan bezárul, és a művelet megszakad. Állítsa 0-ra az időtúllépés letiltásához.</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>
|
||||
<string id="SettingsUi">A típusokat ikonokkal (kikapcsolva) vagy címkékkel (bekapcsolva) ábrázolja.</string>
|
||||
<string id="SettingsTextAlign">Balra (ki) vagy Jobbra (be) Menüigazítás.</string>
|
||||
<string id="SettingsWidgetStart">(Csak widget) Az alkalmazás automatikus indítása a widgetről anélkül, hogy egy érintésre várna.</string>
|
||||
</strings>
|
@ -30,7 +30,7 @@
|
||||
<string id="NoResponse">Tidak Ada Respon, periksa koneksi Internet</string>
|
||||
<string id="NoAPIKey" scope="glance">Tidak ada kunci API di pengaturan aplikasi</string>
|
||||
<string id="NoApiUrl" scope="glance">Tidak ada URL API di pengaturan aplikasi</string>
|
||||
<string id="NoConfigUrl" scope="glance">Tidak ada URL konfigurasi dalam pengaturan aplikasi</string>
|
||||
<string id="NoConfigUrl" scope="glance">Tidak ada URL konfigurasi di pengaturan aplikasi</string>
|
||||
<string id="ApiFlood">Panggilan API terlalu cepat. Harap memperlambat permintaan Anda.</string>
|
||||
<string id="ApiUrlNotFound">URL tidak ditemukan. Potensi kesalahan URL API dalam pengaturan.</string>
|
||||
<string id="ConfigUrlNotFound">URL tidak ditemukan. Potensi kesalahan URL Konfigurasi dalam pengaturan.</string>
|
||||
@ -40,6 +40,7 @@
|
||||
<string id="Available" scope="glance">Tersedia</string>
|
||||
<string id="Checking" scope="glance">Memeriksa...</string>
|
||||
<string id="Unavailable" scope="glance">Tidak tersedia</string>
|
||||
<string id="Unconfigured" scope="glance">Tidak dikonfigurasi</string>
|
||||
<string id="GlanceMenu" scope="glance">Menu</string>
|
||||
<!-- Untuk pengaturan GUI -->
|
||||
<string id="SettingsApiKey">Kunci API untuk HomeAssistant.</string>
|
||||
@ -50,4 +51,5 @@
|
||||
<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>
|
||||
<string id="SettingsUi">Mewakili tipe dengan ikon (mati) atau dengan label (aktif).</string>
|
||||
<string id="SettingsTextAlign">Penyelarasan Menu Kiri (mati) atau Kanan (hidup).</string>
|
||||
<string id="SettingsWidgetStart">(Khusus widget) Secara otomatis memulai aplikasi dari widget tanpa menunggu ketukan.</string>
|
||||
</strings>
|
@ -40,6 +40,7 @@
|
||||
<string id="Available" scope="glance">Disponibile</string>
|
||||
<string id="Checking" scope="glance">Controllo...</string>
|
||||
<string id="Unavailable" scope="glance">Non disponibile</string>
|
||||
<string id="Unconfigured" scope="glance">Non configurato</string>
|
||||
<string id="GlanceMenu" scope="glance">Menù</string>
|
||||
<!-- Per la GUI delle impostazioni -->
|
||||
<string id="SettingsApiKey">Chiave API per HomeAssistant.</string>
|
||||
@ -50,4 +51,5 @@
|
||||
<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>
|
||||
<string id="SettingsUi">Rappresentazione dei tipi con icone (disattivata) o con etichette (attivata).</string>
|
||||
<string id="SettingsTextAlign">Allineamento del menu a sinistra (spento) o a destra (acceso).</string>
|
||||
<string id="SettingsWidgetStart">(Solo widget) Avvia automaticamente l'applicazione dal widget senza attendere un tocco.</string>
|
||||
</strings>
|
@ -40,14 +40,16 @@
|
||||
<string id="Available" scope="glance">利用可能</string>
|
||||
<string id="Checking" scope="glance">チェック中...</string>
|
||||
<string id="Unavailable" scope="glance">利用不可</string>
|
||||
<string id="Unconfigured" scope="glance">未構成</string>
|
||||
<string id="GlanceMenu" scope="glance">メニュー</string>
|
||||
<!-- 設定GUIの場合 -->
|
||||
<string id="SettingsApiKey">ホームアシスタントの API キー。</string>
|
||||
<string id="SettingsApiKeyPrompt">有効期間の長いアクセス トークン。</string>
|
||||
<string id="SettingsApiKeyPrompt">有効期限の長いアクセス トークン。</string>
|
||||
<string id="SettingsApiUrl">ホームアシスタント API の URL。</string>
|
||||
<string id="SettingsConfigUrl">メニュー構成の URL (JSON)。</string>
|
||||
<string id="SettingsAppTimeout">秒単位のタイムアウト。デバイスのバッテリーを節約するために、この期間非アクティブになった後はアプリケーションを終了してください。</string>
|
||||
<string id="SettingsConfirmTimeout">この時間 (秒単位) が経過すると、アクションの確認ダイアログが自動的に閉じられ、アクションがキャンセルされます。タイムアウトを無効にするには、0 に設定します。</string>
|
||||
<string id="SettingsUi">タイプをアイコン (オフ) またはラベル (オン) で表します。</string>
|
||||
<string id="SettingsTextAlign">左 (オフ) または右 (オン) メニューの配置。</string>
|
||||
<string id="SettingsWidgetStart">(ウィジェットのみ)タップを待たずにウィジェットからアプリを自動起動します。</string>
|
||||
</strings>
|
@ -36,10 +36,11 @@
|
||||
<string id="ConfigUrlNotFound">URL을 찾을 수 없습니다. 설정에 잠재적인 구성 URL 오류가 있습니다.</string>
|
||||
<string id="NoJson">HTTP 요청에서 JSON이 반환되지 않았습니다.</string>
|
||||
<string id="UnhandledHttpErr">HTTP 요청이 오류 코드를 반환했습니다 =</string>
|
||||
<string id="TrailingSlashErr">API URL에는 후행 슬래시 '/'가 없어야 합니다.</string>
|
||||
<string id="TrailingSlashErr">API URL에는 후행 슬래시 '/'가 있어서는 안 됩니다.</string>
|
||||
<string id="Available" scope="glance">사용 가능</string>
|
||||
<string id="Checking" scope="glance">확인 중...</string>
|
||||
<string id="Unavailable" scope="glance">없는</string>
|
||||
<string id="Unconfigured" scope="glance">구성되지 않음</string>
|
||||
<string id="GlanceMenu" scope="glance">메뉴</string>
|
||||
<!-- 설정 GUI의 경우 -->
|
||||
<string id="SettingsApiKey">HomeAssistant용 API 키.</string>
|
||||
@ -50,4 +51,5 @@
|
||||
<string id="SettingsConfirmTimeout">이 시간(초)이 지나면 작업에 대한 확인 대화 상자가 자동으로 닫히고 작업이 취소됩니다. 시간 초과를 비활성화하려면 0으로 설정합니다.</string>
|
||||
<string id="SettingsUi">아이콘(끄기) 또는 레이블(켜기)로 유형을 나타냅니다.</string>
|
||||
<string id="SettingsTextAlign">왼쪽(끄기) 또는 오른쪽(켜기) 메뉴 정렬.</string>
|
||||
<string id="SettingsWidgetStart">(위젯만 해당) 탭을 기다리지 않고 위젯에서 애플리케이션을 자동으로 시작합니다.</string>
|
||||
</strings>
|
@ -40,6 +40,7 @@
|
||||
<string id="Available" scope="glance">Pieejams</string>
|
||||
<string id="Checking" scope="glance">Notiek pārbaude...</string>
|
||||
<string id="Unavailable" scope="glance">Nav pieejams</string>
|
||||
<string id="Unconfigured" scope="glance">Nav konfigurēts</string>
|
||||
<string id="GlanceMenu" scope="glance">Izvēlne</string>
|
||||
<!-- Iestatījumu GUI -->
|
||||
<string id="SettingsApiKey">API atslēga Home Assistant.</string>
|
||||
@ -50,4 +51,5 @@
|
||||
<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>
|
||||
<string id="SettingsUi">Apzīmē veidus ar ikonām (izslēgts) vai ar etiķetēm (ieslēgts).</string>
|
||||
<string id="SettingsTextAlign">Kreisā (izslēgta) vai labā (ieslēgta) izvēlnes izlīdzināšana.</string>
|
||||
<string id="SettingsWidgetStart">(tikai logrīkam) Automātiski startējiet lietojumprogrammu no logrīka, negaidot pieskārienu.</string>
|
||||
</strings>
|
@ -40,6 +40,7 @@
|
||||
<string id="Available" scope="glance">Galima</string>
|
||||
<string id="Checking" scope="glance">Tikrinama...</string>
|
||||
<string id="Unavailable" scope="glance">Nepasiekiamas</string>
|
||||
<string id="Unconfigured" scope="glance">Nesukonfigūruotas</string>
|
||||
<string id="GlanceMenu" scope="glance">Meniu</string>
|
||||
<!-- Dėl nustatymų GUI -->
|
||||
<string id="SettingsApiKey">API raktas, skirtas „HomeAssistant“.</string>
|
||||
@ -50,4 +51,5 @@
|
||||
<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>
|
||||
<string id="SettingsUi">Tipai su piktogramomis (išjungta) arba etiketėmis (įjungta).</string>
|
||||
<string id="SettingsTextAlign">Kairysis (išjungtas) arba dešinysis (įjungtas) meniu lygiavimas.</string>
|
||||
<string id="SettingsWidgetStart">(Tik valdiklis) Automatiškai paleiskite programą iš valdiklio, nelaukdami palietimo.</string>
|
||||
</strings>
|
@ -40,6 +40,7 @@
|
||||
<string id="Available" scope="glance">Tilgjengelig</string>
|
||||
<string id="Checking" scope="glance">Sjekker...</string>
|
||||
<string id="Unavailable" scope="glance">Utilgjengelig</string>
|
||||
<string id="Unconfigured" scope="glance">Ukonfigurert</string>
|
||||
<string id="GlanceMenu" scope="glance">Meny</string>
|
||||
<!-- For innstillingene GUI -->
|
||||
<string id="SettingsApiKey">API-nøkkel for HomeAssistant.</string>
|
||||
@ -50,4 +51,5 @@
|
||||
<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>
|
||||
<string id="SettingsUi">Representerer typer med ikoner (av) eller med etiketter (på).</string>
|
||||
<string id="SettingsTextAlign">Venstre (av) eller Høyre (på) Menyjustering.</string>
|
||||
<string id="SettingsWidgetStart">(Kun widget) Start applikasjonen automatisk fra widgeten uten å vente på et trykk.</string>
|
||||
</strings>
|
@ -40,6 +40,7 @@
|
||||
<string id="Available" scope="glance">Dostępny</string>
|
||||
<string id="Checking" scope="glance">Kontrola...</string>
|
||||
<string id="Unavailable" scope="glance">Niedostępne</string>
|
||||
<string id="Unconfigured" scope="glance">Nieskonfigurowane</string>
|
||||
<string id="GlanceMenu" scope="glance">Menu</string>
|
||||
<!-- Dla ustawień GUI -->
|
||||
<string id="SettingsApiKey">Klucz API dla HomeAssistant.</string>
|
||||
@ -50,4 +51,5 @@
|
||||
<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>
|
||||
<string id="SettingsUi">Reprezentowanie typów za pomocą ikon (wyłączone) lub etykiet (włączone).</string>
|
||||
<string id="SettingsTextAlign">Wyrównanie menu do lewej (wyłączone) lub do prawej (włączone).</string>
|
||||
<string id="SettingsWidgetStart">(Tylko widget) Automatycznie uruchamiaj aplikację z widgetu, bez czekania na dotknięcie.</string>
|
||||
</strings>
|
@ -40,6 +40,7 @@
|
||||
<string id="Available" scope="glance">Disponível</string>
|
||||
<string id="Checking" scope="glance">Verificando...</string>
|
||||
<string id="Unavailable" scope="glance">Indisponível</string>
|
||||
<string id="Unconfigured" scope="glance">Não configurado</string>
|
||||
<string id="GlanceMenu" scope="glance">Cardápio</string>
|
||||
<!-- Para a GUI de configurações -->
|
||||
<string id="SettingsApiKey">Chave de API para HomeAssistant.</string>
|
||||
@ -50,4 +51,5 @@
|
||||
<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>
|
||||
<string id="SettingsUi">Representando tipos com ícones (desligado) ou com rótulos (ligado).</string>
|
||||
<string id="SettingsTextAlign">Alinhamento do menu à esquerda (desligado) ou à direita (ligado).</string>
|
||||
<string id="SettingsWidgetStart">(Somente widget) Inicie automaticamente o aplicativo a partir do widget sem esperar por um toque.</string>
|
||||
</strings>
|
@ -21,7 +21,7 @@
|
||||
<strings>
|
||||
<string id="AppName" scope="glance">HomeAssistant</string>
|
||||
<string id="MenuItemOn">Pe</string>
|
||||
<string id="MenuItemOff">Oprit</string>
|
||||
<string id="MenuItemOff">Off</string>
|
||||
<string id="MenuItemTap">Atingeți</string>
|
||||
<string id="MenuItemMenu">Meniul</string>
|
||||
<string id="Confirm">Sigur?</string>
|
||||
@ -31,15 +31,16 @@
|
||||
<string id="NoAPIKey" scope="glance">Nicio cheie API în setările aplicației</string>
|
||||
<string id="NoApiUrl" scope="glance">Nicio adresă URL API în setările aplicației</string>
|
||||
<string id="NoConfigUrl" scope="glance">Nicio adresă URL de configurare în setările aplicației</string>
|
||||
<string id="ApiFlood">Apeluri API prea rapide. Vă rugăm să vă încetiniți solicitările.</string>
|
||||
<string id="ApiFlood">Apeluri API prea rapide. Vă rugăm să încetiniți cererile dvs.</string>
|
||||
<string id="ApiUrlNotFound">Adresa URL nu a fost găsită. Potențială eroare URL API în setări.</string>
|
||||
<string id="ConfigUrlNotFound">Adresa URL nu a fost găsită. Potențială eroare URL de configurare în setări.</string>
|
||||
<string id="NoJson">Nu a fost returnat niciun JSON de la solicitarea HTTP.</string>
|
||||
<string id="NoJson">Niciun JSON nu a fost returnat de la solicitarea HTTP.</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="Available" scope="glance">Disponibil</string>
|
||||
<string id="Checking" scope="glance">Control...</string>
|
||||
<string id="Unavailable" scope="glance">Indisponibil</string>
|
||||
<string id="Unconfigured" scope="glance">Neconfigurat</string>
|
||||
<string id="GlanceMenu" scope="glance">Meniul</string>
|
||||
<!-- Pentru GUI de setări -->
|
||||
<string id="SettingsApiKey">Cheie API pentru HomeAssistant.</string>
|
||||
@ -50,4 +51,5 @@
|
||||
<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>
|
||||
<string id="SettingsUi">Reprezentarea tipurilor cu pictograme (dezactivate) sau cu etichete (activate).</string>
|
||||
<string id="SettingsTextAlign">Alinierea meniului la stânga (dezactivată) sau la dreapta (activată).</string>
|
||||
<string id="SettingsWidgetStart">(Numai widget) Porniți automat aplicația din widget fără a aștepta o atingere.</string>
|
||||
</strings>
|
@ -40,14 +40,16 @@
|
||||
<string id="Available" scope="glance">Dostupné</string>
|
||||
<string id="Checking" scope="glance">Prebieha kontrola...</string>
|
||||
<string id="Unavailable" scope="glance">nedostupné</string>
|
||||
<string id="Unconfigured" scope="glance">Nekonfigurované</string>
|
||||
<string id="GlanceMenu" scope="glance">Ponuka</string>
|
||||
<!-- Pre nastavenia GUI -->
|
||||
<string id="SettingsApiKey">Kľúč API pre HomeAssistant.</string>
|
||||
<string id="SettingsApiKeyPrompt">Prístupový token s dlhou životnosťou.</string>
|
||||
<string id="SettingsApiKeyPrompt">Dlhotrvajúci prístupový token.</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>
|
||||
<string id="SettingsUi">Typy predstavujú ikony (vypnuté) alebo štítky (zapnuté).</string>
|
||||
<string id="SettingsTextAlign">Zarovnanie ponuky vľavo (vypnuté) alebo vpravo (zapnuté).</string>
|
||||
<string id="SettingsWidgetStart">(Len miniaplikácia) Automaticky spustite aplikáciu z miniaplikácie bez čakania na klepnutie.</string>
|
||||
</strings>
|
@ -40,14 +40,16 @@
|
||||
<string id="Available" scope="glance">Na voljo</string>
|
||||
<string id="Checking" scope="glance">Preverjanje ...</string>
|
||||
<string id="Unavailable" scope="glance">Ni na voljo</string>
|
||||
<string id="Unconfigured" scope="glance">Nekonfigurirano</string>
|
||||
<string id="GlanceMenu" scope="glance">meni</string>
|
||||
<!-- Za nastavitve GUI -->
|
||||
<string id="SettingsApiKey">API ključ za HomeAssistant.</string>
|
||||
<string id="SettingsApiKeyPrompt">Dolgoživ dostopni žeton.</string>
|
||||
<string id="SettingsApiUrl">URL za HomeAssistant API.</string>
|
||||
<string id="SettingsApiUrl">URL za API HomeAssistant.</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>
|
||||
<string id="SettingsUi">Predstavljanje tipov z ikonami (izklopljeno) ali z oznakami (vklopljeno).</string>
|
||||
<string id="SettingsTextAlign">Leva (izklopljena) ali desna (vklopljena) poravnava menija.</string>
|
||||
<string id="SettingsWidgetStart">(Samo pripomoček) Samodejno zaženite aplikacijo iz pripomočka, ne da bi čakali na dotik.</string>
|
||||
</strings>
|
@ -40,6 +40,7 @@
|
||||
<string id="Available" scope="glance">Disponible</string>
|
||||
<string id="Checking" scope="glance">Comprobación...</string>
|
||||
<string id="Unavailable" scope="glance">Indisponible</string>
|
||||
<string id="Unconfigured" scope="glance">Desconfigurado</string>
|
||||
<string id="GlanceMenu" scope="glance">Menú</string>
|
||||
<!-- Para la configuración GUI -->
|
||||
<string id="SettingsApiKey">Clave API para HomeAssistant.</string>
|
||||
@ -50,4 +51,5 @@
|
||||
<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>
|
||||
<string id="SettingsUi">Representando tipos con iconos (apagados) o con etiquetas (encendido).</string>
|
||||
<string id="SettingsTextAlign">Alineación del menú izquierda (desactivada) o derecha (activada).</string>
|
||||
<string id="SettingsWidgetStart">(Solo widget) Inicia automáticamente la aplicación desde el widget sin esperar un toque.</string>
|
||||
</strings>
|
@ -40,14 +40,16 @@
|
||||
<string id="Available" scope="glance">Tillgängliga</string>
|
||||
<string id="Checking" scope="glance">Kontroll...</string>
|
||||
<string id="Unavailable" scope="glance">Inte tillgänglig</string>
|
||||
<string id="Unconfigured" scope="glance">Okonfigurerad</string>
|
||||
<string id="GlanceMenu" scope="glance">Meny</string>
|
||||
<!-- För inställningar GUI -->
|
||||
<string id="SettingsApiKey">API-nyckel för HomeAssistant.</string>
|
||||
<string id="SettingsApiKeyPrompt">Långlivad åtkomsttoken.</string>
|
||||
<string id="SettingsApiUrl">URL för HomeAssistant API.</string>
|
||||
<string id="SettingsConfigUrl">URL för menykonfiguration (JSON).</string>
|
||||
<string id="SettingsAppTimeout">Timeout i sekunder. Avsluta programmet efter denna period av inaktivitet för att spara enhetens batteri.</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>
|
||||
<string id="SettingsUi">Representerar typer med ikoner (av) eller med etiketter (på).</string>
|
||||
<string id="SettingsTextAlign">Vänster (av) eller höger (på) menyjustering.</string>
|
||||
<string id="SettingsWidgetStart">(Endast widget) Starta programmet automatiskt från widgeten utan att vänta på ett tryck.</string>
|
||||
</strings>
|
@ -40,6 +40,7 @@
|
||||
<string id="Available" scope="glance">มีอยู่</string>
|
||||
<string id="Checking" scope="glance">กำลังตรวจสอบ...</string>
|
||||
<string id="Unavailable" scope="glance">ไม่พร้อมใช้งาน</string>
|
||||
<string id="Unconfigured" scope="glance">ไม่ได้กำหนดค่า</string>
|
||||
<string id="GlanceMenu" scope="glance">เมนู</string>
|
||||
<!-- สำหรับการตั้งค่า GUI -->
|
||||
<string id="SettingsApiKey">คีย์ API สำหรับ HomeAssistant</string>
|
||||
@ -50,4 +51,5 @@
|
||||
<string id="SettingsConfirmTimeout">หลังจากเวลานี้ (เป็นวินาที) กล่องโต้ตอบการยืนยันสำหรับการดำเนินการจะปิดโดยอัตโนมัติและการดำเนินการจะถูกยกเลิก ตั้งค่าเป็น 0 เพื่อปิดใช้งานการหมดเวลา</string>
|
||||
<string id="SettingsUi">เป็นตัวแทนประเภทด้วยไอคอน (ปิด) หรือมีป้ายกำกับ (เปิด)</string>
|
||||
<string id="SettingsTextAlign">การจัดตำแหน่งเมนูซ้าย (ปิด) หรือขวา (เปิด)</string>
|
||||
<string id="SettingsWidgetStart">(วิดเจ็ตเท่านั้น) เริ่มแอปพลิเคชันโดยอัตโนมัติจากวิดเจ็ตโดยไม่ต้องรอการแตะ</string>
|
||||
</strings>
|
@ -36,10 +36,11 @@
|
||||
<string id="ConfigUrlNotFound">URL bulunamadı. Ayarlarda Olası Yapılandırma URL'si hatası.</string>
|
||||
<string id="NoJson">HTTP isteğinden JSON döndürülmedi.</string>
|
||||
<string id="UnhandledHttpErr">HTTP isteği hata kodunu döndürdü =</string>
|
||||
<string id="TrailingSlashErr">API URL'sinin sonunda eğik çizgi '/' olmamalıdır</string>
|
||||
<string id="TrailingSlashErr">API URL'sinin sonunda '/' eğik çizgi olmamalıdır</string>
|
||||
<string id="Available" scope="glance">Mevcut</string>
|
||||
<string id="Checking" scope="glance">Kontrol etme...</string>
|
||||
<string id="Unavailable" scope="glance">Kullanım dışı</string>
|
||||
<string id="Unconfigured" scope="glance">Yapılandırılmamış</string>
|
||||
<string id="GlanceMenu" scope="glance">Menü</string>
|
||||
<!-- Ayarlar GUI'si için -->
|
||||
<string id="SettingsApiKey">HomeAssistant için API Anahtarı.</string>
|
||||
@ -47,7 +48,8 @@
|
||||
<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 cinsinden), 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>
|
||||
<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>
|
||||
<string id="SettingsUi">Türleri simgelerle (kapalı) veya etiketlerle (açık) temsil etme.</string>
|
||||
<string id="SettingsTextAlign">Sol (kapalı) veya Sağ (açık) Menü Hizalaması.</string>
|
||||
<string id="SettingsWidgetStart">(Yalnızca Widget) Dokunmayı beklemeden uygulamayı widget'tan otomatik olarak başlatın.</string>
|
||||
</strings>
|
@ -15,7 +15,7 @@
|
||||
|
||||
<!--
|
||||
Generated by Google Translate: English to Ukrainian
|
||||
Згенеровано Google Translate з англійської
|
||||
Створено Google Translate з англійської
|
||||
-->
|
||||
|
||||
<strings>
|
||||
@ -40,14 +40,16 @@
|
||||
<string id="Available" scope="glance">в наявності</string>
|
||||
<string id="Checking" scope="glance">Перевірка...</string>
|
||||
<string id="Unavailable" scope="glance">Недоступний</string>
|
||||
<string id="Unconfigured" scope="glance">Неналаштований</string>
|
||||
<string id="GlanceMenu" scope="glance">Меню</string>
|
||||
<!-- Для налаштування GUI -->
|
||||
<string id="SettingsApiKey">Ключ API для HomeAssistant.</string>
|
||||
<string id="SettingsApiKeyPrompt">Довговічний маркер доступу.</string>
|
||||
<string id="SettingsApiUrl">URL для HomeAssistant API.</string>
|
||||
<string id="SettingsConfigUrl">URL-адреса для налаштування меню (JSON).</string>
|
||||
<string id="SettingsConfigUrl">URL для налаштування меню (JSON).</string>
|
||||
<string id="SettingsAppTimeout">Час очікування в секундах. Вийдіть із програми після цього періоду бездіяльності, щоб заощадити батарею пристрою.</string>
|
||||
<string id="SettingsConfirmTimeout">Після закінчення цього часу (у секундах) діалогове вікно підтвердження дії автоматично закривається, а дія скасовується. Встановіть 0, щоб вимкнути тайм-аут.</string>
|
||||
<string id="SettingsUi">Представлення типів піктограмами (вимкнено) або мітками (увімкнено).</string>
|
||||
<string id="SettingsTextAlign">Ліворуч (вимкнено) або праворуч (увімкнено) вирівнювання меню.</string>
|
||||
<string id="SettingsWidgetStart">(Лише віджет) Автоматично запускайте програму з віджета, не чекаючи дотику.</string>
|
||||
</strings>
|
@ -40,6 +40,7 @@
|
||||
<string id="Available" scope="glance">Có sẵn</string>
|
||||
<string id="Checking" scope="glance">Đang kiểm tra...</string>
|
||||
<string id="Unavailable" scope="glance">Không có sẵn</string>
|
||||
<string id="Unconfigured" scope="glance">Chưa được định cấu hình</string>
|
||||
<string id="GlanceMenu" scope="glance">Thực đơn</string>
|
||||
<!-- Đối với GUI cài đặt -->
|
||||
<string id="SettingsApiKey">Khóa API cho HomeAssistant.</string>
|
||||
@ -47,7 +48,8 @@
|
||||
<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 lại và hành động đó sẽ bị hủy. Đặt thành 0 để tắt thời gian chờ.</string>
|
||||
<string id="SettingsUi">Thể hiện các loại bằng biểu tượng (tắt) hoặc bằng nhãn (bật).</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>
|
||||
<string id="SettingsUi">Biểu diễn các loại bằng biểu tượng (tắt) hoặc bằng nhãn (bật).</string>
|
||||
<string id="SettingsTextAlign">Căn chỉnh menu Trái (tắt) hoặc Phải (bật).</string>
|
||||
<string id="SettingsWidgetStart">(Chỉ tiện ích) Tự động khởi động ứng dụng từ tiện ích mà không cần chờ nhấn.</string>
|
||||
</strings>
|
@ -40,6 +40,7 @@
|
||||
<string id="Available" scope="glance">可用的</string>
|
||||
<string id="Checking" scope="glance">检查...</string>
|
||||
<string id="Unavailable" scope="glance">不可用</string>
|
||||
<string id="Unconfigured" scope="glance">未配置</string>
|
||||
<string id="GlanceMenu" scope="glance">菜单</string>
|
||||
<!-- 对于设置 GUI -->
|
||||
<string id="SettingsApiKey">HomeAssistant 的 API 密钥。</string>
|
||||
@ -50,4 +51,5 @@
|
||||
<string id="SettingsConfirmTimeout">在此时间(以秒为单位)之后,操作的确认对话框将自动关闭并取消该操作。设置为 0 以禁用超时。</string>
|
||||
<string id="SettingsUi">用图标(关闭)或标签(打开)表示类型。</string>
|
||||
<string id="SettingsTextAlign">左(关)或右(开)菜单对齐。</string>
|
||||
<string id="SettingsWidgetStart">(仅限小部件)从小部件自动启动应用程序,无需等待点击。</string>
|
||||
</strings>
|
@ -40,6 +40,7 @@
|
||||
<string id="Available" scope="glance">可用的</string>
|
||||
<string id="Checking" scope="glance">檢查...</string>
|
||||
<string id="Unavailable" scope="glance">不可用</string>
|
||||
<string id="Unconfigured" scope="glance">未配置</string>
|
||||
<string id="GlanceMenu" scope="glance">選單</string>
|
||||
<!-- 對於設定 GUI -->
|
||||
<string id="SettingsApiKey">HomeAssistant 的 API 金鑰。</string>
|
||||
@ -50,4 +51,5 @@
|
||||
<string id="SettingsConfirmTimeout">在此時間(以秒為單位)之後,操作的確認對話方塊將自動關閉並取消該操作。設定為 0 以停用逾時。</string>
|
||||
<string id="SettingsUi">用圖示(關閉)或標籤(開啟)表示類型。</string>
|
||||
<string id="SettingsTextAlign">左(關)或右(開)選單對齊。</string>
|
||||
<string id="SettingsWidgetStart">(僅限小部件)從小部件自動啟動應用程序,無需等待點擊。</string>
|
||||
</strings>
|
@ -40,6 +40,7 @@
|
||||
<string id="Available" scope="glance">Tersedia</string>
|
||||
<string id="Checking" scope="glance">Menyemak...</string>
|
||||
<string id="Unavailable" scope="glance">Tidak ada</string>
|
||||
<string id="Unconfigured" scope="glance">Tidak dikonfigurasikan</string>
|
||||
<string id="GlanceMenu" scope="glance">Menu</string>
|
||||
<!-- Untuk GUI tetapan -->
|
||||
<string id="SettingsApiKey">Kunci API untuk HomeAssistant.</string>
|
||||
@ -50,4 +51,5 @@
|
||||
<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>
|
||||
<string id="SettingsUi">Mewakili jenis dengan ikon (dimatikan) atau dengan label (dihidupkan).</string>
|
||||
<string id="SettingsTextAlign">Penjajaran Menu Kiri (mati) atau Kanan (hidup).</string>
|
||||
<string id="SettingsWidgetStart">(Widget sahaja) Mulakan aplikasi secara automatik daripada widget tanpa menunggu satu ketikan.</string>
|
||||
</strings>
|
@ -36,8 +36,22 @@
|
||||
-->
|
||||
<property id="confirm_timeout" type="number">3</property>
|
||||
|
||||
<!--
|
||||
Lean UI vs second level of menu text.
|
||||
-->
|
||||
<property id="types_representation" type="boolean"></property>
|
||||
|
||||
<!--
|
||||
left to right or right-to-left text. Language dependent.
|
||||
-->
|
||||
<property id="menu_alignment" type="boolean"></property>
|
||||
|
||||
<!--
|
||||
Widget specific setting:
|
||||
As soon as the menu has been fetched start show the menu of items.
|
||||
This behaviour is inconsistent with the standard Garmin User Interface, but has been
|
||||
requested by users so has been made the non-default option.
|
||||
-->
|
||||
<property id="widget_start_no_tap" type="boolean"></property>
|
||||
|
||||
</properties>
|
||||
|
@ -81,4 +81,13 @@
|
||||
/>
|
||||
</setting>
|
||||
|
||||
<setting
|
||||
propertyKey="@Properties.widget_start_no_tap"
|
||||
title="@Strings.SettingsWidgetStart"
|
||||
>
|
||||
<settingConfig
|
||||
type="boolean"
|
||||
/>
|
||||
</setting>
|
||||
|
||||
</settings>
|
||||
|
@ -34,6 +34,7 @@
|
||||
<string id="Available" scope="glance">Available</string>
|
||||
<string id="Checking" scope="glance">Checking...</string>
|
||||
<string id="Unavailable" scope="glance">Unavailable</string>
|
||||
<string id="Unconfigured" scope="glance">Unconfigured</string>
|
||||
<string id="GlanceMenu" scope="glance">Menu</string>
|
||||
|
||||
<!-- For the settings GUI -->
|
||||
@ -45,4 +46,5 @@
|
||||
<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>
|
||||
<string id="SettingsWidgetStart">(Widget only) Automatically start the application from the widget without waiting for a tap.</string>
|
||||
</strings>
|
||||
|
@ -29,37 +29,37 @@ using Toybox.Timer;
|
||||
|
||||
class Alert extends WatchUi.View {
|
||||
private static const bRadius = 10;
|
||||
private var mTimer;
|
||||
private var mTimeout;
|
||||
private var mText;
|
||||
private var mFont;
|
||||
private var mFgcolor;
|
||||
private var mBgcolor;
|
||||
private var mTimer as Timer.Timer;
|
||||
private var mTimeout as Lang.Number;
|
||||
private var mText as Lang.String;
|
||||
private var mFont as Graphics.FontType;
|
||||
private var mFgcolor as Graphics.ColorType;
|
||||
private var mBgcolor as Graphics.ColorType;
|
||||
|
||||
function initialize(params as Lang.Dictionary) {
|
||||
View.initialize();
|
||||
|
||||
mText = params.get(:text);
|
||||
mText = params.get(:text) as Lang.String;
|
||||
if (mText == null) {
|
||||
mText = "Alert";
|
||||
}
|
||||
|
||||
mFont = params.get(:font);
|
||||
mFont = params.get(:font) as Graphics.FontType;
|
||||
if (mFont == null) {
|
||||
mFont = Graphics.FONT_MEDIUM;
|
||||
}
|
||||
|
||||
mFgcolor = params.get(:fgcolor);
|
||||
mFgcolor = params.get(:fgcolor) as Graphics.ColorType;
|
||||
if (mFgcolor == null) {
|
||||
mFgcolor = Graphics.COLOR_BLACK;
|
||||
}
|
||||
|
||||
mBgcolor = params.get(:bgcolor);
|
||||
mBgcolor = params.get(:bgcolor) as Graphics.ColorType;
|
||||
if (mBgcolor == null) {
|
||||
mBgcolor = Graphics.COLOR_WHITE;
|
||||
}
|
||||
|
||||
mTimeout = params.get(:timeout);
|
||||
mTimeout = params.get(:timeout) as Lang.Number;
|
||||
if (mTimeout == null) {
|
||||
mTimeout = 2000;
|
||||
}
|
||||
@ -83,7 +83,7 @@ class Alert extends WatchUi.View {
|
||||
var bX = (dc.getWidth() - bWidth) / 2;
|
||||
var bY = (dc.getHeight() - bHeight) / 2;
|
||||
|
||||
if(dc has :setAntiAlias) {
|
||||
if (dc has :setAntiAlias) {
|
||||
dc.setAntiAlias(true);
|
||||
}
|
||||
|
||||
@ -112,30 +112,30 @@ class Alert extends WatchUi.View {
|
||||
|
||||
// Remove the alert from view, usually on user input, but that is defined by the calling function.
|
||||
//
|
||||
function dismiss() {
|
||||
function dismiss() as Void {
|
||||
WatchUi.popView(SLIDE_IMMEDIATE);
|
||||
}
|
||||
|
||||
function pushView(transition) {
|
||||
function pushView(transition) as Void {
|
||||
WatchUi.pushView(self, new AlertDelegate(self), transition);
|
||||
}
|
||||
}
|
||||
|
||||
class AlertDelegate extends WatchUi.InputDelegate {
|
||||
hidden var mView;
|
||||
private var mView;
|
||||
|
||||
function initialize(view) {
|
||||
InputDelegate.initialize();
|
||||
mView = view;
|
||||
}
|
||||
|
||||
function onKey(evt) {
|
||||
function onKey(evt) as Lang.Boolean {
|
||||
mView.dismiss();
|
||||
getApp().getQuitTimer().reset();
|
||||
return true;
|
||||
}
|
||||
|
||||
function onTap(evt) {
|
||||
function onTap(evt) as Lang.Boolean {
|
||||
mView.dismiss();
|
||||
getApp().getQuitTimer().reset();
|
||||
return true;
|
||||
|
@ -33,6 +33,7 @@ using Toybox.Graphics;
|
||||
using Toybox.Lang;
|
||||
using Toybox.WatchUi;
|
||||
using Toybox.Communications;
|
||||
using Toybox.Timer;
|
||||
|
||||
class ErrorView extends ScalableView {
|
||||
private var mText as Lang.String = "";
|
||||
@ -94,14 +95,15 @@ class ErrorView extends ScalableView {
|
||||
}
|
||||
if (!mShown) {
|
||||
instance.setText(text);
|
||||
mShown = true;
|
||||
}
|
||||
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) {
|
||||
create(text); // Ignore returned values
|
||||
WatchUi.pushView(instance, instance.getDelegate(), WatchUi.SLIDE_UP);
|
||||
// This must be last to avoid a race condition with unShow(), where the
|
||||
// ErrorView can't be dismissed.
|
||||
@ -112,6 +114,10 @@ class ErrorView extends ScalableView {
|
||||
static function unShow() as Void {
|
||||
if (mShown) {
|
||||
WatchUi.popView(WatchUi.SLIDE_DOWN);
|
||||
// The call to 'updateNextMenuItem()' must be on another thread so that the view is popped above.
|
||||
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), Globals.scApiResume, false);
|
||||
// This must be last to avoid a race condition with show(), where the
|
||||
// ErrorView can't be dismissed.
|
||||
mShown = false;
|
||||
|
@ -26,5 +26,10 @@ class Globals {
|
||||
static const scDebug = false;
|
||||
static const scAlertTimeout = 2000; // ms
|
||||
static const scTapTimeout = 1000; // ms
|
||||
// Time to let the existing HTTP responses get serviced after a
|
||||
// Communications.NETWORK_RESPONSE_OUT_OF_MEMORY response code.
|
||||
static const scApiBackoff = 1000; // ms
|
||||
// Needs to be long enough to enable a "double ESC" to quit the application from
|
||||
// an ErrorView.
|
||||
static const scApiResume = 200; // ms
|
||||
}
|
||||
|
@ -22,6 +22,7 @@ using Toybox.Application;
|
||||
using Toybox.Lang;
|
||||
using Toybox.WatchUi;
|
||||
using Toybox.Application.Properties;
|
||||
using Toybox.Timer;
|
||||
|
||||
class HomeAssistantApp extends Application.AppBase {
|
||||
private var strNoApiKey as Lang.String or Null;
|
||||
@ -37,19 +38,23 @@ class HomeAssistantApp extends Application.AppBase {
|
||||
private var strTrailingSlashErr as Lang.String or Null;
|
||||
private var strAvailable = WatchUi.loadResource($.Rez.Strings.Available);
|
||||
private var strUnavailable = WatchUi.loadResource($.Rez.Strings.Unavailable);
|
||||
private var strUnconfigured = WatchUi.loadResource($.Rez.Strings.Unconfigured);
|
||||
|
||||
private var mApiKey as Lang.String;
|
||||
private var mApiKey as Lang.String or Null; // The compiler can't tell these are updated by
|
||||
private var mApiUrl as Lang.String or Null; // initialize(), hence the "or Null".
|
||||
private var mConfigUrl as Lang.String or Null; //
|
||||
private var mApiStatus as Lang.String = WatchUi.loadResource($.Rez.Strings.Checking);
|
||||
private var mMenuStatus as Lang.String = WatchUi.loadResource($.Rez.Strings.Checking);
|
||||
private var mHaMenu as HomeAssistantView or Null;
|
||||
private var mQuitTimer as QuitTimer or Null;
|
||||
private var mQuitTimer as QuitTimer or Null;
|
||||
private var mTimer as Timer.Timer or Null;
|
||||
private var mItemsToUpdate; // Array initialised by onReturnFetchMenuConfig()
|
||||
private var mNextItemToUpdate = 0; // Index into the above array
|
||||
private var mIsGlance as Lang.Boolean = false;
|
||||
|
||||
function initialize() {
|
||||
AppBase.initialize();
|
||||
mApiKey = Properties.getValue("api_key");
|
||||
onSettingsChanged();
|
||||
// ATTENTION when adding stuff into this block:
|
||||
// Because of the >>GlanceView<<, it should contain only
|
||||
// code, which is used as well for the glance:
|
||||
@ -110,24 +115,22 @@ class HomeAssistantApp extends Application.AppBase {
|
||||
strTrailingSlashErr = WatchUi.loadResource($.Rez.Strings.TrailingSlashErr);
|
||||
mQuitTimer = new QuitTimer();
|
||||
|
||||
var api_url = Properties.getValue("api_url") as Lang.String;
|
||||
|
||||
if ((Properties.getValue("api_key") as Lang.String).length() == 0) {
|
||||
if (mApiKey.length() == 0) {
|
||||
if (Globals.scDebug) {
|
||||
System.println("HomeAssistantApp getInitialView(): No API key in the application settings.");
|
||||
}
|
||||
return ErrorView.create(strNoApiKey + ".");
|
||||
} else if (api_url.length() == 0) {
|
||||
} else if (mApiUrl.length() == 0) {
|
||||
if (Globals.scDebug) {
|
||||
System.println("HomeAssistantApp getInitialView(): No API URL in the application settings.");
|
||||
}
|
||||
return ErrorView.create(strNoApiUrl + ".");
|
||||
} else if (api_url.substring(-1, api_url.length()).equals("/")) {
|
||||
} else if (mApiUrl.substring(-1, mApiUrl.length()).equals("/")) {
|
||||
if (Globals.scDebug) {
|
||||
System.println("HomeAssistantApp getInitialView(): API URL must not have a trailing slash '/'.");
|
||||
}
|
||||
return ErrorView.create(strTrailingSlashErr + ".");
|
||||
} else if ((Properties.getValue("config_url") as Lang.String).length() == 0) {
|
||||
} else if (mConfigUrl.length() == 0) {
|
||||
if (Globals.scDebug) {
|
||||
System.println("HomeAssistantApp getInitialView(): No configuration URL in the application settings.");
|
||||
}
|
||||
@ -215,6 +218,12 @@ class HomeAssistantApp extends Application.AppBase {
|
||||
if (!mIsGlance) {
|
||||
mHaMenu = new HomeAssistantView(data, null);
|
||||
mQuitTimer.begin();
|
||||
if (Properties.getValue("widget_start_no_tap")) {
|
||||
// As soon as the menu has been fetched start show the menu of items.
|
||||
// This behaviour is inconsistent with the standard Garmin User Interface, but has been
|
||||
// requested by users so has been made the non-default option.
|
||||
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.
|
||||
@ -225,7 +234,6 @@ class HomeAssistantApp extends Application.AppBase {
|
||||
WatchUi.switchToView(mHaMenu, new HomeAssistantViewDelegate(false), WatchUi.SLIDE_IMMEDIATE);
|
||||
}
|
||||
}
|
||||
WatchUi.requestUpdate();
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -237,20 +245,48 @@ class HomeAssistantApp extends Application.AppBase {
|
||||
}
|
||||
break;
|
||||
}
|
||||
WatchUi.requestUpdate();
|
||||
}
|
||||
|
||||
(:glance)
|
||||
function fetchMenuConfig() as Void {
|
||||
var options = {
|
||||
:method => Communications.HTTP_REQUEST_METHOD_GET,
|
||||
:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON
|
||||
};
|
||||
Communications.makeWebRequest(
|
||||
Properties.getValue("config_url"),
|
||||
null,
|
||||
options,
|
||||
method(:onReturnFetchMenuConfig)
|
||||
);
|
||||
if (mConfigUrl.equals("")) {
|
||||
mMenuStatus = strUnconfigured;
|
||||
WatchUi.requestUpdate();
|
||||
} else {
|
||||
var options = {
|
||||
:method => Communications.HTTP_REQUEST_METHOD_GET,
|
||||
:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON
|
||||
};
|
||||
if (! System.getDeviceSettings().phoneConnected) {
|
||||
if (Globals.scDebug) {
|
||||
System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call.");
|
||||
}
|
||||
if (mIsGlance) {
|
||||
WatchUi.requestUpdate();
|
||||
} else {
|
||||
ErrorView.show(strNoPhone + ".");
|
||||
}
|
||||
mMenuStatus = strUnavailable;
|
||||
} else if (! System.getDeviceSettings().connectionAvailable) {
|
||||
if (Globals.scDebug) {
|
||||
System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call.");
|
||||
}
|
||||
if (mIsGlance) {
|
||||
WatchUi.requestUpdate();
|
||||
} else {
|
||||
ErrorView.show(strNoInternet + ".");
|
||||
}
|
||||
mMenuStatus = strUnavailable;
|
||||
} else {
|
||||
Communications.makeWebRequest(
|
||||
mConfigUrl,
|
||||
null,
|
||||
options,
|
||||
method(:onReturnFetchMenuConfig)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Callback function after completing the GET request to fetch the API status.
|
||||
@ -322,7 +358,6 @@ class HomeAssistantApp extends Application.AppBase {
|
||||
ErrorView.show("API " + mApiStatus + ".");
|
||||
}
|
||||
}
|
||||
WatchUi.requestUpdate();
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -333,23 +368,51 @@ class HomeAssistantApp extends Application.AppBase {
|
||||
ErrorView.show(strUnhandledHttpErr + responseCode);
|
||||
}
|
||||
}
|
||||
WatchUi.requestUpdate();
|
||||
}
|
||||
|
||||
(:glance)
|
||||
function fetchApiStatus() as Void {
|
||||
var options = {
|
||||
:method => Communications.HTTP_REQUEST_METHOD_GET,
|
||||
:headers => {
|
||||
"Authorization" => "Bearer " + mApiKey
|
||||
},
|
||||
:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON
|
||||
};
|
||||
Communications.makeWebRequest(
|
||||
Properties.getValue("api_url") + "/",
|
||||
null,
|
||||
options,
|
||||
method(:onReturnFetchApiStatus)
|
||||
);
|
||||
if (mApiUrl.equals("")) {
|
||||
mApiStatus = strUnconfigured;
|
||||
WatchUi.requestUpdate();
|
||||
} else {
|
||||
var options = {
|
||||
:method => Communications.HTTP_REQUEST_METHOD_GET,
|
||||
:headers => {
|
||||
"Authorization" => "Bearer " + mApiKey
|
||||
},
|
||||
:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON
|
||||
};
|
||||
if (! System.getDeviceSettings().phoneConnected) {
|
||||
if (Globals.scDebug) {
|
||||
System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call.");
|
||||
}
|
||||
mApiStatus = strUnavailable;
|
||||
if (mIsGlance) {
|
||||
WatchUi.requestUpdate();
|
||||
} else {
|
||||
ErrorView.show(strNoPhone + ".");
|
||||
}
|
||||
} else if (! System.getDeviceSettings().connectionAvailable) {
|
||||
if (Globals.scDebug) {
|
||||
System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call.");
|
||||
}
|
||||
mApiStatus = strUnavailable;
|
||||
if (mIsGlance) {
|
||||
WatchUi.requestUpdate();
|
||||
} else {
|
||||
ErrorView.show(strNoInternet + ".");
|
||||
}
|
||||
} else {
|
||||
Communications.makeWebRequest(
|
||||
mApiUrl + "/",
|
||||
null,
|
||||
options,
|
||||
method(:onReturnFetchApiStatus)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function setApiStatus(s as Lang.String) {
|
||||
@ -387,11 +450,26 @@ class HomeAssistantApp extends Application.AppBase {
|
||||
}
|
||||
|
||||
(:glance)
|
||||
function getGlanceView() {
|
||||
function getGlanceView() as Lang.Array<WatchUi.GlanceView or WatchUi.GlanceViewDelegate> or Null {
|
||||
mIsGlance = true;
|
||||
updateGlance();
|
||||
mTimer = new Timer.Timer();
|
||||
mTimer.start(method(:updateGlance), Globals.scApiBackoff, true);
|
||||
return [new HomeAssistantGlanceView(self)];
|
||||
}
|
||||
|
||||
// Required for the Glance update timer.
|
||||
function updateGlance() as Void {
|
||||
fetchMenuConfig();
|
||||
fetchApiStatus();
|
||||
return [new HomeAssistantGlanceView(self)];
|
||||
}
|
||||
|
||||
// Replace this functionality with a more central settings class as proposed in
|
||||
// https://github.com/house-of-abbey/GarminHomeAssistant/pull/17.
|
||||
function onSettingsChanged() as Void {
|
||||
mApiKey = Properties.getValue("api_key");
|
||||
mApiUrl = Properties.getValue("api_url");
|
||||
mConfigUrl = Properties.getValue("config_url");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -67,6 +67,8 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
|
||||
}
|
||||
|
||||
// Callback function after completing the GET request to fetch the status.
|
||||
// Terminate updating the toggle menu items via the chain of calls for a permanent network
|
||||
// error. The ErrorView cancellation will resume the call chain.
|
||||
//
|
||||
function onReturnGetState(responseCode as Lang.Number, data as Null or Lang.Dictionary or Lang.String) as Void {
|
||||
if (Globals.scDebug) {
|
||||
@ -74,8 +76,6 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
|
||||
System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Data: " + data);
|
||||
}
|
||||
|
||||
// Provide the ability to terminate updating chain of calls for a permanent network error.
|
||||
var keepUpdating = true;
|
||||
var status = strUnavailable;
|
||||
switch (responseCode) {
|
||||
case Communications.BLE_HOST_TIMEOUT:
|
||||
@ -111,8 +111,6 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
|
||||
if (Globals.scDebug) {
|
||||
System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: NETWORK_RESPONSE_OUT_OF_MEMORY, are we going too fast?");
|
||||
}
|
||||
// Pause updates
|
||||
keepUpdating = false;
|
||||
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), Globals.scApiBackoff, false);
|
||||
@ -135,7 +133,6 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
|
||||
}
|
||||
ErrorView.show(strApiUrlNotFound);
|
||||
}
|
||||
keepUpdating = false;
|
||||
break;
|
||||
|
||||
case 405:
|
||||
@ -143,7 +140,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
|
||||
System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: 405. " + mIdentifier + " " + data.get("message"));
|
||||
}
|
||||
ErrorView.show("HTTP 405, " + mIdentifier + ". " + data.get("message"));
|
||||
keepUpdating = false;
|
||||
|
||||
break;
|
||||
|
||||
case 200:
|
||||
@ -157,6 +154,8 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
|
||||
}
|
||||
setUiToggle(state);
|
||||
ErrorView.unShow();
|
||||
// Now this feels very "closely coupled" to the application, but it is the most reliable method instead of using a timer.
|
||||
getApp().updateNextMenuItem();
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -165,10 +164,6 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
|
||||
}
|
||||
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.
|
||||
getApp().updateNextMenuItem();
|
||||
}
|
||||
getApp().setApiStatus(status);
|
||||
}
|
||||
|
||||
@ -180,17 +175,18 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
|
||||
},
|
||||
:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON
|
||||
};
|
||||
var keepUpdating = true;
|
||||
if (! System.getDeviceSettings().phoneConnected) {
|
||||
if (Globals.scDebug) {
|
||||
System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call.");
|
||||
}
|
||||
ErrorView.show(strNoPhone + ".");
|
||||
getApp().setApiStatus(strUnavailable);
|
||||
} else if (! System.getDeviceSettings().connectionAvailable) {
|
||||
if (Globals.scDebug) {
|
||||
System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call.");
|
||||
}
|
||||
ErrorView.show(strNoInternet + ".");
|
||||
getApp().setApiStatus(strUnavailable);
|
||||
} else {
|
||||
var url = Properties.getValue("api_url") + "/states/" + mIdentifier;
|
||||
if (Globals.scDebug) {
|
||||
@ -202,19 +198,6 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
|
||||
options,
|
||||
method(:onReturnGetState)
|
||||
);
|
||||
// The update is called by onReturnGetState() instead
|
||||
keepUpdating = false;
|
||||
}
|
||||
// On temporary failure, keep the updating going.
|
||||
if (keepUpdating) {
|
||||
// Need to avoid an infinite loop where the pushed ErrorView does not appear before getState() is called again
|
||||
// and the call stack overflows. So continue the call chain from somewhere asynchronous.
|
||||
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);
|
||||
if (Globals.scDebug) {
|
||||
System.println("HomeAssistantToggleMenuItem getState(): Updated failed " + mIdentifier);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user