Added 54 devices
Added vibrate knowledgement Fall back to a home made alert if no toast or vibrate Support for 80 devices, 54 new ones added
							
								
								
									
										12
									
								
								HomeAssistant.code-workspace
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,12 @@ | ||||
| { | ||||
| 	"folders": [ | ||||
| 		{ | ||||
| 			"path": "." | ||||
| 		}, | ||||
| 		{ | ||||
| 			"name": "abc", | ||||
| 			"path": "../blah/abc" | ||||
| 		} | ||||
| 	], | ||||
| 	"settings": {} | ||||
| } | ||||
| @@ -48,6 +48,7 @@ original = (96, 48, 24) | ||||
| lookup = { | ||||
|   #   Doub Sing Half | ||||
|   #      0   1   2 | ||||
|   454: (106, 53, 27), | ||||
| #  416: ( 96, 48, 24), | ||||
|   390: ( 90, 46, 23), | ||||
|   360: ( 84, 42, 21), | ||||
| @@ -56,6 +57,9 @@ lookup = { | ||||
|   260: ( 60, 30, 15), | ||||
|   240: ( 56, 28, 14), | ||||
|   218: ( 50, 26, 13), | ||||
|   208: ( 48, 24, 12), | ||||
|   176: ( 42, 21, 11), | ||||
|   156: ( 36, 18,  9) | ||||
| } | ||||
|  | ||||
| # Delete all but the original 48x48 icon directories | ||||
| @@ -67,6 +71,8 @@ for entry in os.listdir("."): | ||||
| for screen_size, icon_sizes in lookup.items(): | ||||
|   output_dir = output_dir_prefix + str(icon_sizes[Sing]) | ||||
|   print("\nCreate directory:", output_dir) | ||||
|   if os.path.exists(output_dir) and os.path.isdir(output_dir): | ||||
|     shutil.rmtree(output_dir) | ||||
|   os.makedirs(output_dir) | ||||
|   for entry in os.listdir(input_dir): | ||||
|     if entry.endswith(".svg"): | ||||
|   | ||||
							
								
								
									
										96
									
								
								manifest.xml
									
									
									
									
									
								
							
							
						
						| @@ -30,19 +30,100 @@ | ||||
|       "Monkey C: Edit Products" - Lets you add or remove any product | ||||
|     --> | ||||
|     <iq:products> | ||||
|       <!-- | ||||
|         Device Information & References: | ||||
|         * https://developer.garmin.com/connect-iq/compatible-devices/ | ||||
|         * https://developer.garmin.com/connect-iq/reference-guides/devices-reference/#epix%E2%84%A2progen251mmtactix%C2%AE7%E2%80%93amolededition | ||||
|       --> | ||||
|  | ||||
|       <!-- Screen Size 390x390 launcher icon size 70x70 --> | ||||
|       <iq:product id="approachs7042mm"/> | ||||
|       <!-- Screen Size 454x454 launcher icon size 80x80 --> | ||||
|       <iq:product id="approachs7047mm"/> | ||||
|       <!-- Screen Size 176x176 launcher icon size 62x62 --> | ||||
|       <iq:product id="descentg1"/> | ||||
|       <!-- Screen Size 280x280 launcher icon size 40x40 --> | ||||
|       <iq:product id="descentmk2"/> | ||||
|       <!-- Screen Size 240x240 launcher icon size 40x40 --> | ||||
|       <iq:product id="descentmk2s"/> | ||||
|       <!-- Screen Size 416x416 launcher icon size 70x70 --> | ||||
|       <iq:product id="d2airx10"/> | ||||
|       <!-- Screen Size 416x416 launcher icon size 60x60 --> | ||||
|       <iq:product id="d2mach1"/> | ||||
|       <!-- Screen Size 282x470 launcher icon size 36x36 --> | ||||
|       <iq:product id="edge1030"/> | ||||
|       <iq:product id="edge1030bontrager"/> | ||||
|       <iq:product id="edge1030plus"/> | ||||
|       <!-- Screen Size 282x470 launcher icon size 40x40 --> | ||||
|       <iq:product id="edge1040"/> | ||||
|       <!-- Screen Size 246x322 launcher icon size 35x35 --> | ||||
|       <iq:product id="edge530"/> | ||||
|       <iq:product id="edge830"/> | ||||
|       <!-- Screen Size 240x400 launcher icon size 36x36 --> | ||||
|       <iq:product id="edgeexplore2"/> | ||||
|       <!-- Screen Size 280x280 launcher icon size 40x40 --> | ||||
|       <iq:product id="enduro"/> | ||||
|       <iq:product id="epix2"/> | ||||
|       <!-- Screen Size 390x390 launcher icon size 60x60 --> | ||||
|       <iq:product id="epix2pro42mm"/> | ||||
|       <iq:product id="epix2pro47mm"/> | ||||
|       <!-- Screen Size 454x454 launcher icon size 60x60 --> | ||||
|       <iq:product id="epix2pro51mm"/> | ||||
|       <!-- Screen Size 240x240 launcher icon size 40x40 --> | ||||
|       <iq:product id="fenix5plus"/> | ||||
|       <iq:product id="fenix5splus"/> | ||||
|       <iq:product id="fenix5xplus"/> | ||||
|       <!-- Screen Size 260x260 launcher icon size 40x40 --> | ||||
|       <iq:product id="fenix6"/> | ||||
|       <iq:product id="fenix6pro"/> | ||||
|       <!-- Screen Size 240x240 launcher icon size 40x40 --> | ||||
|       <iq:product id="fenix6s"/> | ||||
|       <iq:product id="fenix6spro"/> | ||||
|       <!-- Screen Size 280x280 launcher icon size 40x40 --> | ||||
|       <iq:product id="fenix6xpro"/> | ||||
|       <!-- Screen Size 260x260 launcher icon size 40x40 --> | ||||
|       <iq:product id="fenix7"/> | ||||
|       <!-- Screen Size 260x260 launcher icon size 40x40 --> | ||||
|       <iq:product id="fenix7pro"/> | ||||
|       <iq:product id="fenix7pronowifi"/> | ||||
|       <!-- Screen Size 240x240 launcher icon size 40x40 --> | ||||
|       <iq:product id="fenix7s"/> | ||||
|       <!-- Screen Size 240x240 launcher icon size 40x40 --> | ||||
|       <iq:product id="fenix7spro"/> | ||||
|       <!-- Screen Size 280x280 launcher icon size 40x40 --> | ||||
|       <iq:product id="fenix7x"/> | ||||
|       <!-- Screen Size 280x280 launcher icon size 40x40 --> | ||||
|       <iq:product id="fenix7xpro"/> | ||||
|       <iq:product id="fenix7xpronowifi"/> | ||||
|       <!-- Screen Size 240x240 launcher icon size 40x40 --> | ||||
|       <iq:product id="fr245"/> | ||||
|       <iq:product id="fr245m"/> | ||||
|       <!-- Screen Size 260x260 launcher icon size 40x40 --> | ||||
|       <iq:product id="fr255"/> | ||||
|       <iq:product id="fr255m"/> | ||||
|       <!-- Screen Size 218x218 launcher icon size 40x40 --> | ||||
|       <iq:product id="fr255s"/> | ||||
|       <iq:product id="fr255sm"/> | ||||
|       <!-- Screen Size 416x416 launcher icon size 60x60 --> | ||||
|       <iq:product id="fr265"/> | ||||
|       <iq:product id="fr265s"/> | ||||
|       <!-- Screen Size 208x208 launcher icon size 35x35 --> | ||||
|       <iq:product id="fr55"/> | ||||
|       <!-- Screen Size 240x240 launcher icon size 40x40 --> | ||||
|       <iq:product id="fr745"/> | ||||
|       <iq:product id="fr945"/> | ||||
|       <iq:product id="fr945lte"/> | ||||
|       <!-- Screen Size 260x260 launcher icon size 40x40 --> | ||||
|       <iq:product id="fr955"/> | ||||
|       <!-- Screen Size 454x454 launcher icon size 65x65 --> | ||||
|       <iq:product id="fr965"/> | ||||
|       <!-- Screen Size 176x176 launcher icon size 62x62 --> | ||||
|       <iq:product id="instinct2"/> | ||||
|       <!-- Screen Size 163x156 launcher icon size 54x54 --> | ||||
|       <iq:product id="instinct2s"/> | ||||
|       <!-- Screen Size 176x176 launcher icon size 62x62 --> | ||||
|       <iq:product id="instinct2x"/> | ||||
|       <iq:product id="instinctcrossover"/> | ||||
|       <!-- Screen Size 218x218 launcher icon size 30x30 --> | ||||
|       <iq:product id="legacyherocaptainmarvel"/> | ||||
|       <!-- Screen Size 260x260 launcher icon size 35x35 --> | ||||
| @@ -50,6 +131,15 @@ | ||||
|       <iq:product id="legacysagadarthvader"/> | ||||
|       <!-- Screen Size 218x218 launcher icon size 30x30 --> | ||||
|       <iq:product id="legacysagarey"/> | ||||
|       <!-- Screen Size 240x240 launcher icon size 40x40 --> | ||||
|       <iq:product id="marqadventurer"/> | ||||
|       <iq:product id="marqathlete"/> | ||||
|       <iq:product id="marqaviator"/> | ||||
|       <iq:product id="marqcaptain"/> | ||||
|       <iq:product id="marqcommander"/> | ||||
|       <iq:product id="marqdriver"/> | ||||
|       <iq:product id="marqexpedition"/> | ||||
|       <iq:product id="marqgolfer"/> | ||||
|       <!-- Screen Size 390x390 launcher icon size 60x60 --> | ||||
|       <iq:product id="marq2"/> | ||||
|       <iq:product id="marq2aviator"/> | ||||
| @@ -66,10 +156,16 @@ | ||||
|       <!-- Screen Size 320x360 launcher icon size 40x40 --> | ||||
|       <iq:product id="venusq2"/> | ||||
|       <iq:product id="venusq2m"/> | ||||
|       <!-- Screen Size 454x454 launcher icon size 70x70 --> | ||||
|       <iq:product id="venu3"/> | ||||
|       <!-- Screen Size 390x390 launcher icon size 70x70 --> | ||||
|       <iq:product id="venu3s"/> | ||||
|       <!-- Screen Size 260x260 launcher icon size 35x35 --> | ||||
|       <iq:product id="vivoactive4"/> | ||||
|       <!-- Screen Size 218x218 launcher icon size 30x30 --> | ||||
|       <iq:product id="vivoactive4s"/> | ||||
|       <!-- Screen Size 390x390 launcher icon size 70x70 --> | ||||
|       <iq:product id="vivoactive5"/> | ||||
|     </iq:products> | ||||
|     <!-- | ||||
|       Use "Monkey C: Edit Permissions" from the Visual Studio Code command | ||||
|   | ||||
							
								
								
									
										100
									
								
								monkey.jungle
									
									
									
									
									
								
							
							
						
						| @@ -18,31 +18,110 @@ | ||||
|  | ||||
| project.manifest = manifest.xml | ||||
|  | ||||
| # Device Reference | ||||
| # https://developer.garmin.com/connect-iq/reference-guides/devices-reference/ | ||||
| # | ||||
| # Widget launcher icon, multiple resolutions | ||||
| # https://forums.garmin.com/developer/connect-iq/f/discussion/255433/widget-launcher-icon-multiple-resolutions/1563305 | ||||
| # | ||||
| # Use the online SVG converter to write out PNGs from "resources\drawables\launcher.svg" by changing | ||||
| # the 'width' and 'height' attributes of the SVG. | ||||
| # https://svgtopng.com/ | ||||
|  | ||||
| # | ||||
| # The icons need to scale as a ratio of screen size 48:416 pixels | ||||
| # | ||||
| # Icon     48   45   42   37   32   30   28   25 | ||||
| # Screen  416  390  360  320  280  260  240  218 | ||||
| # Icon     53   48   46   42   37   32   30   28   26   24   21   18 | ||||
| # Screen  454  416  390  360  320  280  260  240  218  208  176  156 | ||||
|  | ||||
| # Screen Size 390x390 launcher icon size 70x70 | ||||
| approachs7042mm.resourcePath = $(approachs7042mm.resourcePath);resources-launcher-70-70;resources-icons-46 | ||||
| # Screen Size 454x454 launcher icon size 80x80 | ||||
| approachs7047mm.resourcePath = $(approachs7047mm.resourcePath);resources-launcher-80-80;resources-icons-53 | ||||
| # Screen Size 176x176 launcher icon size 62x62 | ||||
| descentg1.resourcePath = $(descentg1.resourcePath);resources-launcher-62-62;resources-icons-21 | ||||
| # Screen Size 280x280 launcher icon size 40x40 | ||||
| descentmk2.resourcePath = $(descentmk2.resourcePath);resources-launcher-40-40;resources-icons-32 | ||||
| # Screen Size 240x240 launcher icon size 40x40 | ||||
| descentmk2s.resourcePath = $(descentmk2s.resourcePath);resources-launcher-40-40;resources-icons-28 | ||||
| # Screen Size 282x470 launcher icon size 36x36 | ||||
| edge1030.resourcePath = $(descentmk2s.resourcePath);resources-launcher-36-36;resources-icons-32 | ||||
| edge1030bontrager.resourcePath = $(edge1030bontrager.resourcePath);resources-launcher-36-36;resources-icons-32 | ||||
| edge1030plus.resourcePath = $(edge1030plus.resourcePath);resources-launcher-36-36;resources-icons-32 | ||||
| # Screen Size 282x470 launcher icon size 40x40 | ||||
| edge1040.resourcePath = $(edge1040.resourcePath);resources-launcher-40-40;resources-icons-32 | ||||
| # Screen Size 246x322 launcher icon size 35x35 | ||||
| edge530.resourcePath = $(edge530.resourcePath);resources-launcher-35-35;resources-icons-28 | ||||
| edge830.resourcePath = $(edge830.resourcePath);resources-launcher-35-35;resources-icons-28 | ||||
| # Screen Size 240x400 launcher icon size 36x36 | ||||
| edgeexplore2.resourcePath = $(edgeexplore2.resourcePath);resources-launcher-36-36;resources-icons-28 | ||||
| # Screen Size 280x280 launcher icon size 40x40 | ||||
| enduro.resourcePath = $(enduro.resourcePath);resources-launcher-40-40;resources-icons-32 | ||||
| # Screen Size 416x416 launcher icon size 70x70 | ||||
| d2airx10.resourcePath = $(d2airx10.resourcePath);resources-launcher-70-70;resources-icons-48 | ||||
| # Screen Size 416x416 launcher icon size 60x60 | ||||
| d2mach1.resourcePath = $(d2mach1.resourcePath);resources-launcher-60-60;resources-icons-48 | ||||
| # Screen Size 416x416 launcher icon size 60x60 | ||||
| epix2.resourcePath = $(epix2.resourcePath);resources-launcher-60-60;resources-icons-48 | ||||
| # Screen Size 390x390 launcher icon size 60x60 | ||||
| epix2pro42mm.resourcePath = $(epix2pro42mm.resourcePath);resources-launcher-60-60;resources-icons-46 | ||||
| epix2pro47mm.resourcePath = $(epix2pro47mm.resourcePath);resources-launcher-60-60;resources-icons-46 | ||||
| # Screen Size 454x454 launcher icon size 60x60 | ||||
| epix2pro51mm.resourcePath = $(epix2pro51mm.resourcePath);resources-launcher-60-60;resources-icons-53 | ||||
| # Screen Size 240x240 launcher icon size 40x40 | ||||
| fenix5plus.resourcePath = $(fenix5plus.resourcePath);resources-launcher-40-40;resources-icons-28 | ||||
| fenix5splus.resourcePath = $(fenix5splus.resourcePath);resources-launcher-40-40;resources-icons-28 | ||||
| fenix5xplus.resourcePath = $(fenix5xplus.resourcePath);resources-launcher-40-40;resources-icons-28 | ||||
| # Screen Size 260x260 launcher icon size 40x40 | ||||
| fenix6.resourcePath = $(fenix6.resourcePath);resources-launcher-40-40;resources-icons-30 | ||||
| fenix6pro.resourcePath = $(fenix6pro.resourcePath);resources-launcher-40-40;resources-icons-30 | ||||
| # Screen Size 240x240 launcher icon size 40x40 | ||||
| fenix6s.resourcePath = $(fenix6s.resourcePath);resources-launcher-40-40;resources-icons-28 | ||||
| fenix6spro.resourcePath = $(fenix6spro.resourcePath);resources-launcher-40-40;resources-icons-28 | ||||
| # Screen Size 280x280 launcher icon size 40x40 | ||||
| fenix6xpro.resourcePath = $(fenix6xpro.resourcePath);resources-launcher-40-40;resources-icons-32 | ||||
| # Screen Size 260x260 launcher icon size 40x40 | ||||
| fenix7.resourcePath = $(fenix7.resourcePath);resources-launcher-40-40;resources-icons-30 | ||||
| # Screen Size 260x260 launcher icon size 40x40 | ||||
| fenix7pro.resourcePath = $(fenix7pro.resourcePath);resources-launcher-40-40;resources-icons-30 | ||||
| fenix7pronowifi.resourcePath = $(fenix7pronowifi.resourcePath);resources-launcher-40-40;resources-icons-30 | ||||
| # Screen Size 240x240 launcher icon size 40x40 | ||||
| fenix7s.resourcePath = $(fenix7s.resourcePath);resources-launcher-40-40;resources-icons-28 | ||||
| # Screen Size 240x240 launcher icon size 40x40 | ||||
| fenix7spro.resourcePath = $(fenix7spro.resourcePath);resources-launcher-40-40;resources-icons-28 | ||||
| # Screen Size 280x280 launcher icon size 40x40 | ||||
| fenix7x.resourcePath = $(fenix7x.resourcePath);resources-launcher-40-40;resources-icons-32 | ||||
| # Screen Size 280x280 launcher icon size 40x40 | ||||
| fenix7xpro.resourcePath = $(fenix7xpro.resourcePath);resources-launcher-40-40;resources-icons-32 | ||||
| fenix7xpronowifi.resourcePath = $(fenix7xpronowifi.resourcePath);resources-launcher-40-40;resources-icons-32 | ||||
| # Screen Size 240x240 launcher icon size 40x40 | ||||
| fr245.resourcePath = $(fr245.resourcePath);resources-launcher-40-40;resources-icons-28 | ||||
| fr245m.resourcePath = $(fr245m.resourcePath);resources-launcher-40-40;resources-icons-28 | ||||
| # Screen Size 260x260 launcher icon size 40x40 | ||||
| fr255.resourcePath = $(fr255.resourcePath);resources-launcher-40-40;resources-icons-30 | ||||
| fr255m.resourcePath = $(fr255m.resourcePath);resources-launcher-40-40;resources-icons-30 | ||||
| # Screen Size 218x218 launcher icon size 40x40 | ||||
| fr255s.resourcePath = $(fr255s.resourcePath);resources-launcher-40-40;resources-icons-26 | ||||
| fr255sm.resourcePath = $(fr255sm.resourcePath);resources-launcher-40-40;resources-icons-26 | ||||
| # Screen Size 416x416 launcher icon size 60x60 | ||||
| fr265.resourcePath = $(fr265.resourcePath);resources-launcher-60-60;resources-icons-48 | ||||
| fr265s.resourcePath = $(fr265s.resourcePath);resources-launcher-60-60;resources-icons-48 | ||||
| # Screen Size 208x208 launcher icon size 35x35 | ||||
| fr55.resourcePath = $(fr55.resourcePath);resources-launcher-35-35;resources-icons-24 | ||||
| # Screen Size 240x240 launcher icon size 40x40 | ||||
| fr745.resourcePath = $(fr745.resourcePath);resources-launcher-40-40;resources-icons-28 | ||||
| fr945.resourcePath = $(fr945.resourcePath);resources-launcher-40-40;resources-icons-28 | ||||
| fr945lte.resourcePath = $(fr945lte.resourcePath);resources-launcher-40-40;resources-icons-28 | ||||
| # Screen Size 260x260 launcher icon size 40x40 | ||||
| fr955.resourcePath = $(fr955.resourcePath);resources-launcher-40-40;resources-icons-30 | ||||
| # Screen Size 454x454 launcher icon size 65x65 | ||||
| fr965.resourcePath = $(fr965.resourcePath);resources-launcher-65-65;resources-icons-53 | ||||
| # Screen Size 176x176 launcher icon size 62x62 | ||||
| instinct2.resourcePath = $(instinct2.resourcePath);resources-launcher-62-62;resources-icons-21 | ||||
| # Screen Size 163x156 launcher icon size 54x54 | ||||
| instinct2s.resourcePath = $(instinct2s.resourcePath);resources-launcher-54-54;resources-icons-18 | ||||
| # Screen Size 176x176 launcher icon size 62x62 | ||||
| instinct2x.resourcePath = $(instinct2x.resourcePath);resources-launcher-62-62;resources-icons-21 | ||||
| instinctcrossover.resourcePath = $(instinctcrossover.resourcePath);resources-launcher-62-62;resources-icons-21 | ||||
| # Screen Size 218x218 launcher icon size 30x30 | ||||
| legacyherocaptainmarvel.resourcePath = $(legacyherocaptainmarvel.resourcePath);resources-launcher-30-30;resources-icons-26 | ||||
| # Screen Size 260x260 launcher icon size 35x35 | ||||
| @@ -50,6 +129,15 @@ legacyherofirstavenger.resourcePath = $(legacyherofirstavenger.resourcePath);res | ||||
| legacysagadarthvader.resourcePath = $(legacysagadarthvader.resourcePath);resources-launcher-35-35;resources-icons-30 | ||||
| # Screen Size 218x218 launcher icon size 30x30 | ||||
| legacysagarey.resourcePath = $(legacysagarey.resourcePath);resources-launcher-30-30;resources-icons-26 | ||||
| # Screen Size 240x240 launcher icon size 40x40 | ||||
| marqadventurer.resourcePath = $(marqadventurer.resourcePath);resources-launcher-40-40;resources-icons-28 | ||||
| marqathlete.resourcePath = $(marqathlete.resourcePath);resources-launcher-40-40;resources-icons-28 | ||||
| marqaviator.resourcePath = $(marqaviator.resourcePath);resources-launcher-40-40;resources-icons-28 | ||||
| marqcaptain.resourcePath = $(marqcaptain.resourcePath);resources-launcher-40-40;resources-icons-28 | ||||
| marqcommander.resourcePath = $(marqcommander.resourcePath);resources-launcher-40-40;resources-icons-28 | ||||
| marqdriver.resourcePath = $(marqdriver.resourcePath);resources-launcher-40-40;resources-icons-28 | ||||
| marqexpedition.resourcePath = $(marqexpedition.resourcePath);resources-launcher-40-40;resources-icons-28 | ||||
| marqgolfer.resourcePath = $(marqgolfer.resourcePath);resources-launcher-40-40;resources-icons-28 | ||||
| # Screen Size 390x390 launcher icon size 60x60 | ||||
| marq2.resourcePath = $(marq2.resourcePath);resources-launcher-60-60;resources-icons-46 | ||||
| marq2aviator.resourcePath = $(marq2aviator.resourcePath);resources-launcher-60-60;resources-icons-46 | ||||
| @@ -66,7 +154,13 @@ venusqm.resourcePath = $(venusqm.resourcePath);resources-launcher-36-36;resource | ||||
| # Screen Size 320x360 launcher icon size 40x40 | ||||
| venusq2.resourcePath = $(venusq2.resourcePath);resources-launcher-40-40;resources-icons-38 | ||||
| venusq2m.resourcePath = $(venusq2m.resourcePath);resources-launcher-40-40;resources-icons-38 | ||||
| # Screen Size 454x454 launcher icon size 70x70 | ||||
| venu3.resourcePath = $(venu3.resourcePath);resources-launcher-70-70;resources-icons-53 | ||||
| # Screen Size 390x390 launcher icon size 70x70 | ||||
| venu3s.resourcePath = $(venu3s.resourcePath);resources-launcher-70-70;resources-icons-46 | ||||
| # Screen Size 260x260 launcher icon size 35x35 | ||||
| vivoactive4.resourcePath = $(vivoactive4.resourcePath);resources-launcher-35-35;resources-icons-30 | ||||
| # Screen Size 218x218 launcher icon size 30x30 | ||||
| vivoactive4s.resourcePath = $(vivoactive4s.resourcePath);resources-launcher-30-30;resources-icons-26 | ||||
| # Screen Size 390x390 launcher icon size 70x70 | ||||
| vivoactive5.resourcePath = $(vivoactive5.resourcePath);resources-launcher-70-70;resources-icons-46 | ||||
|   | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">قائمة طعام</string> | ||||
|   <string id="NoInternet">لا يوجد اتصال بالإنترنت</string> | ||||
|   <string id="NoMenu">خطأ في إحضار القائمة</string> | ||||
|   <string id="NoAPIKey">لا يوجد مفتاح API في إعدادات التطبيق</string> | ||||
|   <string id="NoApiUrl">لا يوجد عنوان URL لواجهة برمجة التطبيقات في إعدادات التطبيق</string> | ||||
|   <string id="NoConfigUrl">لا يوجد عنوان URL للتكوين في إعدادات التطبيق</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">Меню</string> | ||||
|   <string id="NoInternet">Няма интернет връзка</string> | ||||
|   <string id="NoMenu">Грешка при извличане на менюто</string> | ||||
|   <string id="NoAPIKey">Няма API ключ в настройките на приложението</string> | ||||
|   <string id="NoApiUrl">Няма URL адрес на API в настройките на приложението</string> | ||||
|   <string id="NoConfigUrl">Няма конфигурационен URL адрес в настройките на приложението</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">Jídelní lístek</string> | ||||
|   <string id="NoInternet">Žádné internetové připojení</string> | ||||
|   <string id="NoMenu">Chyba načítání nabídky</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="NoConfigUrl">V nastavení aplikace není žádná konfigurační URL</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">Menu</string> | ||||
|   <string id="NoInternet">Ingen internetforbindelse</string> | ||||
|   <string id="NoMenu">Fejl ved menuhentning</string> | ||||
|   <string id="NoAPIKey">Ingen API-nøgle i applikationsindstillingerne</string> | ||||
|   <string id="NoApiUrl">Ingen API-URL i applikationsindstillingerne</string> | ||||
|   <string id="NoConfigUrl">Ingen konfigurations-URL i applikationsindstillingerne</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">Speisekarte</string> | ||||
|   <string id="NoInternet">Keine Internetverbindung</string> | ||||
|   <string id="NoMenu">Fehler beim Abrufen des Menüs</string> | ||||
|   <string id="NoAPIKey">Kein API-Schlüssel in den Anwendungseinstellungen</string> | ||||
|   <string id="NoApiUrl">Keine API-URL in den Anwendungseinstellungen</string> | ||||
|   <string id="NoConfigUrl">Keine Konfigurations-URL in den Anwendungseinstellungen</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">Menu</string> | ||||
|   <string id="NoInternet">Geen internet verbinding</string> | ||||
|   <string id="NoMenu">Fout bij ophalen van menu</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="NoConfigUrl">Geen configuratie-URL in de applicatie-instellingen</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">Menüü</string> | ||||
|   <string id="NoInternet">Interneti-ühendus puudub</string> | ||||
|   <string id="NoMenu">Menüü toomise viga</string> | ||||
|   <string id="NoAPIKey">Rakenduse seadetes pole API-võtit</string> | ||||
|   <string id="NoApiUrl">Rakenduse seadetes pole API URL-i</string> | ||||
|   <string id="NoConfigUrl">Rakenduse seadetes pole konfiguratsiooni URL-i</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">Valikko</string> | ||||
|   <string id="NoInternet">Ei Internet-yhteyttä</string> | ||||
|   <string id="NoMenu">Valikkohakuvirhe</string> | ||||
|   <string id="NoAPIKey">Sovellusasetuksissa ei ole API-avainta</string> | ||||
|   <string id="NoApiUrl">Sovellusasetuksissa ei ole API URL-osoitetta</string> | ||||
|   <string id="NoConfigUrl">Sovelluksen asetuksissa ei ole konfigurointi-URL-osoitetta</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">Menu</string> | ||||
|   <string id="NoInternet">Pas de connexion Internet</string> | ||||
|   <string id="NoMenu">Erreur de récupération du menu</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="NoConfigUrl">Aucune URL de configuration dans les paramètres de l'application</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">Μενού</string> | ||||
|   <string id="NoInternet">Δεν υπάρχει σύνδεση στο διαδίκτυο</string> | ||||
|   <string id="NoMenu">Σφάλμα ανάκτησης μενού</string> | ||||
|   <string id="NoAPIKey">Δεν υπάρχει κλειδί API στις ρυθμίσεις της εφαρμογής</string> | ||||
|   <string id="NoApiUrl">Δεν υπάρχει URL API στις ρυθμίσεις της εφαρμογής</string> | ||||
|   <string id="NoConfigUrl">Δεν υπάρχει διεύθυνση URL διαμόρφωσης στις ρυθμίσεις της εφαρμογής</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">תַפרִיט</string> | ||||
|   <string id="NoInternet">אין חיבור אינטרנט</string> | ||||
|   <string id="NoMenu">שגיאת אחזור תפריט</string> | ||||
|   <string id="NoAPIKey">אין מפתח API בהגדרות האפליקציה</string> | ||||
|   <string id="NoApiUrl">אין כתובת API בהגדרות האפליקציה</string> | ||||
|   <string id="NoConfigUrl">אין כתובת אתר תצורה בהגדרות האפליקציה</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">Jelovnik</string> | ||||
|   <string id="NoInternet">Nema internetske veze</string> | ||||
|   <string id="NoMenu">Pogreška dohvaćanja izbornika</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="NoConfigUrl">Nema konfiguracijskog URL-a u postavkama aplikacije</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">Menü</string> | ||||
|   <string id="NoInternet">Nincs internetkapcsolat</string> | ||||
|   <string id="NoMenu">Menü Lekérési hiba</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="NoConfigUrl">Nincs konfigurációs URL az alkalmazás beállításai között</string> | ||||
| </strings> | ||||
							
								
								
									
										20
									
								
								resources-icons-18/drawables.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,20 @@ | ||||
| <!-- | ||||
|  | ||||
|    Distributed under MIT Licence | ||||
|      See https://github.com/house-of-abbey/GarminHomeAssistant/blob/main/LICENSE. | ||||
|  | ||||
|  | ||||
|    GarminHomeAssistant is a Garmin IQ application written in Monkey C and routinely | ||||
|    tested on a Venu 2 device. The source code is provided at: | ||||
|               https://github.com/house-of-abbey/GarminHomeAssistant. | ||||
|  | ||||
|    J D Abbey & P A Abbey, 28 December 2022 | ||||
|  | ||||
|   References: | ||||
|    * https://fonts.google.com/icons | ||||
|  | ||||
| --> | ||||
|  | ||||
| <drawables> | ||||
|     <bitmap id="ErrorIcon" filename="error.svg"/> | ||||
| </drawables> | ||||
							
								
								
									
										1
									
								
								resources-icons-18/error.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1 @@ | ||||
| <svg height="18" viewBox="0 0 48 48" width="18" xmlns="http://www.w3.org/2000/svg"><path d="M24 34q.7 0 1.175-.475.475-.475.475-1.175 0-.7-.475-1.175Q24.7 30.7 24 30.7q-.7 0-1.175.475-.475.475-.475 1.175 0 .7.475 1.175Q23.3 34 24 34Zm-1.35-7.65h3V13.7h-3ZM24 44q-4.1 0-7.75-1.575-3.65-1.575-6.375-4.3-2.725-2.725-4.3-6.375Q4 28.1 4 23.95q0-4.1 1.575-7.75 1.575-3.65 4.3-6.35 2.725-2.7 6.375-4.275Q19.9 4 24.05 4q4.1 0 7.75 1.575 3.65 1.575 6.35 4.275 2.7 2.7 4.275 6.35Q44 19.85 44 24q0 4.1-1.575 7.75-1.575 3.65-4.275 6.375t-6.35 4.3Q28.15 44 24 44Zm.05-3q7.05 0 12-4.975T41 23.95q0-7.05-4.95-12T24 7q-7.05 0-12.025 4.95Q7 16.9 7 24q0 7.05 4.975 12.025Q16.95 41 24.05 41ZM24 24Z" fill="red" stroke="red"/></svg> | ||||
| After Width: | Height: | Size: 712 B | 
							
								
								
									
										20
									
								
								resources-icons-21/drawables.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,20 @@ | ||||
| <!-- | ||||
|  | ||||
|    Distributed under MIT Licence | ||||
|      See https://github.com/house-of-abbey/GarminHomeAssistant/blob/main/LICENSE. | ||||
|  | ||||
|  | ||||
|    GarminHomeAssistant is a Garmin IQ application written in Monkey C and routinely | ||||
|    tested on a Venu 2 device. The source code is provided at: | ||||
|               https://github.com/house-of-abbey/GarminHomeAssistant. | ||||
|  | ||||
|    J D Abbey & P A Abbey, 28 December 2022 | ||||
|  | ||||
|   References: | ||||
|    * https://fonts.google.com/icons | ||||
|  | ||||
| --> | ||||
|  | ||||
| <drawables> | ||||
|     <bitmap id="ErrorIcon" filename="error.svg"/> | ||||
| </drawables> | ||||
							
								
								
									
										1
									
								
								resources-icons-21/error.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1 @@ | ||||
| <svg height="21" viewBox="0 0 48 48" width="21" xmlns="http://www.w3.org/2000/svg"><path d="M24 34q.7 0 1.175-.475.475-.475.475-1.175 0-.7-.475-1.175Q24.7 30.7 24 30.7q-.7 0-1.175.475-.475.475-.475 1.175 0 .7.475 1.175Q23.3 34 24 34Zm-1.35-7.65h3V13.7h-3ZM24 44q-4.1 0-7.75-1.575-3.65-1.575-6.375-4.3-2.725-2.725-4.3-6.375Q4 28.1 4 23.95q0-4.1 1.575-7.75 1.575-3.65 4.3-6.35 2.725-2.7 6.375-4.275Q19.9 4 24.05 4q4.1 0 7.75 1.575 3.65 1.575 6.35 4.275 2.7 2.7 4.275 6.35Q44 19.85 44 24q0 4.1-1.575 7.75-1.575 3.65-4.275 6.375t-6.35 4.3Q28.15 44 24 44Zm.05-3q7.05 0 12-4.975T41 23.95q0-7.05-4.95-12T24 7q-7.05 0-12.025 4.95Q7 16.9 7 24q0 7.05 4.975 12.025Q16.95 41 24.05 41ZM24 24Z" fill="red" stroke="red"/></svg> | ||||
| After Width: | Height: | Size: 712 B | 
							
								
								
									
										20
									
								
								resources-icons-24/drawables.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,20 @@ | ||||
| <!-- | ||||
|  | ||||
|    Distributed under MIT Licence | ||||
|      See https://github.com/house-of-abbey/GarminHomeAssistant/blob/main/LICENSE. | ||||
|  | ||||
|  | ||||
|    GarminHomeAssistant is a Garmin IQ application written in Monkey C and routinely | ||||
|    tested on a Venu 2 device. The source code is provided at: | ||||
|               https://github.com/house-of-abbey/GarminHomeAssistant. | ||||
|  | ||||
|    J D Abbey & P A Abbey, 28 December 2022 | ||||
|  | ||||
|   References: | ||||
|    * https://fonts.google.com/icons | ||||
|  | ||||
| --> | ||||
|  | ||||
| <drawables> | ||||
|     <bitmap id="ErrorIcon" filename="error.svg"/> | ||||
| </drawables> | ||||
							
								
								
									
										1
									
								
								resources-icons-24/error.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1 @@ | ||||
| <svg height="24" viewBox="0 0 48 48" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M24 34q.7 0 1.175-.475.475-.475.475-1.175 0-.7-.475-1.175Q24.7 30.7 24 30.7q-.7 0-1.175.475-.475.475-.475 1.175 0 .7.475 1.175Q23.3 34 24 34Zm-1.35-7.65h3V13.7h-3ZM24 44q-4.1 0-7.75-1.575-3.65-1.575-6.375-4.3-2.725-2.725-4.3-6.375Q4 28.1 4 23.95q0-4.1 1.575-7.75 1.575-3.65 4.3-6.35 2.725-2.7 6.375-4.275Q19.9 4 24.05 4q4.1 0 7.75 1.575 3.65 1.575 6.35 4.275 2.7 2.7 4.275 6.35Q44 19.85 44 24q0 4.1-1.575 7.75-1.575 3.65-4.275 6.375t-6.35 4.3Q28.15 44 24 44Zm.05-3q7.05 0 12-4.975T41 23.95q0-7.05-4.95-12T24 7q-7.05 0-12.025 4.95Q7 16.9 7 24q0 7.05 4.975 12.025Q16.95 41 24.05 41ZM24 24Z" fill="red" stroke="red"/></svg> | ||||
| After Width: | Height: | Size: 712 B | 
							
								
								
									
										20
									
								
								resources-icons-53/drawables.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,20 @@ | ||||
| <!-- | ||||
|  | ||||
|    Distributed under MIT Licence | ||||
|      See https://github.com/house-of-abbey/GarminHomeAssistant/blob/main/LICENSE. | ||||
|  | ||||
|  | ||||
|    GarminHomeAssistant is a Garmin IQ application written in Monkey C and routinely | ||||
|    tested on a Venu 2 device. The source code is provided at: | ||||
|               https://github.com/house-of-abbey/GarminHomeAssistant. | ||||
|  | ||||
|    J D Abbey & P A Abbey, 28 December 2022 | ||||
|  | ||||
|   References: | ||||
|    * https://fonts.google.com/icons | ||||
|  | ||||
| --> | ||||
|  | ||||
| <drawables> | ||||
|     <bitmap id="ErrorIcon" filename="error.svg"/> | ||||
| </drawables> | ||||
							
								
								
									
										1
									
								
								resources-icons-53/error.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1 @@ | ||||
| <svg height="53" viewBox="0 0 48 48" width="53" xmlns="http://www.w3.org/2000/svg"><path d="M24 34q.7 0 1.175-.475.475-.475.475-1.175 0-.7-.475-1.175Q24.7 30.7 24 30.7q-.7 0-1.175.475-.475.475-.475 1.175 0 .7.475 1.175Q23.3 34 24 34Zm-1.35-7.65h3V13.7h-3ZM24 44q-4.1 0-7.75-1.575-3.65-1.575-6.375-4.3-2.725-2.725-4.3-6.375Q4 28.1 4 23.95q0-4.1 1.575-7.75 1.575-3.65 4.3-6.35 2.725-2.7 6.375-4.275Q19.9 4 24.05 4q4.1 0 7.75 1.575 3.65 1.575 6.35 4.275 2.7 2.7 4.275 6.35Q44 19.85 44 24q0 4.1-1.575 7.75-1.575 3.65-4.275 6.375t-6.35 4.3Q28.15 44 24 44Zm.05-3q7.05 0 12-4.975T41 23.95q0-7.05-4.95-12T24 7q-7.05 0-12.025 4.95Q7 16.9 7 24q0 7.05 4.975 12.025Q16.95 41 24.05 41ZM24 24Z" fill="red" stroke="red"/></svg> | ||||
| After Width: | Height: | Size: 712 B | 
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">Menu</string> | ||||
|   <string id="NoInternet">Tidak ada koneksi internet</string> | ||||
|   <string id="NoMenu">Kesalahan Pengambilan Menu</string> | ||||
|   <string id="NoAPIKey">Tidak ada kunci API di pengaturan aplikasi</string> | ||||
|   <string id="NoApiUrl">Tidak ada URL API di pengaturan aplikasi</string> | ||||
|   <string id="NoConfigUrl">Tidak ada URL konfigurasi di pengaturan aplikasi</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">Menù</string> | ||||
|   <string id="NoInternet">Nessuna connessione internet</string> | ||||
|   <string id="NoMenu">Errore di recupero del menu</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="NoConfigUrl">Nessun URL di configurazione nelle impostazioni dell'applicazione</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">メニュー</string> | ||||
|   <string id="NoInternet">インターネット接続なし</string> | ||||
|   <string id="NoMenu">メニューフェッチエラー</string> | ||||
|   <string id="NoAPIKey">アプリケーション設定に API キーがありません</string> | ||||
|   <string id="NoApiUrl">アプリケーション設定に API URL がありません</string> | ||||
|   <string id="NoConfigUrl">アプリケーション設定に構成 URL がありません</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">메뉴</string> | ||||
|   <string id="NoInternet">인터넷에 연결되지 않음</string> | ||||
|   <string id="NoMenu">메뉴 가져오기 오류</string> | ||||
|   <string id="NoAPIKey">애플리케이션 설정에 API 키가 없습니다.</string> | ||||
|   <string id="NoApiUrl">애플리케이션 설정에 API URL이 없습니다.</string> | ||||
|   <string id="NoConfigUrl">애플리케이션 설정에 구성 URL이 없습니다.</string> | ||||
| </strings> | ||||
							
								
								
									
										17
									
								
								resources-launcher-25-25 - DELETE/drawables.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,17 @@ | ||||
| <!-- | ||||
|  | ||||
|    Distributed under MIT Licence | ||||
|      See https://github.com/house-of-abbey/GarminHomeAssistant/blob/main/LICENSE. | ||||
|  | ||||
|  | ||||
|    GarminHomeAssistant is a Garmin IQ application written in Monkey C and routinely | ||||
|    tested on a Venu 2 device. The source code is provided at: | ||||
|               https://github.com/house-of-abbey/GarminHomeAssistant. | ||||
|  | ||||
|    P A Abbey & J D Abbey, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| <drawables> | ||||
|     <bitmap id="LauncherIcon" filename="launcher.png" /> | ||||
| </drawables> | ||||
							
								
								
									
										
											BIN
										
									
								
								resources-launcher-25-25 - DELETE/launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.8 KiB | 
							
								
								
									
										17
									
								
								resources-launcher-54-54/drawables.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,17 @@ | ||||
| <!-- | ||||
|  | ||||
|    Distributed under MIT Licence | ||||
|      See https://github.com/house-of-abbey/GarminHomeAssistant/blob/main/LICENSE. | ||||
|  | ||||
|  | ||||
|    GarminHomeAssistant is a Garmin IQ application written in Monkey C and routinely | ||||
|    tested on a Venu 2 device. The source code is provided at: | ||||
|               https://github.com/house-of-abbey/GarminHomeAssistant. | ||||
|  | ||||
|    P A Abbey & J D Abbey, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| <drawables> | ||||
|     <bitmap id="LauncherIcon" filename="launcher.png" /> | ||||
| </drawables> | ||||
							
								
								
									
										
											BIN
										
									
								
								resources-launcher-54-54/launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 4.8 KiB | 
							
								
								
									
										17
									
								
								resources-launcher-62-62/drawables.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,17 @@ | ||||
| <!-- | ||||
|  | ||||
|    Distributed under MIT Licence | ||||
|      See https://github.com/house-of-abbey/GarminHomeAssistant/blob/main/LICENSE. | ||||
|  | ||||
|  | ||||
|    GarminHomeAssistant is a Garmin IQ application written in Monkey C and routinely | ||||
|    tested on a Venu 2 device. The source code is provided at: | ||||
|               https://github.com/house-of-abbey/GarminHomeAssistant. | ||||
|  | ||||
|    P A Abbey & J D Abbey, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| <drawables> | ||||
|     <bitmap id="LauncherIcon" filename="launcher.png" /> | ||||
| </drawables> | ||||
							
								
								
									
										
											BIN
										
									
								
								resources-launcher-62-62/launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 5.1 KiB | 
							
								
								
									
										17
									
								
								resources-launcher-65-65/drawables.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,17 @@ | ||||
| <!-- | ||||
|  | ||||
|    Distributed under MIT Licence | ||||
|      See https://github.com/house-of-abbey/GarminHomeAssistant/blob/main/LICENSE. | ||||
|  | ||||
|  | ||||
|    GarminHomeAssistant is a Garmin IQ application written in Monkey C and routinely | ||||
|    tested on a Venu 2 device. The source code is provided at: | ||||
|               https://github.com/house-of-abbey/GarminHomeAssistant. | ||||
|  | ||||
|    P A Abbey & J D Abbey, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| <drawables> | ||||
|     <bitmap id="LauncherIcon" filename="launcher.png" /> | ||||
| </drawables> | ||||
							
								
								
									
										
											BIN
										
									
								
								resources-launcher-65-65/launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 5.2 KiB | 
							
								
								
									
										17
									
								
								resources-launcher-80-80/drawables.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,17 @@ | ||||
| <!-- | ||||
|  | ||||
|    Distributed under MIT Licence | ||||
|      See https://github.com/house-of-abbey/GarminHomeAssistant/blob/main/LICENSE. | ||||
|  | ||||
|  | ||||
|    GarminHomeAssistant is a Garmin IQ application written in Monkey C and routinely | ||||
|    tested on a Venu 2 device. The source code is provided at: | ||||
|               https://github.com/house-of-abbey/GarminHomeAssistant. | ||||
|  | ||||
|    P A Abbey & J D Abbey, 31 October 2023 | ||||
|  | ||||
| --> | ||||
|  | ||||
| <drawables> | ||||
|     <bitmap id="LauncherIcon" filename="launcher.png" /> | ||||
| </drawables> | ||||
							
								
								
									
										
											BIN
										
									
								
								resources-launcher-80-80/launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 5.7 KiB | 
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">Izvēlne</string> | ||||
|   <string id="NoInternet">Nav interneta savienojuma</string> | ||||
|   <string id="NoMenu">Izvēlnes ielādes kļūda</string> | ||||
|   <string id="NoAPIKey">Lietojumprogrammas iestatījumos nav API atslēgas</string> | ||||
|   <string id="NoApiUrl">Lietojumprogrammas iestatījumos nav API URL</string> | ||||
|   <string id="NoConfigUrl">Lietojumprogrammas iestatījumos nav konfigurācijas URL</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">Meniu</string> | ||||
|   <string id="NoInternet">Nėra interneto ryšio</string> | ||||
|   <string id="NoMenu">Meniu gavimo klaida</string> | ||||
|   <string id="NoAPIKey">Programos nustatymuose nėra API rakto</string> | ||||
|   <string id="NoApiUrl">Programos nustatymuose nėra API URL</string> | ||||
|   <string id="NoConfigUrl">Programos nustatymuose nėra konfigūracijos URL</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">Meny</string> | ||||
|   <string id="NoInternet">Ingen Internett-tilkobling</string> | ||||
|   <string id="NoMenu">Menyhentingsfeil</string> | ||||
|   <string id="NoAPIKey">Ingen API-nøkkel i applikasjonsinnstillingene</string> | ||||
|   <string id="NoApiUrl">Ingen API-URL i applikasjonsinnstillingene</string> | ||||
|   <string id="NoConfigUrl">Ingen konfigurasjons-URL i applikasjonsinnstillingene</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">Menu</string> | ||||
|   <string id="NoInternet">Brak połączenia z internetem</string> | ||||
|   <string id="NoMenu">Błąd pobierania menu</string> | ||||
|   <string id="NoAPIKey">Brak klucza 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> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">Cardápio</string> | ||||
|   <string id="NoInternet">Sem conexão com a Internet</string> | ||||
|   <string id="NoMenu">Erro ao buscar menu</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="NoConfigUrl">Nenhum URL de configuração nas configurações do aplicativo</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">Meniul</string> | ||||
|   <string id="NoInternet">Fără conexiune internet</string> | ||||
|   <string id="NoMenu">Eroare de preluare a meniului</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="NoConfigUrl">Nicio adresă URL de configurare în setările aplicației</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">Ponuka</string> | ||||
|   <string id="NoInternet">Žiadne internetové pripojenie</string> | ||||
|   <string id="NoMenu">Chyba načítania ponuky</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="NoConfigUrl">V nastaveniach aplikácie nie je žiadna konfiguračná URL</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">meni</string> | ||||
|   <string id="NoInternet">Ni internetne povezave</string> | ||||
|   <string id="NoMenu">Napaka pri pridobivanju menija</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="NoConfigUrl">V nastavitvah aplikacije ni konfiguracijskega URL-ja</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">Menú</string> | ||||
|   <string id="NoInternet">Sin conexión a Internet</string> | ||||
|   <string id="NoMenu">Error de recuperación del menú</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="NoConfigUrl">No hay URL de configuración en la configuración de la aplicación.</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">Meny</string> | ||||
|   <string id="NoInternet">Ingen internetanslutning</string> | ||||
|   <string id="NoMenu">Menyhämtningsfel</string> | ||||
|   <string id="NoAPIKey">Ingen API-nyckel i applikationsinställningarna</string> | ||||
|   <string id="NoApiUrl">Ingen API-URL i applikationsinställningarna</string> | ||||
|   <string id="NoConfigUrl">Ingen konfigurations-URL i programinställningarna</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">เมนู</string> | ||||
|   <string id="NoInternet">ไม่มีการเชื่อมต่ออินเทอร์เน็ต</string> | ||||
|   <string id="NoMenu">เมนูดึงข้อมูลผิดพลาด</string> | ||||
|   <string id="NoAPIKey">ไม่มีคีย์ API ในการตั้งค่าแอปพลิเคชัน</string> | ||||
|   <string id="NoApiUrl">ไม่มี URL API ในการตั้งค่าแอปพลิเคชัน</string> | ||||
|   <string id="NoConfigUrl">ไม่มี URL การกำหนดค่าในการตั้งค่าแอปพลิเคชัน</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">Menü</string> | ||||
|   <string id="NoInternet">İnternet bağlantısı yok</string> | ||||
|   <string id="NoMenu">Menü Alma Hatası</string> | ||||
|   <string id="NoAPIKey">Uygulama ayarlarında API anahtarı 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> | ||||
| </strings> | ||||
| @@ -15,7 +15,7 @@ | ||||
|  | ||||
| <!-- | ||||
|   Generated by Google Translate: English to Ukrainian | ||||
|   Створено Google Translate з англійської | ||||
|   Згенеровано Google Translate з англійської | ||||
| --> | ||||
|  | ||||
| <strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">Меню</string> | ||||
|   <string id="NoInternet">Немає підключення до Інтернету</string> | ||||
|   <string id="NoMenu">Помилка вибірки меню</string> | ||||
|   <string id="NoAPIKey">У налаштуваннях програми немає ключа API</string> | ||||
|   <string id="NoApiUrl">У налаштуваннях програми немає URL-адреси API</string> | ||||
|   <string id="NoConfigUrl">У налаштуваннях програми немає URL-адреси конфігурації</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">Thực đơn</string> | ||||
|   <string id="NoInternet">Không có kết nối Internet</string> | ||||
|   <string id="NoMenu">Lỗi tìm nạp menu</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="NoConfigUrl">Không có URL cấu hình trong cài đặt ứng dụng</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">菜单</string> | ||||
|   <string id="NoInternet">没有网络连接</string> | ||||
|   <string id="NoMenu">菜单获取错误</string> | ||||
|   <string id="NoAPIKey">应用程序设置中没有 API 密钥</string> | ||||
|   <string id="NoApiUrl">应用程序设置中没有 API URL</string> | ||||
|   <string id="NoConfigUrl">应用程序设置中没有配置 URL</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">選單</string> | ||||
|   <string id="NoInternet">沒有網路連線</string> | ||||
|   <string id="NoMenu">選單取得錯誤</string> | ||||
|   <string id="NoAPIKey">應用程式設定中沒有 API 金鑰</string> | ||||
|   <string id="NoApiUrl">應用程式設定中沒有 API URL</string> | ||||
|   <string id="NoConfigUrl">應用程式設定中沒有配置 URL</string> | ||||
| </strings> | ||||
| @@ -26,4 +26,7 @@ | ||||
|   <string id="MenuItemMenu">Menu</string> | ||||
|   <string id="NoInternet">Tiada sambungan internet</string> | ||||
|   <string id="NoMenu">Ralat Pengambilan Menu</string> | ||||
|   <string id="NoAPIKey">Tiada kunci 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> | ||||
| </strings> | ||||
| @@ -20,4 +20,7 @@ | ||||
|     <string id="MenuItemMenu">Menu</string> | ||||
|     <string id="NoInternet">No Internet connection</string> | ||||
|     <string id="NoMenu">Menu Fetch Error</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="NoConfigUrl">No configuration URL in the application settings</string> | ||||
| </strings> | ||||
|   | ||||
| @@ -23,7 +23,7 @@ using Toybox.Lang; | ||||
| class Globals { | ||||
|     // Enable printing of messages to the debug console (don't make this a Property | ||||
|     // as the messages can't be read from a watch!) | ||||
|     static const debug          = false; | ||||
|     static const debug          = true; | ||||
|     static const updateInterval = 5;    // seconds | ||||
|     static const alertTimeout   = 2000; // ms | ||||
|     static const tapTimeout     = 1000; // ms | ||||
|   | ||||
| @@ -26,12 +26,18 @@ using Toybox.Timer; | ||||
|  | ||||
| class HomeAssistantApp extends Application.AppBase { | ||||
|     hidden var haMenu; | ||||
|     hidden var strNoApiKey    as Lang.String; | ||||
|     hidden var strNoApiUrl    as Lang.String; | ||||
|     hidden var strNoConfigUrl as Lang.String; | ||||
|     hidden var strNoInternet  as Lang.String; | ||||
|     hidden var strNoMenu      as Lang.String; | ||||
|     hidden var timer          as Timer.Timer; | ||||
|  | ||||
|     function initialize() { | ||||
|         AppBase.initialize(); | ||||
|         strNoApiKey    = WatchUi.loadResource($.Rez.Strings.NoAPIKey); | ||||
|         strNoApiUrl    = WatchUi.loadResource($.Rez.Strings.NoApiUrl); | ||||
|         strNoConfigUrl = WatchUi.loadResource($.Rez.Strings.NoConfigUrl); | ||||
|         strNoInternet  = WatchUi.loadResource($.Rez.Strings.NoInternet); | ||||
|         strNoMenu      = WatchUi.loadResource($.Rez.Strings.NoMenu); | ||||
|         timer          = new Timer.Timer(); | ||||
| @@ -39,7 +45,6 @@ class HomeAssistantApp extends Application.AppBase { | ||||
|  | ||||
|     // onStart() is called on application start up | ||||
|     function onStart(state as Lang.Dictionary?) as Void { | ||||
|         fetchMenuConfig(); | ||||
|     } | ||||
|  | ||||
|     // onStop() is called when your application is exiting | ||||
| @@ -51,7 +56,30 @@ class HomeAssistantApp extends Application.AppBase { | ||||
|  | ||||
|     // Return the initial view of your application here | ||||
|     function getInitialView() as Lang.Array<WatchUi.Views or WatchUi.InputDelegates>? { | ||||
|         if ((Properties.getValue("api_key") as Lang.String).length() == 0) { | ||||
|             if (Globals.debug) { | ||||
|                 System.println("HomeAssistantMenuItem Note - execScript(): No API key in the application settings."); | ||||
|             } | ||||
|             return [new ErrorView(strNoApiKey + "."), new ErrorDelegate()] as Lang.Array<WatchUi.Views or WatchUi.InputDelegates>; | ||||
|         } else if ((Properties.getValue("api_url") as Lang.String).length() == 0) { | ||||
|             if (Globals.debug) { | ||||
|                 System.println("HomeAssistantMenuItem Note - execScript(): No API URL in the application settings."); | ||||
|             } | ||||
|             return [new ErrorView(strNoApiUrl + "."), new ErrorDelegate()] as Lang.Array<WatchUi.Views or WatchUi.InputDelegates>; | ||||
|         } else if ((Properties.getValue("config_url") as Lang.String).length() == 0) { | ||||
|             if (Globals.debug) { | ||||
|                 System.println("HomeAssistantMenuItem Note - execScript(): No configuration URL in the application settings."); | ||||
|             } | ||||
|             return [new ErrorView(strNoConfigUrl + "."), new ErrorDelegate()] as Lang.Array<WatchUi.Views or WatchUi.InputDelegates>; | ||||
|         } else if (System.getDeviceSettings().phoneConnected && System.getDeviceSettings().connectionAvailable) { | ||||
|             fetchMenuConfig(); | ||||
|             return [new WatchUi.View(), new WatchUi.BehaviorDelegate()] as Lang.Array<WatchUi.Views or WatchUi.InputDelegates>; | ||||
|         } else { | ||||
|             if (Globals.debug) { | ||||
|                 System.println("HomeAssistantApp Note - fetchMenuConfig(): No Internet connection, skipping API call."); | ||||
|             } | ||||
|             return [new ErrorView(strNoInternet + "."), new ErrorDelegate()] as Lang.Array<WatchUi.Views or WatchUi.InputDelegates>; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     // Callback function after completing the GET request to fetch the configuration menu. | ||||
| @@ -87,25 +115,12 @@ class HomeAssistantApp extends Application.AppBase { | ||||
|             :method  => Communications.HTTP_REQUEST_METHOD_GET, | ||||
|             :responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON | ||||
|         }; | ||||
|         if (System.getDeviceSettings().phoneConnected && System.getDeviceSettings().connectionAvailable) { | ||||
|         Communications.makeWebRequest( | ||||
|             Properties.getValue("config_url"), | ||||
|             null, | ||||
|             options, | ||||
|             method(:onReturnFetchMenuConfig) | ||||
|         ); | ||||
|         } else { | ||||
|             if (Globals.debug) { | ||||
|                 System.println("HomeAssistantApp Note - fetchMenuConfig(): No Internet connection, skipping API call."); | ||||
|             } | ||||
|             new Alert({ | ||||
|                 :timeout => Globals.alertTimeout, | ||||
|                 :font    => Graphics.FONT_SYSTEM_TINY, | ||||
|                 :text    => strNoInternet, | ||||
|                 :fgcolor => Graphics.COLOR_RED, | ||||
|                 :bgcolor => Graphics.COLOR_BLACK | ||||
|             }).pushView(WatchUi.SLIDE_IMMEDIATE); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -37,6 +37,7 @@ class HomeAssistantMenuItem extends WatchUi.MenuItem { | ||||
|         } or Null | ||||
|     ) { | ||||
|         strNoInternet = WatchUi.loadResource($.Rez.Strings.NoInternet); | ||||
|          | ||||
|         WatchUi.MenuItem.initialize( | ||||
|             label, | ||||
|             subLabel, | ||||
| @@ -59,11 +60,29 @@ class HomeAssistantMenuItem extends WatchUi.MenuItem { | ||||
|                     if (Globals.debug) { | ||||
|                         System.println("HomeAssistantMenuItem Note - onReturnExecScript(): Correct script executed."); | ||||
|                     } | ||||
|                     if (WatchUi has :showToast) { | ||||
|                         WatchUi.showToast( | ||||
|                             (d[i].get("attributes") as Lang.Dictionary).get("friendly_name") as Lang.String, | ||||
|                             null | ||||
|                         ); | ||||
|                     } | ||||
|                     if (Attention has :vibrate) { | ||||
|                         Attention.vibrate([ | ||||
|                             new Attention.VibeProfile(50, 100), // On  for 100ms | ||||
|                             new Attention.VibeProfile( 0, 100), // Off for 100ms | ||||
|                             new Attention.VibeProfile(50, 100)  // On  for 100ms | ||||
|                         ]); | ||||
|                     } | ||||
|                     if (!(WatchUi has :showToast) && !(Attention has :vibrate)) { | ||||
|                         new Alert({ | ||||
|                             :timeout => Globals.alertTimeout, | ||||
|                             :font    => Graphics.FONT_MEDIUM, | ||||
|                             :text    => (d[i].get("attributes") as Lang.Dictionary).get("friendly_name") as Lang.String, | ||||
|                             :fgcolor => Graphics.COLOR_WHITE, | ||||
|                             :bgcolor => Graphics.COLOR_BLACK | ||||
|                         }).pushView(WatchUi.SLIDE_IMMEDIATE); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| @@ -77,10 +96,13 @@ class HomeAssistantMenuItem extends WatchUi.MenuItem { | ||||
|             :responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON | ||||
|         }; | ||||
|         if (System.getDeviceSettings().phoneConnected && System.getDeviceSettings().connectionAvailable) { | ||||
|             var url = Properties.getValue("api_url") + "/services/" + mIdentifier.substring(0, mIdentifier.find(".")) + "/" + mIdentifier.substring(mIdentifier.find(".")+1, null); | ||||
|             // Updated SDK and got a new error | ||||
|             // ERROR: venu: Cannot find symbol ':substring' on type 'PolyType<Null or $.Toybox.Lang.Object>'. | ||||
|             var id = mIdentifier as Lang.String; | ||||
|             var url = (Properties.getValue("api_url") as Lang.String) + "/services/" + id.substring(0, id.find(".")) + "/" + id.substring(id.find(".")+1, id.length()); | ||||
|             if (Globals.debug) { | ||||
|                 System.println("URL=" + url); | ||||
|                 System.println("mIdentifier=" + mIdentifier); | ||||
|                 System.println("HomeAssistantMenuItem execScript() URL=" + url); | ||||
|                 System.println("HomeAssistantMenuItem execScript() mIdentifier=" + mIdentifier); | ||||
|             } | ||||
|             Communications.makeWebRequest( | ||||
|                 url, | ||||
| @@ -90,15 +112,9 @@ class HomeAssistantMenuItem extends WatchUi.MenuItem { | ||||
|             ); | ||||
|         } else { | ||||
|             if (Globals.debug) { | ||||
|                 System.println("HomeAssistantMenuItem Note - executeScript(): No Internet connection, skipping API call."); | ||||
|                 System.println("HomeAssistantMenuItem Note - execScript(): No Internet connection, skipping API call."); | ||||
|             } | ||||
|             new Alert({ | ||||
|                 :timeout => Globals.alertTimeout, | ||||
|                 :font    => Graphics.FONT_SYSTEM_TINY, | ||||
|                 :text    => strNoInternet, | ||||
|                 :fgcolor => Graphics.COLOR_RED, | ||||
|                 :bgcolor => Graphics.COLOR_BLACK | ||||
|             }).pushView(WatchUi.SLIDE_IMMEDIATE); | ||||
|             WatchUi.pushView(new ErrorView(strNoInternet + "."), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -87,7 +87,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { | ||||
|         if (System.getDeviceSettings().phoneConnected && System.getDeviceSettings().connectionAvailable) { | ||||
|             var url = Properties.getValue("api_url") + "/states/" + mIdentifier; | ||||
|             if (Globals.debug) { | ||||
|                 System.println("URL=" + url); | ||||
|                 System.println("HomeAssistantToggleMenuItem getState() URL=" + url); | ||||
|             } | ||||
|             Communications.makeWebRequest( | ||||
|                 url, | ||||
| @@ -99,13 +99,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { | ||||
|             if (Globals.debug) { | ||||
|                 System.println("HomeAssistantToggleMenuItem Note - getState(): No Internet connection, skipping API call."); | ||||
|             } | ||||
|             new Alert({ | ||||
|                 :timeout => Globals.alertTimeout, | ||||
|                 :font    => Graphics.FONT_SYSTEM_TINY, | ||||
|                 :text    => strNoInternet, | ||||
|                 :fgcolor => Graphics.COLOR_RED, | ||||
|                 :bgcolor => Graphics.COLOR_BLACK | ||||
|             }).pushView(WatchUi.SLIDE_IMMEDIATE); | ||||
|             WatchUi.pushView(new ErrorView(strNoInternet + "."), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -141,15 +135,18 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { | ||||
|             :responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON | ||||
|         }; | ||||
|         if (System.getDeviceSettings().phoneConnected && System.getDeviceSettings().connectionAvailable) { | ||||
|             // Updated SDK and got a new error | ||||
|             // ERROR: venu: Cannot find symbol ':substring' on type 'PolyType<Null or $.Toybox.Lang.Object>'. | ||||
|             var id = mIdentifier as Lang.String; | ||||
|             var url; | ||||
|             if (s) { | ||||
|                 url = Properties.getValue("api_url") + "/services/" + mIdentifier.substring(0, mIdentifier.find(".")) + "/turn_on"; | ||||
|                 url = Properties.getValue("api_url") + "/services/" + id.substring(0, id.find(".")) + "/turn_on"; | ||||
|             } else { | ||||
|                 url = Properties.getValue("api_url") + "/services/" + mIdentifier.substring(0, mIdentifier.find(".")) + "/turn_off"; | ||||
|                 url = Properties.getValue("api_url") + "/services/" + id.substring(0, id.find(".")) + "/turn_off"; | ||||
|             } | ||||
|             if (Globals.debug) { | ||||
|                 System.println("URL=" + url); | ||||
|                 System.println("mIdentifier=" + mIdentifier); | ||||
|                 System.println("HomeAssistantToggleMenuItem setState() URL=" + url); | ||||
|                 System.println("HomeAssistantToggleMenuItem setState() mIdentifier=" + mIdentifier); | ||||
|             } | ||||
|             Communications.makeWebRequest( | ||||
|                 url, | ||||
| @@ -163,13 +160,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { | ||||
|             if (Globals.debug) { | ||||
|                 System.println("HomeAssistantToggleMenuItem Note - setState(): No Internet connection, skipping API call."); | ||||
|             } | ||||
|             new Alert({ | ||||
|                 :timeout => Globals.alertTimeout, | ||||
|                 :font    => Graphics.FONT_SYSTEM_TINY, | ||||
|                 :text    => strNoInternet, | ||||
|                 :fgcolor => Graphics.COLOR_RED, | ||||
|                 :bgcolor => Graphics.COLOR_BLACK | ||||
|             }).pushView(WatchUi.SLIDE_IMMEDIATE); | ||||
|             WatchUi.pushView(new ErrorView(strNoInternet + "."), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   | ||||