mirror of
				https://github.com/house-of-abbey/GarminHomeAssistant.git
				synced 2025-11-04 00:48:14 +00:00 
			
		
		
		
	Fix for the update rate
Now perform a "round robin" of all toggle menu items. The delay is currently 100 ms to avoid Communications.BLE_QUEUE_FULL errors.
This commit is contained in:
		@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">لا يوجد مفتاح API في إعدادات التطبيق</string>
 | 
					  <string id="NoAPIKey">لا يوجد مفتاح API في إعدادات التطبيق</string>
 | 
				
			||||||
  <string id="NoApiUrl">لا يوجد عنوان URL لواجهة برمجة التطبيقات في إعدادات التطبيق</string>
 | 
					  <string id="NoApiUrl">لا يوجد عنوان URL لواجهة برمجة التطبيقات في إعدادات التطبيق</string>
 | 
				
			||||||
  <string id="NoConfigUrl">لا يوجد عنوان URL للتكوين في إعدادات التطبيق</string>
 | 
					  <string id="NoConfigUrl">لا يوجد عنوان URL للتكوين في إعدادات التطبيق</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">مكالمات API سريعة جدًا. يرجى الإبلاغ عن هذا الخطأ مع تفاصيل الجهاز.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">Няма API ключ в настройките на приложението</string>
 | 
					  <string id="NoAPIKey">Няма API ключ в настройките на приложението</string>
 | 
				
			||||||
  <string id="NoApiUrl">Няма URL адрес на API в настройките на приложението</string>
 | 
					  <string id="NoApiUrl">Няма URL адрес на API в настройките на приложението</string>
 | 
				
			||||||
  <string id="NoConfigUrl">Няма конфигурационен URL адрес в настройките на приложението</string>
 | 
					  <string id="NoConfigUrl">Няма конфигурационен URL адрес в настройките на приложението</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">Извикванията на API са твърде бързи. Моля, докладвайте тази грешка с подробности за устройството.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">V nastavení aplikace není žádný klíč API</string>
 | 
					  <string id="NoAPIKey">V nastavení aplikace není žádný klíč API</string>
 | 
				
			||||||
  <string id="NoApiUrl">V nastavení aplikace není žádná adresa URL API</string>
 | 
					  <string id="NoApiUrl">V nastavení aplikace není žádná adresa URL API</string>
 | 
				
			||||||
  <string id="NoConfigUrl">V nastavení aplikace není žádná konfigurační URL</string>
 | 
					  <string id="NoConfigUrl">V nastavení aplikace není žádná konfigurační URL</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">Příliš rychlá volání API. Nahlaste tuto chybu s podrobnostmi o zařízení.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">Ingen API-nøgle i applikationsindstillingerne</string>
 | 
					  <string id="NoAPIKey">Ingen API-nøgle i applikationsindstillingerne</string>
 | 
				
			||||||
  <string id="NoApiUrl">Ingen API-URL i applikationsindstillingerne</string>
 | 
					  <string id="NoApiUrl">Ingen API-URL i applikationsindstillingerne</string>
 | 
				
			||||||
  <string id="NoConfigUrl">Ingen konfigurations-URL i applikationsindstillingerne</string>
 | 
					  <string id="NoConfigUrl">Ingen konfigurations-URL i applikationsindstillingerne</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">API-kald for hurtigt. Rapportér venligst denne fejl med enhedsoplysninger.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">Kein API-Schlüssel in den Anwendungseinstellungen</string>
 | 
					  <string id="NoAPIKey">Kein API-Schlüssel in den Anwendungseinstellungen</string>
 | 
				
			||||||
  <string id="NoApiUrl">Keine API-URL in den Anwendungseinstellungen</string>
 | 
					  <string id="NoApiUrl">Keine API-URL in den Anwendungseinstellungen</string>
 | 
				
			||||||
  <string id="NoConfigUrl">Keine Konfigurations-URL in den Anwendungseinstellungen</string>
 | 
					  <string id="NoConfigUrl">Keine Konfigurations-URL in den Anwendungseinstellungen</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">API-Aufrufe zu schnell. Bitte melden Sie diesen Fehler mit Gerätedetails.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">Geen API-sleutel in de applicatie-instellingen</string>
 | 
					  <string id="NoAPIKey">Geen API-sleutel in de applicatie-instellingen</string>
 | 
				
			||||||
  <string id="NoApiUrl">Geen API-URL in de applicatie-instellingen</string>
 | 
					  <string id="NoApiUrl">Geen API-URL in de applicatie-instellingen</string>
 | 
				
			||||||
  <string id="NoConfigUrl">Geen configuratie-URL in de applicatie-instellingen</string>
 | 
					  <string id="NoConfigUrl">Geen configuratie-URL in de applicatie-instellingen</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">API-aanroepen te snel. Rapporteer deze fout met apparaatgegevens.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">Rakenduse seadetes pole API-võtit</string>
 | 
					  <string id="NoAPIKey">Rakenduse seadetes pole API-võtit</string>
 | 
				
			||||||
  <string id="NoApiUrl">Rakenduse seadetes pole API URL-i</string>
 | 
					  <string id="NoApiUrl">Rakenduse seadetes pole API URL-i</string>
 | 
				
			||||||
  <string id="NoConfigUrl">Rakenduse seadetes pole konfiguratsiooni URL-i</string>
 | 
					  <string id="NoConfigUrl">Rakenduse seadetes pole konfiguratsiooni URL-i</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">API-kutsed liiga kiired. Teatage sellest veast koos seadme üksikasjadega.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">Sovellusasetuksissa ei ole API-avainta</string>
 | 
					  <string id="NoAPIKey">Sovellusasetuksissa ei ole API-avainta</string>
 | 
				
			||||||
  <string id="NoApiUrl">Sovellusasetuksissa ei ole API URL-osoitetta</string>
 | 
					  <string id="NoApiUrl">Sovellusasetuksissa ei ole API URL-osoitetta</string>
 | 
				
			||||||
  <string id="NoConfigUrl">Sovelluksen asetuksissa ei ole konfigurointi-URL-osoitetta</string>
 | 
					  <string id="NoConfigUrl">Sovelluksen asetuksissa ei ole konfigurointi-URL-osoitetta</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">API-kutsut liian nopeita. Ilmoita tästä virheestä laitteen tiedoilla.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">Pas de clé API dans les paramètres de l'application</string>
 | 
					  <string id="NoAPIKey">Pas de clé API dans les paramètres de l'application</string>
 | 
				
			||||||
  <string id="NoApiUrl">Aucune URL API dans les paramètres de l'application</string>
 | 
					  <string id="NoApiUrl">Aucune URL API dans les paramètres de l'application</string>
 | 
				
			||||||
  <string id="NoConfigUrl">Aucune URL de configuration dans les paramètres de l'application</string>
 | 
					  <string id="NoConfigUrl">Aucune URL de configuration dans les paramètres de l'application</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">Appels API trop rapides. Veuillez signaler cette erreur avec les détails de l'appareil.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">Δεν υπάρχει κλειδί API στις ρυθμίσεις της εφαρμογής</string>
 | 
					  <string id="NoAPIKey">Δεν υπάρχει κλειδί API στις ρυθμίσεις της εφαρμογής</string>
 | 
				
			||||||
  <string id="NoApiUrl">Δεν υπάρχει URL API στις ρυθμίσεις της εφαρμογής</string>
 | 
					  <string id="NoApiUrl">Δεν υπάρχει URL API στις ρυθμίσεις της εφαρμογής</string>
 | 
				
			||||||
  <string id="NoConfigUrl">Δεν υπάρχει διεύθυνση URL διαμόρφωσης στις ρυθμίσεις της εφαρμογής</string>
 | 
					  <string id="NoConfigUrl">Δεν υπάρχει διεύθυνση URL διαμόρφωσης στις ρυθμίσεις της εφαρμογής</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">Κλήσεις API πολύ γρήγορες. Αναφέρετε αυτό το σφάλμα με τα στοιχεία της συσκευής.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">אין מפתח API בהגדרות האפליקציה</string>
 | 
					  <string id="NoAPIKey">אין מפתח API בהגדרות האפליקציה</string>
 | 
				
			||||||
  <string id="NoApiUrl">אין כתובת API בהגדרות האפליקציה</string>
 | 
					  <string id="NoApiUrl">אין כתובת API בהגדרות האפליקציה</string>
 | 
				
			||||||
  <string id="NoConfigUrl">אין כתובת אתר תצורה בהגדרות האפליקציה</string>
 | 
					  <string id="NoConfigUrl">אין כתובת אתר תצורה בהגדרות האפליקציה</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">קריאות API מהירות מדי. אנא דווח על שגיאה זו עם פרטי המכשיר.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">Nema API ključa u postavkama aplikacije</string>
 | 
					  <string id="NoAPIKey">Nema API ključa u postavkama aplikacije</string>
 | 
				
			||||||
  <string id="NoApiUrl">Nema API URL-a u postavkama aplikacije</string>
 | 
					  <string id="NoApiUrl">Nema API URL-a u postavkama aplikacije</string>
 | 
				
			||||||
  <string id="NoConfigUrl">Nema konfiguracijskog URL-a u postavkama aplikacije</string>
 | 
					  <string id="NoConfigUrl">Nema konfiguracijskog URL-a u postavkama aplikacije</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">API pozivi su prebrzi. Prijavite ovu pogrešku s pojedinostima o uređaju.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">Nincs API kulcs az alkalmazás beállításaiban</string>
 | 
					  <string id="NoAPIKey">Nincs API kulcs az alkalmazás beállításaiban</string>
 | 
				
			||||||
  <string id="NoApiUrl">Nincs API URL az alkalmazás beállításai között</string>
 | 
					  <string id="NoApiUrl">Nincs API URL az alkalmazás beállításai között</string>
 | 
				
			||||||
  <string id="NoConfigUrl">Nincs konfigurációs URL az alkalmazás beállításai között</string>
 | 
					  <string id="NoConfigUrl">Nincs konfigurációs URL az alkalmazás beállításai között</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">Az API-hívások túl gyorsak. Kérjük, jelentse ezt a hibát az eszköz részleteivel.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">Tidak ada kunci API di pengaturan aplikasi</string>
 | 
					  <string id="NoAPIKey">Tidak ada kunci API di pengaturan aplikasi</string>
 | 
				
			||||||
  <string id="NoApiUrl">Tidak ada URL API di pengaturan aplikasi</string>
 | 
					  <string id="NoApiUrl">Tidak ada URL API di pengaturan aplikasi</string>
 | 
				
			||||||
  <string id="NoConfigUrl">Tidak ada URL konfigurasi di pengaturan aplikasi</string>
 | 
					  <string id="NoConfigUrl">Tidak ada URL konfigurasi di pengaturan aplikasi</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">Panggilan API terlalu cepat. Silakan laporkan kesalahan ini dengan detail perangkat.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">Nessuna chiave API nelle impostazioni dell'applicazione</string>
 | 
					  <string id="NoAPIKey">Nessuna chiave API nelle impostazioni dell'applicazione</string>
 | 
				
			||||||
  <string id="NoApiUrl">Nessun URL API nelle impostazioni dell'applicazione</string>
 | 
					  <string id="NoApiUrl">Nessun URL API nelle impostazioni dell'applicazione</string>
 | 
				
			||||||
  <string id="NoConfigUrl">Nessun URL di configurazione nelle impostazioni dell'applicazione</string>
 | 
					  <string id="NoConfigUrl">Nessun URL di configurazione nelle impostazioni dell'applicazione</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">Chiamate API troppo rapide. Segnala questo errore con i dettagli del dispositivo.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">アプリケーション設定に API キーがありません</string>
 | 
					  <string id="NoAPIKey">アプリケーション設定に API キーがありません</string>
 | 
				
			||||||
  <string id="NoApiUrl">アプリケーション設定に API URL がありません</string>
 | 
					  <string id="NoApiUrl">アプリケーション設定に API URL がありません</string>
 | 
				
			||||||
  <string id="NoConfigUrl">アプリケーション設定に構成 URL がありません</string>
 | 
					  <string id="NoConfigUrl">アプリケーション設定に構成 URL がありません</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">API 呼び出しが速すぎます。このエラーをデバイスの詳細とともに報告してください。</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">애플리케이션 설정에 API 키가 없습니다.</string>
 | 
					  <string id="NoAPIKey">애플리케이션 설정에 API 키가 없습니다.</string>
 | 
				
			||||||
  <string id="NoApiUrl">애플리케이션 설정에 API URL이 없습니다.</string>
 | 
					  <string id="NoApiUrl">애플리케이션 설정에 API URL이 없습니다.</string>
 | 
				
			||||||
  <string id="NoConfigUrl">애플리케이션 설정에 구성 URL이 없습니다.</string>
 | 
					  <string id="NoConfigUrl">애플리케이션 설정에 구성 URL이 없습니다.</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">API 호출이 너무 빠릅니다. 기기 세부정보와 함께 이 오류를 신고해 주세요.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">Lietojumprogrammas iestatījumos nav API atslēgas</string>
 | 
					  <string id="NoAPIKey">Lietojumprogrammas iestatījumos nav API atslēgas</string>
 | 
				
			||||||
  <string id="NoApiUrl">Lietojumprogrammas iestatījumos nav API URL</string>
 | 
					  <string id="NoApiUrl">Lietojumprogrammas iestatījumos nav API URL</string>
 | 
				
			||||||
  <string id="NoConfigUrl">Lietojumprogrammas iestatījumos nav konfigurācijas URL</string>
 | 
					  <string id="NoConfigUrl">Lietojumprogrammas iestatījumos nav konfigurācijas URL</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">API izsaukumi ir pārāk ātri. Lūdzu, ziņojiet par šo kļūdu, norādot informāciju par ierīci.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">Programos nustatymuose nėra API rakto</string>
 | 
					  <string id="NoAPIKey">Programos nustatymuose nėra API rakto</string>
 | 
				
			||||||
  <string id="NoApiUrl">Programos nustatymuose nėra API URL</string>
 | 
					  <string id="NoApiUrl">Programos nustatymuose nėra API URL</string>
 | 
				
			||||||
  <string id="NoConfigUrl">Programos nustatymuose nėra konfigūracijos URL</string>
 | 
					  <string id="NoConfigUrl">Programos nustatymuose nėra konfigūracijos URL</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">API skambučiai per greiti. Praneškite apie šią klaidą pateikdami išsamią įrenginio informaciją.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">Ingen API-nøkkel i applikasjonsinnstillingene</string>
 | 
					  <string id="NoAPIKey">Ingen API-nøkkel i applikasjonsinnstillingene</string>
 | 
				
			||||||
  <string id="NoApiUrl">Ingen API-URL i applikasjonsinnstillingene</string>
 | 
					  <string id="NoApiUrl">Ingen API-URL i applikasjonsinnstillingene</string>
 | 
				
			||||||
  <string id="NoConfigUrl">Ingen konfigurasjons-URL i applikasjonsinnstillingene</string>
 | 
					  <string id="NoConfigUrl">Ingen konfigurasjons-URL i applikasjonsinnstillingene</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">API-kall for raske. Rapporter denne feilen med enhetsdetaljer.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">Brak klucza API w ustawieniach aplikacji</string>
 | 
					  <string id="NoAPIKey">Brak klucza API w ustawieniach aplikacji</string>
 | 
				
			||||||
  <string id="NoApiUrl">Brak adresu API w ustawieniach aplikacji</string>
 | 
					  <string id="NoApiUrl">Brak adresu API w ustawieniach aplikacji</string>
 | 
				
			||||||
  <string id="NoConfigUrl">Brak adresu URL konfiguracji w ustawieniach aplikacji</string>
 | 
					  <string id="NoConfigUrl">Brak adresu URL konfiguracji w ustawieniach aplikacji</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">Wywołania API są zbyt szybkie. Zgłoś ten błąd, podając szczegóły urządzenia.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">Nenhuma chave de API nas configurações do aplicativo</string>
 | 
					  <string id="NoAPIKey">Nenhuma chave de API nas configurações do aplicativo</string>
 | 
				
			||||||
  <string id="NoApiUrl">Nenhum URL de API nas configurações do aplicativo</string>
 | 
					  <string id="NoApiUrl">Nenhum URL de API nas configurações do aplicativo</string>
 | 
				
			||||||
  <string id="NoConfigUrl">Nenhum URL de configuração nas configurações do aplicativo</string>
 | 
					  <string id="NoConfigUrl">Nenhum URL de configuração nas configurações do aplicativo</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">Chamadas de API muito rápidas. Por favor, relate este erro com detalhes do dispositivo.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">Nicio cheie API în setările aplicației</string>
 | 
					  <string id="NoAPIKey">Nicio cheie API în setările aplicației</string>
 | 
				
			||||||
  <string id="NoApiUrl">Nicio adresă URL API în setările aplicației</string>
 | 
					  <string id="NoApiUrl">Nicio adresă URL API în setările aplicației</string>
 | 
				
			||||||
  <string id="NoConfigUrl">Nicio adresă URL de configurare în setările aplicației</string>
 | 
					  <string id="NoConfigUrl">Nicio adresă URL de configurare în setările aplicației</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">Apeluri API prea rapide. Vă rugăm să raportați această eroare cu detaliile dispozitivului.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">V nastaveniach aplikácie nie je žiadny kľúč API</string>
 | 
					  <string id="NoAPIKey">V nastaveniach aplikácie nie je žiadny kľúč API</string>
 | 
				
			||||||
  <string id="NoApiUrl">V nastaveniach aplikácie nie je žiadna adresa URL rozhrania API</string>
 | 
					  <string id="NoApiUrl">V nastaveniach aplikácie nie je žiadna adresa URL rozhrania API</string>
 | 
				
			||||||
  <string id="NoConfigUrl">V nastaveniach aplikácie nie je žiadna konfiguračná URL</string>
 | 
					  <string id="NoConfigUrl">V nastaveniach aplikácie nie je žiadna konfiguračná URL</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">Volania API sú príliš rýchle. Nahláste túto chybu s podrobnosťami o zariadení.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">V nastavitvah aplikacije ni ključa API</string>
 | 
					  <string id="NoAPIKey">V nastavitvah aplikacije ni ključa API</string>
 | 
				
			||||||
  <string id="NoApiUrl">V nastavitvah aplikacije ni URL-ja API-ja</string>
 | 
					  <string id="NoApiUrl">V nastavitvah aplikacije ni URL-ja API-ja</string>
 | 
				
			||||||
  <string id="NoConfigUrl">V nastavitvah aplikacije ni konfiguracijskega URL-ja</string>
 | 
					  <string id="NoConfigUrl">V nastavitvah aplikacije ni konfiguracijskega URL-ja</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">API klici so prehitri. Prijavite to napako s podrobnostmi o napravi.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">Sin clave API en la configuración de la aplicación</string>
 | 
					  <string id="NoAPIKey">Sin clave API en la configuración de la aplicación</string>
 | 
				
			||||||
  <string id="NoApiUrl">No hay URL de API en la configuración de la aplicación</string>
 | 
					  <string id="NoApiUrl">No hay URL de API en la configuración de la aplicación</string>
 | 
				
			||||||
  <string id="NoConfigUrl">No hay URL de configuración en la configuración de la aplicación.</string>
 | 
					  <string id="NoConfigUrl">No hay URL de configuración en la configuración de la aplicación.</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">Llamadas API demasiado rápidas. Informe este error con los detalles del dispositivo.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">Ingen API-nyckel i applikationsinställningarna</string>
 | 
					  <string id="NoAPIKey">Ingen API-nyckel i applikationsinställningarna</string>
 | 
				
			||||||
  <string id="NoApiUrl">Ingen API-URL i applikationsinställningarna</string>
 | 
					  <string id="NoApiUrl">Ingen API-URL i applikationsinställningarna</string>
 | 
				
			||||||
  <string id="NoConfigUrl">Ingen konfigurations-URL i programinställningarna</string>
 | 
					  <string id="NoConfigUrl">Ingen konfigurations-URL i programinställningarna</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">API-anrop för snabba. Rapportera detta fel med enhetsinformation.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">ไม่มีคีย์ API ในการตั้งค่าแอปพลิเคชัน</string>
 | 
					  <string id="NoAPIKey">ไม่มีคีย์ API ในการตั้งค่าแอปพลิเคชัน</string>
 | 
				
			||||||
  <string id="NoApiUrl">ไม่มี URL API ในการตั้งค่าแอปพลิเคชัน</string>
 | 
					  <string id="NoApiUrl">ไม่มี URL API ในการตั้งค่าแอปพลิเคชัน</string>
 | 
				
			||||||
  <string id="NoConfigUrl">ไม่มี URL การกำหนดค่าในการตั้งค่าแอปพลิเคชัน</string>
 | 
					  <string id="NoConfigUrl">ไม่มี URL การกำหนดค่าในการตั้งค่าแอปพลิเคชัน</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">การเรียก API เร็วเกินไป โปรดรายงานข้อผิดพลาดนี้พร้อมรายละเอียดอุปกรณ์</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">Uygulama ayarlarında API anahtarı yok</string>
 | 
					  <string id="NoAPIKey">Uygulama ayarlarında API anahtarı yok</string>
 | 
				
			||||||
  <string id="NoApiUrl">Uygulama ayarlarında API URL'si yok</string>
 | 
					  <string id="NoApiUrl">Uygulama ayarlarında API URL'si yok</string>
 | 
				
			||||||
  <string id="NoConfigUrl">Uygulama ayarlarında yapılandırma URL'si yok</string>
 | 
					  <string id="NoConfigUrl">Uygulama ayarlarında yapılandırma URL'si yok</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">API çağrıları çok hızlı. Lütfen bu hatayı cihaz ayrıntılarıyla birlikte bildirin.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">У налаштуваннях програми немає ключа API</string>
 | 
					  <string id="NoAPIKey">У налаштуваннях програми немає ключа API</string>
 | 
				
			||||||
  <string id="NoApiUrl">У налаштуваннях програми немає URL-адреси API</string>
 | 
					  <string id="NoApiUrl">У налаштуваннях програми немає URL-адреси API</string>
 | 
				
			||||||
  <string id="NoConfigUrl">У налаштуваннях програми немає URL-адреси конфігурації</string>
 | 
					  <string id="NoConfigUrl">У налаштуваннях програми немає URL-адреси конфігурації</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">Надто швидкі виклики API. Повідомте про цю помилку з деталями пристрою.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">Không có khóa API trong cài đặt ứng dụng</string>
 | 
					  <string id="NoAPIKey">Không có khóa API trong cài đặt ứng dụng</string>
 | 
				
			||||||
  <string id="NoApiUrl">Không có URL API trong cài đặt ứng dụng</string>
 | 
					  <string id="NoApiUrl">Không có URL API trong cài đặt ứng dụng</string>
 | 
				
			||||||
  <string id="NoConfigUrl">Không có URL cấu hình trong cài đặt ứng dụng</string>
 | 
					  <string id="NoConfigUrl">Không có URL cấu hình trong cài đặt ứng dụng</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">Cuộc gọi API quá nhanh. Vui lòng báo cáo lỗi này với các chi tiết thiết bị.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">应用程序设置中没有 API 密钥</string>
 | 
					  <string id="NoAPIKey">应用程序设置中没有 API 密钥</string>
 | 
				
			||||||
  <string id="NoApiUrl">应用程序设置中没有 API URL</string>
 | 
					  <string id="NoApiUrl">应用程序设置中没有 API URL</string>
 | 
				
			||||||
  <string id="NoConfigUrl">应用程序设置中没有配置 URL</string>
 | 
					  <string id="NoConfigUrl">应用程序设置中没有配置 URL</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">API 调用速度太快。请报告此错误并提供设备详细信息。</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">應用程式設定中沒有 API 金鑰</string>
 | 
					  <string id="NoAPIKey">應用程式設定中沒有 API 金鑰</string>
 | 
				
			||||||
  <string id="NoApiUrl">應用程式設定中沒有 API URL</string>
 | 
					  <string id="NoApiUrl">應用程式設定中沒有 API URL</string>
 | 
				
			||||||
  <string id="NoConfigUrl">應用程式設定中沒有配置 URL</string>
 | 
					  <string id="NoConfigUrl">應用程式設定中沒有配置 URL</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">API 呼叫速度太快。請報告此錯誤並提供設備詳細資訊。</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -29,4 +29,5 @@
 | 
				
			|||||||
  <string id="NoAPIKey">Tiada kunci API dalam tetapan aplikasi</string>
 | 
					  <string id="NoAPIKey">Tiada kunci API dalam tetapan aplikasi</string>
 | 
				
			||||||
  <string id="NoApiUrl">Tiada URL API dalam tetapan aplikasi</string>
 | 
					  <string id="NoApiUrl">Tiada URL API dalam tetapan aplikasi</string>
 | 
				
			||||||
  <string id="NoConfigUrl">Tiada URL konfigurasi dalam tetapan aplikasi</string>
 | 
					  <string id="NoConfigUrl">Tiada URL konfigurasi dalam tetapan aplikasi</string>
 | 
				
			||||||
 | 
					  <string id="ApiFlood">Panggilan API terlalu pantas. Sila laporkan ralat ini dengan butiran peranti.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
