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,14 +48,18 @@ original = (96, 48, 24) | |||||||
| lookup = { | lookup = { | ||||||
|   #   Doub Sing Half |   #   Doub Sing Half | ||||||
|   #      0   1   2 |   #      0   1   2 | ||||||
| # 416: (96, 48, 24), |   454: (106, 53, 27), | ||||||
|   390: (90, 46, 23), | #  416: ( 96, 48, 24), | ||||||
|   360: (84, 42, 21), |   390: ( 90, 46, 23), | ||||||
|   320: (74, 38, 19), |   360: ( 84, 42, 21), | ||||||
|   280: (64, 32, 16), |   320: ( 74, 38, 19), | ||||||
|   260: (60, 30, 15), |   280: ( 64, 32, 16), | ||||||
|   240: (56, 28, 14), |   260: ( 60, 30, 15), | ||||||
|   218: (50, 26, 13), |   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 | # 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(): | for screen_size, icon_sizes in lookup.items(): | ||||||
|   output_dir = output_dir_prefix + str(icon_sizes[Sing]) |   output_dir = output_dir_prefix + str(icon_sizes[Sing]) | ||||||
|   print("\nCreate directory:", output_dir) |   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) |   os.makedirs(output_dir) | ||||||
|   for entry in os.listdir(input_dir): |   for entry in os.listdir(input_dir): | ||||||
|     if entry.endswith(".svg"): |     if entry.endswith(".svg"): | ||||||
|   | |||||||
							
								
								
									
										96
									
								
								manifest.xml
									
									
									
									
									
								
							
							
						
						| @@ -30,19 +30,100 @@ | |||||||
|       "Monkey C: Edit Products" - Lets you add or remove any product |       "Monkey C: Edit Products" - Lets you add or remove any product | ||||||
|     --> |     --> | ||||||
|     <iq:products> |     <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 --> |       <!-- Screen Size 416x416 launcher icon size 70x70 --> | ||||||
|       <iq:product id="d2airx10"/> |       <iq:product id="d2airx10"/> | ||||||
|       <!-- Screen Size 416x416 launcher icon size 60x60 --> |       <!-- Screen Size 416x416 launcher icon size 60x60 --> | ||||||
|       <iq:product id="d2mach1"/> |       <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"/> |       <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 --> |       <!-- Screen Size 260x260 launcher icon size 40x40 --> | ||||||
|       <iq:product id="fenix7"/> |       <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 --> |       <!-- Screen Size 240x240 launcher icon size 40x40 --> | ||||||
|       <iq:product id="fenix7s"/> |       <iq:product id="fenix7s"/> | ||||||
|  |       <!-- Screen Size 240x240 launcher icon size 40x40 --> | ||||||
|  |       <iq:product id="fenix7spro"/> | ||||||
|       <!-- Screen Size 280x280 launcher icon size 40x40 --> |       <!-- Screen Size 280x280 launcher icon size 40x40 --> | ||||||
|       <iq:product id="fenix7x"/> |       <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 --> |       <!-- Screen Size 260x260 launcher icon size 40x40 --> | ||||||
|       <iq:product id="fr955"/> |       <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 --> |       <!-- Screen Size 218x218 launcher icon size 30x30 --> | ||||||
|       <iq:product id="legacyherocaptainmarvel"/> |       <iq:product id="legacyherocaptainmarvel"/> | ||||||
|       <!-- Screen Size 260x260 launcher icon size 35x35 --> |       <!-- Screen Size 260x260 launcher icon size 35x35 --> | ||||||
| @@ -50,6 +131,15 @@ | |||||||
|       <iq:product id="legacysagadarthvader"/> |       <iq:product id="legacysagadarthvader"/> | ||||||
|       <!-- Screen Size 218x218 launcher icon size 30x30 --> |       <!-- Screen Size 218x218 launcher icon size 30x30 --> | ||||||
|       <iq:product id="legacysagarey"/> |       <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 --> |       <!-- Screen Size 390x390 launcher icon size 60x60 --> | ||||||
|       <iq:product id="marq2"/> |       <iq:product id="marq2"/> | ||||||
|       <iq:product id="marq2aviator"/> |       <iq:product id="marq2aviator"/> | ||||||
| @@ -66,10 +156,16 @@ | |||||||
|       <!-- Screen Size 320x360 launcher icon size 40x40 --> |       <!-- Screen Size 320x360 launcher icon size 40x40 --> | ||||||
|       <iq:product id="venusq2"/> |       <iq:product id="venusq2"/> | ||||||
|       <iq:product id="venusq2m"/> |       <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 --> |       <!-- Screen Size 260x260 launcher icon size 35x35 --> | ||||||
|       <iq:product id="vivoactive4"/> |       <iq:product id="vivoactive4"/> | ||||||
|       <!-- Screen Size 218x218 launcher icon size 30x30 --> |       <!-- Screen Size 218x218 launcher icon size 30x30 --> | ||||||
|       <iq:product id="vivoactive4s"/> |       <iq:product id="vivoactive4s"/> | ||||||
|  |       <!-- Screen Size 390x390 launcher icon size 70x70 --> | ||||||
|  |       <iq:product id="vivoactive5"/> | ||||||
|     </iq:products> |     </iq:products> | ||||||
|     <!-- |     <!-- | ||||||
|       Use "Monkey C: Edit Permissions" from the Visual Studio Code command |       Use "Monkey C: Edit Permissions" from the Visual Studio Code command | ||||||
|   | |||||||
							
								
								
									
										100
									
								
								monkey.jungle
									
									
									
									
									
								
							
							
						
						| @@ -18,31 +18,110 @@ | |||||||
|  |  | ||||||
| project.manifest = manifest.xml | project.manifest = manifest.xml | ||||||
|  |  | ||||||
|  | # Device Reference | ||||||
|  | # https://developer.garmin.com/connect-iq/reference-guides/devices-reference/ | ||||||
|  | # | ||||||
| # Widget launcher icon, multiple resolutions | # Widget launcher icon, multiple resolutions | ||||||
| # https://forums.garmin.com/developer/connect-iq/f/discussion/255433/widget-launcher-icon-multiple-resolutions/1563305 | # 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 | # Use the online SVG converter to write out PNGs from "resources\drawables\launcher.svg" by changing | ||||||
| # the 'width' and 'height' attributes of the SVG. | # the 'width' and 'height' attributes of the SVG. | ||||||
| # https://svgtopng.com/ | # https://svgtopng.com/ | ||||||
|  | # | ||||||
| # The icons need to scale as a ratio of screen size 48:416 pixels | # The icons need to scale as a ratio of screen size 48:416 pixels | ||||||
| # | # | ||||||
| # Icon     48   45   42   37   32   30   28   25 | # Icon     53   48   46   42   37   32   30   28   26   24   21   18 | ||||||
| # Screen  416  390  360  320  280  260  240  218 | # 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 | # Screen Size 416x416 launcher icon size 70x70 | ||||||
| d2airx10.resourcePath = $(d2airx10.resourcePath);resources-launcher-70-70;resources-icons-48 | d2airx10.resourcePath = $(d2airx10.resourcePath);resources-launcher-70-70;resources-icons-48 | ||||||
| # Screen Size 416x416 launcher icon size 60x60 | # Screen Size 416x416 launcher icon size 60x60 | ||||||
| d2mach1.resourcePath = $(d2mach1.resourcePath);resources-launcher-60-60;resources-icons-48 | 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 | 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 | # Screen Size 260x260 launcher icon size 40x40 | ||||||
| fenix7.resourcePath = $(fenix7.resourcePath);resources-launcher-40-40;resources-icons-30 | 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 | # Screen Size 240x240 launcher icon size 40x40 | ||||||
| fenix7s.resourcePath = $(fenix7s.resourcePath);resources-launcher-40-40;resources-icons-28 | 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 | # Screen Size 280x280 launcher icon size 40x40 | ||||||
| fenix7x.resourcePath = $(fenix7x.resourcePath);resources-launcher-40-40;resources-icons-32 | 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 | # Screen Size 260x260 launcher icon size 40x40 | ||||||
| fr955.resourcePath = $(fr955.resourcePath);resources-launcher-40-40;resources-icons-30 | 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 | # Screen Size 218x218 launcher icon size 30x30 | ||||||
| legacyherocaptainmarvel.resourcePath = $(legacyherocaptainmarvel.resourcePath);resources-launcher-30-30;resources-icons-26 | legacyherocaptainmarvel.resourcePath = $(legacyherocaptainmarvel.resourcePath);resources-launcher-30-30;resources-icons-26 | ||||||
| # Screen Size 260x260 launcher icon size 35x35 | # 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 | legacysagadarthvader.resourcePath = $(legacysagadarthvader.resourcePath);resources-launcher-35-35;resources-icons-30 | ||||||
| # Screen Size 218x218 launcher icon size 30x30 | # Screen Size 218x218 launcher icon size 30x30 | ||||||
| legacysagarey.resourcePath = $(legacysagarey.resourcePath);resources-launcher-30-30;resources-icons-26 | 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 | # Screen Size 390x390 launcher icon size 60x60 | ||||||
| marq2.resourcePath = $(marq2.resourcePath);resources-launcher-60-60;resources-icons-46 | marq2.resourcePath = $(marq2.resourcePath);resources-launcher-60-60;resources-icons-46 | ||||||
| marq2aviator.resourcePath = $(marq2aviator.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 | # Screen Size 320x360 launcher icon size 40x40 | ||||||
| venusq2.resourcePath = $(venusq2.resourcePath);resources-launcher-40-40;resources-icons-38 | venusq2.resourcePath = $(venusq2.resourcePath);resources-launcher-40-40;resources-icons-38 | ||||||
| venusq2m.resourcePath = $(venusq2m.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 | # Screen Size 260x260 launcher icon size 35x35 | ||||||
| vivoactive4.resourcePath = $(vivoactive4.resourcePath);resources-launcher-35-35;resources-icons-30 | vivoactive4.resourcePath = $(vivoactive4.resourcePath);resources-launcher-35-35;resources-icons-30 | ||||||
| # Screen Size 218x218 launcher icon size 30x30 | # Screen Size 218x218 launcher icon size 30x30 | ||||||
| vivoactive4s.resourcePath = $(vivoactive4s.resourcePath);resources-launcher-30-30;resources-icons-26 | 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="MenuItemMenu">قائمة طعام</string> | ||||||
|   <string id="NoInternet">لا يوجد اتصال بالإنترنت</string> |   <string id="NoInternet">لا يوجد اتصال بالإنترنت</string> | ||||||
|   <string id="NoMenu">خطأ في إحضار القائمة</string> |   <string id="NoMenu">خطأ في إحضار القائمة</string> | ||||||
|  |   <string id="NoAPIKey">لا يوجد مفتاح API في إعدادات التطبيق</string> | ||||||
|  |   <string id="NoApiUrl">لا يوجد عنوان URL لواجهة برمجة التطبيقات في إعدادات التطبيق</string> | ||||||
|  |   <string id="NoConfigUrl">لا يوجد عنوان URL للتكوين في إعدادات التطبيق</string> | ||||||
| </strings> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">Меню</string> |   <string id="MenuItemMenu">Меню</string> | ||||||
|   <string id="NoInternet">Няма интернет връзка</string> |   <string id="NoInternet">Няма интернет връзка</string> | ||||||
|   <string id="NoMenu">Грешка при извличане на менюто</string> |   <string id="NoMenu">Грешка при извличане на менюто</string> | ||||||
|  |   <string id="NoAPIKey">Няма API ключ в настройките на приложението</string> | ||||||
|  |   <string id="NoApiUrl">Няма URL адрес на API в настройките на приложението</string> | ||||||
|  |   <string id="NoConfigUrl">Няма конфигурационен URL адрес в настройките на приложението</string> | ||||||
| </strings> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">Jídelní lístek</string> |   <string id="MenuItemMenu">Jídelní lístek</string> | ||||||
|   <string id="NoInternet">Žádné internetové připojení</string> |   <string id="NoInternet">Žádné internetové připojení</string> | ||||||
|   <string id="NoMenu">Chyba načítání nabídky</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> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">Menu</string> |   <string id="MenuItemMenu">Menu</string> | ||||||
|   <string id="NoInternet">Ingen internetforbindelse</string> |   <string id="NoInternet">Ingen internetforbindelse</string> | ||||||
|   <string id="NoMenu">Fejl ved menuhentning</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> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">Speisekarte</string> |   <string id="MenuItemMenu">Speisekarte</string> | ||||||
|   <string id="NoInternet">Keine Internetverbindung</string> |   <string id="NoInternet">Keine Internetverbindung</string> | ||||||
|   <string id="NoMenu">Fehler beim Abrufen des Menüs</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> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">Menu</string> |   <string id="MenuItemMenu">Menu</string> | ||||||
|   <string id="NoInternet">Geen internet verbinding</string> |   <string id="NoInternet">Geen internet verbinding</string> | ||||||
|   <string id="NoMenu">Fout bij ophalen van menu</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> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">Menüü</string> |   <string id="MenuItemMenu">Menüü</string> | ||||||
|   <string id="NoInternet">Interneti-ühendus puudub</string> |   <string id="NoInternet">Interneti-ühendus puudub</string> | ||||||
|   <string id="NoMenu">Menüü toomise viga</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> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">Valikko</string> |   <string id="MenuItemMenu">Valikko</string> | ||||||
|   <string id="NoInternet">Ei Internet-yhteyttä</string> |   <string id="NoInternet">Ei Internet-yhteyttä</string> | ||||||
|   <string id="NoMenu">Valikkohakuvirhe</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> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">Menu</string> |   <string id="MenuItemMenu">Menu</string> | ||||||
|   <string id="NoInternet">Pas de connexion Internet</string> |   <string id="NoInternet">Pas de connexion Internet</string> | ||||||
|   <string id="NoMenu">Erreur de récupération du menu</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> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">Μενού</string> |   <string id="MenuItemMenu">Μενού</string> | ||||||
|   <string id="NoInternet">Δεν υπάρχει σύνδεση στο διαδίκτυο</string> |   <string id="NoInternet">Δεν υπάρχει σύνδεση στο διαδίκτυο</string> | ||||||
|   <string id="NoMenu">Σφάλμα ανάκτησης μενού</string> |   <string id="NoMenu">Σφάλμα ανάκτησης μενού</string> | ||||||
|  |   <string id="NoAPIKey">Δεν υπάρχει κλειδί API στις ρυθμίσεις της εφαρμογής</string> | ||||||
|  |   <string id="NoApiUrl">Δεν υπάρχει URL API στις ρυθμίσεις της εφαρμογής</string> | ||||||
|  |   <string id="NoConfigUrl">Δεν υπάρχει διεύθυνση URL διαμόρφωσης στις ρυθμίσεις της εφαρμογής</string> | ||||||
| </strings> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">תַפרִיט</string> |   <string id="MenuItemMenu">תַפרִיט</string> | ||||||
|   <string id="NoInternet">אין חיבור אינטרנט</string> |   <string id="NoInternet">אין חיבור אינטרנט</string> | ||||||
|   <string id="NoMenu">שגיאת אחזור תפריט</string> |   <string id="NoMenu">שגיאת אחזור תפריט</string> | ||||||
|  |   <string id="NoAPIKey">אין מפתח API בהגדרות האפליקציה</string> | ||||||
|  |   <string id="NoApiUrl">אין כתובת API בהגדרות האפליקציה</string> | ||||||
|  |   <string id="NoConfigUrl">אין כתובת אתר תצורה בהגדרות האפליקציה</string> | ||||||
| </strings> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">Jelovnik</string> |   <string id="MenuItemMenu">Jelovnik</string> | ||||||
|   <string id="NoInternet">Nema internetske veze</string> |   <string id="NoInternet">Nema internetske veze</string> | ||||||
|   <string id="NoMenu">Pogreška dohvaćanja izbornika</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> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">Menü</string> |   <string id="MenuItemMenu">Menü</string> | ||||||
|   <string id="NoInternet">Nincs internetkapcsolat</string> |   <string id="NoInternet">Nincs internetkapcsolat</string> | ||||||
|   <string id="NoMenu">Menü Lekérési hiba</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> | </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="MenuItemMenu">Menu</string> | ||||||
|   <string id="NoInternet">Tidak ada koneksi internet</string> |   <string id="NoInternet">Tidak ada koneksi internet</string> | ||||||
|   <string id="NoMenu">Kesalahan Pengambilan Menu</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> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">Menù</string> |   <string id="MenuItemMenu">Menù</string> | ||||||
|   <string id="NoInternet">Nessuna connessione internet</string> |   <string id="NoInternet">Nessuna connessione internet</string> | ||||||
|   <string id="NoMenu">Errore di recupero del menu</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> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">メニュー</string> |   <string id="MenuItemMenu">メニュー</string> | ||||||
|   <string id="NoInternet">インターネット接続なし</string> |   <string id="NoInternet">インターネット接続なし</string> | ||||||
|   <string id="NoMenu">メニューフェッチエラー</string> |   <string id="NoMenu">メニューフェッチエラー</string> | ||||||
|  |   <string id="NoAPIKey">アプリケーション設定に API キーがありません</string> | ||||||
|  |   <string id="NoApiUrl">アプリケーション設定に API URL がありません</string> | ||||||
|  |   <string id="NoConfigUrl">アプリケーション設定に構成 URL がありません</string> | ||||||
| </strings> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">메뉴</string> |   <string id="MenuItemMenu">메뉴</string> | ||||||
|   <string id="NoInternet">인터넷에 연결되지 않음</string> |   <string id="NoInternet">인터넷에 연결되지 않음</string> | ||||||
|   <string id="NoMenu">메뉴 가져오기 오류</string> |   <string id="NoMenu">메뉴 가져오기 오류</string> | ||||||
|  |   <string id="NoAPIKey">애플리케이션 설정에 API 키가 없습니다.</string> | ||||||
|  |   <string id="NoApiUrl">애플리케이션 설정에 API URL이 없습니다.</string> | ||||||
|  |   <string id="NoConfigUrl">애플리케이션 설정에 구성 URL이 없습니다.</string> | ||||||
| </strings> | </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="MenuItemMenu">Izvēlne</string> | ||||||
|   <string id="NoInternet">Nav interneta savienojuma</string> |   <string id="NoInternet">Nav interneta savienojuma</string> | ||||||
|   <string id="NoMenu">Izvēlnes ielādes kļūda</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> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">Meniu</string> |   <string id="MenuItemMenu">Meniu</string> | ||||||
|   <string id="NoInternet">Nėra interneto ryšio</string> |   <string id="NoInternet">Nėra interneto ryšio</string> | ||||||
|   <string id="NoMenu">Meniu gavimo klaida</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> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">Meny</string> |   <string id="MenuItemMenu">Meny</string> | ||||||
|   <string id="NoInternet">Ingen Internett-tilkobling</string> |   <string id="NoInternet">Ingen Internett-tilkobling</string> | ||||||
|   <string id="NoMenu">Menyhentingsfeil</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> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">Menu</string> |   <string id="MenuItemMenu">Menu</string> | ||||||
|   <string id="NoInternet">Brak połączenia z internetem</string> |   <string id="NoInternet">Brak połączenia z internetem</string> | ||||||
|   <string id="NoMenu">Błąd pobierania menu</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> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">Cardápio</string> |   <string id="MenuItemMenu">Cardápio</string> | ||||||
|   <string id="NoInternet">Sem conexão com a Internet</string> |   <string id="NoInternet">Sem conexão com a Internet</string> | ||||||
|   <string id="NoMenu">Erro ao buscar menu</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> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">Meniul</string> |   <string id="MenuItemMenu">Meniul</string> | ||||||
|   <string id="NoInternet">Fără conexiune internet</string> |   <string id="NoInternet">Fără conexiune internet</string> | ||||||
|   <string id="NoMenu">Eroare de preluare a meniului</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> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">Ponuka</string> |   <string id="MenuItemMenu">Ponuka</string> | ||||||
|   <string id="NoInternet">Žiadne internetové pripojenie</string> |   <string id="NoInternet">Žiadne internetové pripojenie</string> | ||||||
|   <string id="NoMenu">Chyba načítania ponuky</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> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">meni</string> |   <string id="MenuItemMenu">meni</string> | ||||||
|   <string id="NoInternet">Ni internetne povezave</string> |   <string id="NoInternet">Ni internetne povezave</string> | ||||||
|   <string id="NoMenu">Napaka pri pridobivanju menija</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> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">Menú</string> |   <string id="MenuItemMenu">Menú</string> | ||||||
|   <string id="NoInternet">Sin conexión a Internet</string> |   <string id="NoInternet">Sin conexión a Internet</string> | ||||||
|   <string id="NoMenu">Error de recuperación del menú</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> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">Meny</string> |   <string id="MenuItemMenu">Meny</string> | ||||||
|   <string id="NoInternet">Ingen internetanslutning</string> |   <string id="NoInternet">Ingen internetanslutning</string> | ||||||
|   <string id="NoMenu">Menyhämtningsfel</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> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">เมนู</string> |   <string id="MenuItemMenu">เมนู</string> | ||||||
|   <string id="NoInternet">ไม่มีการเชื่อมต่ออินเทอร์เน็ต</string> |   <string id="NoInternet">ไม่มีการเชื่อมต่ออินเทอร์เน็ต</string> | ||||||
|   <string id="NoMenu">เมนูดึงข้อมูลผิดพลาด</string> |   <string id="NoMenu">เมนูดึงข้อมูลผิดพลาด</string> | ||||||
|  |   <string id="NoAPIKey">ไม่มีคีย์ API ในการตั้งค่าแอปพลิเคชัน</string> | ||||||
|  |   <string id="NoApiUrl">ไม่มี URL API ในการตั้งค่าแอปพลิเคชัน</string> | ||||||
|  |   <string id="NoConfigUrl">ไม่มี URL การกำหนดค่าในการตั้งค่าแอปพลิเคชัน</string> | ||||||
| </strings> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">Menü</string> |   <string id="MenuItemMenu">Menü</string> | ||||||
|   <string id="NoInternet">İnternet bağlantısı yok</string> |   <string id="NoInternet">İnternet bağlantısı yok</string> | ||||||
|   <string id="NoMenu">Menü Alma Hatası</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> | </strings> | ||||||
| @@ -15,7 +15,7 @@ | |||||||
|  |  | ||||||
| <!-- | <!-- | ||||||
|   Generated by Google Translate: English to Ukrainian |   Generated by Google Translate: English to Ukrainian | ||||||
|   Створено Google Translate з англійської |   Згенеровано Google Translate з англійської | ||||||
| --> | --> | ||||||
|  |  | ||||||
| <strings> | <strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">Меню</string> |   <string id="MenuItemMenu">Меню</string> | ||||||
|   <string id="NoInternet">Немає підключення до Інтернету</string> |   <string id="NoInternet">Немає підключення до Інтернету</string> | ||||||
|   <string id="NoMenu">Помилка вибірки меню</string> |   <string id="NoMenu">Помилка вибірки меню</string> | ||||||
|  |   <string id="NoAPIKey">У налаштуваннях програми немає ключа API</string> | ||||||
|  |   <string id="NoApiUrl">У налаштуваннях програми немає URL-адреси API</string> | ||||||
|  |   <string id="NoConfigUrl">У налаштуваннях програми немає URL-адреси конфігурації</string> | ||||||
| </strings> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">Thực đơn</string> |   <string id="MenuItemMenu">Thực đơn</string> | ||||||
|   <string id="NoInternet">Không có kết nối Internet</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="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> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">菜单</string> |   <string id="MenuItemMenu">菜单</string> | ||||||
|   <string id="NoInternet">没有网络连接</string> |   <string id="NoInternet">没有网络连接</string> | ||||||
|   <string id="NoMenu">菜单获取错误</string> |   <string id="NoMenu">菜单获取错误</string> | ||||||
|  |   <string id="NoAPIKey">应用程序设置中没有 API 密钥</string> | ||||||
|  |   <string id="NoApiUrl">应用程序设置中没有 API URL</string> | ||||||
|  |   <string id="NoConfigUrl">应用程序设置中没有配置 URL</string> | ||||||
| </strings> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">選單</string> |   <string id="MenuItemMenu">選單</string> | ||||||
|   <string id="NoInternet">沒有網路連線</string> |   <string id="NoInternet">沒有網路連線</string> | ||||||
|   <string id="NoMenu">選單取得錯誤</string> |   <string id="NoMenu">選單取得錯誤</string> | ||||||
|  |   <string id="NoAPIKey">應用程式設定中沒有 API 金鑰</string> | ||||||
|  |   <string id="NoApiUrl">應用程式設定中沒有 API URL</string> | ||||||
|  |   <string id="NoConfigUrl">應用程式設定中沒有配置 URL</string> | ||||||
| </strings> | </strings> | ||||||
| @@ -26,4 +26,7 @@ | |||||||
|   <string id="MenuItemMenu">Menu</string> |   <string id="MenuItemMenu">Menu</string> | ||||||
|   <string id="NoInternet">Tiada sambungan internet</string> |   <string id="NoInternet">Tiada sambungan internet</string> | ||||||
|   <string id="NoMenu">Ralat Pengambilan Menu</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> | </strings> | ||||||
| @@ -20,4 +20,7 @@ | |||||||
|     <string id="MenuItemMenu">Menu</string> |     <string id="MenuItemMenu">Menu</string> | ||||||
|     <string id="NoInternet">No Internet connection</string> |     <string id="NoInternet">No Internet connection</string> | ||||||
|     <string id="NoMenu">Menu Fetch Error</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> | </strings> | ||||||
|   | |||||||
| @@ -23,7 +23,7 @@ using Toybox.Lang; | |||||||
| class Globals { | 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          = true; | ||||||
|     static const updateInterval = 5;    // seconds |     static const updateInterval = 5;    // seconds | ||||||
|     static const alertTimeout   = 2000; // ms |     static const alertTimeout   = 2000; // ms | ||||||
|     static const tapTimeout     = 1000; // ms |     static const tapTimeout     = 1000; // ms | ||||||
|   | |||||||
| @@ -26,20 +26,25 @@ using Toybox.Timer; | |||||||
|  |  | ||||||
| class HomeAssistantApp extends Application.AppBase { | class HomeAssistantApp extends Application.AppBase { | ||||||
|     hidden var haMenu; |     hidden var haMenu; | ||||||
|     hidden var strNoInternet as Lang.String; |     hidden var strNoApiKey    as Lang.String; | ||||||
|     hidden var strNoMenu as Lang.String; |     hidden var strNoApiUrl    as Lang.String; | ||||||
|     hidden var timer as Timer.Timer; |     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() { |     function initialize() { | ||||||
|         AppBase.initialize(); |         AppBase.initialize(); | ||||||
|         strNoInternet = WatchUi.loadResource($.Rez.Strings.NoInternet); |         strNoApiKey    = WatchUi.loadResource($.Rez.Strings.NoAPIKey); | ||||||
|         strNoMenu     = WatchUi.loadResource($.Rez.Strings.NoMenu); |         strNoApiUrl    = WatchUi.loadResource($.Rez.Strings.NoApiUrl); | ||||||
|         timer         = new Timer.Timer(); |         strNoConfigUrl = WatchUi.loadResource($.Rez.Strings.NoConfigUrl); | ||||||
|  |         strNoInternet  = WatchUi.loadResource($.Rez.Strings.NoInternet); | ||||||
|  |         strNoMenu      = WatchUi.loadResource($.Rez.Strings.NoMenu); | ||||||
|  |         timer          = new Timer.Timer(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     // onStart() is called on application start up |     // onStart() is called on application start up | ||||||
|     function onStart(state as Lang.Dictionary?) as Void { |     function onStart(state as Lang.Dictionary?) as Void { | ||||||
|         fetchMenuConfig(); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     // onStop() is called when your application is exiting |     // 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 |     // Return the initial view of your application here | ||||||
|     function getInitialView() as Lang.Array<WatchUi.Views or WatchUi.InputDelegates>? { |     function getInitialView() as Lang.Array<WatchUi.Views or WatchUi.InputDelegates>? { | ||||||
|         return [new WatchUi.View(), new WatchUi.BehaviorDelegate()] 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. |     // 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, |             :method  => Communications.HTTP_REQUEST_METHOD_GET, | ||||||
|             :responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON |             :responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON | ||||||
|         }; |         }; | ||||||
|         if (System.getDeviceSettings().phoneConnected && System.getDeviceSettings().connectionAvailable) { |         Communications.makeWebRequest( | ||||||
|             Communications.makeWebRequest( |             Properties.getValue("config_url"), | ||||||
|                 Properties.getValue("config_url"), |             null, | ||||||
|                 null, |             options, | ||||||
|                 options, |             method(:onReturnFetchMenuConfig) | ||||||
|                 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 |         } or Null | ||||||
|     ) { |     ) { | ||||||
|         strNoInternet = WatchUi.loadResource($.Rez.Strings.NoInternet); |         strNoInternet = WatchUi.loadResource($.Rez.Strings.NoInternet); | ||||||
|  |          | ||||||
|         WatchUi.MenuItem.initialize( |         WatchUi.MenuItem.initialize( | ||||||
|             label, |             label, | ||||||
|             subLabel, |             subLabel, | ||||||
| @@ -59,10 +60,28 @@ class HomeAssistantMenuItem extends WatchUi.MenuItem { | |||||||
|                     if (Globals.debug) { |                     if (Globals.debug) { | ||||||
|                         System.println("HomeAssistantMenuItem Note - onReturnExecScript(): Correct script executed."); |                         System.println("HomeAssistantMenuItem Note - onReturnExecScript(): Correct script executed."); | ||||||
|                     } |                     } | ||||||
|                     WatchUi.showToast( |                     if (WatchUi has :showToast) { | ||||||
|                         (d[i].get("attributes") as Lang.Dictionary).get("friendly_name") as Lang.String, |                         WatchUi.showToast( | ||||||
|                         null |                             (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 |             :responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON | ||||||
|         }; |         }; | ||||||
|         if (System.getDeviceSettings().phoneConnected && System.getDeviceSettings().connectionAvailable) { |         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) { |             if (Globals.debug) { | ||||||
|                 System.println("URL=" + url); |                 System.println("HomeAssistantMenuItem execScript() URL=" + url); | ||||||
|                 System.println("mIdentifier=" + mIdentifier); |                 System.println("HomeAssistantMenuItem execScript() mIdentifier=" + mIdentifier); | ||||||
|             } |             } | ||||||
|             Communications.makeWebRequest( |             Communications.makeWebRequest( | ||||||
|                 url, |                 url, | ||||||
| @@ -90,15 +112,9 @@ class HomeAssistantMenuItem extends WatchUi.MenuItem { | |||||||
|             ); |             ); | ||||||
|         } else { |         } else { | ||||||
|             if (Globals.debug) { |             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({ |             WatchUi.pushView(new ErrorView(strNoInternet + "."), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||||
|                 :timeout => Globals.alertTimeout, |  | ||||||
|                 :font    => Graphics.FONT_SYSTEM_TINY, |  | ||||||
|                 :text    => strNoInternet, |  | ||||||
|                 :fgcolor => Graphics.COLOR_RED, |  | ||||||
|                 :bgcolor => Graphics.COLOR_BLACK |  | ||||||
|             }).pushView(WatchUi.SLIDE_IMMEDIATE); |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -87,7 +87,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { | |||||||
|         if (System.getDeviceSettings().phoneConnected && System.getDeviceSettings().connectionAvailable) { |         if (System.getDeviceSettings().phoneConnected && System.getDeviceSettings().connectionAvailable) { | ||||||
|             var url = Properties.getValue("api_url") + "/states/" + mIdentifier; |             var url = Properties.getValue("api_url") + "/states/" + mIdentifier; | ||||||
|             if (Globals.debug) { |             if (Globals.debug) { | ||||||
|                 System.println("URL=" + url); |                 System.println("HomeAssistantToggleMenuItem getState() URL=" + url); | ||||||
|             } |             } | ||||||
|             Communications.makeWebRequest( |             Communications.makeWebRequest( | ||||||
|                 url, |                 url, | ||||||
| @@ -99,13 +99,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { | |||||||
|             if (Globals.debug) { |             if (Globals.debug) { | ||||||
|                 System.println("HomeAssistantToggleMenuItem Note - getState(): No Internet connection, skipping API call."); |                 System.println("HomeAssistantToggleMenuItem Note - getState(): No Internet connection, skipping API call."); | ||||||
|             } |             } | ||||||
|             new Alert({ |             WatchUi.pushView(new ErrorView(strNoInternet + "."), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||||
|                 :timeout => Globals.alertTimeout, |  | ||||||
|                 :font    => Graphics.FONT_SYSTEM_TINY, |  | ||||||
|                 :text    => strNoInternet, |  | ||||||
|                 :fgcolor => Graphics.COLOR_RED, |  | ||||||
|                 :bgcolor => Graphics.COLOR_BLACK |  | ||||||
|             }).pushView(WatchUi.SLIDE_IMMEDIATE); |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -141,15 +135,18 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { | |||||||
|             :responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON |             :responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON | ||||||
|         }; |         }; | ||||||
|         if (System.getDeviceSettings().phoneConnected && System.getDeviceSettings().connectionAvailable) { |         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; |             var url; | ||||||
|             if (s) { |             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 { |             } 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) { |             if (Globals.debug) { | ||||||
|                 System.println("URL=" + url); |                 System.println("HomeAssistantToggleMenuItem setState() URL=" + url); | ||||||
|                 System.println("mIdentifier=" + mIdentifier); |                 System.println("HomeAssistantToggleMenuItem setState() mIdentifier=" + mIdentifier); | ||||||
|             } |             } | ||||||
|             Communications.makeWebRequest( |             Communications.makeWebRequest( | ||||||
|                 url, |                 url, | ||||||
| @@ -163,13 +160,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { | |||||||
|             if (Globals.debug) { |             if (Globals.debug) { | ||||||
|                 System.println("HomeAssistantToggleMenuItem Note - setState(): No Internet connection, skipping API call."); |                 System.println("HomeAssistantToggleMenuItem Note - setState(): No Internet connection, skipping API call."); | ||||||
|             } |             } | ||||||
|             new Alert({ |             WatchUi.pushView(new ErrorView(strNoInternet + "."), new ErrorDelegate(), WatchUi.SLIDE_UP); | ||||||
|                 :timeout => Globals.alertTimeout, |  | ||||||
|                 :font    => Graphics.FONT_SYSTEM_TINY, |  | ||||||
|                 :text    => strNoInternet, |  | ||||||
|                 :fgcolor => Graphics.COLOR_RED, |  | ||||||
|                 :bgcolor => Graphics.COLOR_BLACK |  | ||||||
|             }).pushView(WatchUi.SLIDE_IMMEDIATE); |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||