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
This commit is contained in:
Philip Abbey
2023-11-10 18:22:14 +00:00
parent 3c0b39ad3e
commit 1653569e8f
61 changed files with 578 additions and 74 deletions

View File

@ -0,0 +1,12 @@
{
"folders": [
{
"path": "."
},
{
"name": "abc",
"path": "../blah/abc"
}
],
"settings": {}
}

View File

@ -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"):

View File

@ -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

View File

@ -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

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View 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>

View 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

View 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>

View 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

View 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>

View 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

View 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>

View 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

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View 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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

View 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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

View 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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

View 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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

View 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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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

View File

@ -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);
}
} }
} }

View File

@ -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);
} }
} }

View File

@ -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);
} }
} }