@@ -23,4 +23,5 @@
 | 
				
			|||||||
    <string id="NoAPIKey">No API key in the application settings</string>
 | 
					    <string id="NoAPIKey">No API key in the application settings</string>
 | 
				
			||||||
    <string id="NoApiUrl">No API URL in the application settings</string>
 | 
					    <string id="NoApiUrl">No API URL in the application settings</string>
 | 
				
			||||||
    <string id="NoConfigUrl">No configuration URL in the application settings</string>
 | 
					    <string id="NoConfigUrl">No configuration URL in the application settings</string>
 | 
				
			||||||
 | 
					    <string id="ApiFlood">API calls too rapid. Please report this error with device details.</string>
 | 
				
			||||||
</strings>
 | 
					</strings>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,8 @@ class Globals {
 | 
				
			|||||||
    // Enable printing of messages to the debug console (don't make this a Property
 | 
					    // Enable printing of messages to the debug console (don't make this a Property
 | 
				
			||||||
    // as the messages can't be read from a watch!)
 | 
					    // as the messages can't be read from a watch!)
 | 
				
			||||||
    static const debug                  = false;
 | 
					    static const debug                  = false;
 | 
				
			||||||
    static const updateInterval = 10;    // seconds
 | 
					    // There's a danger this time is device sensitive.
 | 
				
			||||||
 | 
					    static const menuItemUpdateInterval =  100; // ms, 100 ms seems okay for Venu2
 | 
				
			||||||
    static const alertTimeout           = 2000; // ms
 | 
					    static const alertTimeout           = 2000; // ms
 | 
				
			||||||
    static const tapTimeout             = 1000; // ms
 | 
					    static const tapTimeout             = 1000; // ms
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,7 +31,10 @@ class HomeAssistantApp extends Application.AppBase {
 | 
				
			|||||||
    hidden var strNoConfigUrl as Lang.String;
 | 
					    hidden var strNoConfigUrl as Lang.String;
 | 
				
			||||||
    hidden var strNoInternet  as Lang.String;
 | 
					    hidden var strNoInternet  as Lang.String;
 | 
				
			||||||
    hidden var strNoMenu      as Lang.String;
 | 
					    hidden var strNoMenu      as Lang.String;
 | 
				
			||||||
 | 
					    hidden var strApiFlood    as Lang.String;
 | 
				
			||||||
    hidden var timer          as Timer.Timer;
 | 
					    hidden var timer          as Timer.Timer;
 | 
				
			||||||
 | 
					    hidden var itemsToUpdate;        // Array initialised by onReturnFetchMenuConfig()
 | 
				
			||||||
 | 
					    hidden var nextItemToUpdate = 0; // Index into the above array
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function initialize() {
 | 
					    function initialize() {
 | 
				
			||||||
        AppBase.initialize();
 | 
					        AppBase.initialize();
 | 
				
			||||||
@@ -40,6 +43,7 @@ class HomeAssistantApp extends Application.AppBase {
 | 
				
			|||||||
        strNoConfigUrl = WatchUi.loadResource($.Rez.Strings.NoConfigUrl);
 | 
					        strNoConfigUrl = WatchUi.loadResource($.Rez.Strings.NoConfigUrl);
 | 
				
			||||||
        strNoInternet  = WatchUi.loadResource($.Rez.Strings.NoInternet);
 | 
					        strNoInternet  = WatchUi.loadResource($.Rez.Strings.NoInternet);
 | 
				
			||||||
        strNoMenu      = WatchUi.loadResource($.Rez.Strings.NoMenu);
 | 
					        strNoMenu      = WatchUi.loadResource($.Rez.Strings.NoMenu);
 | 
				
			||||||
 | 
					        strApiFlood    = WatchUi.loadResource($.Rez.Strings.ApiFlood);
 | 
				
			||||||
        timer          = new Timer.Timer();
 | 
					        timer          = new Timer.Timer();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -89,14 +93,24 @@ class HomeAssistantApp extends Application.AppBase {
 | 
				
			|||||||
            System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: " + responseCode);
 | 
					            System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: " + responseCode);
 | 
				
			||||||
            System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Data: " + data);
 | 
					            System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Data: " + data);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (responseCode == 200) {
 | 
					        if (responseCode == Communications.BLE_QUEUE_FULL) {
 | 
				
			||||||
 | 
					            if (Globals.debug) {
 | 
				
			||||||
 | 
					                System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            var cw = WatchUi.getCurrentView();
 | 
				
			||||||
 | 
					            if (!(cw[0] instanceof ErrorView)) {
 | 
				
			||||||
 | 
					                // Avoid pushing multiple ErrorViews
 | 
				
			||||||
 | 
					                WatchUi.pushView(new ErrorView(strApiFlood), new ErrorDelegate(), WatchUi.SLIDE_UP);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } else if (responseCode == 200) {
 | 
				
			||||||
            haMenu = new HomeAssistantView(data, null);
 | 
					            haMenu = new HomeAssistantView(data, null);
 | 
				
			||||||
 | 
					            WatchUi.switchToView(haMenu, new HomeAssistantViewDelegate(), WatchUi.SLIDE_IMMEDIATE);
 | 
				
			||||||
 | 
					            itemsToUpdate = haMenu.getItemsToUpdate();
 | 
				
			||||||
            timer.start(
 | 
					            timer.start(
 | 
				
			||||||
                haMenu.method(:stateUpdate),
 | 
					                method(:updateNextMenuItem),
 | 
				
			||||||
                Globals.updateInterval * 1000,
 | 
					                Globals.menuItemUpdateInterval,
 | 
				
			||||||
                true
 | 
					                true
 | 
				
			||||||
            );
 | 
					            );
 | 
				
			||||||
            WatchUi.switchToView(haMenu, new HomeAssistantViewDelegate(), WatchUi.SLIDE_IMMEDIATE);
 | 
					 | 
				
			||||||
        } else if (responseCode == -300) {
 | 
					        } else if (responseCode == -300) {
 | 
				
			||||||
            if (Globals.debug) {
 | 
					            if (Globals.debug) {
 | 
				
			||||||
                System.println("HomeAssistantApp Note - onReturnFetchMenuConfig(): Network request timeout.");
 | 
					                System.println("HomeAssistantApp Note - onReturnFetchMenuConfig(): Network request timeout.");
 | 
				
			||||||
@@ -123,6 +137,14 @@ class HomeAssistantApp extends Application.AppBase {
 | 
				
			|||||||
        );
 | 
					        );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // 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 {
 | 
				
			||||||
 | 
					        var itu = itemsToUpdate as Lang.Array<HomeAssistantToggleMenuItem>;
 | 
				
			||||||
 | 
					        itu[nextItemToUpdate].getState();
 | 
				
			||||||
 | 
					        nextItemToUpdate = (nextItemToUpdate + 1) % itu.size();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function getApp() as HomeAssistantApp {
 | 
					function getApp() as HomeAssistantApp {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,6 +26,7 @@ using Toybox.Application.Properties;
 | 
				
			|||||||
class HomeAssistantMenuItem extends WatchUi.MenuItem {
 | 
					class HomeAssistantMenuItem extends WatchUi.MenuItem {
 | 
				
			||||||
    hidden var api_key = Properties.getValue("api_key");
 | 
					    hidden var api_key = Properties.getValue("api_key");
 | 
				
			||||||
    hidden var strNoInternet as Lang.String;
 | 
					    hidden var strNoInternet as Lang.String;
 | 
				
			||||||
 | 
					    hidden var strApiFlood   as Lang.String;
 | 
				
			||||||
    hidden var mService as Lang.String or Null;
 | 
					    hidden var mService as Lang.String or Null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function initialize(
 | 
					    function initialize(
 | 
				
			||||||
@@ -39,6 +40,7 @@ class HomeAssistantMenuItem extends WatchUi.MenuItem {
 | 
				
			|||||||
        } or Null
 | 
					        } or Null
 | 
				
			||||||
    ) {
 | 
					    ) {
 | 
				
			||||||
        strNoInternet = WatchUi.loadResource($.Rez.Strings.NoInternet);
 | 
					        strNoInternet = WatchUi.loadResource($.Rez.Strings.NoInternet);
 | 
				
			||||||
 | 
					        strApiFlood   = WatchUi.loadResource($.Rez.Strings.ApiFlood);
 | 
				
			||||||
        mService = service;
 | 
					        mService = service;
 | 
				
			||||||
        WatchUi.MenuItem.initialize(
 | 
					        WatchUi.MenuItem.initialize(
 | 
				
			||||||
            label,
 | 
					            label,
 | 
				
			||||||
@@ -52,10 +54,19 @@ class HomeAssistantMenuItem extends WatchUi.MenuItem {
 | 
				
			|||||||
    //
 | 
					    //
 | 
				
			||||||
    function onReturnExecScript(responseCode as Lang.Number, data as Null or Lang.Dictionary or Lang.String) as Void {
 | 
					    function onReturnExecScript(responseCode as Lang.Number, data as Null or Lang.Dictionary or Lang.String) as Void {
 | 
				
			||||||
        if (Globals.debug) {
 | 
					        if (Globals.debug) {
 | 
				
			||||||
            System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: " + responseCode);
 | 
					            System.println("HomeAssistantMenuItem onReturnExecScript() Response Code: " + responseCode);
 | 
				
			||||||
            System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Data: " + data);
 | 
					            System.println("HomeAssistantMenuItem onReturnExecScript() Response Data: " + data);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (responseCode == 200) {
 | 
					        if (responseCode == Communications.BLE_QUEUE_FULL) {
 | 
				
			||||||
 | 
					            if (Globals.debug) {
 | 
				
			||||||
 | 
					                System.println("HomeAssistantMenuItem onReturnExecScript() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            var cw = WatchUi.getCurrentView();
 | 
				
			||||||
 | 
					            if (!(cw[0] instanceof ErrorView)) {
 | 
				
			||||||
 | 
					                // Avoid pushing multiple ErrorViews
 | 
				
			||||||
 | 
					                WatchUi.pushView(new ErrorView(strApiFlood), new ErrorDelegate(), WatchUi.SLIDE_UP);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } else if (responseCode == 200) {
 | 
				
			||||||
            var d = data as Lang.Array;
 | 
					            var d = data as Lang.Array;
 | 
				
			||||||
            for(var i = 0; i < d.size(); i++) {
 | 
					            for(var i = 0; i < d.size(); i++) {
 | 
				
			||||||
                if ((d[i].get("entity_id") as Lang.String).equals(mIdentifier)) {
 | 
					                if ((d[i].get("entity_id") as Lang.String).equals(mIdentifier)) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,6 +26,7 @@ using Toybox.Application.Properties;
 | 
				
			|||||||
class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
 | 
					class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
 | 
				
			||||||
    hidden var api_key = Properties.getValue("api_key");
 | 
					    hidden var api_key = Properties.getValue("api_key");
 | 
				
			||||||
    hidden var strNoInternet as Lang.String;
 | 
					    hidden var strNoInternet as Lang.String;
 | 
				
			||||||
 | 
					    hidden var strApiFlood   as Lang.String;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function initialize(
 | 
					    function initialize(
 | 
				
			||||||
        label as Lang.String or Lang.Symbol,
 | 
					        label as Lang.String or Lang.Symbol,
 | 
				
			||||||
@@ -41,6 +42,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
 | 
				
			|||||||
        } or Null
 | 
					        } or Null
 | 
				
			||||||
    ) {
 | 
					    ) {
 | 
				
			||||||
        strNoInternet = WatchUi.loadResource($.Rez.Strings.NoInternet);
 | 
					        strNoInternet = WatchUi.loadResource($.Rez.Strings.NoInternet);
 | 
				
			||||||
 | 
					        strApiFlood   = WatchUi.loadResource($.Rez.Strings.ApiFlood);
 | 
				
			||||||
        WatchUi.ToggleMenuItem.initialize(label, subLabel, identifier, enabled, options);
 | 
					        WatchUi.ToggleMenuItem.initialize(label, subLabel, identifier, enabled, options);
 | 
				
			||||||
        api_key = Properties.getValue("api_key");
 | 
					        api_key = Properties.getValue("api_key");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -64,7 +66,16 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
 | 
				
			|||||||
            System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: " + responseCode);
 | 
					            System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: " + responseCode);
 | 
				
			||||||
            System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Data: " + data);
 | 
					            System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Data: " + data);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (responseCode == 200) {
 | 
					        if (responseCode == Communications.BLE_QUEUE_FULL) {
 | 
				
			||||||
 | 
					            if (Globals.debug) {
 | 
				
			||||||
 | 
					                System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            var cw = WatchUi.getCurrentView();
 | 
				
			||||||
 | 
					            if (!(cw[0] instanceof ErrorView)) {
 | 
				
			||||||
 | 
					                // Avoid pushing multiple ErrorViews
 | 
				
			||||||
 | 
					                WatchUi.pushView(new ErrorView(strApiFlood), new ErrorDelegate(), WatchUi.SLIDE_UP);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } else if (responseCode == 200) {
 | 
				
			||||||
            var state = data.get("state") as Lang.String;
 | 
					            var state = data.get("state") as Lang.String;
 | 
				
			||||||
            if (Globals.debug) {
 | 
					            if (Globals.debug) {
 | 
				
			||||||
                System.println((data.get("attributes") as Lang.Dictionary).get("friendly_name") + " State=" + state);
 | 
					                System.println((data.get("attributes") as Lang.Dictionary).get("friendly_name") + " State=" + state);
 | 
				
			||||||
@@ -107,10 +118,19 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
 | 
				
			|||||||
    //
 | 
					    //
 | 
				
			||||||
    function onReturnSetState(responseCode as Lang.Number, data as Null or Lang.Dictionary or Lang.String) as Void {
 | 
					    function onReturnSetState(responseCode as Lang.Number, data as Null or Lang.Dictionary or Lang.String) as Void {
 | 
				
			||||||
        if (Globals.debug) {
 | 
					        if (Globals.debug) {
 | 
				
			||||||
            System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: " + responseCode);
 | 
					            System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: " + responseCode);
 | 
				
			||||||
            System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Data: " + data);
 | 
					            System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Data: " + data);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (responseCode == 200) {
 | 
					        if (responseCode == Communications.BLE_QUEUE_FULL) {
 | 
				
			||||||
 | 
					            if (Globals.debug) {
 | 
				
			||||||
 | 
					                System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            var cw = WatchUi.getCurrentView();
 | 
				
			||||||
 | 
					            if (!(cw[0] instanceof ErrorView)) {
 | 
				
			||||||
 | 
					                // Avoid pushing multiple ErrorViews
 | 
				
			||||||
 | 
					                WatchUi.pushView(new ErrorView(strApiFlood), new ErrorDelegate(), WatchUi.SLIDE_UP);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } else if (responseCode == 200) {
 | 
				
			||||||
            var state;
 | 
					            var state;
 | 
				
			||||||
            var d = data as Lang.Array;
 | 
					            var d = data as Lang.Array;
 | 
				
			||||||
            for(var i = 0; i < d.size(); i++) {
 | 
					            for(var i = 0; i < d.size(); i++) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,6 +24,9 @@ using Toybox.WatchUi;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class HomeAssistantView extends WatchUi.Menu2 {
 | 
					class HomeAssistantView extends WatchUi.Menu2 {
 | 
				
			||||||
    hidden var strMenuItemTap as Lang.String;
 | 
					    hidden var strMenuItemTap as Lang.String;
 | 
				
			||||||
 | 
					    // List of items that need to have their status updated periodically
 | 
				
			||||||
 | 
					    hidden var mListToggleItems = [];
 | 
				
			||||||
 | 
					    hidden var mListMenuItems   = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function initialize(
 | 
					    function initialize(
 | 
				
			||||||
        definition as Lang.Dictionary,
 | 
					        definition as Lang.Dictionary,
 | 
				
			||||||
@@ -56,15 +59,15 @@ class HomeAssistantView extends WatchUi.Menu2 {
 | 
				
			|||||||
            var service = items[i].get("service") as Lang.String or Null;
 | 
					            var service = items[i].get("service") as Lang.String or Null;
 | 
				
			||||||
            if (type != null && name != null && entity != null) {
 | 
					            if (type != null && name != null && entity != null) {
 | 
				
			||||||
                if (type.equals("toggle")) {
 | 
					                if (type.equals("toggle")) {
 | 
				
			||||||
                    addItem(
 | 
					                    var item = new HomeAssistantToggleMenuItem(
 | 
				
			||||||
                        new HomeAssistantToggleMenuItem(
 | 
					 | 
				
			||||||
                        name,
 | 
					                        name,
 | 
				
			||||||
                        toggle_obj,
 | 
					                        toggle_obj,
 | 
				
			||||||
                        entity,
 | 
					                        entity,
 | 
				
			||||||
                        false,
 | 
					                        false,
 | 
				
			||||||
                        null
 | 
					                        null
 | 
				
			||||||
                        )
 | 
					 | 
				
			||||||
                    );
 | 
					                    );
 | 
				
			||||||
 | 
					                    addItem(item);
 | 
				
			||||||
 | 
					                    mListToggleItems.add(item);
 | 
				
			||||||
                } else if (type.equals("tap")) {
 | 
					                } else if (type.equals("tap")) {
 | 
				
			||||||
                    addItem(
 | 
					                    addItem(
 | 
				
			||||||
                        new HomeAssistantMenuItem(
 | 
					                        new HomeAssistantMenuItem(
 | 
				
			||||||
@@ -76,46 +79,27 @@ class HomeAssistantView extends WatchUi.Menu2 {
 | 
				
			|||||||
                        )
 | 
					                        )
 | 
				
			||||||
                    );
 | 
					                    );
 | 
				
			||||||
                } else if (type.equals("group")) {
 | 
					                } else if (type.equals("group")) {
 | 
				
			||||||
                    addItem(
 | 
					                    var item = new HomeAssistantViewMenuItem(items[i]);
 | 
				
			||||||
                        new HomeAssistantViewMenuItem(items[i])
 | 
					                    addItem(item);
 | 
				
			||||||
                    );
 | 
					                    mListMenuItems.add(item);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    function getItemsToUpdate() as Lang.Array<HomeAssistantToggleMenuItem> {
 | 
				
			||||||
 | 
					        var fullList = [];
 | 
				
			||||||
 | 
					        var lmi = mListMenuItems as Lang.Array<HomeAssistantViewMenuItem>;
 | 
				
			||||||
 | 
					        for(var i = 0; i < lmi.size(); i++) {
 | 
				
			||||||
 | 
					            fullList.addAll(lmi[i].getMenuView().getItemsToUpdate());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return fullList.addAll(mListToggleItems);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Called when this View is brought to the foreground. Restore
 | 
					    // Called when this View is brought to the foreground. Restore
 | 
				
			||||||
    // the state of this View and prepare it to be shown. This includes
 | 
					    // the state of this View and prepare it to be shown. This includes
 | 
				
			||||||
    // loading resources into memory.
 | 
					    // loading resources into memory.
 | 
				
			||||||
    function onShow() as Void {
 | 
					    function onShow() as Void {}
 | 
				
			||||||
        for(var i = 0; i < mItems.size(); i++) {
 | 
					 | 
				
			||||||
            if (mItems[i] instanceof HomeAssistantToggleMenuItem) {
 | 
					 | 
				
			||||||
                var toggleItem = mItems[i] as HomeAssistantToggleMenuItem;
 | 
					 | 
				
			||||||
                toggleItem.getState();
 | 
					 | 
				
			||||||
                if (Globals.debug) {
 | 
					 | 
				
			||||||
                    System.println("HomeAssistantView Note: " + toggleItem.getLabel() + " ID=" + toggleItem.getId() + " Enabled=" + toggleItem.isEnabled());
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    function stateUpdate() as Void {
 | 
					 | 
				
			||||||
        for(var i = 0; i < mItems.size(); i++) {
 | 
					 | 
				
			||||||
            if (mItems[i] instanceof HomeAssistantToggleMenuItem) {
 | 
					 | 
				
			||||||
                var toggleItem = mItems[i] as HomeAssistantToggleMenuItem;
 | 
					 | 
				
			||||||
                toggleItem.getState();
 | 
					 | 
				
			||||||
                if (Globals.debug) {
 | 
					 | 
				
			||||||
                    System.println("HomeAssistantView Toggle stateUpdate: " + toggleItem.getLabel() + " ID=" + toggleItem.getId() + " Enabled=" + toggleItem.isEnabled());
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            } else if (mItems[i] instanceof HomeAssistantViewMenuItem) {
 | 
					 | 
				
			||||||
                var menu = mItems[i] as HomeAssistantViewMenuItem;
 | 
					 | 
				
			||||||
                if (Globals.debug) {
 | 
					 | 
				
			||||||
                    System.println("HomeAssistantView Menu stateUpdate: " + menu.getLabel() + " ID=" + menu.getId());
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                menu.getMenuView().stateUpdate();
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user