Added Watch Battery transmission
Added a background service to send the watch battery level to Home Assistant. Changed the Glance View as requested by a user. Updated to new HA icon using SVG in stead of PNG.
3
.gitignore
vendored
@ -2,3 +2,6 @@ bin/
|
|||||||
export/
|
export/
|
||||||
**/Thumbs.db
|
**/Thumbs.db
|
||||||
settings.txt
|
settings.txt
|
||||||
|
Thumbs.db
|
||||||
|
# This file contain credentials, instead provide the empty file ClientId.mc.unpopulated
|
||||||
|
source/ClientId.mc
|
||||||
|
110
compile_sim.cmd
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
@echo off
|
||||||
|
rem -----------------------------------------------------------------------------------
|
||||||
|
rem
|
||||||
|
rem Distributed under MIT Licence
|
||||||
|
rem See https://github.com/house-of-abbey/GarminHomeAssistant/blob/main/LICENSE.
|
||||||
|
rem
|
||||||
|
rem -----------------------------------------------------------------------------------
|
||||||
|
rem
|
||||||
|
rem GarminHomeAssistant is a Garmin IQ application written in Monkey C and routinely
|
||||||
|
rem tested on a Venu 2 device. The source code is provided at:
|
||||||
|
rem https://github.com/house-of-abbey/GarminHomeAssistant.
|
||||||
|
rem
|
||||||
|
rem J D Abbey & P A Abbey, 28 December 2022
|
||||||
|
rem
|
||||||
|
rem For use when VS Code is misbehaving and failing to recompile before starting a simulation.
|
||||||
|
rem
|
||||||
|
rem Reference:
|
||||||
|
rem * Using Monkey C from the Command Line
|
||||||
|
rem https://developer.garmin.com/connect-iq/reference-guides/monkey-c-command-line-setup/
|
||||||
|
rem
|
||||||
|
rem -----------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
rem Check this path is correct for your Java installation
|
||||||
|
set JAVA_PATH=C:\Program Files (x86)\Common Files\Oracle\Java\javapath
|
||||||
|
rem SDK_PATH should work for all users
|
||||||
|
set /p SDK_PATH=<"%USERPROFILE%\AppData\Roaming\Garmin\ConnectIQ\current-sdk.cfg"
|
||||||
|
set SDK_PATH=%SDK_PATH:~0,-1%\bin
|
||||||
|
rem Assume we can create and use this directory
|
||||||
|
set DEST=export
|
||||||
|
rem Device for simulation
|
||||||
|
set DEVICE=venu2
|
||||||
|
|
||||||
|
rem C:\>java -jar %SDK_PATH%\monkeybrains.jar -h
|
||||||
|
rem usage: monkeyc [-a <arg>] [-b <arg>] [--build-stats <arg>] [-c <arg>] [-d <arg>]
|
||||||
|
rem [--debug-log-level <arg>] [--debug-log-output <arg>] [-e]
|
||||||
|
rem [--Eno-invalid-symbol] [-f <arg>] [-g] [-h] [-i <arg>] [-k] [-l <arg>]
|
||||||
|
rem [-m <arg>] [--no-gen-styles] [-o <arg>] [-O <arg>] [-p <arg>] [-r] [-s
|
||||||
|
rem <arg>] [-t] [-u <arg>] [-v] [-w] [-x <arg>] [-y <arg>] [-z <arg>]
|
||||||
|
rem -a,--apidb <arg> API import file
|
||||||
|
rem -b,--apimir <arg> API MIR file
|
||||||
|
rem --build-stats <arg> Print build stats [0=basic]
|
||||||
|
rem -c,--api-level <arg> API Level to target
|
||||||
|
rem -d,--device <arg> Target device
|
||||||
|
rem --debug-log-level <arg> Debug logging verbosity [0=errors, 1=basic,
|
||||||
|
rem 2=intermediate, 3=verbose]
|
||||||
|
rem --debug-log-output <arg>Output log zip file
|
||||||
|
rem -e,--package-app Create an application package.
|
||||||
|
rem --Eno-invalid-symbol Do not error when a symbol is found to be invalid
|
||||||
|
rem -f,--jungles <arg> Jungle files
|
||||||
|
rem -g,--debug Print debug output
|
||||||
|
rem -h,--help Prints help information
|
||||||
|
rem -i,--import-dbg <arg> Import api.debug.xml
|
||||||
|
rem -k,--profile Enable profiling support
|
||||||
|
rem -l,--typecheck <arg> Type check [0=off, 1=gradual, 2=informative,
|
||||||
|
rem 3=strict]
|
||||||
|
rem -m,--manifest <arg> Manifest file (deprecated)
|
||||||
|
rem --no-gen-styles Do not generate Rez.Styles module
|
||||||
|
rem -o,--output <arg> Output file to create
|
||||||
|
rem -O,--optimization <arg> Optimization level [0=none, 1=basic, 2=fast
|
||||||
|
rem optimizations, 3=slow optimizations] [p=optimize
|
||||||
|
rem performance, z=optimize code space]
|
||||||
|
rem -p,--project-info <arg> projectInfo.xml file to use when compiling
|
||||||
|
rem -r,--release Strip debug information
|
||||||
|
rem -s,--sdk-version <arg> SDK version to target (deprecated, use -c
|
||||||
|
rem -t,--unit-test Enables compilation of unit tests
|
||||||
|
rem -u,--devices <arg> devices.xml file to use when compiling (deprecated)
|
||||||
|
rem -v,--version Prints the compiler version
|
||||||
|
rem -w,--warn Show compiler warnings
|
||||||
|
rem -x,--excludes <arg> Add annotations to the exclude list (deprecated)
|
||||||
|
rem -y,--private-key <arg> Private key to sign builds with
|
||||||
|
rem -z,--rez <arg> Resource files (deprecated)
|
||||||
|
|
||||||
|
rem Batch file's directory where the source code is
|
||||||
|
set SRC=%~dp0
|
||||||
|
rem drop last character '\'
|
||||||
|
set SRC=%SRC:~0,-1%
|
||||||
|
|
||||||
|
if not exist %DEST% (
|
||||||
|
md %DEST%
|
||||||
|
)
|
||||||
|
|
||||||
|
if exist %SRC%\export\HomeAssistant*.iq (
|
||||||
|
del /f /q %SRC%\export\HomeAssistant*.iq
|
||||||
|
)
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo Starting compilation for simulation on %DEVICE%.
|
||||||
|
echo.
|
||||||
|
|
||||||
|
rem call %SDK_PATH%\connectiq.bat
|
||||||
|
start "Simulator" "%SDK_PATH%\simulator.exe"
|
||||||
|
|
||||||
|
rem Compile PRG for a single device for side loading
|
||||||
|
"%JAVA_PATH%\java.exe" ^
|
||||||
|
-Xms1g ^
|
||||||
|
-Dfile.encoding=UTF-8 ^
|
||||||
|
-Dapple.awt.UIElement=true ^
|
||||||
|
-jar %SDK_PATH%\monkeybrains.jar ^
|
||||||
|
--output %SRC%\bin\HomeAssistant.prg ^
|
||||||
|
--jungles %SRC%\monkey.jungle ^
|
||||||
|
--private-key %SRC%\..\developer_key ^
|
||||||
|
--device %DEVICE%_sim ^
|
||||||
|
--warn
|
||||||
|
|
||||||
|
if %ERRORLEVEL% equ 0 (
|
||||||
|
%SDK_PATH%\monkeydo.bat %SRC%\bin\HomeAssistant.prg %DEVICE%
|
||||||
|
) else (
|
||||||
|
rem Wait to see errors
|
||||||
|
pause
|
||||||
|
)
|
29
export.cmd
@ -1,21 +1,23 @@
|
|||||||
@echo off
|
@echo off
|
||||||
rem -----------------------------------------------------------------------------------
|
rem -----------------------------------------------------------------------------------
|
||||||
rem
|
rem
|
||||||
rem Distributed under MIT Licence
|
rem Distributed under MIT Licence
|
||||||
rem See https://github.com/house-of-abbey/GarminHomeAssistant/blob/main/LICENSE.
|
rem See https://github.com/house-of-abbey/GarminHomeAssistant/blob/main/LICENSE.
|
||||||
rem
|
rem
|
||||||
rem -----------------------------------------------------------------------------------
|
rem -----------------------------------------------------------------------------------
|
||||||
rem
|
rem
|
||||||
rem GarminHomeAssistant is a Garmin IQ application written in Monkey C and routinely
|
rem GarminHomeAssistant is a Garmin IQ application written in Monkey C and routinely
|
||||||
rem tested on a Venu 2 device. The source code is provided at:
|
rem tested on a Venu 2 device. The source code is provided at:
|
||||||
rem https://github.com/house-of-abbey/GarminHomeAssistant.
|
rem https://github.com/house-of-abbey/GarminHomeAssistant.
|
||||||
rem
|
rem
|
||||||
rem J D Abbey & P A Abbey, 28 December 2022
|
rem J D Abbey & P A Abbey, 28 December 2022
|
||||||
rem
|
rem
|
||||||
|
rem Export both the Application and the Widget IQ files for upload to Garmin's App Store.
|
||||||
|
rem
|
||||||
rem Reference:
|
rem Reference:
|
||||||
rem * Using Monkey C from the Command Line
|
rem * Using Monkey C from the Command Line
|
||||||
rem * https://developer.garmin.com/connect-iq/reference-guides/monkey-c-command-line-setup/
|
rem https://developer.garmin.com/connect-iq/reference-guides/monkey-c-command-line-setup/
|
||||||
rem
|
rem
|
||||||
rem -----------------------------------------------------------------------------------
|
rem -----------------------------------------------------------------------------------
|
||||||
|
|
||||||
rem Check this path is correct for your Java installation
|
rem Check this path is correct for your Java installation
|
||||||
@ -118,16 +120,3 @@ echo Finished exporting HomeAssistant
|
|||||||
dir %SRC%\export\HomeAssistant*.iq
|
dir %SRC%\export\HomeAssistant*.iq
|
||||||
|
|
||||||
pause
|
pause
|
||||||
exit /b
|
|
||||||
|
|
||||||
rem Compile PRG for a single device for side loading
|
|
||||||
"%JAVA_PATH%\java.exe" ^
|
|
||||||
-Xms1g ^
|
|
||||||
-Dfile.encoding=UTF-8 ^
|
|
||||||
-Dapple.awt.UIElement=true ^
|
|
||||||
-jar %SDK_PATH%\monkeybrains.jar ^
|
|
||||||
--output %SRC%\bin\HomeAssistant.prg ^
|
|
||||||
--jungles %SRC%\monkey.jungle ^
|
|
||||||
--private-key %SRC%\..\developer_key ^
|
|
||||||
--device venu2_sim ^
|
|
||||||
--warn
|
|
||||||
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 9.1 KiB |
70
launcherIconResize.py
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
####################################################################################
|
||||||
|
#
|
||||||
|
# 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, 29 December 2023
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Description:
|
||||||
|
#
|
||||||
|
# Python script to automatically resize the application launcher icon from the
|
||||||
|
# original 70x70 pixel width to something more appropriate for different screen
|
||||||
|
# sizes.
|
||||||
|
#
|
||||||
|
# Python installation:
|
||||||
|
# pip install BeautifulSoup
|
||||||
|
# NB. For XML formatting:
|
||||||
|
# pip install lxml
|
||||||
|
#
|
||||||
|
# References:
|
||||||
|
# * https://www.crummy.com/software/BeautifulSoup/bs4/doc/
|
||||||
|
# * https://realpython.com/beautiful-soup-web-scraper-python/
|
||||||
|
# * https://www.crummy.com/software/BeautifulSoup/bs4/doc/#parsing-xml
|
||||||
|
# * https://www.crummy.com/software/BeautifulSoup/bs4/doc/#xml
|
||||||
|
#
|
||||||
|
####################################################################################
|
||||||
|
|
||||||
|
from bs4 import BeautifulSoup, Comment
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
output_dir_prefix = 'resources-launcher-'
|
||||||
|
# Original icons for 416x416 screen size with 70x70 icons
|
||||||
|
input_dir = output_dir_prefix + '70-70'
|
||||||
|
|
||||||
|
# Convert icons to different screen sizes by these parameters
|
||||||
|
lookup = [26, 30, 33, 35, 36, 40, 54, 60, 61, 62, 65, 80]
|
||||||
|
|
||||||
|
# Delete all but the original 48x48 icon directories
|
||||||
|
for entry in os.listdir("."):
|
||||||
|
if entry.startswith(output_dir_prefix) and entry != input_dir:
|
||||||
|
shutil.rmtree(entry)
|
||||||
|
|
||||||
|
# (Re-)Create the resized icon directories
|
||||||
|
for icon_size in lookup:
|
||||||
|
output_dir = output_dir_prefix + str(icon_size) + "-" + str(icon_size)
|
||||||
|
print("\nCreate directory:", output_dir)
|
||||||
|
if os.path.exists(output_dir) and os.path.isdir(output_dir):
|
||||||
|
shutil.rmtree(output_dir)
|
||||||
|
os.makedirs(output_dir)
|
||||||
|
for entry in os.listdir(input_dir):
|
||||||
|
if entry.endswith(".svg"):
|
||||||
|
print("Create file: ", entry.ljust(40) + " SVG - Change file")
|
||||||
|
with open(input_dir + "/" + entry, "r") as f:
|
||||||
|
soup = BeautifulSoup(f.read(), features="xml")
|
||||||
|
svg: BeautifulSoup = list(soup.children)[0]
|
||||||
|
h = int(svg.attrs["height"])
|
||||||
|
svg.attrs["width"] = icon_size
|
||||||
|
svg.attrs["height"] = icon_size
|
||||||
|
with open(output_dir + "/" + entry, "wb") as o:
|
||||||
|
o.write(svg.encode("utf-8"))
|
||||||
|
elif entry.endswith(".xml"):
|
||||||
|
print("Create file: ", entry.ljust(40) + " XML - Copy file")
|
||||||
|
shutil.copyfile(input_dir + "/" + entry, output_dir + "/" + entry)
|
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
Someone0nEarth's Test Widget id="bf69be91-5833-4d96-92ea-c5f1a9db5dcc" type="widget"
|
Someone0nEarth's Test Widget id="bf69be91-5833-4d96-92ea-c5f1a9db5dcc" type="widget"
|
||||||
philipabbey's Test Widget id="4901cdfb-b4a2-4f33-96c7-f5be5992809e" type="widget"
|
philipabbey's Test Widget id="4901cdfb-b4a2-4f33-96c7-f5be5992809e" type="widget"
|
||||||
Live Widget id="" type="widget"
|
Live Widget id="585af26f-6ff7-44e8-80dc-b3670e5b8648" type="widget"
|
||||||
|
|
||||||
-->
|
-->
|
||||||
<iq:manifest version="3" xmlns:iq="http://www.garmin.com/xml/connectiq">
|
<iq:manifest version="3" xmlns:iq="http://www.garmin.com/xml/connectiq">
|
||||||
@ -140,8 +140,9 @@
|
|||||||
palette to update permissions.
|
palette to update permissions.
|
||||||
-->
|
-->
|
||||||
<iq:permissions>
|
<iq:permissions>
|
||||||
<iq:uses-permission id="Communications"/>
|
<iq:uses-permission id="Background"/>
|
||||||
<iq:uses-permission id="BluetoothLowEnergy"/>
|
<iq:uses-permission id="BluetoothLowEnergy"/>
|
||||||
|
<iq:uses-permission id="Communications"/>
|
||||||
</iq:permissions>
|
</iq:permissions>
|
||||||
<!--
|
<!--
|
||||||
Use "Monkey C: Edit Languages" from the Visual Studio Code command
|
Use "Monkey C: Edit Languages" from the Visual Studio Code command
|
||||||
|
@ -146,8 +146,9 @@
|
|||||||
palette to update permissions.
|
palette to update permissions.
|
||||||
-->
|
-->
|
||||||
<iq:permissions>
|
<iq:permissions>
|
||||||
<iq:uses-permission id="Communications"/>
|
<iq:uses-permission id="Background"/>
|
||||||
<iq:uses-permission id="BluetoothLowEnergy"/>
|
<iq:uses-permission id="BluetoothLowEnergy"/>
|
||||||
|
<iq:uses-permission id="Communications"/>
|
||||||
</iq:permissions>
|
</iq:permissions>
|
||||||
<!--
|
<!--
|
||||||
Use "Monkey C: Edit Languages" from the Visual Studio Code command
|
Use "Monkey C: Edit Languages" from the Visual Studio Code command
|
||||||
|
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">غير مهيأ</string>
|
<string id="Unconfigured" scope="glance">غير مهيأ</string>
|
||||||
<string id="GlanceMenu" scope="glance">قائمة طعام</string>
|
<string id="GlanceMenu" scope="glance">قائمة طعام</string>
|
||||||
<!-- لإعدادات واجهة المستخدم الرسومية -->
|
<!-- لإعدادات واجهة المستخدم الرسومية -->
|
||||||
|
<string id="SettingsSelect">يختار...</string>
|
||||||
<string id="SettingsApiKey">مفتاح API لـ HomeAssistant.</string>
|
<string id="SettingsApiKey">مفتاح API لـ HomeAssistant.</string>
|
||||||
<string id="SettingsApiKeyPrompt">رمز الوصول طويل الأمد.</string>
|
<string id="SettingsApiKeyPrompt">رمز الوصول طويل الأمد.</string>
|
||||||
<string id="SettingsApiUrl">عنوان URL لواجهة برمجة تطبيقات HomeAssistant.</string>
|
<string id="SettingsApiUrl">عنوان URL لواجهة برمجة تطبيقات HomeAssistant.</string>
|
||||||
<string id="SettingsConfigUrl">عنوان URL لتكوين القائمة (JSON).</string>
|
<string id="SettingsConfigUrl">عنوان URL لتكوين القائمة (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">المهلة بالثواني. قم بالخروج من التطبيق بعد هذه الفترة من عدم النشاط لحفظ بطارية الجهاز.</string>
|
<string id="SettingsAppTimeout">المهلة بالثواني. قم بالخروج من التطبيق بعد هذه الفترة من عدم النشاط لحفظ بطارية الجهاز.</string>
|
||||||
<string id="SettingsConfirmTimeout">بعد هذا الوقت (بالثواني)، يتم إغلاق مربع حوار تأكيد الإجراء تلقائيًا ويتم إلغاء الإجراء. اضبط على 0 لتعطيل المهلة.</string>
|
<string id="SettingsConfirmTimeout">بعد هذا الوقت (بالثواني)، يتم إغلاق مربع حوار تأكيد الإجراء تلقائيًا ويتم إلغاء الإجراء. اضبط على 0 لتعطيل المهلة.</string>
|
||||||
<string id="SettingsUi">تمثيل الأنواع بأيقونات (إيقاف) أو بالتسميات (تشغيل).</string>
|
<string id="SettingsMenuItemStyle">نمط عنصر القائمة.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">أيقونات</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">نص إضافي</string>
|
||||||
<string id="SettingsTextAlign">محاذاة القائمة لليسار (إيقاف) أو لليمين (تشغيل).</string>
|
<string id="SettingsTextAlign">محاذاة القائمة لليسار (إيقاف) أو لليمين (تشغيل).</string>
|
||||||
|
<string id="LeftToRight">من اليسار إلى اليمين</string>
|
||||||
|
<string id="RightToLeft">من اليمين الى اليسار</string>
|
||||||
<string id="SettingsWidgetStart">(القطعة فقط) قم بتشغيل التطبيق تلقائيًا من الأداة دون انتظار نقرة واحدة.</string>
|
<string id="SettingsWidgetStart">(القطعة فقط) قم بتشغيل التطبيق تلقائيًا من الأداة دون انتظار نقرة واحدة.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">قم بتمكين خدمة الخلفية لإرسال مستوى بطارية الساعة إلى Home Assistant.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">معدل التحديث (بالدقائق) الذي يجب أن تكرر عنده خدمة الخلفية إرسال مستوى البطارية.</string>
|
||||||
</strings>
|
</strings>
|
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">Неконфигуриран</string>
|
<string id="Unconfigured" scope="glance">Неконфигуриран</string>
|
||||||
<string id="GlanceMenu" scope="glance">Меню</string>
|
<string id="GlanceMenu" scope="glance">Меню</string>
|
||||||
<!-- За GUI за настройки -->
|
<!-- За GUI за настройки -->
|
||||||
|
<string id="SettingsSelect">Изберете...</string>
|
||||||
<string id="SettingsApiKey">API ключ за HomeAssistant.</string>
|
<string id="SettingsApiKey">API ключ за HomeAssistant.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Токен за дълготраен достъп.</string>
|
<string id="SettingsApiKeyPrompt">Токен за дълготраен достъп.</string>
|
||||||
<string id="SettingsApiUrl">URL адрес за API на HomeAssistant.</string>
|
<string id="SettingsApiUrl">URL адрес за API на HomeAssistant.</string>
|
||||||
<string id="SettingsConfigUrl">URL за конфигурация на менюто (JSON).</string>
|
<string id="SettingsConfigUrl">URL за конфигурация на менюто (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Изчакване в секунди. Излезте от приложението след този период на неактивност, за да запазите батерията на устройството.</string>
|
<string id="SettingsAppTimeout">Изчакване в секунди. Излезте от приложението след този период на неактивност, за да запазите батерията на устройството.</string>
|
||||||
<string id="SettingsConfirmTimeout">След това време (в секунди) диалоговият прозорец за потвърждение за действие се затваря автоматично и действието се отменя. Задайте 0, за да деактивирате изчакването.</string>
|
<string id="SettingsConfirmTimeout">След това време (в секунди) диалоговият прозорец за потвърждение за действие се затваря автоматично и действието се отменя. Задайте 0, за да деактивирате изчакването.</string>
|
||||||
<string id="SettingsUi">Представяне на типове с икони (изключено) или с етикети (включено).</string>
|
<string id="SettingsMenuItemStyle">Стил на елемент от менюто.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">Икони</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Допълнителен текст</string>
|
||||||
<string id="SettingsTextAlign">Ляво (изключено) или дясно (включено) подравняване на менюто.</string>
|
<string id="SettingsTextAlign">Ляво (изключено) или дясно (включено) подравняване на менюто.</string>
|
||||||
|
<string id="LeftToRight">Отляво надясно</string>
|
||||||
|
<string id="RightToLeft">От дясно на ляво</string>
|
||||||
<string id="SettingsWidgetStart">(Само за джаджа) Автоматично стартирайте приложението от джаджата, без да чакате докосване.</string>
|
<string id="SettingsWidgetStart">(Само за джаджа) Автоматично стартирайте приложението от джаджата, без да чакате докосване.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Активирайте фоновата услуга, за да изпратите нивото на батерията на часовника до Home Assistant.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">Честотата на опресняване (в минути), с която фоновата услуга трябва да повтори изпращането на нивото на батерията.</string>
|
||||||
</strings>
|
</strings>
|
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">Nenakonfigurováno</string>
|
<string id="Unconfigured" scope="glance">Nenakonfigurováno</string>
|
||||||
<string id="GlanceMenu" scope="glance">Jídelní lístek</string>
|
<string id="GlanceMenu" scope="glance">Jídelní lístek</string>
|
||||||
<!-- Pro nastavení GUI -->
|
<!-- Pro nastavení GUI -->
|
||||||
|
<string id="SettingsSelect">Vybrat...</string>
|
||||||
<string id="SettingsApiKey">Klíč API pro HomeAssistant.</string>
|
<string id="SettingsApiKey">Klíč API pro HomeAssistant.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Přístupový token s dlouhou životností.</string>
|
<string id="SettingsApiKeyPrompt">Přístupový token s dlouhou životností.</string>
|
||||||
<string id="SettingsApiUrl">URL pro HomeAssistant API.</string>
|
<string id="SettingsApiUrl">URL pro HomeAssistant API.</string>
|
||||||
<string id="SettingsConfigUrl">Adresa URL pro konfiguraci nabídky (JSON).</string>
|
<string id="SettingsConfigUrl">Adresa URL pro konfiguraci nabídky (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Časový limit v sekundách. Po této době nečinnosti aplikaci ukončete, abyste šetřili baterii zařízení.</string>
|
<string id="SettingsAppTimeout">Časový limit v sekundách. Po této době nečinnosti aplikaci ukončete, abyste šetřili baterii zařízení.</string>
|
||||||
<string id="SettingsConfirmTimeout">Po uplynutí této doby (v sekundách) se dialog pro potvrzení akce automaticky zavře a akce se zruší. Nastavením na 0 deaktivujete časový limit.</string>
|
<string id="SettingsConfirmTimeout">Po uplynutí této doby (v sekundách) se dialog pro potvrzení akce automaticky zavře a akce se zruší. Nastavením na 0 deaktivujete časový limit.</string>
|
||||||
<string id="SettingsUi">Znázornění typů pomocí ikon (vypnuto) nebo pomocí štítků (zapnuto).</string>
|
<string id="SettingsMenuItemStyle">Styl položky menu.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">ikony</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Doplňkový text</string>
|
||||||
<string id="SettingsTextAlign">Zarovnání nabídky vlevo (vypnuto) nebo vpravo (zapnuto).</string>
|
<string id="SettingsTextAlign">Zarovnání nabídky vlevo (vypnuto) nebo vpravo (zapnuto).</string>
|
||||||
|
<string id="LeftToRight">Zleva do prava</string>
|
||||||
|
<string id="RightToLeft">Zprava doleva</string>
|
||||||
<string id="SettingsWidgetStart">(Pouze widget) Automaticky spusťte aplikaci z widgetu bez čekání na klepnutí.</string>
|
<string id="SettingsWidgetStart">(Pouze widget) Automaticky spusťte aplikaci z widgetu bez čekání na klepnutí.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Povolte službu na pozadí, aby odeslala stav baterie hodin do Home Assistant.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">Obnovovací frekvence (v minutách), při které by služba na pozadí měla opakovat odesílání úrovně baterie.</string>
|
||||||
</strings>
|
</strings>
|
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">Ukonfigureret</string>
|
<string id="Unconfigured" scope="glance">Ukonfigureret</string>
|
||||||
<string id="GlanceMenu" scope="glance">Menu</string>
|
<string id="GlanceMenu" scope="glance">Menu</string>
|
||||||
<!-- Til indstillingerne GUI -->
|
<!-- Til indstillingerne GUI -->
|
||||||
|
<string id="SettingsSelect">Vælg...</string>
|
||||||
<string id="SettingsApiKey">API-nøgle til HomeAssistant.</string>
|
<string id="SettingsApiKey">API-nøgle til HomeAssistant.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Adgangstoken med lang levetid.</string>
|
<string id="SettingsApiKeyPrompt">Adgangstoken med lang levetid.</string>
|
||||||
<string id="SettingsApiUrl">URL til HomeAssistant API.</string>
|
<string id="SettingsApiUrl">URL til HomeAssistant API.</string>
|
||||||
<string id="SettingsConfigUrl">URL til menukonfiguration (JSON).</string>
|
<string id="SettingsConfigUrl">URL til menukonfiguration (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Timeout i sekunder. Afslut applikationen efter denne periode med inaktivitet for at spare på enhedens batteri.</string>
|
<string id="SettingsAppTimeout">Timeout i sekunder. Afslut applikationen efter denne periode med inaktivitet for at spare på enhedens batteri.</string>
|
||||||
<string id="SettingsConfirmTimeout">Efter dette tidspunkt (i sekunder) lukkes en bekræftelsesdialog for en handling automatisk, og handlingen annulleres. Indstil til 0 for at deaktivere timeout.</string>
|
<string id="SettingsConfirmTimeout">Efter dette tidspunkt (i sekunder) lukkes en bekræftelsesdialog for en handling automatisk, og handlingen annulleres. Indstil til 0 for at deaktivere timeout.</string>
|
||||||
<string id="SettingsUi">Repræsenterer typer med ikoner (fra) eller med etiketter (til).</string>
|
<string id="SettingsMenuItemStyle">Menupunkt stil.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">Ikoner</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Yderligere tekst</string>
|
||||||
<string id="SettingsTextAlign">Venstre (fra) eller Højre (til) menujustering.</string>
|
<string id="SettingsTextAlign">Venstre (fra) eller Højre (til) menujustering.</string>
|
||||||
|
<string id="LeftToRight">Venstre til højre</string>
|
||||||
|
<string id="RightToLeft">Højre til venstre</string>
|
||||||
<string id="SettingsWidgetStart">(Kun widget) Start automatisk applikationen fra widgetten uden at vente på et tryk.</string>
|
<string id="SettingsWidgetStart">(Kun widget) Start automatisk applikationen fra widgetten uden at vente på et tryk.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Aktiver baggrundstjenesten for at sende urets batteriniveau til Home Assistant.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">Opdateringshastigheden (i minutter), hvormed baggrundstjenesten skal gentage afsendelsen af batteriniveauet.</string>
|
||||||
</strings>
|
</strings>
|
@ -23,7 +23,7 @@
|
|||||||
<string id="MenuItemOn">An</string>
|
<string id="MenuItemOn">An</string>
|
||||||
<string id="MenuItemOff">Aus</string>
|
<string id="MenuItemOff">Aus</string>
|
||||||
<string id="MenuItemTap">Antippen</string>
|
<string id="MenuItemTap">Antippen</string>
|
||||||
<string id="MenuItemMenu">Menü</string>
|
<string id="MenuItemMenu">Menü</string>
|
||||||
<string id="Confirm">Sicher?</string>
|
<string id="Confirm">Sicher?</string>
|
||||||
<string id="NoPhone" scope="glance">Keine Telefonverbindung</string>
|
<string id="NoPhone" scope="glance">Keine Telefonverbindung</string>
|
||||||
<string id="NoInternet">Keine Internetverbindung</string>
|
<string id="NoInternet">Keine Internetverbindung</string>
|
||||||
@ -35,7 +35,7 @@
|
|||||||
<string id="ApiUrlNotFound">URL nicht gefunden. Möglicher API-URL-Fehler in den Einstellungen.</string>
|
<string id="ApiUrlNotFound">URL nicht gefunden. Möglicher API-URL-Fehler in den Einstellungen.</string>
|
||||||
<string id="ConfigUrlNotFound">URL nicht gefunden. Möglicher Konfigurations-URL-Fehler in den Einstellungen.</string>
|
<string id="ConfigUrlNotFound">URL nicht gefunden. Möglicher Konfigurations-URL-Fehler in den Einstellungen.</string>
|
||||||
<string id="NoJson">Von der HTTP-Anfrage wurde kein JSON zurückgegeben.</string>
|
<string id="NoJson">Von der HTTP-Anfrage wurde kein JSON zurückgegeben.</string>
|
||||||
<string id="UnhandledHttpErr">Die HTTP-Anfrage gab folgenden Fehlercode zurück = </string>
|
<string id="UnhandledHttpErr">Die HTTP-Anfrage gab folgenden Fehlercode zurück = </string>
|
||||||
<string id="TrailingSlashErr">Die API-URL darf keinen abschließenden Schrägstrich „/“ enthalten.</string>
|
<string id="TrailingSlashErr">Die API-URL darf keinen abschließenden Schrägstrich „/“ enthalten.</string>
|
||||||
<string id="Available" scope="glance">Verfügbar</string>
|
<string id="Available" scope="glance">Verfügbar</string>
|
||||||
<string id="Checking" scope="glance">Überprüfung...</string>
|
<string id="Checking" scope="glance">Überprüfung...</string>
|
||||||
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">Unkonfiguriert</string>
|
<string id="Unconfigured" scope="glance">Unkonfiguriert</string>
|
||||||
<string id="GlanceMenu" scope="glance">Speisekarte</string>
|
<string id="GlanceMenu" scope="glance">Speisekarte</string>
|
||||||
<!-- Für die Einstellungs-GUI -->
|
<!-- Für die Einstellungs-GUI -->
|
||||||
|
<string id="SettingsSelect">Wählen...</string>
|
||||||
<string id="SettingsApiKey">API-Schlüssel für HomeAssistant.</string>
|
<string id="SettingsApiKey">API-Schlüssel für HomeAssistant.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Langlebiges Zugriffstoken.</string>
|
<string id="SettingsApiKeyPrompt">Langlebiges Zugriffstoken.</string>
|
||||||
<string id="SettingsApiUrl">URL für die HomeAssistant-API.</string>
|
<string id="SettingsApiUrl">URL für die HomeAssistant-API.</string>
|
||||||
<string id="SettingsConfigUrl">URL zur Menükonfiguration (JSON).</string>
|
<string id="SettingsConfigUrl">URL zur Menükonfiguration (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Timeout in Sekunden. Beenden Sie die Anwendung nach dieser Zeit der Inaktivität, um den Akku des Geräts zu schonen.</string>
|
<string id="SettingsAppTimeout">Timeout in Sekunden. Beenden Sie die Anwendung nach dieser Zeit der Inaktivität, um den Akku des Geräts zu schonen.</string>
|
||||||
<string id="SettingsConfirmTimeout">Nach dieser Zeit (in Sekunden) wird automatisch ein Bestätigungsdialog für eine Aktion geschlossen und die Aktion abgebrochen. Auf 0 setzen, um das Timeout zu deaktivieren.</string>
|
<string id="SettingsConfirmTimeout">Nach dieser Zeit (in Sekunden) wird automatisch ein Bestätigungsdialog für eine Aktion geschlossen und die Aktion abgebrochen. Auf 0 setzen, um das Timeout zu deaktivieren.</string>
|
||||||
<string id="SettingsUi">Darstellen von Typen mit Symbolen (aus) oder mit Beschriftungen (ein).</string>
|
<string id="SettingsMenuItemStyle">Menüelementstil.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">Symbole</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Zusätzlicher Text</string>
|
||||||
<string id="SettingsTextAlign">Menüausrichtung links (aus) oder rechts (ein).</string>
|
<string id="SettingsTextAlign">Menüausrichtung links (aus) oder rechts (ein).</string>
|
||||||
|
<string id="LeftToRight">Links nach rechts</string>
|
||||||
|
<string id="RightToLeft">Rechts nach links</string>
|
||||||
<string id="SettingsWidgetStart">(Nur Widget) Starten Sie die Anwendung automatisch über das Widget, ohne auf einen Tipp warten zu müssen.</string>
|
<string id="SettingsWidgetStart">(Nur Widget) Starten Sie die Anwendung automatisch über das Widget, ohne auf einen Tipp warten zu müssen.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Aktivieren Sie den Hintergrunddienst, um den Batteriestand der Uhr an Home Assistant zu senden.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">Die Aktualisierungsrate (in Minuten), mit der der Hintergrunddienst das Senden des Akkustands wiederholen soll.</string>
|
||||||
</strings>
|
</strings>
|
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">Niet geconfigureerd</string>
|
<string id="Unconfigured" scope="glance">Niet geconfigureerd</string>
|
||||||
<string id="GlanceMenu" scope="glance">Menu</string>
|
<string id="GlanceMenu" scope="glance">Menu</string>
|
||||||
<!-- Voor de instellingen-GUI -->
|
<!-- Voor de instellingen-GUI -->
|
||||||
|
<string id="SettingsSelect">Selecteer...</string>
|
||||||
<string id="SettingsApiKey">API-sleutel voor HomeAssistant.</string>
|
<string id="SettingsApiKey">API-sleutel voor HomeAssistant.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Toegangstoken met lange levensduur.</string>
|
<string id="SettingsApiKeyPrompt">Toegangstoken met lange levensduur.</string>
|
||||||
<string id="SettingsApiUrl">URL voor HomeAssistant API.</string>
|
<string id="SettingsApiUrl">URL voor HomeAssistant API.</string>
|
||||||
<string id="SettingsConfigUrl">URL voor menuconfiguratie (JSON).</string>
|
<string id="SettingsConfigUrl">URL voor menuconfiguratie (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Time-out in seconden. Sluit de applicatie af na deze periode van inactiviteit om de batterij van het apparaat te sparen.</string>
|
<string id="SettingsAppTimeout">Time-out in seconden. Sluit de applicatie af na deze periode van inactiviteit om de batterij van het apparaat te sparen.</string>
|
||||||
<string id="SettingsConfirmTimeout">Na deze tijd (in seconden) wordt automatisch een bevestigingsvenster voor een actie gesloten en wordt de actie geannuleerd. Stel in op 0 om de time-out uit te schakelen.</string>
|
<string id="SettingsConfirmTimeout">Na deze tijd (in seconden) wordt automatisch een bevestigingsvenster voor een actie gesloten en wordt de actie geannuleerd. Stel in op 0 om de time-out uit te schakelen.</string>
|
||||||
<string id="SettingsUi">Typen weergeven met pictogrammen (uit) of met labels (aan).</string>
|
<string id="SettingsMenuItemStyle">Stijl van menu-items.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">Pictogrammen</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Aanvullende tekst</string>
|
||||||
<string id="SettingsTextAlign">Links (uit) of rechts (aan) Menu-uitlijning.</string>
|
<string id="SettingsTextAlign">Links (uit) of rechts (aan) Menu-uitlijning.</string>
|
||||||
|
<string id="LeftToRight">Van links naar rechts</string>
|
||||||
|
<string id="RightToLeft">Rechts naar links</string>
|
||||||
<string id="SettingsWidgetStart">(Alleen Widget) Start de applicatie automatisch vanuit de widget zonder te wachten op een tik.</string>
|
<string id="SettingsWidgetStart">(Alleen Widget) Start de applicatie automatisch vanuit de widget zonder te wachten op een tik.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Schakel de achtergrondservice in om het batterijniveau van de klok naar Home Assistant te sturen.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">De vernieuwingsfrequentie (in minuten) waarmee de achtergrondservice het batterijniveau opnieuw moet verzenden.</string>
|
||||||
</strings>
|
</strings>
|
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">Konfigureerimata</string>
|
<string id="Unconfigured" scope="glance">Konfigureerimata</string>
|
||||||
<string id="GlanceMenu" scope="glance">Menüü</string>
|
<string id="GlanceMenu" scope="glance">Menüü</string>
|
||||||
<!-- Seadete GUI jaoks -->
|
<!-- Seadete GUI jaoks -->
|
||||||
|
<string id="SettingsSelect">Vali...</string>
|
||||||
<string id="SettingsApiKey">API-võti HomeAssistantile.</string>
|
<string id="SettingsApiKey">API-võti HomeAssistantile.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Pikaealine juurdepääsuluba.</string>
|
<string id="SettingsApiKeyPrompt">Pikaealine juurdepääsuluba.</string>
|
||||||
<string id="SettingsApiUrl">HomeAssistant API URL.</string>
|
<string id="SettingsApiUrl">HomeAssistant API URL.</string>
|
||||||
<string id="SettingsConfigUrl">URL menüü konfigureerimiseks (JSON).</string>
|
<string id="SettingsConfigUrl">URL menüü konfigureerimiseks (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Aegumine sekundites. Seadme aku säästmiseks sulgege rakendus pärast seda tegevusetusperioodi.</string>
|
<string id="SettingsAppTimeout">Aegumine sekundites. Seadme aku säästmiseks sulgege rakendus pärast seda tegevusetusperioodi.</string>
|
||||||
<string id="SettingsConfirmTimeout">Pärast seda aega (sekundites) suletakse automaatselt toimingu kinnitusdialoog ja toiming tühistatakse. Ajalõpu keelamiseks määrake väärtusele 0.</string>
|
<string id="SettingsConfirmTimeout">Pärast seda aega (sekundites) suletakse automaatselt toimingu kinnitusdialoog ja toiming tühistatakse. Ajalõpu keelamiseks määrake väärtusele 0.</string>
|
||||||
<string id="SettingsUi">Tüüpide tähistamine ikoonidega (väljas) või siltidega (sees).</string>
|
<string id="SettingsMenuItemStyle">Menüüelemendi stiil.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">Ikoonid</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Täiendav tekst</string>
|
||||||
<string id="SettingsTextAlign">Vasak (väljas) või parem (sees) menüü joondamine.</string>
|
<string id="SettingsTextAlign">Vasak (väljas) või parem (sees) menüü joondamine.</string>
|
||||||
|
<string id="LeftToRight">Vasakult paremale</string>
|
||||||
|
<string id="RightToLeft">Paremalt vasakule</string>
|
||||||
<string id="SettingsWidgetStart">(Ainult vidin) Käivitage rakendus automaatselt vidinast ilma puudutust ootamata.</string>
|
<string id="SettingsWidgetStart">(Ainult vidin) Käivitage rakendus automaatselt vidinast ilma puudutust ootamata.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Lubage taustteenus, et saata Home Assistantile kella aku tase.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">Värskendussagedus (minutites), mille juures taustateenus peaks aku taseme saatmist kordama.</string>
|
||||||
</strings>
|
</strings>
|
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">Määrittämätön</string>
|
<string id="Unconfigured" scope="glance">Määrittämätön</string>
|
||||||
<string id="GlanceMenu" scope="glance">Valikko</string>
|
<string id="GlanceMenu" scope="glance">Valikko</string>
|
||||||
<!-- GUI-asetusten osalta -->
|
<!-- GUI-asetusten osalta -->
|
||||||
|
<string id="SettingsSelect">Valitse...</string>
|
||||||
<string id="SettingsApiKey">API-avain HomeAssistantille.</string>
|
<string id="SettingsApiKey">API-avain HomeAssistantille.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Pitkäikäinen pääsytunnus.</string>
|
<string id="SettingsApiKeyPrompt">Pitkäikäinen pääsytunnus.</string>
|
||||||
<string id="SettingsApiUrl">HomeAssistant API:n URL-osoite.</string>
|
<string id="SettingsApiUrl">HomeAssistant API:n URL-osoite.</string>
|
||||||
<string id="SettingsConfigUrl">URL-osoite valikon määrityksiä varten (JSON).</string>
|
<string id="SettingsConfigUrl">URL-osoite valikon määrityksiä varten (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Aikakatkaisu sekunneissa. Poistu sovelluksesta tämän käyttämättömyyden jälkeen säästääksesi laitteen akkua.</string>
|
<string id="SettingsAppTimeout">Aikakatkaisu sekunneissa. Poistu sovelluksesta tämän käyttämättömyyden jälkeen säästääksesi laitteen akkua.</string>
|
||||||
<string id="SettingsConfirmTimeout">Tämän ajan kuluttua (sekunneissa) toiminnon vahvistusikkuna suljetaan automaattisesti ja toiminto peruutetaan. Aseta arvoksi 0 poistaaksesi aikakatkaisun käytöstä.</string>
|
<string id="SettingsConfirmTimeout">Tämän ajan kuluttua (sekunneissa) toiminnon vahvistusikkuna suljetaan automaattisesti ja toiminto peruutetaan. Aseta arvoksi 0, jos haluat poistaa aikakatkaisun käytöstä.</string>
|
||||||
<string id="SettingsUi">Esittää tyyppejä kuvakkeilla (pois päältä) tai tarroilla (päällä).</string>
|
<string id="SettingsMenuItemStyle">Valikkokohdan tyyli.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">Kuvakkeet</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Lisäteksti</string>
|
||||||
<string id="SettingsTextAlign">Vasen (pois) tai oikea (päällä) valikon kohdistus.</string>
|
<string id="SettingsTextAlign">Vasen (pois) tai oikea (päällä) valikon kohdistus.</string>
|
||||||
|
<string id="LeftToRight">Vasemmalta oikealle</string>
|
||||||
|
<string id="RightToLeft">Oikealta vasemmalle</string>
|
||||||
<string id="SettingsWidgetStart">(Vain widget) Käynnistä sovellus automaattisesti widgetistä odottamatta napautusta.</string>
|
<string id="SettingsWidgetStart">(Vain widget) Käynnistä sovellus automaattisesti widgetistä odottamatta napautusta.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Ota taustapalvelu käyttöön lähettääksesi kellon akun varaustason Home Assistantille.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">Virkistystaajuus (minuutteina), jolla taustapalvelun pitäisi toistaa akun varaustason lähettämistä.</string>
|
||||||
</strings>
|
</strings>
|
@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
<strings>
|
<strings>
|
||||||
<string id="AppName" scope="glance">HomeAssistant</string>
|
<string id="AppName" scope="glance">HomeAssistant</string>
|
||||||
<string id="MenuItemOn">Activé</string>
|
<string id="MenuItemOn">Activé</string>
|
||||||
<string id="MenuItemOff">Désactivé</string>
|
<string id="MenuItemOff">Désactivé</string>
|
||||||
<string id="MenuItemTap">Clic</string>
|
<string id="MenuItemTap">Clic</string>
|
||||||
<string id="MenuItemMenu">Menu</string>
|
<string id="MenuItemMenu">Menu</string>
|
||||||
@ -31,7 +31,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">Pas de clé API dans les paramètres de l'application</string>
|
<string id="NoAPIKey" scope="glance">Pas de clé API dans les paramètres de l'application</string>
|
||||||
<string id="NoApiUrl" scope="glance">Aucune URL API dans les paramètres de l'application</string>
|
<string id="NoApiUrl" scope="glance">Aucune URL API dans les paramètres de l'application</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Aucune URL de configuration dans les paramètres de l'application</string>
|
<string id="NoConfigUrl" scope="glance">Aucune URL de configuration dans les paramètres de l'application</string>
|
||||||
<string id="ApiFlood">Appels API trop rapide. Veuillez signaler cette erreur avec les détails de l'appareil.</string>
|
<string id="ApiFlood">Appels API trop rapide. Veuillez signaler cette erreur avec les détails de l'appareil.</string>
|
||||||
<string id="ApiUrlNotFound">URL introuvable. Erreur potentielle d'URL d'API dans les paramètres.</string>
|
<string id="ApiUrlNotFound">URL introuvable. Erreur potentielle d'URL d'API dans les paramètres.</string>
|
||||||
<string id="ConfigUrlNotFound">URL introuvable. Erreur potentielle d'URL de configuration dans les paramètres.</string>
|
<string id="ConfigUrlNotFound">URL introuvable. Erreur potentielle d'URL de configuration dans les paramètres.</string>
|
||||||
<string id="NoJson">Aucun JSON renvoyé par la requête HTTP.</string>
|
<string id="NoJson">Aucun JSON renvoyé par la requête HTTP.</string>
|
||||||
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">Non configuré</string>
|
<string id="Unconfigured" scope="glance">Non configuré</string>
|
||||||
<string id="GlanceMenu" scope="glance">Menu</string>
|
<string id="GlanceMenu" scope="glance">Menu</string>
|
||||||
<!-- Pour l'interface graphique des paramètres -->
|
<!-- Pour l'interface graphique des paramètres -->
|
||||||
|
<string id="SettingsSelect">Sélectionner...</string>
|
||||||
<string id="SettingsApiKey">Clé API pour HomeAssistant.</string>
|
<string id="SettingsApiKey">Clé API pour HomeAssistant.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Jeton d'accès de longue durée.</string>
|
<string id="SettingsApiKeyPrompt">Jeton d'accès de longue durée.</string>
|
||||||
<string id="SettingsApiUrl">URL de l’API HomeAssistant.</string>
|
<string id="SettingsApiUrl">URL de l’API HomeAssistant.</string>
|
||||||
<string id="SettingsConfigUrl">URL de configuration des menus (JSON).</string>
|
<string id="SettingsConfigUrl">URL de configuration des menus (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Délai d'expiration en secondes. Quittez l'application après cette période d'inactivité pour économiser la batterie de l'appareil.</string>
|
<string id="SettingsAppTimeout">Délai d'expiration en secondes. Quittez l'application après cette période d'inactivité pour économiser la batterie de l'appareil.</string>
|
||||||
<string id="SettingsConfirmTimeout">Passé ce délai (en secondes), une boîte de dialogue de confirmation d'une action se ferme automatiquement et l'action est annulée. Réglez sur 0 pour désactiver le délai d'attente.</string>
|
<string id="SettingsConfirmTimeout">Passé ce délai (en secondes), une boîte de dialogue de confirmation d'une action se ferme automatiquement et l'action est annulée. Réglez sur 0 pour désactiver le délai d'attente.</string>
|
||||||
<string id="SettingsUi">Représentation des types avec des icônes (off) ou avec des étiquettes (on).</string>
|
<string id="SettingsMenuItemStyle">Style des éléments de menu.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">Icônes</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Texte supplémentaire</string>
|
||||||
<string id="SettingsTextAlign">Alignement du menu à gauche (désactivé) ou à droite (activé).</string>
|
<string id="SettingsTextAlign">Alignement du menu à gauche (désactivé) ou à droite (activé).</string>
|
||||||
|
<string id="LeftToRight">De gauche à droite</string>
|
||||||
|
<string id="RightToLeft">De droite à gauche</string>
|
||||||
<string id="SettingsWidgetStart">(Widget uniquement) Démarrez automatiquement l'application à partir du widget sans attendre un clic.</string>
|
<string id="SettingsWidgetStart">(Widget uniquement) Démarrez automatiquement l'application à partir du widget sans attendre un clic.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Activez le service d'arrière-plan pour envoyer le niveau de batterie de l'horloge à Home Assistant.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">Fréquence de rafraîchissement (en minutes) à laquelle le service en arrière-plan doit répéter l'envoi du niveau de la batterie.</string>
|
||||||
</strings>
|
</strings>
|
@ -29,7 +29,7 @@
|
|||||||
<string id="NoInternet">Δεν υπάρχει σύνδεση στο διαδίκτυο</string>
|
<string id="NoInternet">Δεν υπάρχει σύνδεση στο διαδίκτυο</string>
|
||||||
<string id="NoResponse">Καμία απάντηση, ελέγξτε τη σύνδεση στο Διαδίκτυο</string>
|
<string id="NoResponse">Καμία απάντηση, ελέγξτε τη σύνδεση στο Διαδίκτυο</string>
|
||||||
<string id="NoAPIKey" scope="glance">Δεν υπάρχει κλειδί API στις ρυθμίσεις της εφαρμογής</string>
|
<string id="NoAPIKey" scope="glance">Δεν υπάρχει κλειδί API στις ρυθμίσεις της εφαρμογής</string>
|
||||||
<string id="NoApiUrl" scope="glance">Δεν υπάρχει URL API στις ρυθμίσεις της εφαρμογής</string>
|
<string id="NoApiUrl" scope="glance">Δεν υπάρχει διεύθυνση URL API στις ρυθμίσεις της εφαρμογής</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Δεν υπάρχει διεύθυνση URL διαμόρφωσης στις ρυθμίσεις της εφαρμογής</string>
|
<string id="NoConfigUrl" scope="glance">Δεν υπάρχει διεύθυνση URL διαμόρφωσης στις ρυθμίσεις της εφαρμογής</string>
|
||||||
<string id="ApiFlood">Κλήσεις API πολύ γρήγορες. Παρακαλώ επιβραδύνετε τα αιτήματά σας.</string>
|
<string id="ApiFlood">Κλήσεις API πολύ γρήγορες. Παρακαλώ επιβραδύνετε τα αιτήματά σας.</string>
|
||||||
<string id="ApiUrlNotFound">Η διεύθυνση URL δεν βρέθηκε. Πιθανό σφάλμα διεύθυνσης URL API στις ρυθμίσεις.</string>
|
<string id="ApiUrlNotFound">Η διεύθυνση URL δεν βρέθηκε. Πιθανό σφάλμα διεύθυνσης URL API στις ρυθμίσεις.</string>
|
||||||
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">Μη διαμορφωμένο</string>
|
<string id="Unconfigured" scope="glance">Μη διαμορφωμένο</string>
|
||||||
<string id="GlanceMenu" scope="glance">Μενού</string>
|
<string id="GlanceMenu" scope="glance">Μενού</string>
|
||||||
<!-- Για τις ρυθμίσεις GUI -->
|
<!-- Για τις ρυθμίσεις GUI -->
|
||||||
|
<string id="SettingsSelect">Επιλέγω...</string>
|
||||||
<string id="SettingsApiKey">Κλειδί API για το HomeAssistant.</string>
|
<string id="SettingsApiKey">Κλειδί API για το HomeAssistant.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Διακριτικό πρόσβασης μακράς διαρκείας.</string>
|
<string id="SettingsApiKeyPrompt">Διακριτικό πρόσβασης μακράς διαρκείας.</string>
|
||||||
<string id="SettingsApiUrl">URL για το HomeAssistant API.</string>
|
<string id="SettingsApiUrl">URL για το HomeAssistant API.</string>
|
||||||
<string id="SettingsConfigUrl">URL για τη διαμόρφωση μενού (JSON).</string>
|
<string id="SettingsConfigUrl">URL για τη διαμόρφωση μενού (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Timeout σε δευτερόλεπτα. Κλείστε την εφαρμογή μετά από αυτήν την περίοδο αδράνειας για να εξοικονομήσετε την μπαταρία της συσκευής.</string>
|
<string id="SettingsAppTimeout">Timeout σε δευτερόλεπτα. Κλείστε την εφαρμογή μετά από αυτήν την περίοδο αδράνειας για να εξοικονομήσετε την μπαταρία της συσκευής.</string>
|
||||||
<string id="SettingsConfirmTimeout">Μετά από αυτό το χρονικό διάστημα (σε δευτερόλεπτα), ένα παράθυρο διαλόγου επιβεβαίωσης για μια ενέργεια κλείνει αυτόματα και η ενέργεια ακυρώνεται. Ορίστε στο 0 για να απενεργοποιήσετε το χρονικό όριο.</string>
|
<string id="SettingsConfirmTimeout">Μετά από αυτό το χρονικό διάστημα (σε δευτερόλεπτα), ένα παράθυρο διαλόγου επιβεβαίωσης για μια ενέργεια κλείνει αυτόματα και η ενέργεια ακυρώνεται. Ορίστε στο 0 για να απενεργοποιήσετε το χρονικό όριο.</string>
|
||||||
<string id="SettingsUi">Αναπαράσταση τύπων με εικονίδια (απενεργοποίηση) ή με ετικέτες (ενεργό).</string>
|
<string id="SettingsMenuItemStyle">Στυλ στοιχείου μενού.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">εικονίδια</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Πρόσθετο Κείμενο</string>
|
||||||
<string id="SettingsTextAlign">Αριστερά (απενεργοποίηση) ή Δεξιά (ενεργό) Ευθυγράμμιση μενού.</string>
|
<string id="SettingsTextAlign">Αριστερά (απενεργοποίηση) ή Δεξιά (ενεργό) Ευθυγράμμιση μενού.</string>
|
||||||
|
<string id="LeftToRight">Από αριστερά προς τα δεξιά</string>
|
||||||
|
<string id="RightToLeft">Δεξιά προς τα αριστερά</string>
|
||||||
<string id="SettingsWidgetStart">(Μόνο widget) Αυτόματη εκκίνηση της εφαρμογής από το widget χωρίς να περιμένετε ένα πάτημα.</string>
|
<string id="SettingsWidgetStart">(Μόνο widget) Αυτόματη εκκίνηση της εφαρμογής από το widget χωρίς να περιμένετε ένα πάτημα.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Ενεργοποιήστε την υπηρεσία παρασκηνίου για αποστολή της στάθμης της μπαταρίας του ρολογιού στο Home Assistant.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">Ο ρυθμός ανανέωσης (σε λεπτά) με τον οποίο η υπηρεσία παρασκηνίου θα πρέπει να επαναλάβει στέλνοντας το επίπεδο της μπαταρίας.</string>
|
||||||
</strings>
|
</strings>
|
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">לא מוגדר</string>
|
<string id="Unconfigured" scope="glance">לא מוגדר</string>
|
||||||
<string id="GlanceMenu" scope="glance">תַפרִיט</string>
|
<string id="GlanceMenu" scope="glance">תַפרִיט</string>
|
||||||
<!-- עבור ה-GUI של ההגדרות -->
|
<!-- עבור ה-GUI של ההגדרות -->
|
||||||
|
<string id="SettingsSelect">בחר...</string>
|
||||||
<string id="SettingsApiKey">מפתח API עבור HomeAssistant.</string>
|
<string id="SettingsApiKey">מפתח API עבור HomeAssistant.</string>
|
||||||
<string id="SettingsApiKeyPrompt">אסימון גישה ארוך-חיים.</string>
|
<string id="SettingsApiKeyPrompt">אסימון גישה ארוך-חיים.</string>
|
||||||
<string id="SettingsApiUrl">כתובת URL עבור HomeAssistant API.</string>
|
<string id="SettingsApiUrl">כתובת URL עבור HomeAssistant API.</string>
|
||||||
<string id="SettingsConfigUrl">כתובת URL לתצורת תפריט (JSON).</string>
|
<string id="SettingsConfigUrl">כתובת URL לתצורת תפריט (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">פסק זמן בשניות. צא מהאפליקציה לאחר תקופה זו של חוסר פעילות כדי לחסוך בסוללת המכשיר.</string>
|
<string id="SettingsAppTimeout">פסק זמן בשניות. צא מהאפליקציה לאחר תקופה זו של חוסר פעילות כדי לחסוך בסוללת המכשיר.</string>
|
||||||
<string id="SettingsConfirmTimeout">לאחר זמן זה (בשניות), תיבת דו-שיח לאישור פעולה נסגרת אוטומטית והפעולה מבוטלת. הגדר ל-0 כדי לבטל את הזמן הקצוב.</string>
|
<string id="SettingsConfirmTimeout">לאחר זמן זה (בשניות), תיבת דו-שיח לאישור פעולה נסגרת אוטומטית והפעולה מבוטלת. הגדר ל-0 כדי להשבית את הזמן הקצוב.</string>
|
||||||
<string id="SettingsUi">ייצוג סוגים עם סמלים (כבוי) או עם תוויות (מופעל).</string>
|
<string id="SettingsMenuItemStyle">סגנון פריט בתפריט.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">אייקונים</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">טקסט נוסף</string>
|
||||||
<string id="SettingsTextAlign">יישור תפריט שמאלה (כבוי) או ימינה (מופעל).</string>
|
<string id="SettingsTextAlign">יישור תפריט שמאלה (כבוי) או ימינה (מופעל).</string>
|
||||||
|
<string id="LeftToRight">משמאל לימין</string>
|
||||||
|
<string id="RightToLeft">מימין לשמאל</string>
|
||||||
<string id="SettingsWidgetStart">(יישומון בלבד) הפעל אוטומטית את האפליקציה מהווידג'ט מבלי לחכות להקשה.</string>
|
<string id="SettingsWidgetStart">(יישומון בלבד) הפעל אוטומטית את האפליקציה מהווידג'ט מבלי לחכות להקשה.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">אפשר את שירות הרקע כדי לשלוח את רמת הסוללה של השעון אל Home Assistant.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">קצב הרענון (בדקות) שבו שירות הרקע אמור לחזור על שליחת רמת הסוללה.</string>
|
||||||
</strings>
|
</strings>
|
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">Nekonfigurirano</string>
|
<string id="Unconfigured" scope="glance">Nekonfigurirano</string>
|
||||||
<string id="GlanceMenu" scope="glance">Jelovnik</string>
|
<string id="GlanceMenu" scope="glance">Jelovnik</string>
|
||||||
<!-- Za GUI postavki -->
|
<!-- Za GUI postavki -->
|
||||||
|
<string id="SettingsSelect">Izaberi...</string>
|
||||||
<string id="SettingsApiKey">API ključ za HomeAssistant.</string>
|
<string id="SettingsApiKey">API ključ za HomeAssistant.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Dugotrajni pristupni token.</string>
|
<string id="SettingsApiKeyPrompt">Dugotrajni pristupni token.</string>
|
||||||
<string id="SettingsApiUrl">URL za HomeAssistant API.</string>
|
<string id="SettingsApiUrl">URL za HomeAssistant API.</string>
|
||||||
<string id="SettingsConfigUrl">URL za konfiguraciju izbornika (JSON).</string>
|
<string id="SettingsConfigUrl">URL za konfiguraciju izbornika (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Istek u sekundama. Izađite iz aplikacije nakon ovog razdoblja neaktivnosti kako biste uštedjeli bateriju uređaja.</string>
|
<string id="SettingsAppTimeout">Istek u sekundama. Izađite iz aplikacije nakon ovog razdoblja neaktivnosti kako biste uštedjeli bateriju uređaja.</string>
|
||||||
<string id="SettingsConfirmTimeout">Nakon tog vremena (u sekundama), dijaloški okvir za potvrdu radnje automatski se zatvara i radnja se poništava. Postavite na 0 da onemogućite vremensko ograničenje.</string>
|
<string id="SettingsConfirmTimeout">Nakon tog vremena (u sekundama), dijaloški okvir za potvrdu radnje automatski se zatvara i radnja se poništava. Postavite na 0 da onemogućite vremensko ograničenje.</string>
|
||||||
<string id="SettingsUi">Predstavljanje tipova ikonama (isključeno) ili oznakama (uključeno).</string>
|
<string id="SettingsMenuItemStyle">Stil stavke izbornika.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">Ikone</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Dodatni tekst</string>
|
||||||
<string id="SettingsTextAlign">Lijevo (isključeno) ili desno (uključeno) poravnanje izbornika.</string>
|
<string id="SettingsTextAlign">Lijevo (isključeno) ili desno (uključeno) poravnanje izbornika.</string>
|
||||||
|
<string id="LeftToRight">S lijeva nadesno</string>
|
||||||
|
<string id="RightToLeft">S desna na lijevo</string>
|
||||||
<string id="SettingsWidgetStart">(Samo widget) Automatski pokrenite aplikaciju iz widgeta bez čekanja na dodir.</string>
|
<string id="SettingsWidgetStart">(Samo widget) Automatski pokrenite aplikaciju iz widgeta bez čekanja na dodir.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Omogućite pozadinsku uslugu za slanje razine baterije sata kućnom pomoćniku.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">Brzina osvježavanja (u minutama) pri kojoj bi pozadinska usluga trebala ponavljati slanje razine baterije.</string>
|
||||||
</strings>
|
</strings>
|
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">Nincs konfigurálva</string>
|
<string id="Unconfigured" scope="glance">Nincs konfigurálva</string>
|
||||||
<string id="GlanceMenu" scope="glance">Menü</string>
|
<string id="GlanceMenu" scope="glance">Menü</string>
|
||||||
<!-- A beállítások GUI-hoz -->
|
<!-- A beállítások GUI-hoz -->
|
||||||
|
<string id="SettingsSelect">Válasszon...</string>
|
||||||
<string id="SettingsApiKey">API-kulcs a HomeAssistant számára.</string>
|
<string id="SettingsApiKey">API-kulcs a HomeAssistant számára.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Hosszú életű hozzáférési token.</string>
|
<string id="SettingsApiKeyPrompt">Hosszú életű hozzáférési token.</string>
|
||||||
<string id="SettingsApiUrl">A HomeAssistant API URL-je.</string>
|
<string id="SettingsApiUrl">A HomeAssistant API URL-je.</string>
|
||||||
<string id="SettingsConfigUrl">URL a menükonfigurációhoz (JSON).</string>
|
<string id="SettingsConfigUrl">URL a menükonfigurációhoz (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Időtúllépés másodpercben. Az eszköz akkumulátorának kímélése érdekében lépjen ki az alkalmazásból ezen inaktivitási időszak után.</string>
|
<string id="SettingsAppTimeout">Időtúllépés másodpercben. Az eszköz akkumulátorának kímélése érdekében lépjen ki az alkalmazásból ezen inaktivitási időszak után.</string>
|
||||||
<string id="SettingsConfirmTimeout">Ezen idő letelte után (másodpercben) a művelet megerősítő párbeszédablakja automatikusan bezárul, és a művelet megszakad. Állítsa 0-ra az időtúllépés letiltásához.</string>
|
<string id="SettingsConfirmTimeout">Ezen idő elteltével (másodpercben) egy művelet megerősítő párbeszédpanele automatikusan bezárul, és a művelet megszakad. Állítsa 0-ra az időtúllépés letiltásához.</string>
|
||||||
<string id="SettingsUi">A típusokat ikonokkal (kikapcsolva) vagy címkékkel (bekapcsolva) ábrázolja.</string>
|
<string id="SettingsMenuItemStyle">Menüelem stílusa.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">Ikonok</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Kiegészítő szöveg</string>
|
||||||
<string id="SettingsTextAlign">Balra (ki) vagy Jobbra (be) Menüigazítás.</string>
|
<string id="SettingsTextAlign">Balra (ki) vagy Jobbra (be) Menüigazítás.</string>
|
||||||
|
<string id="LeftToRight">Balról jobbra</string>
|
||||||
|
<string id="RightToLeft">Jobbról balra</string>
|
||||||
<string id="SettingsWidgetStart">(Csak widget) Az alkalmazás automatikus indítása a widgetről anélkül, hogy egy érintésre várna.</string>
|
<string id="SettingsWidgetStart">(Csak widget) Az alkalmazás automatikus indítása a widgetről anélkül, hogy egy érintésre várna.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Engedélyezze a háttérszolgáltatást, hogy elküldje az óra töltöttségi szintjét a Home Assistantnek.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">Az a frissítési gyakoriság (percben), amelynél a háttérszolgáltatásnak meg kell ismételnie az akkumulátor töltöttségi szintjének küldését.</string>
|
||||||
</strings>
|
</strings>
|
@ -30,7 +30,7 @@
|
|||||||
<string id="NoResponse">Tidak Ada Respon, periksa koneksi Internet</string>
|
<string id="NoResponse">Tidak Ada Respon, periksa koneksi Internet</string>
|
||||||
<string id="NoAPIKey" scope="glance">Tidak ada kunci API di pengaturan aplikasi</string>
|
<string id="NoAPIKey" scope="glance">Tidak ada kunci API di pengaturan aplikasi</string>
|
||||||
<string id="NoApiUrl" scope="glance">Tidak ada URL API di pengaturan aplikasi</string>
|
<string id="NoApiUrl" scope="glance">Tidak ada URL API di pengaturan aplikasi</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Tidak ada URL konfigurasi di pengaturan aplikasi</string>
|
<string id="NoConfigUrl" scope="glance">Tidak ada URL konfigurasi dalam pengaturan aplikasi</string>
|
||||||
<string id="ApiFlood">Panggilan API terlalu cepat. Harap memperlambat permintaan Anda.</string>
|
<string id="ApiFlood">Panggilan API terlalu cepat. Harap memperlambat permintaan Anda.</string>
|
||||||
<string id="ApiUrlNotFound">URL tidak ditemukan. Potensi kesalahan URL API dalam pengaturan.</string>
|
<string id="ApiUrlNotFound">URL tidak ditemukan. Potensi kesalahan URL API dalam pengaturan.</string>
|
||||||
<string id="ConfigUrlNotFound">URL tidak ditemukan. Potensi kesalahan URL Konfigurasi dalam pengaturan.</string>
|
<string id="ConfigUrlNotFound">URL tidak ditemukan. Potensi kesalahan URL Konfigurasi dalam pengaturan.</string>
|
||||||
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">Tidak dikonfigurasi</string>
|
<string id="Unconfigured" scope="glance">Tidak dikonfigurasi</string>
|
||||||
<string id="GlanceMenu" scope="glance">Menu</string>
|
<string id="GlanceMenu" scope="glance">Menu</string>
|
||||||
<!-- Untuk pengaturan GUI -->
|
<!-- Untuk pengaturan GUI -->
|
||||||
|
<string id="SettingsSelect">Pilih...</string>
|
||||||
<string id="SettingsApiKey">Kunci API untuk HomeAssistant.</string>
|
<string id="SettingsApiKey">Kunci API untuk HomeAssistant.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Token Akses Berumur Panjang.</string>
|
<string id="SettingsApiKeyPrompt">Token Akses Berumur Panjang.</string>
|
||||||
<string id="SettingsApiUrl">URL untuk API HomeAssistant.</string>
|
<string id="SettingsApiUrl">URL untuk API HomeAssistant.</string>
|
||||||
<string id="SettingsConfigUrl">URL untuk konfigurasi menu (JSON).</string>
|
<string id="SettingsConfigUrl">URL untuk konfigurasi menu (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Batas waktu dalam hitungan detik. Keluar dari aplikasi setelah periode tidak aktif ini untuk menghemat baterai perangkat.</string>
|
<string id="SettingsAppTimeout">Batas waktu dalam hitungan detik. Keluar dari aplikasi setelah periode tidak aktif ini untuk menghemat baterai perangkat.</string>
|
||||||
<string id="SettingsConfirmTimeout">Setelah waktu ini (dalam detik), dialog konfirmasi untuk suatu tindakan secara otomatis ditutup dan tindakan tersebut dibatalkan. Setel ke 0 untuk menonaktifkan batas waktu.</string>
|
<string id="SettingsConfirmTimeout">Setelah waktu ini (dalam detik), dialog konfirmasi untuk suatu tindakan secara otomatis ditutup dan tindakan tersebut dibatalkan. Setel ke 0 untuk menonaktifkan batas waktu.</string>
|
||||||
<string id="SettingsUi">Mewakili tipe dengan ikon (mati) atau dengan label (aktif).</string>
|
<string id="SettingsMenuItemStyle">Gaya item menu.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">Ikon</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Teks Tambahan</string>
|
||||||
<string id="SettingsTextAlign">Penyelarasan Menu Kiri (mati) atau Kanan (hidup).</string>
|
<string id="SettingsTextAlign">Penyelarasan Menu Kiri (mati) atau Kanan (hidup).</string>
|
||||||
|
<string id="LeftToRight">Kiri ke kanan</string>
|
||||||
|
<string id="RightToLeft">Kanan ke kiri</string>
|
||||||
<string id="SettingsWidgetStart">(Khusus widget) Secara otomatis memulai aplikasi dari widget tanpa menunggu ketukan.</string>
|
<string id="SettingsWidgetStart">(Khusus widget) Secara otomatis memulai aplikasi dari widget tanpa menunggu ketukan.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Aktifkan layanan latar belakang untuk mengirim level baterai jam ke Home Assistant.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">Kecepatan refresh (dalam menit) saat layanan latar belakang harus mengulangi pengiriman level baterai.</string>
|
||||||
</strings>
|
</strings>
|
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">Non configurato</string>
|
<string id="Unconfigured" scope="glance">Non configurato</string>
|
||||||
<string id="GlanceMenu" scope="glance">Menù</string>
|
<string id="GlanceMenu" scope="glance">Menù</string>
|
||||||
<!-- Per la GUI delle impostazioni -->
|
<!-- Per la GUI delle impostazioni -->
|
||||||
|
<string id="SettingsSelect">Selezionare...</string>
|
||||||
<string id="SettingsApiKey">Chiave API per HomeAssistant.</string>
|
<string id="SettingsApiKey">Chiave API per HomeAssistant.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Token di accesso di lunga durata.</string>
|
<string id="SettingsApiKeyPrompt">Token di accesso di lunga durata.</string>
|
||||||
<string id="SettingsApiUrl">URL per l'API HomeAssistant.</string>
|
<string id="SettingsApiUrl">URL per l'API HomeAssistant.</string>
|
||||||
<string id="SettingsConfigUrl">URL per la configurazione del menu (JSON).</string>
|
<string id="SettingsConfigUrl">URL per la configurazione del menu (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Timeout in secondi. Uscire dall'applicazione dopo questo periodo di inattività per risparmiare la batteria del dispositivo.</string>
|
<string id="SettingsAppTimeout">Timeout in secondi. Uscire dall'applicazione dopo questo periodo di inattività per risparmiare la batteria del dispositivo.</string>
|
||||||
<string id="SettingsConfirmTimeout">Trascorso questo tempo (in secondi), una finestra di dialogo di conferma per un'azione viene chiusa automaticamente e l'azione viene annullata. Impostare su 0 per disabilitare il timeout.</string>
|
<string id="SettingsConfirmTimeout">Trascorso questo tempo (in secondi), una finestra di dialogo di conferma per un'azione viene chiusa automaticamente e l'azione viene annullata. Impostare su 0 per disabilitare il timeout.</string>
|
||||||
<string id="SettingsUi">Rappresentazione dei tipi con icone (disattivata) o con etichette (attivata).</string>
|
<string id="SettingsMenuItemStyle">Stile della voce di menu.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">Icone</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Testo aggiuntivo</string>
|
||||||
<string id="SettingsTextAlign">Allineamento del menu a sinistra (spento) o a destra (acceso).</string>
|
<string id="SettingsTextAlign">Allineamento del menu a sinistra (spento) o a destra (acceso).</string>
|
||||||
|
<string id="LeftToRight">Da sinistra a destra</string>
|
||||||
|
<string id="RightToLeft">Da destra a sinistra</string>
|
||||||
<string id="SettingsWidgetStart">(Solo widget) Avvia automaticamente l'applicazione dal widget senza attendere un tocco.</string>
|
<string id="SettingsWidgetStart">(Solo widget) Avvia automaticamente l'applicazione dal widget senza attendere un tocco.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Abilita il servizio in background per inviare il livello della batteria dell'orologio a Home Assistant.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">La frequenza di aggiornamento (in minuti) alla quale il servizio in background deve ripetere l'invio del livello della batteria.</string>
|
||||||
</strings>
|
</strings>
|
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">未構成</string>
|
<string id="Unconfigured" scope="glance">未構成</string>
|
||||||
<string id="GlanceMenu" scope="glance">メニュー</string>
|
<string id="GlanceMenu" scope="glance">メニュー</string>
|
||||||
<!-- 設定GUIの場合 -->
|
<!-- 設定GUIの場合 -->
|
||||||
|
<string id="SettingsSelect">選択する...</string>
|
||||||
<string id="SettingsApiKey">ホームアシスタントの API キー。</string>
|
<string id="SettingsApiKey">ホームアシスタントの API キー。</string>
|
||||||
<string id="SettingsApiKeyPrompt">有効期間の長いアクセス トークン。</string>
|
<string id="SettingsApiKeyPrompt">有効期間の長いアクセス トークン。</string>
|
||||||
<string id="SettingsApiUrl">ホームアシスタント API の URL。</string>
|
<string id="SettingsApiUrl">ホームアシスタント API の URL。</string>
|
||||||
<string id="SettingsConfigUrl">メニュー構成の URL (JSON)。</string>
|
<string id="SettingsConfigUrl">メニュー構成の URL (JSON)。</string>
|
||||||
<string id="SettingsAppTimeout">秒単位のタイムアウト。デバイスのバッテリーを節約するために、この期間非アクティブになった後はアプリケーションを終了してください。</string>
|
<string id="SettingsAppTimeout">秒単位のタイムアウト。デバイスのバッテリーを節約するために、この期間非アクティブになった後はアプリケーションを終了してください。</string>
|
||||||
<string id="SettingsConfirmTimeout">この時間 (秒単位) が経過すると、アクションの確認ダイアログが自動的に閉じられ、アクションがキャンセルされます。タイムアウトを無効にするには、0 に設定します。</string>
|
<string id="SettingsConfirmTimeout">この時間 (秒単位) が経過すると、アクションの確認ダイアログが自動的に閉じられ、アクションがキャンセルされます。タイムアウトを無効にするには、0 に設定します。</string>
|
||||||
<string id="SettingsUi">タイプをアイコン (オフ) またはラベル (オン) で表します。</string>
|
<string id="SettingsMenuItemStyle">メニュー項目のスタイル。</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">アイコン</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">追加テキスト</string>
|
||||||
<string id="SettingsTextAlign">左 (オフ) または右 (オン) メニューの配置。</string>
|
<string id="SettingsTextAlign">左 (オフ) または右 (オン) メニューの配置。</string>
|
||||||
|
<string id="LeftToRight">左から右へ</string>
|
||||||
|
<string id="RightToLeft">右から左に</string>
|
||||||
<string id="SettingsWidgetStart">(ウィジェットのみ)タップを待たずにウィジェットからアプリを自動起動します。</string>
|
<string id="SettingsWidgetStart">(ウィジェットのみ)タップを待たずにウィジェットからアプリを自動起動します。</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">バックグラウンド サービスを有効にして、時計のバッテリー レベルをホーム アシスタントに送信します。</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">バックグラウンド サービスがバッテリー レベルの送信を繰り返すリフレッシュ レート (分単位)。</string>
|
||||||
</strings>
|
</strings>
|
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">구성되지 않음</string>
|
<string id="Unconfigured" scope="glance">구성되지 않음</string>
|
||||||
<string id="GlanceMenu" scope="glance">메뉴</string>
|
<string id="GlanceMenu" scope="glance">메뉴</string>
|
||||||
<!-- 설정 GUI의 경우 -->
|
<!-- 설정 GUI의 경우 -->
|
||||||
|
<string id="SettingsSelect">선택하다...</string>
|
||||||
<string id="SettingsApiKey">HomeAssistant용 API 키.</string>
|
<string id="SettingsApiKey">HomeAssistant용 API 키.</string>
|
||||||
<string id="SettingsApiKeyPrompt">장기 액세스 토큰.</string>
|
<string id="SettingsApiKeyPrompt">장기 액세스 토큰.</string>
|
||||||
<string id="SettingsApiUrl">HomeAssistant API의 URL입니다.</string>
|
<string id="SettingsApiUrl">HomeAssistant API의 URL입니다.</string>
|
||||||
<string id="SettingsConfigUrl">메뉴 구성을 위한 URL(JSON)입니다.</string>
|
<string id="SettingsConfigUrl">메뉴 구성을 위한 URL(JSON)입니다.</string>
|
||||||
<string id="SettingsAppTimeout">시간 초과(초)입니다. 장치 배터리를 절약하려면 이 비활성 기간 후에 애플리케이션을 종료하십시오.</string>
|
<string id="SettingsAppTimeout">시간 초과(초)입니다. 장치 배터리를 절약하려면 이 비활성 기간 후에 애플리케이션을 종료하십시오.</string>
|
||||||
<string id="SettingsConfirmTimeout">이 시간(초)이 지나면 작업에 대한 확인 대화 상자가 자동으로 닫히고 작업이 취소됩니다. 시간 초과를 비활성화하려면 0으로 설정합니다.</string>
|
<string id="SettingsConfirmTimeout">이 시간(초)이 지나면 작업에 대한 확인 대화 상자가 자동으로 닫히고 작업이 취소됩니다. 시간 초과를 비활성화하려면 0으로 설정합니다.</string>
|
||||||
<string id="SettingsUi">아이콘(끄기) 또는 레이블(켜기)로 유형을 나타냅니다.</string>
|
<string id="SettingsMenuItemStyle">메뉴 항목 스타일.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">아이콘</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">추가 텍스트</string>
|
||||||
<string id="SettingsTextAlign">왼쪽(끄기) 또는 오른쪽(켜기) 메뉴 정렬.</string>
|
<string id="SettingsTextAlign">왼쪽(끄기) 또는 오른쪽(켜기) 메뉴 정렬.</string>
|
||||||
<string id="SettingsWidgetStart">(위젯만 해당) 탭을 기다리지 않고 위젯에서 애플리케이션을 자동으로 시작합니다.</string>
|
<string id="LeftToRight">왼쪽에서 오른쪽으로</string>
|
||||||
|
<string id="RightToLeft">오른쪽에서 왼쪽으로</string>
|
||||||
|
<string id="SettingsWidgetStart">(위젯만 해당) 탭을 기다리지 않고 위젯에서 자동으로 애플리케이션을 시작합니다.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">시계 배터리 수준을 홈어시스턴트로 보내려면 백그라운드 서비스를 활성화하세요.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">백그라운드 서비스가 배터리 수준 전송을 반복해야 하는 새로 고침 빈도(분)입니다.</string>
|
||||||
</strings>
|
</strings>
|
@ -13,5 +13,5 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<drawables>
|
<drawables>
|
||||||
<bitmap id="LauncherIcon" filename="launcher.png" />
|
<bitmap id="LauncherIcon" filename="launcher.svg" />
|
||||||
</drawables>
|
</drawables>
|
||||||
|
Before Width: | Height: | Size: 3.8 KiB |
4
resources-launcher-26-26/launcher.svg
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<svg fill="none" height="26" viewBox="0 0 400 400" width="26" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M320 301.762C320 310.012 313.25 316.762 305 316.762H95C86.75 316.762 80 310.012 80 301.762V211.762C80 203.512 84.77 191.993 90.61 186.153L189.39 87.3725C195.22 81.5425 204.77 81.5425 210.6 87.3725L309.39 186.162C315.22 191.992 320 203.522 320 211.772V301.772V301.762Z" fill="#F2F4F9"/>
|
||||||
|
<path d="M309.39 186.153L210.61 87.3725C204.78 81.5425 195.23 81.5425 189.4 87.3725L90.61 186.153C84.78 191.983 80 203.512 80 211.762V301.762C80 310.012 86.75 316.762 95 316.762H187.27L146.64 276.132C144.55 276.852 142.32 277.262 140 277.262C128.7 277.262 119.5 268.062 119.5 256.762C119.5 245.462 128.7 236.262 140 236.262C151.3 236.262 160.5 245.462 160.5 256.762C160.5 259.092 160.09 261.322 159.37 263.412L191 295.042V179.162C184.2 175.822 179.5 168.842 179.5 160.772C179.5 149.472 188.7 140.272 200 140.272C211.3 140.272 220.5 149.472 220.5 160.772C220.5 168.842 215.8 175.822 209 179.162V260.432L240.46 228.972C239.84 227.012 239.5 224.932 239.5 222.772C239.5 211.472 248.7 202.272 260 202.272C271.3 202.272 280.5 211.472 280.5 222.772C280.5 234.072 271.3 243.272 260 243.272C257.5 243.272 255.12 242.802 252.91 241.982L209 285.892V316.772H305C313.25 316.772 320 310.022 320 301.772V211.772C320 203.522 315.23 192.002 309.39 186.162V186.153Z" fill="#18BCF2"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
@ -13,5 +13,5 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<drawables>
|
<drawables>
|
||||||
<bitmap id="LauncherIcon" filename="launcher.png" />
|
<bitmap id="LauncherIcon" filename="launcher.svg" />
|
||||||
</drawables>
|
</drawables>
|
||||||
|
Before Width: | Height: | Size: 4.0 KiB |
4
resources-launcher-30-30/launcher.svg
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<svg fill="none" height="30" viewBox="0 0 400 400" width="30" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M320 301.762C320 310.012 313.25 316.762 305 316.762H95C86.75 316.762 80 310.012 80 301.762V211.762C80 203.512 84.77 191.993 90.61 186.153L189.39 87.3725C195.22 81.5425 204.77 81.5425 210.6 87.3725L309.39 186.162C315.22 191.992 320 203.522 320 211.772V301.772V301.762Z" fill="#F2F4F9"/>
|
||||||
|
<path d="M309.39 186.153L210.61 87.3725C204.78 81.5425 195.23 81.5425 189.4 87.3725L90.61 186.153C84.78 191.983 80 203.512 80 211.762V301.762C80 310.012 86.75 316.762 95 316.762H187.27L146.64 276.132C144.55 276.852 142.32 277.262 140 277.262C128.7 277.262 119.5 268.062 119.5 256.762C119.5 245.462 128.7 236.262 140 236.262C151.3 236.262 160.5 245.462 160.5 256.762C160.5 259.092 160.09 261.322 159.37 263.412L191 295.042V179.162C184.2 175.822 179.5 168.842 179.5 160.772C179.5 149.472 188.7 140.272 200 140.272C211.3 140.272 220.5 149.472 220.5 160.772C220.5 168.842 215.8 175.822 209 179.162V260.432L240.46 228.972C239.84 227.012 239.5 224.932 239.5 222.772C239.5 211.472 248.7 202.272 260 202.272C271.3 202.272 280.5 211.472 280.5 222.772C280.5 234.072 271.3 243.272 260 243.272C257.5 243.272 255.12 242.802 252.91 241.982L209 285.892V316.772H305C313.25 316.772 320 310.022 320 301.772V211.772C320 203.522 315.23 192.002 309.39 186.162V186.153Z" fill="#18BCF2"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
@ -13,5 +13,5 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<drawables>
|
<drawables>
|
||||||
<bitmap id="LauncherIcon" filename="launcher.png" />
|
<bitmap id="LauncherIcon" filename="launcher.svg" />
|
||||||
</drawables>
|
</drawables>
|
||||||
|
Before Width: | Height: | Size: 4.2 KiB |
4
resources-launcher-33-33/launcher.svg
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<svg fill="none" height="33" viewBox="0 0 400 400" width="33" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M320 301.762C320 310.012 313.25 316.762 305 316.762H95C86.75 316.762 80 310.012 80 301.762V211.762C80 203.512 84.77 191.993 90.61 186.153L189.39 87.3725C195.22 81.5425 204.77 81.5425 210.6 87.3725L309.39 186.162C315.22 191.992 320 203.522 320 211.772V301.772V301.762Z" fill="#F2F4F9"/>
|
||||||
|
<path d="M309.39 186.153L210.61 87.3725C204.78 81.5425 195.23 81.5425 189.4 87.3725L90.61 186.153C84.78 191.983 80 203.512 80 211.762V301.762C80 310.012 86.75 316.762 95 316.762H187.27L146.64 276.132C144.55 276.852 142.32 277.262 140 277.262C128.7 277.262 119.5 268.062 119.5 256.762C119.5 245.462 128.7 236.262 140 236.262C151.3 236.262 160.5 245.462 160.5 256.762C160.5 259.092 160.09 261.322 159.37 263.412L191 295.042V179.162C184.2 175.822 179.5 168.842 179.5 160.772C179.5 149.472 188.7 140.272 200 140.272C211.3 140.272 220.5 149.472 220.5 160.772C220.5 168.842 215.8 175.822 209 179.162V260.432L240.46 228.972C239.84 227.012 239.5 224.932 239.5 222.772C239.5 211.472 248.7 202.272 260 202.272C271.3 202.272 280.5 211.472 280.5 222.772C280.5 234.072 271.3 243.272 260 243.272C257.5 243.272 255.12 242.802 252.91 241.982L209 285.892V316.772H305C313.25 316.772 320 310.022 320 301.772V211.772C320 203.522 315.23 192.002 309.39 186.162V186.153Z" fill="#18BCF2"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
@ -13,5 +13,5 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<drawables>
|
<drawables>
|
||||||
<bitmap id="LauncherIcon" filename="launcher.png" />
|
<bitmap id="LauncherIcon" filename="launcher.svg" />
|
||||||
</drawables>
|
</drawables>
|
||||||
|
Before Width: | Height: | Size: 4.2 KiB |
4
resources-launcher-35-35/launcher.svg
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<svg fill="none" height="35" viewBox="0 0 400 400" width="35" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M320 301.762C320 310.012 313.25 316.762 305 316.762H95C86.75 316.762 80 310.012 80 301.762V211.762C80 203.512 84.77 191.993 90.61 186.153L189.39 87.3725C195.22 81.5425 204.77 81.5425 210.6 87.3725L309.39 186.162C315.22 191.992 320 203.522 320 211.772V301.772V301.762Z" fill="#F2F4F9"/>
|
||||||
|
<path d="M309.39 186.153L210.61 87.3725C204.78 81.5425 195.23 81.5425 189.4 87.3725L90.61 186.153C84.78 191.983 80 203.512 80 211.762V301.762C80 310.012 86.75 316.762 95 316.762H187.27L146.64 276.132C144.55 276.852 142.32 277.262 140 277.262C128.7 277.262 119.5 268.062 119.5 256.762C119.5 245.462 128.7 236.262 140 236.262C151.3 236.262 160.5 245.462 160.5 256.762C160.5 259.092 160.09 261.322 159.37 263.412L191 295.042V179.162C184.2 175.822 179.5 168.842 179.5 160.772C179.5 149.472 188.7 140.272 200 140.272C211.3 140.272 220.5 149.472 220.5 160.772C220.5 168.842 215.8 175.822 209 179.162V260.432L240.46 228.972C239.84 227.012 239.5 224.932 239.5 222.772C239.5 211.472 248.7 202.272 260 202.272C271.3 202.272 280.5 211.472 280.5 222.772C280.5 234.072 271.3 243.272 260 243.272C257.5 243.272 255.12 242.802 252.91 241.982L209 285.892V316.772H305C313.25 316.772 320 310.022 320 301.772V211.772C320 203.522 315.23 192.002 309.39 186.162V186.153Z" fill="#18BCF2"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
@ -13,5 +13,5 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<drawables>
|
<drawables>
|
||||||
<bitmap id="LauncherIcon" filename="launcher.png" />
|
<bitmap id="LauncherIcon" filename="launcher.svg" />
|
||||||
</drawables>
|
</drawables>
|
||||||
|
Before Width: | Height: | Size: 4.2 KiB |
4
resources-launcher-36-36/launcher.svg
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<svg fill="none" height="36" viewBox="0 0 400 400" width="36" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M320 301.762C320 310.012 313.25 316.762 305 316.762H95C86.75 316.762 80 310.012 80 301.762V211.762C80 203.512 84.77 191.993 90.61 186.153L189.39 87.3725C195.22 81.5425 204.77 81.5425 210.6 87.3725L309.39 186.162C315.22 191.992 320 203.522 320 211.772V301.772V301.762Z" fill="#F2F4F9"/>
|
||||||
|
<path d="M309.39 186.153L210.61 87.3725C204.78 81.5425 195.23 81.5425 189.4 87.3725L90.61 186.153C84.78 191.983 80 203.512 80 211.762V301.762C80 310.012 86.75 316.762 95 316.762H187.27L146.64 276.132C144.55 276.852 142.32 277.262 140 277.262C128.7 277.262 119.5 268.062 119.5 256.762C119.5 245.462 128.7 236.262 140 236.262C151.3 236.262 160.5 245.462 160.5 256.762C160.5 259.092 160.09 261.322 159.37 263.412L191 295.042V179.162C184.2 175.822 179.5 168.842 179.5 160.772C179.5 149.472 188.7 140.272 200 140.272C211.3 140.272 220.5 149.472 220.5 160.772C220.5 168.842 215.8 175.822 209 179.162V260.432L240.46 228.972C239.84 227.012 239.5 224.932 239.5 222.772C239.5 211.472 248.7 202.272 260 202.272C271.3 202.272 280.5 211.472 280.5 222.772C280.5 234.072 271.3 243.272 260 243.272C257.5 243.272 255.12 242.802 252.91 241.982L209 285.892V316.772H305C313.25 316.772 320 310.022 320 301.772V211.772C320 203.522 315.23 192.002 309.39 186.162V186.153Z" fill="#18BCF2"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
@ -13,5 +13,5 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<drawables>
|
<drawables>
|
||||||
<bitmap id="LauncherIcon" filename="launcher.png" />
|
<bitmap id="LauncherIcon" filename="launcher.svg" />
|
||||||
</drawables>
|
</drawables>
|
||||||
|
Before Width: | Height: | Size: 4.3 KiB |
4
resources-launcher-40-40/launcher.svg
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<svg fill="none" height="40" viewBox="0 0 400 400" width="40" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M320 301.762C320 310.012 313.25 316.762 305 316.762H95C86.75 316.762 80 310.012 80 301.762V211.762C80 203.512 84.77 191.993 90.61 186.153L189.39 87.3725C195.22 81.5425 204.77 81.5425 210.6 87.3725L309.39 186.162C315.22 191.992 320 203.522 320 211.772V301.772V301.762Z" fill="#F2F4F9"/>
|
||||||
|
<path d="M309.39 186.153L210.61 87.3725C204.78 81.5425 195.23 81.5425 189.4 87.3725L90.61 186.153C84.78 191.983 80 203.512 80 211.762V301.762C80 310.012 86.75 316.762 95 316.762H187.27L146.64 276.132C144.55 276.852 142.32 277.262 140 277.262C128.7 277.262 119.5 268.062 119.5 256.762C119.5 245.462 128.7 236.262 140 236.262C151.3 236.262 160.5 245.462 160.5 256.762C160.5 259.092 160.09 261.322 159.37 263.412L191 295.042V179.162C184.2 175.822 179.5 168.842 179.5 160.772C179.5 149.472 188.7 140.272 200 140.272C211.3 140.272 220.5 149.472 220.5 160.772C220.5 168.842 215.8 175.822 209 179.162V260.432L240.46 228.972C239.84 227.012 239.5 224.932 239.5 222.772C239.5 211.472 248.7 202.272 260 202.272C271.3 202.272 280.5 211.472 280.5 222.772C280.5 234.072 271.3 243.272 260 243.272C257.5 243.272 255.12 242.802 252.91 241.982L209 285.892V316.772H305C313.25 316.772 320 310.022 320 301.772V211.772C320 203.522 315.23 192.002 309.39 186.162V186.153Z" fill="#18BCF2"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
@ -13,5 +13,5 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<drawables>
|
<drawables>
|
||||||
<bitmap id="LauncherIcon" filename="launcher.png" />
|
<bitmap id="LauncherIcon" filename="launcher.svg" />
|
||||||
</drawables>
|
</drawables>
|
||||||
|
Before Width: | Height: | Size: 4.8 KiB |
4
resources-launcher-54-54/launcher.svg
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<svg fill="none" height="54" viewBox="0 0 400 400" width="54" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M320 301.762C320 310.012 313.25 316.762 305 316.762H95C86.75 316.762 80 310.012 80 301.762V211.762C80 203.512 84.77 191.993 90.61 186.153L189.39 87.3725C195.22 81.5425 204.77 81.5425 210.6 87.3725L309.39 186.162C315.22 191.992 320 203.522 320 211.772V301.772V301.762Z" fill="#F2F4F9"/>
|
||||||
|
<path d="M309.39 186.153L210.61 87.3725C204.78 81.5425 195.23 81.5425 189.4 87.3725L90.61 186.153C84.78 191.983 80 203.512 80 211.762V301.762C80 310.012 86.75 316.762 95 316.762H187.27L146.64 276.132C144.55 276.852 142.32 277.262 140 277.262C128.7 277.262 119.5 268.062 119.5 256.762C119.5 245.462 128.7 236.262 140 236.262C151.3 236.262 160.5 245.462 160.5 256.762C160.5 259.092 160.09 261.322 159.37 263.412L191 295.042V179.162C184.2 175.822 179.5 168.842 179.5 160.772C179.5 149.472 188.7 140.272 200 140.272C211.3 140.272 220.5 149.472 220.5 160.772C220.5 168.842 215.8 175.822 209 179.162V260.432L240.46 228.972C239.84 227.012 239.5 224.932 239.5 222.772C239.5 211.472 248.7 202.272 260 202.272C271.3 202.272 280.5 211.472 280.5 222.772C280.5 234.072 271.3 243.272 260 243.272C257.5 243.272 255.12 242.802 252.91 241.982L209 285.892V316.772H305C313.25 316.772 320 310.022 320 301.772V211.772C320 203.522 315.23 192.002 309.39 186.162V186.153Z" fill="#18BCF2"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
@ -13,5 +13,5 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<drawables>
|
<drawables>
|
||||||
<bitmap id="LauncherIcon" filename="launcher.png" />
|
<bitmap id="LauncherIcon" filename="launcher.svg" />
|
||||||
</drawables>
|
</drawables>
|
||||||
|
Before Width: | Height: | Size: 5.1 KiB |
4
resources-launcher-60-60/launcher.svg
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<svg fill="none" height="60" viewBox="0 0 400 400" width="60" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M320 301.762C320 310.012 313.25 316.762 305 316.762H95C86.75 316.762 80 310.012 80 301.762V211.762C80 203.512 84.77 191.993 90.61 186.153L189.39 87.3725C195.22 81.5425 204.77 81.5425 210.6 87.3725L309.39 186.162C315.22 191.992 320 203.522 320 211.772V301.772V301.762Z" fill="#F2F4F9"/>
|
||||||
|
<path d="M309.39 186.153L210.61 87.3725C204.78 81.5425 195.23 81.5425 189.4 87.3725L90.61 186.153C84.78 191.983 80 203.512 80 211.762V301.762C80 310.012 86.75 316.762 95 316.762H187.27L146.64 276.132C144.55 276.852 142.32 277.262 140 277.262C128.7 277.262 119.5 268.062 119.5 256.762C119.5 245.462 128.7 236.262 140 236.262C151.3 236.262 160.5 245.462 160.5 256.762C160.5 259.092 160.09 261.322 159.37 263.412L191 295.042V179.162C184.2 175.822 179.5 168.842 179.5 160.772C179.5 149.472 188.7 140.272 200 140.272C211.3 140.272 220.5 149.472 220.5 160.772C220.5 168.842 215.8 175.822 209 179.162V260.432L240.46 228.972C239.84 227.012 239.5 224.932 239.5 222.772C239.5 211.472 248.7 202.272 260 202.272C271.3 202.272 280.5 211.472 280.5 222.772C280.5 234.072 271.3 243.272 260 243.272C257.5 243.272 255.12 242.802 252.91 241.982L209 285.892V316.772H305C313.25 316.772 320 310.022 320 301.772V211.772C320 203.522 315.23 192.002 309.39 186.162V186.153Z" fill="#18BCF2"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
@ -13,5 +13,5 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<drawables>
|
<drawables>
|
||||||
<bitmap id="LauncherIcon" filename="launcher.png" />
|
<bitmap id="LauncherIcon" filename="launcher.svg" />
|
||||||
</drawables>
|
</drawables>
|
||||||
|
Before Width: | Height: | Size: 5.1 KiB |
4
resources-launcher-61-61/launcher.svg
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<svg fill="none" height="61" viewBox="0 0 400 400" width="61" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M320 301.762C320 310.012 313.25 316.762 305 316.762H95C86.75 316.762 80 310.012 80 301.762V211.762C80 203.512 84.77 191.993 90.61 186.153L189.39 87.3725C195.22 81.5425 204.77 81.5425 210.6 87.3725L309.39 186.162C315.22 191.992 320 203.522 320 211.772V301.772V301.762Z" fill="#F2F4F9"/>
|
||||||
|
<path d="M309.39 186.153L210.61 87.3725C204.78 81.5425 195.23 81.5425 189.4 87.3725L90.61 186.153C84.78 191.983 80 203.512 80 211.762V301.762C80 310.012 86.75 316.762 95 316.762H187.27L146.64 276.132C144.55 276.852 142.32 277.262 140 277.262C128.7 277.262 119.5 268.062 119.5 256.762C119.5 245.462 128.7 236.262 140 236.262C151.3 236.262 160.5 245.462 160.5 256.762C160.5 259.092 160.09 261.322 159.37 263.412L191 295.042V179.162C184.2 175.822 179.5 168.842 179.5 160.772C179.5 149.472 188.7 140.272 200 140.272C211.3 140.272 220.5 149.472 220.5 160.772C220.5 168.842 215.8 175.822 209 179.162V260.432L240.46 228.972C239.84 227.012 239.5 224.932 239.5 222.772C239.5 211.472 248.7 202.272 260 202.272C271.3 202.272 280.5 211.472 280.5 222.772C280.5 234.072 271.3 243.272 260 243.272C257.5 243.272 255.12 242.802 252.91 241.982L209 285.892V316.772H305C313.25 316.772 320 310.022 320 301.772V211.772C320 203.522 315.23 192.002 309.39 186.162V186.153Z" fill="#18BCF2"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
@ -13,5 +13,5 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<drawables>
|
<drawables>
|
||||||
<bitmap id="LauncherIcon" filename="launcher.png" />
|
<bitmap id="LauncherIcon" filename="launcher.svg" />
|
||||||
</drawables>
|
</drawables>
|
||||||
|
Before Width: | Height: | Size: 5.1 KiB |
4
resources-launcher-62-62/launcher.svg
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<svg fill="none" height="62" viewBox="0 0 400 400" width="62" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M320 301.762C320 310.012 313.25 316.762 305 316.762H95C86.75 316.762 80 310.012 80 301.762V211.762C80 203.512 84.77 191.993 90.61 186.153L189.39 87.3725C195.22 81.5425 204.77 81.5425 210.6 87.3725L309.39 186.162C315.22 191.992 320 203.522 320 211.772V301.772V301.762Z" fill="#F2F4F9"/>
|
||||||
|
<path d="M309.39 186.153L210.61 87.3725C204.78 81.5425 195.23 81.5425 189.4 87.3725L90.61 186.153C84.78 191.983 80 203.512 80 211.762V301.762C80 310.012 86.75 316.762 95 316.762H187.27L146.64 276.132C144.55 276.852 142.32 277.262 140 277.262C128.7 277.262 119.5 268.062 119.5 256.762C119.5 245.462 128.7 236.262 140 236.262C151.3 236.262 160.5 245.462 160.5 256.762C160.5 259.092 160.09 261.322 159.37 263.412L191 295.042V179.162C184.2 175.822 179.5 168.842 179.5 160.772C179.5 149.472 188.7 140.272 200 140.272C211.3 140.272 220.5 149.472 220.5 160.772C220.5 168.842 215.8 175.822 209 179.162V260.432L240.46 228.972C239.84 227.012 239.5 224.932 239.5 222.772C239.5 211.472 248.7 202.272 260 202.272C271.3 202.272 280.5 211.472 280.5 222.772C280.5 234.072 271.3 243.272 260 243.272C257.5 243.272 255.12 242.802 252.91 241.982L209 285.892V316.772H305C313.25 316.772 320 310.022 320 301.772V211.772C320 203.522 315.23 192.002 309.39 186.162V186.153Z" fill="#18BCF2"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
@ -13,5 +13,5 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<drawables>
|
<drawables>
|
||||||
<bitmap id="LauncherIcon" filename="launcher.png" />
|
<bitmap id="LauncherIcon" filename="launcher.svg" />
|
||||||
</drawables>
|
</drawables>
|
||||||
|
Before Width: | Height: | Size: 5.2 KiB |
4
resources-launcher-65-65/launcher.svg
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<svg fill="none" height="65" viewBox="0 0 400 400" width="65" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M320 301.762C320 310.012 313.25 316.762 305 316.762H95C86.75 316.762 80 310.012 80 301.762V211.762C80 203.512 84.77 191.993 90.61 186.153L189.39 87.3725C195.22 81.5425 204.77 81.5425 210.6 87.3725L309.39 186.162C315.22 191.992 320 203.522 320 211.772V301.772V301.762Z" fill="#F2F4F9"/>
|
||||||
|
<path d="M309.39 186.153L210.61 87.3725C204.78 81.5425 195.23 81.5425 189.4 87.3725L90.61 186.153C84.78 191.983 80 203.512 80 211.762V301.762C80 310.012 86.75 316.762 95 316.762H187.27L146.64 276.132C144.55 276.852 142.32 277.262 140 277.262C128.7 277.262 119.5 268.062 119.5 256.762C119.5 245.462 128.7 236.262 140 236.262C151.3 236.262 160.5 245.462 160.5 256.762C160.5 259.092 160.09 261.322 159.37 263.412L191 295.042V179.162C184.2 175.822 179.5 168.842 179.5 160.772C179.5 149.472 188.7 140.272 200 140.272C211.3 140.272 220.5 149.472 220.5 160.772C220.5 168.842 215.8 175.822 209 179.162V260.432L240.46 228.972C239.84 227.012 239.5 224.932 239.5 222.772C239.5 211.472 248.7 202.272 260 202.272C271.3 202.272 280.5 211.472 280.5 222.772C280.5 234.072 271.3 243.272 260 243.272C257.5 243.272 255.12 242.802 252.91 241.982L209 285.892V316.772H305C313.25 316.772 320 310.022 320 301.772V211.772C320 203.522 315.23 192.002 309.39 186.162V186.153Z" fill="#18BCF2"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
@ -13,5 +13,5 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<drawables>
|
<drawables>
|
||||||
<bitmap id="LauncherIcon" filename="launcher.png" />
|
<bitmap id="LauncherIcon" filename="launcher.svg" />
|
||||||
</drawables>
|
</drawables>
|
||||||
|
Before Width: | Height: | Size: 5.3 KiB |
4
resources-launcher-70-70/launcher.svg
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<svg width="70" height="70" viewBox="0 0 400 400" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M320 301.762C320 310.012 313.25 316.762 305 316.762H95C86.75 316.762 80 310.012 80 301.762V211.762C80 203.512 84.77 191.993 90.61 186.153L189.39 87.3725C195.22 81.5425 204.77 81.5425 210.6 87.3725L309.39 186.162C315.22 191.992 320 203.522 320 211.772V301.772V301.762Z" fill="#F2F4F9"/>
|
||||||
|
<path d="M309.39 186.153L210.61 87.3725C204.78 81.5425 195.23 81.5425 189.4 87.3725L90.61 186.153C84.78 191.983 80 203.512 80 211.762V301.762C80 310.012 86.75 316.762 95 316.762H187.27L146.64 276.132C144.55 276.852 142.32 277.262 140 277.262C128.7 277.262 119.5 268.062 119.5 256.762C119.5 245.462 128.7 236.262 140 236.262C151.3 236.262 160.5 245.462 160.5 256.762C160.5 259.092 160.09 261.322 159.37 263.412L191 295.042V179.162C184.2 175.822 179.5 168.842 179.5 160.772C179.5 149.472 188.7 140.272 200 140.272C211.3 140.272 220.5 149.472 220.5 160.772C220.5 168.842 215.8 175.822 209 179.162V260.432L240.46 228.972C239.84 227.012 239.5 224.932 239.5 222.772C239.5 211.472 248.7 202.272 260 202.272C271.3 202.272 280.5 211.472 280.5 222.772C280.5 234.072 271.3 243.272 260 243.272C257.5 243.272 255.12 242.802 252.91 241.982L209 285.892V316.772H305C313.25 316.772 320 310.022 320 301.772V211.772C320 203.522 315.23 192.002 309.39 186.162V186.153Z" fill="#18BCF2"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
@ -13,5 +13,5 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<drawables>
|
<drawables>
|
||||||
<bitmap id="LauncherIcon" filename="launcher.png" />
|
<bitmap id="LauncherIcon" filename="launcher.svg" />
|
||||||
</drawables>
|
</drawables>
|
||||||
|
Before Width: | Height: | Size: 5.7 KiB |
4
resources-launcher-80-80/launcher.svg
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<svg fill="none" height="80" viewBox="0 0 400 400" width="80" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M320 301.762C320 310.012 313.25 316.762 305 316.762H95C86.75 316.762 80 310.012 80 301.762V211.762C80 203.512 84.77 191.993 90.61 186.153L189.39 87.3725C195.22 81.5425 204.77 81.5425 210.6 87.3725L309.39 186.162C315.22 191.992 320 203.522 320 211.772V301.772V301.762Z" fill="#F2F4F9"/>
|
||||||
|
<path d="M309.39 186.153L210.61 87.3725C204.78 81.5425 195.23 81.5425 189.4 87.3725L90.61 186.153C84.78 191.983 80 203.512 80 211.762V301.762C80 310.012 86.75 316.762 95 316.762H187.27L146.64 276.132C144.55 276.852 142.32 277.262 140 277.262C128.7 277.262 119.5 268.062 119.5 256.762C119.5 245.462 128.7 236.262 140 236.262C151.3 236.262 160.5 245.462 160.5 256.762C160.5 259.092 160.09 261.322 159.37 263.412L191 295.042V179.162C184.2 175.822 179.5 168.842 179.5 160.772C179.5 149.472 188.7 140.272 200 140.272C211.3 140.272 220.5 149.472 220.5 160.772C220.5 168.842 215.8 175.822 209 179.162V260.432L240.46 228.972C239.84 227.012 239.5 224.932 239.5 222.772C239.5 211.472 248.7 202.272 260 202.272C271.3 202.272 280.5 211.472 280.5 222.772C280.5 234.072 271.3 243.272 260 243.272C257.5 243.272 255.12 242.802 252.91 241.982L209 285.892V316.772H305C313.25 316.772 320 310.022 320 301.772V211.772C320 203.522 315.23 192.002 309.39 186.162V186.153Z" fill="#18BCF2"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">Nav konfigurēts</string>
|
<string id="Unconfigured" scope="glance">Nav konfigurēts</string>
|
||||||
<string id="GlanceMenu" scope="glance">Izvēlne</string>
|
<string id="GlanceMenu" scope="glance">Izvēlne</string>
|
||||||
<!-- Iestatījumu GUI -->
|
<!-- Iestatījumu GUI -->
|
||||||
|
<string id="SettingsSelect">Izvēlieties...</string>
|
||||||
<string id="SettingsApiKey">API atslēga Home Assistant.</string>
|
<string id="SettingsApiKey">API atslēga Home Assistant.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Ilgmūžīgs piekļuves marķieris.</string>
|
<string id="SettingsApiKeyPrompt">Ilgmūžīgs piekļuves marķieris.</string>
|
||||||
<string id="SettingsApiUrl">HomeAssistant API URL.</string>
|
<string id="SettingsApiUrl">HomeAssistant API URL.</string>
|
||||||
<string id="SettingsConfigUrl">URL izvēlnes konfigurācijai (JSON).</string>
|
<string id="SettingsConfigUrl">URL izvēlnes konfigurācijai (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Taimauts sekundēs. Pēc šī neaktivitātes perioda izejiet no lietojumprogrammas, lai taupītu ierīces akumulatoru.</string>
|
<string id="SettingsAppTimeout">Taimauts sekundēs. Pēc šī neaktivitātes perioda izejiet no lietojumprogrammas, lai taupītu ierīces akumulatoru.</string>
|
||||||
<string id="SettingsConfirmTimeout">Pēc šī laika (sekundēs) tiek automātiski aizvērts darbības apstiprinājuma dialoglodziņš un darbība tiek atcelta. Iestatiet uz 0, lai atspējotu taimautu.</string>
|
<string id="SettingsConfirmTimeout">Pēc šī laika (sekundēs) tiek automātiski aizvērts darbības apstiprinājuma dialoglodziņš un darbība tiek atcelta. Iestatiet uz 0, lai atspējotu taimautu.</string>
|
||||||
<string id="SettingsUi">Apzīmē veidus ar ikonām (izslēgts) vai ar etiķetēm (ieslēgts).</string>
|
<string id="SettingsMenuItemStyle">Izvēlnes vienuma stils.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">Ikonas</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Papildu teksts</string>
|
||||||
<string id="SettingsTextAlign">Kreisā (izslēgta) vai labā (ieslēgta) izvēlnes līdzināšana.</string>
|
<string id="SettingsTextAlign">Kreisā (izslēgta) vai labā (ieslēgta) izvēlnes līdzināšana.</string>
|
||||||
|
<string id="LeftToRight">No kreisās uz labo</string>
|
||||||
|
<string id="RightToLeft">No labās uz kreiso</string>
|
||||||
<string id="SettingsWidgetStart">(tikai logrīkam) Automātiski startējiet lietojumprogrammu no logrīka, negaidot pieskārienu.</string>
|
<string id="SettingsWidgetStart">(tikai logrīkam) Automātiski startējiet lietojumprogrammu no logrīka, negaidot pieskārienu.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Iespējojiet fona pakalpojumu, lai uz Home Assistant nosūtītu pulksteņa akumulatora uzlādes līmeni.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">Atsvaidzes intensitāte (minūtēs), ar kādu fona pakalpojumam ir jāatkārto akumulatora līmeņa nosūtīšana.</string>
|
||||||
</strings>
|
</strings>
|
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">Nesukonfigūruotas</string>
|
<string id="Unconfigured" scope="glance">Nesukonfigūruotas</string>
|
||||||
<string id="GlanceMenu" scope="glance">Meniu</string>
|
<string id="GlanceMenu" scope="glance">Meniu</string>
|
||||||
<!-- Dėl nustatymų GUI -->
|
<!-- Dėl nustatymų GUI -->
|
||||||
|
<string id="SettingsSelect">Pasirinkite...</string>
|
||||||
<string id="SettingsApiKey">API raktas, skirtas HomeAssistant.</string>
|
<string id="SettingsApiKey">API raktas, skirtas HomeAssistant.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Ilgalaikis prieigos raktas.</string>
|
<string id="SettingsApiKeyPrompt">Ilgalaikis prieigos raktas.</string>
|
||||||
<string id="SettingsApiUrl">„HomeAssistant“ API URL.</string>
|
<string id="SettingsApiUrl">„HomeAssistant“ API URL.</string>
|
||||||
<string id="SettingsConfigUrl">Meniu konfigūravimo URL (JSON).</string>
|
<string id="SettingsConfigUrl">Meniu konfigūravimo URL (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Skirtasis laikas sekundėmis. Po šio neveiklumo laikotarpio išeikite iš programos, kad taupytumėte įrenginio akumuliatorių.</string>
|
<string id="SettingsAppTimeout">Skirtasis laikas sekundėmis. Po šio neveiklumo laikotarpio išeikite iš programos, kad taupytumėte įrenginio akumuliatorių.</string>
|
||||||
<string id="SettingsConfirmTimeout">Praėjus šiam laikui (sekundėmis), veiksmo patvirtinimo dialogo langas automatiškai uždaromas ir veiksmas atšaukiamas. Nustatykite 0, kad išjungtumėte skirtąjį laiką.</string>
|
<string id="SettingsConfirmTimeout">Praėjus šiam laikui (sekundėmis), veiksmo patvirtinimo dialogo langas automatiškai uždaromas ir veiksmas atšaukiamas. Nustatykite 0, kad išjungtumėte skirtąjį laiką.</string>
|
||||||
<string id="SettingsUi">Tipai su piktogramomis (išjungta) arba etiketėmis (įjungta).</string>
|
<string id="SettingsMenuItemStyle">Meniu elemento stilius.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">Piktogramos</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Papildomas tekstas</string>
|
||||||
<string id="SettingsTextAlign">Kairysis (išjungtas) arba dešinysis (įjungtas) meniu lygiavimas.</string>
|
<string id="SettingsTextAlign">Kairysis (išjungtas) arba dešinysis (įjungtas) meniu lygiavimas.</string>
|
||||||
<string id="SettingsWidgetStart">(Tik valdiklis) Automatiškai paleiskite programą iš valdiklio, nelaukdami palietimo.</string>
|
<string id="LeftToRight">Iš kairės į dešinę</string>
|
||||||
|
<string id="RightToLeft">Iš dešinės į kairę</string>
|
||||||
|
<string id="SettingsWidgetStart">(Tik valdikliui) Automatiškai paleiskite programą iš valdiklio, nelaukdami, kol bus palietus.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Įgalinkite foninę paslaugą, kad į „Home Assistant“ būtų išsiųstas laikrodžio akumuliatoriaus lygis.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">Atnaujinimo dažnis (minutėmis), kuriuo foninė paslauga turėtų pakartoti baterijos lygio siuntimą.</string>
|
||||||
</strings>
|
</strings>
|
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">Ukonfigurert</string>
|
<string id="Unconfigured" scope="glance">Ukonfigurert</string>
|
||||||
<string id="GlanceMenu" scope="glance">Meny</string>
|
<string id="GlanceMenu" scope="glance">Meny</string>
|
||||||
<!-- For innstillingene GUI -->
|
<!-- For innstillingene GUI -->
|
||||||
|
<string id="SettingsSelect">Plukke ut...</string>
|
||||||
<string id="SettingsApiKey">API-nøkkel for HomeAssistant.</string>
|
<string id="SettingsApiKey">API-nøkkel for HomeAssistant.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Langlevd tilgangstoken.</string>
|
<string id="SettingsApiKeyPrompt">Langlevd tilgangstoken.</string>
|
||||||
<string id="SettingsApiUrl">URL for HomeAssistant API.</string>
|
<string id="SettingsApiUrl">URL for HomeAssistant API.</string>
|
||||||
<string id="SettingsConfigUrl">URL for menykonfigurasjon (JSON).</string>
|
<string id="SettingsConfigUrl">URL for menykonfigurasjon (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Tidsavbrudd i sekunder. Avslutt applikasjonen etter denne perioden med inaktivitet for å spare enhetens batteri.</string>
|
<string id="SettingsAppTimeout">Tidsavbrudd i sekunder. Avslutt applikasjonen etter denne perioden med inaktivitet for å spare enhetens batteri.</string>
|
||||||
<string id="SettingsConfirmTimeout">Etter denne tiden (i sekunder), lukkes en bekreftelsesdialog for en handling automatisk og handlingen avbrytes. Sett til 0 for å deaktivere tidsavbruddet.</string>
|
<string id="SettingsConfirmTimeout">Etter denne tiden (i sekunder), lukkes en bekreftelsesdialog for en handling automatisk og handlingen avbrytes. Sett til 0 for å deaktivere tidsavbruddet.</string>
|
||||||
<string id="SettingsUi">Representerer typer med ikoner (av) eller med etiketter (på).</string>
|
<string id="SettingsMenuItemStyle">Menyelementstil.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">Ikoner</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Ekstra tekst</string>
|
||||||
<string id="SettingsTextAlign">Venstre (av) eller Høyre (på) Menyjustering.</string>
|
<string id="SettingsTextAlign">Venstre (av) eller Høyre (på) Menyjustering.</string>
|
||||||
|
<string id="LeftToRight">Venstre til høyre</string>
|
||||||
|
<string id="RightToLeft">Høyre til venstre</string>
|
||||||
<string id="SettingsWidgetStart">(Kun widget) Start applikasjonen automatisk fra widgeten uten å vente på et trykk.</string>
|
<string id="SettingsWidgetStart">(Kun widget) Start applikasjonen automatisk fra widgeten uten å vente på et trykk.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Aktiver bakgrunnstjenesten for å sende klokkens batterinivå til Home Assistant.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">Oppdateringshastigheten (i minutter) som bakgrunnstjenesten skal gjenta sendingen av batterinivået med.</string>
|
||||||
</strings>
|
</strings>
|
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">Nieskonfigurowane</string>
|
<string id="Unconfigured" scope="glance">Nieskonfigurowane</string>
|
||||||
<string id="GlanceMenu" scope="glance">Menu</string>
|
<string id="GlanceMenu" scope="glance">Menu</string>
|
||||||
<!-- Dla ustawień GUI -->
|
<!-- Dla ustawień GUI -->
|
||||||
|
<string id="SettingsSelect">Wybierać...</string>
|
||||||
<string id="SettingsApiKey">Klucz API dla HomeAssistant.</string>
|
<string id="SettingsApiKey">Klucz API dla HomeAssistant.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Długowieczny token dostępu.</string>
|
<string id="SettingsApiKeyPrompt">Długowieczny token dostępu.</string>
|
||||||
<string id="SettingsApiUrl">Adres URL interfejsu API HomeAssistant.</string>
|
<string id="SettingsApiUrl">Adres URL interfejsu API HomeAssistant.</string>
|
||||||
<string id="SettingsConfigUrl">Adres URL konfiguracji menu (JSON).</string>
|
<string id="SettingsConfigUrl">Adres URL konfiguracji menu (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Limit czasu w sekundach. Wyjdź z aplikacji po tym okresie bezczynności, aby oszczędzać baterię urządzenia.</string>
|
<string id="SettingsAppTimeout">Limit czasu w sekundach. Wyjdź z aplikacji po tym okresie bezczynności, aby oszczędzać baterię urządzenia.</string>
|
||||||
<string id="SettingsConfirmTimeout">Po tym czasie (w sekundach) okno dialogowe z potwierdzeniem akcji zamyka się automatycznie, a akcja zostaje anulowana. Ustaw na 0, aby wyłączyć limit czasu.</string>
|
<string id="SettingsConfirmTimeout">Po tym czasie (w sekundach) okno dialogowe z potwierdzeniem akcji zamyka się automatycznie, a akcja zostaje anulowana. Ustaw na 0, aby wyłączyć limit czasu.</string>
|
||||||
<string id="SettingsUi">Reprezentowanie typów za pomocą ikon (wyłączone) lub etykiet (włączone).</string>
|
<string id="SettingsMenuItemStyle">Styl pozycji menu.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">Ikony</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Dodatkowy tekst</string>
|
||||||
<string id="SettingsTextAlign">Wyrównanie menu do lewej (wyłączone) lub do prawej (włączone).</string>
|
<string id="SettingsTextAlign">Wyrównanie menu do lewej (wyłączone) lub do prawej (włączone).</string>
|
||||||
|
<string id="LeftToRight">Od lewej do prawej</string>
|
||||||
|
<string id="RightToLeft">Od prawej do lewej</string>
|
||||||
<string id="SettingsWidgetStart">(Tylko widget) Automatycznie uruchamiaj aplikację z widgetu, bez czekania na dotknięcie.</string>
|
<string id="SettingsWidgetStart">(Tylko widget) Automatycznie uruchamiaj aplikację z widgetu, bez czekania na dotknięcie.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Włącz usługę działającą w tle, aby wysyłać poziom naładowania baterii zegara do Home Assistant.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">Częstotliwość odświeżania (w minutach), z jaką usługa działająca w tle powinna powtarzać wysyłanie informacji o poziomie baterii.</string>
|
||||||
</strings>
|
</strings>
|
@ -31,7 +31,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">Nenhuma chave de API nas configurações do aplicativo</string>
|
<string id="NoAPIKey" scope="glance">Nenhuma chave de API nas configurações do aplicativo</string>
|
||||||
<string id="NoApiUrl" scope="glance">Nenhum URL de API nas configurações do aplicativo</string>
|
<string id="NoApiUrl" scope="glance">Nenhum URL de API nas configurações do aplicativo</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Nenhum URL de configuração nas configurações do aplicativo</string>
|
<string id="NoConfigUrl" scope="glance">Nenhum URL de configuração nas configurações do aplicativo</string>
|
||||||
<string id="ApiFlood">Chamadas de API muito rápidas. Por favor, diminua a velocidade de seus pedidos.</string>
|
<string id="ApiFlood">Chamadas de API muito rápidas. Por favor, desacelere seus pedidos.</string>
|
||||||
<string id="ApiUrlNotFound">URL não encontrado. Possível erro de URL da API nas configurações.</string>
|
<string id="ApiUrlNotFound">URL não encontrado. Possível erro de URL da API nas configurações.</string>
|
||||||
<string id="ConfigUrlNotFound">URL não encontrado. Possível erro de URL de configuração nas configurações.</string>
|
<string id="ConfigUrlNotFound">URL não encontrado. Possível erro de URL de configuração nas configurações.</string>
|
||||||
<string id="NoJson">Nenhum JSON foi retornado da solicitação HTTP.</string>
|
<string id="NoJson">Nenhum JSON foi retornado da solicitação HTTP.</string>
|
||||||
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">Não configurado</string>
|
<string id="Unconfigured" scope="glance">Não configurado</string>
|
||||||
<string id="GlanceMenu" scope="glance">Cardápio</string>
|
<string id="GlanceMenu" scope="glance">Cardápio</string>
|
||||||
<!-- Para a GUI de configurações -->
|
<!-- Para a GUI de configurações -->
|
||||||
|
<string id="SettingsSelect">Selecione...</string>
|
||||||
<string id="SettingsApiKey">Chave de API para HomeAssistant.</string>
|
<string id="SettingsApiKey">Chave de API para HomeAssistant.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Token de acesso de longa duração.</string>
|
<string id="SettingsApiKeyPrompt">Token de acesso de longa duração.</string>
|
||||||
<string id="SettingsApiUrl">URL para API HomeAssistant.</string>
|
<string id="SettingsApiUrl">URL para API HomeAssistant.</string>
|
||||||
<string id="SettingsConfigUrl">URL para configuração do menu (JSON).</string>
|
<string id="SettingsConfigUrl">URL para configuração do menu (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Tempo limite em segundos. Saia do aplicativo após esse período de inatividade para economizar bateria do aparelho.</string>
|
<string id="SettingsAppTimeout">Tempo limite em segundos. Saia do aplicativo após esse período de inatividade para economizar bateria do aparelho.</string>
|
||||||
<string id="SettingsConfirmTimeout">Após esse tempo (em segundos), uma caixa de diálogo de confirmação de uma ação é automaticamente fechada e a ação é cancelada. Defina como 0 para desativar o tempo limite.</string>
|
<string id="SettingsConfirmTimeout">Após esse tempo (em segundos), uma caixa de diálogo de confirmação de uma ação é automaticamente fechada e a ação é cancelada. Defina como 0 para desativar o tempo limite.</string>
|
||||||
<string id="SettingsUi">Representando tipos com ícones (desligado) ou com rótulos (ligado).</string>
|
<string id="SettingsMenuItemStyle">Estilo do item de menu.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">Ícones</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Texto Adicional</string>
|
||||||
<string id="SettingsTextAlign">Alinhamento do menu à esquerda (desligado) ou à direita (ligado).</string>
|
<string id="SettingsTextAlign">Alinhamento do menu à esquerda (desligado) ou à direita (ligado).</string>
|
||||||
|
<string id="LeftToRight">Da esquerda para direita</string>
|
||||||
|
<string id="RightToLeft">Direita para esquerda</string>
|
||||||
<string id="SettingsWidgetStart">(Somente widget) Inicie automaticamente o aplicativo a partir do widget sem esperar por um toque.</string>
|
<string id="SettingsWidgetStart">(Somente widget) Inicie automaticamente o aplicativo a partir do widget sem esperar por um toque.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Ative o serviço em segundo plano para enviar o nível da bateria do relógio ao Home Assistant.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">A taxa de atualização (em minutos) na qual o serviço em segundo plano deve repetir o envio do nível da bateria.</string>
|
||||||
</strings>
|
</strings>
|
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">Neconfigurat</string>
|
<string id="Unconfigured" scope="glance">Neconfigurat</string>
|
||||||
<string id="GlanceMenu" scope="glance">Meniul</string>
|
<string id="GlanceMenu" scope="glance">Meniul</string>
|
||||||
<!-- Pentru GUI de setări -->
|
<!-- Pentru GUI de setări -->
|
||||||
|
<string id="SettingsSelect">Selectați...</string>
|
||||||
<string id="SettingsApiKey">Cheie API pentru HomeAssistant.</string>
|
<string id="SettingsApiKey">Cheie API pentru HomeAssistant.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Token de acces cu viață lungă.</string>
|
<string id="SettingsApiKeyPrompt">Token de acces cu viață lungă.</string>
|
||||||
<string id="SettingsApiUrl">Adresa URL pentru API-ul HomeAssistant.</string>
|
<string id="SettingsApiUrl">Adresa URL pentru API-ul HomeAssistant.</string>
|
||||||
<string id="SettingsConfigUrl">URL pentru configurarea meniului (JSON).</string>
|
<string id="SettingsConfigUrl">URL pentru configurarea meniului (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Timeout în secunde. Ieșiți din aplicație după această perioadă de inactivitate pentru a economisi bateria dispozitivului.</string>
|
<string id="SettingsAppTimeout">Timeout în secunde. Ieșiți din aplicație după această perioadă de inactivitate pentru a economisi bateria dispozitivului.</string>
|
||||||
<string id="SettingsConfirmTimeout">După acest timp (în secunde), un dialog de confirmare pentru o acțiune este închis automat și acțiunea este anulată. Setați la 0 pentru a dezactiva timeout-ul.</string>
|
<string id="SettingsConfirmTimeout">După acest timp (în secunde), un dialog de confirmare pentru o acțiune este închis automat și acțiunea este anulată. Setați la 0 pentru a dezactiva timeout-ul.</string>
|
||||||
<string id="SettingsUi">Reprezentarea tipurilor cu pictograme (dezactivate) sau cu etichete (activate).</string>
|
<string id="SettingsMenuItemStyle">Stilul elementului de meniu.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">icoane</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Text suplimentar</string>
|
||||||
<string id="SettingsTextAlign">Alinierea meniului la stânga (dezactivată) sau la dreapta (activată).</string>
|
<string id="SettingsTextAlign">Alinierea meniului la stânga (dezactivată) sau la dreapta (activată).</string>
|
||||||
|
<string id="LeftToRight">De la stânga la dreapta</string>
|
||||||
|
<string id="RightToLeft">De la dreapta la stanga</string>
|
||||||
<string id="SettingsWidgetStart">(Numai widget) Porniți automat aplicația din widget fără a aștepta o atingere.</string>
|
<string id="SettingsWidgetStart">(Numai widget) Porniți automat aplicația din widget fără a aștepta o atingere.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Activați serviciul de fundal pentru a trimite nivelul bateriei ceasului către Home Assistant.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">Rata de reîmprospătare (în minute) la care serviciul de fundal ar trebui să repete trimiterea nivelului bateriei.</string>
|
||||||
</strings>
|
</strings>
|
@ -37,19 +37,26 @@
|
|||||||
<string id="NoJson">Z požiadavky HTTP sa nevrátil žiadny JSON.</string>
|
<string id="NoJson">Z požiadavky HTTP sa nevrátil žiadny JSON.</string>
|
||||||
<string id="UnhandledHttpErr">Požiadavka HTTP vrátila kód chyby =</string>
|
<string id="UnhandledHttpErr">Požiadavka HTTP vrátila kód chyby =</string>
|
||||||
<string id="TrailingSlashErr">Adresa URL rozhrania API nesmie obsahovať koncovú lomku „/“</string>
|
<string id="TrailingSlashErr">Adresa URL rozhrania API nesmie obsahovať koncovú lomku „/“</string>
|
||||||
<string id="Available" scope="glance">Dostupné</string>
|
<string id="Available" scope="glance">K dispozícii</string>
|
||||||
<string id="Checking" scope="glance">Prebieha kontrola...</string>
|
<string id="Checking" scope="glance">Prebieha kontrola...</string>
|
||||||
<string id="Unavailable" scope="glance">nedostupné</string>
|
<string id="Unavailable" scope="glance">nedostupné</string>
|
||||||
<string id="Unconfigured" scope="glance">Nekonfigurované</string>
|
<string id="Unconfigured" scope="glance">Nekonfigurované</string>
|
||||||
<string id="GlanceMenu" scope="glance">Ponuka</string>
|
<string id="GlanceMenu" scope="glance">Ponuka</string>
|
||||||
<!-- Pre nastavenia GUI -->
|
<!-- Pre nastavenia GUI -->
|
||||||
|
<string id="SettingsSelect">Vybrať...</string>
|
||||||
<string id="SettingsApiKey">Kľúč API pre HomeAssistant.</string>
|
<string id="SettingsApiKey">Kľúč API pre HomeAssistant.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Prístupový token s dlhou životnosťou.</string>
|
<string id="SettingsApiKeyPrompt">Prístupový token s dlhou životnosťou.</string>
|
||||||
<string id="SettingsApiUrl">URL pre HomeAssistant API.</string>
|
<string id="SettingsApiUrl">URL pre HomeAssistant API.</string>
|
||||||
<string id="SettingsConfigUrl">Webová adresa pre konfiguráciu ponuky (JSON).</string>
|
<string id="SettingsConfigUrl">Webová adresa pre konfiguráciu ponuky (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Časový limit v sekundách. Po tejto dobe nečinnosti ukončite aplikáciu, aby ste šetrili batériu zariadenia.</string>
|
<string id="SettingsAppTimeout">Časový limit v sekundách. Po tejto dobe nečinnosti ukončite aplikáciu, aby ste šetrili batériu zariadenia.</string>
|
||||||
<string id="SettingsConfirmTimeout">Po tomto čase (v sekundách) sa dialógové okno s potvrdením akcie automaticky zatvorí a akcia sa zruší. Ak chcete časový limit deaktivovať, nastavte na 0.</string>
|
<string id="SettingsConfirmTimeout">Po tomto čase (v sekundách) sa dialógové okno s potvrdením akcie automaticky zatvorí a akcia sa zruší. Ak chcete časový limit deaktivovať, nastavte na 0.</string>
|
||||||
<string id="SettingsUi">Typy predstavujú ikony (vypnuté) alebo štítky (zapnuté).</string>
|
<string id="SettingsMenuItemStyle">Štýl položky menu.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">ikony</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Doplnkový text</string>
|
||||||
<string id="SettingsTextAlign">Zarovnanie ponuky vľavo (vypnuté) alebo vpravo (zapnuté).</string>
|
<string id="SettingsTextAlign">Zarovnanie ponuky vľavo (vypnuté) alebo vpravo (zapnuté).</string>
|
||||||
|
<string id="LeftToRight">Zľava doprava</string>
|
||||||
|
<string id="RightToLeft">Zprava doľava</string>
|
||||||
<string id="SettingsWidgetStart">(Len miniaplikácia) Automaticky spustite aplikáciu z miniaplikácie bez čakania na klepnutie.</string>
|
<string id="SettingsWidgetStart">(Len miniaplikácia) Automaticky spustite aplikáciu z miniaplikácie bez čakania na klepnutie.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Povoľte službu na pozadí na odosielanie úrovne batérie hodín do domáceho asistenta.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">Obnovovacia frekvencia (v minútach), pri ktorej by služba na pozadí mala opakovať odosielanie úrovne batérie.</string>
|
||||||
</strings>
|
</strings>
|
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">Nekonfigurirano</string>
|
<string id="Unconfigured" scope="glance">Nekonfigurirano</string>
|
||||||
<string id="GlanceMenu" scope="glance">meni</string>
|
<string id="GlanceMenu" scope="glance">meni</string>
|
||||||
<!-- Za nastavitve GUI -->
|
<!-- Za nastavitve GUI -->
|
||||||
|
<string id="SettingsSelect">Izberite ...</string>
|
||||||
<string id="SettingsApiKey">API ključ za HomeAssistant.</string>
|
<string id="SettingsApiKey">API ključ za HomeAssistant.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Dolgoživ dostopni žeton.</string>
|
<string id="SettingsApiKeyPrompt">Dolgoživ dostopni žeton.</string>
|
||||||
<string id="SettingsApiUrl">URL za HomeAssistant API.</string>
|
<string id="SettingsApiUrl">URL za HomeAssistant API.</string>
|
||||||
<string id="SettingsConfigUrl">URL za konfiguracijo menija (JSON).</string>
|
<string id="SettingsConfigUrl">URL za konfiguracijo menija (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Časovna omejitev v sekundah. Po tem obdobju nedejavnosti zaprite aplikacijo, da prihranite baterijo naprave.</string>
|
<string id="SettingsAppTimeout">Časovna omejitev v sekundah. Po tem obdobju nedejavnosti zaprite aplikacijo, da prihranite baterijo naprave.</string>
|
||||||
<string id="SettingsConfirmTimeout">Po tem času (v sekundah) se potrditveno pogovorno okno za dejanje samodejno zapre in dejanje je preklicano. Nastavite na 0, da onemogočite časovno omejitev.</string>
|
<string id="SettingsConfirmTimeout">Po tem času (v sekundah) se potrditveno pogovorno okno za dejanje samodejno zapre in dejanje je preklicano. Nastavite na 0, da onemogočite časovno omejitev.</string>
|
||||||
<string id="SettingsUi">Predstavljanje tipov z ikonami (izklopljeno) ali z oznakami (vklopljeno).</string>
|
<string id="SettingsMenuItemStyle">Slog elementa menija.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">Ikone</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Dodatno besedilo</string>
|
||||||
<string id="SettingsTextAlign">Leva (izklopljena) ali desna (vklopljena) poravnava menija.</string>
|
<string id="SettingsTextAlign">Leva (izklopljena) ali desna (vklopljena) poravnava menija.</string>
|
||||||
|
<string id="LeftToRight">Od leve proti desni</string>
|
||||||
|
<string id="RightToLeft">Od desne proti levi</string>
|
||||||
<string id="SettingsWidgetStart">(Samo pripomoček) Samodejno zaženite aplikacijo iz pripomočka, ne da bi čakali na dotik.</string>
|
<string id="SettingsWidgetStart">(Samo pripomoček) Samodejno zaženite aplikacijo iz pripomočka, ne da bi čakali na dotik.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Omogočite storitev v ozadju za pošiljanje stanja baterije ure domačemu pomočniku.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">Hitrost osveževanja (v minutah), pri kateri naj storitev v ozadju ponavlja pošiljanje stanja baterije.</string>
|
||||||
</strings>
|
</strings>
|
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">Desconfigurado</string>
|
<string id="Unconfigured" scope="glance">Desconfigurado</string>
|
||||||
<string id="GlanceMenu" scope="glance">Menú</string>
|
<string id="GlanceMenu" scope="glance">Menú</string>
|
||||||
<!-- Para la configuración GUI -->
|
<!-- Para la configuración GUI -->
|
||||||
|
<string id="SettingsSelect">Seleccionar...</string>
|
||||||
<string id="SettingsApiKey">Clave API para HomeAssistant.</string>
|
<string id="SettingsApiKey">Clave API para HomeAssistant.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Token de acceso de larga duración.</string>
|
<string id="SettingsApiKeyPrompt">Token de acceso de larga duración.</string>
|
||||||
<string id="SettingsApiUrl">URL para la API de HomeAssistant.</string>
|
<string id="SettingsApiUrl">URL para la API de HomeAssistant.</string>
|
||||||
<string id="SettingsConfigUrl">URL para configuración del menú (JSON).</string>
|
<string id="SettingsConfigUrl">URL para configuración del menú (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Tiempo de espera en segundos. Salga de la aplicación después de este período de inactividad para ahorrar batería del dispositivo.</string>
|
<string id="SettingsAppTimeout">Tiempo de espera en segundos. Salga de la aplicación después de este período de inactividad para ahorrar batería del dispositivo.</string>
|
||||||
<string id="SettingsConfirmTimeout">Después de este tiempo (en segundos), se cierra automáticamente un cuadro de diálogo de confirmación de una acción y se cancela la acción. Establezca en 0 para desactivar el tiempo de espera.</string>
|
<string id="SettingsConfirmTimeout">Después de este tiempo (en segundos), se cierra automáticamente un cuadro de diálogo de confirmación de una acción y se cancela la acción. Establezca en 0 para desactivar el tiempo de espera.</string>
|
||||||
<string id="SettingsUi">Representando tipos con iconos (apagados) o con etiquetas (encendido).</string>
|
<string id="SettingsMenuItemStyle">Estilo de elemento de menú.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">Iconos</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Texto adicional</string>
|
||||||
<string id="SettingsTextAlign">Alineación del menú izquierda (desactivada) o derecha (activada).</string>
|
<string id="SettingsTextAlign">Alineación del menú izquierda (desactivada) o derecha (activada).</string>
|
||||||
|
<string id="LeftToRight">De izquierda a derecha</string>
|
||||||
|
<string id="RightToLeft">De derecha a izquierda</string>
|
||||||
<string id="SettingsWidgetStart">(Solo widget) Inicia automáticamente la aplicación desde el widget sin esperar un toque.</string>
|
<string id="SettingsWidgetStart">(Solo widget) Inicia automáticamente la aplicación desde el widget sin esperar un toque.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Habilite el servicio en segundo plano para enviar el nivel de batería del reloj a Home Assistant.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">La frecuencia de actualización (en minutos) a la que el servicio en segundo plano debe repetir el envío del nivel de la batería.</string>
|
||||||
</strings>
|
</strings>
|
@ -29,7 +29,7 @@
|
|||||||
<string id="NoInternet">Ingen internetanslutning</string>
|
<string id="NoInternet">Ingen internetanslutning</string>
|
||||||
<string id="NoResponse">Inget svar, kontrollera internetanslutningen</string>
|
<string id="NoResponse">Inget svar, kontrollera internetanslutningen</string>
|
||||||
<string id="NoAPIKey" scope="glance">Ingen API-nyckel i applikationsinställningarna</string>
|
<string id="NoAPIKey" scope="glance">Ingen API-nyckel i applikationsinställningarna</string>
|
||||||
<string id="NoApiUrl" scope="glance">Ingen API-URL i applikationsinställningarna</string>
|
<string id="NoApiUrl" scope="glance">Ingen API-URL i programinställningarna</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Ingen konfigurations-URL i programinställningarna</string>
|
<string id="NoConfigUrl" scope="glance">Ingen konfigurations-URL i programinställningarna</string>
|
||||||
<string id="ApiFlood">API-anrop för snabba. Vänligen sakta ner dina förfrågningar.</string>
|
<string id="ApiFlood">API-anrop för snabba. Vänligen sakta ner dina förfrågningar.</string>
|
||||||
<string id="ApiUrlNotFound">Webbadressen hittades inte. Potentiellt API-URL-fel i inställningarna.</string>
|
<string id="ApiUrlNotFound">Webbadressen hittades inte. Potentiellt API-URL-fel i inställningarna.</string>
|
||||||
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">Okonfigurerad</string>
|
<string id="Unconfigured" scope="glance">Okonfigurerad</string>
|
||||||
<string id="GlanceMenu" scope="glance">Meny</string>
|
<string id="GlanceMenu" scope="glance">Meny</string>
|
||||||
<!-- För inställningar GUI -->
|
<!-- För inställningar GUI -->
|
||||||
|
<string id="SettingsSelect">Välj...</string>
|
||||||
<string id="SettingsApiKey">API-nyckel för HomeAssistant.</string>
|
<string id="SettingsApiKey">API-nyckel för HomeAssistant.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Långlivad åtkomsttoken.</string>
|
<string id="SettingsApiKeyPrompt">Långlivad åtkomsttoken.</string>
|
||||||
<string id="SettingsApiUrl">URL för HomeAssistant API.</string>
|
<string id="SettingsApiUrl">URL för HomeAssistant API.</string>
|
||||||
<string id="SettingsConfigUrl">URL för menykonfiguration (JSON).</string>
|
<string id="SettingsConfigUrl">URL för menykonfiguration (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Timeout i sekunder. Avsluta programmet efter denna period av inaktivitet för att spara enhetens batteri.</string>
|
<string id="SettingsAppTimeout">Timeout i sekunder. Avsluta programmet efter denna period av inaktivitet för att spara enhetens batteri.</string>
|
||||||
<string id="SettingsConfirmTimeout">Efter denna tid (i sekunder) stängs en bekräftelsedialog för en åtgärd automatiskt och åtgärden avbryts. Ställ in på 0 för att inaktivera timeout.</string>
|
<string id="SettingsConfirmTimeout">Efter denna tid (i sekunder) stängs en bekräftelsedialog för en åtgärd automatiskt och åtgärden avbryts. Ställ in på 0 för att inaktivera timeout.</string>
|
||||||
<string id="SettingsUi">Representerar typer med ikoner (av) eller med etiketter (på).</string>
|
<string id="SettingsMenuItemStyle">Menyalternativ stil.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">Ikoner</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Ytterligare text</string>
|
||||||
<string id="SettingsTextAlign">Vänster (av) eller höger (på) menyjustering.</string>
|
<string id="SettingsTextAlign">Vänster (av) eller höger (på) menyjustering.</string>
|
||||||
|
<string id="LeftToRight">Vänster till höger</string>
|
||||||
|
<string id="RightToLeft">Höger till vänster</string>
|
||||||
<string id="SettingsWidgetStart">(Endast widget) Starta programmet automatiskt från widgeten utan att vänta på ett tryck.</string>
|
<string id="SettingsWidgetStart">(Endast widget) Starta programmet automatiskt från widgeten utan att vänta på ett tryck.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Aktivera bakgrundstjänsten för att skicka klockans batterinivå till Home Assistant.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">Uppdateringshastigheten (i minuter) med vilken bakgrundstjänsten ska upprepa sändningen av batterinivån.</string>
|
||||||
</strings>
|
</strings>
|
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">ไม่ได้กำหนดค่า</string>
|
<string id="Unconfigured" scope="glance">ไม่ได้กำหนดค่า</string>
|
||||||
<string id="GlanceMenu" scope="glance">เมนู</string>
|
<string id="GlanceMenu" scope="glance">เมนู</string>
|
||||||
<!-- สำหรับการตั้งค่า GUI -->
|
<!-- สำหรับการตั้งค่า GUI -->
|
||||||
|
<string id="SettingsSelect">เลือก...</string>
|
||||||
<string id="SettingsApiKey">คีย์ API สำหรับ HomeAssistant</string>
|
<string id="SettingsApiKey">คีย์ API สำหรับ HomeAssistant</string>
|
||||||
<string id="SettingsApiKeyPrompt">โทเค็นการเข้าถึงที่มีอายุการใช้งานยาวนาน</string>
|
<string id="SettingsApiKeyPrompt">โทเค็นการเข้าถึงที่มีอายุการใช้งานยาวนาน</string>
|
||||||
<string id="SettingsApiUrl">URL สำหรับ HomeAssistant API</string>
|
<string id="SettingsApiUrl">URL สำหรับ HomeAssistant API</string>
|
||||||
<string id="SettingsConfigUrl">URL สำหรับการกำหนดค่าเมนู (JSON)</string>
|
<string id="SettingsConfigUrl">URL สำหรับการกำหนดค่าเมนู (JSON)</string>
|
||||||
<string id="SettingsAppTimeout">หมดเวลาเป็นวินาที ออกจากแอปพลิเคชันหลังจากไม่มีการใช้งานเป็นระยะเวลาหนึ่งเพื่อประหยัดแบตเตอรี่ของอุปกรณ์</string>
|
<string id="SettingsAppTimeout">หมดเวลาเป็นวินาที ออกจากแอปพลิเคชันหลังจากไม่มีการใช้งานเป็นระยะเวลาหนึ่งเพื่อประหยัดแบตเตอรี่ของอุปกรณ์</string>
|
||||||
<string id="SettingsConfirmTimeout">หลังจากเวลานี้ (เป็นวินาที) กล่องโต้ตอบการยืนยันสำหรับการดำเนินการจะปิดโดยอัตโนมัติและการดำเนินการจะถูกยกเลิก ตั้งค่าเป็น 0 เพื่อปิดใช้งานการหมดเวลา</string>
|
<string id="SettingsConfirmTimeout">หลังจากเวลานี้ (เป็นวินาที) กล่องโต้ตอบการยืนยันสำหรับการดำเนินการจะปิดโดยอัตโนมัติและการดำเนินการจะถูกยกเลิก ตั้งค่าเป็น 0 เพื่อปิดใช้งานการหมดเวลา</string>
|
||||||
<string id="SettingsUi">เป็นตัวแทนประเภทด้วยไอคอน (ปิด) หรือมีป้ายกำกับ (เปิด)</string>
|
<string id="SettingsMenuItemStyle">รูปแบบรายการเมนู</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">ไอคอน</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">ข้อความเพิ่มเติม</string>
|
||||||
<string id="SettingsTextAlign">การจัดตำแหน่งเมนูซ้าย (ปิด) หรือขวา (เปิด)</string>
|
<string id="SettingsTextAlign">การจัดตำแหน่งเมนูซ้าย (ปิด) หรือขวา (เปิด)</string>
|
||||||
|
<string id="LeftToRight">จากซ้ายไปขวา</string>
|
||||||
|
<string id="RightToLeft">จากขวาไปซ้าย</string>
|
||||||
<string id="SettingsWidgetStart">(วิดเจ็ตเท่านั้น) เริ่มแอปพลิเคชันโดยอัตโนมัติจากวิดเจ็ตโดยไม่ต้องรอการแตะ</string>
|
<string id="SettingsWidgetStart">(วิดเจ็ตเท่านั้น) เริ่มแอปพลิเคชันโดยอัตโนมัติจากวิดเจ็ตโดยไม่ต้องรอการแตะ</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">เปิดใช้บริการพื้นหลังเพื่อส่งระดับแบตเตอรี่นาฬิกาไปยัง Home Assistant</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">อัตรารีเฟรช (เป็นนาที) ที่บริการพื้นหลังควรส่งระดับแบตเตอรี่ซ้ำ</string>
|
||||||
</strings>
|
</strings>
|
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">Yapılandırılmamış</string>
|
<string id="Unconfigured" scope="glance">Yapılandırılmamış</string>
|
||||||
<string id="GlanceMenu" scope="glance">Menü</string>
|
<string id="GlanceMenu" scope="glance">Menü</string>
|
||||||
<!-- Ayarlar GUI'si için -->
|
<!-- Ayarlar GUI'si için -->
|
||||||
|
<string id="SettingsSelect">Seçme...</string>
|
||||||
<string id="SettingsApiKey">HomeAssistant için API Anahtarı.</string>
|
<string id="SettingsApiKey">HomeAssistant için API Anahtarı.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Uzun Ömürlü Erişim Jetonu.</string>
|
<string id="SettingsApiKeyPrompt">Uzun Ömürlü Erişim Jetonu.</string>
|
||||||
<string id="SettingsApiUrl">HomeAssistant API'sinin URL'si.</string>
|
<string id="SettingsApiUrl">HomeAssistant API'sinin URL'si.</string>
|
||||||
<string id="SettingsConfigUrl">Menü yapılandırmasının URL'si (JSON).</string>
|
<string id="SettingsConfigUrl">Menü yapılandırmasının URL'si (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Saniye cinsinden zaman aşımı. Cihazın pilinden tasarruf etmek için bu süre boyunca işlem yapılmadığında uygulamadan çıkın.</string>
|
<string id="SettingsAppTimeout">Saniye cinsinden zaman aşımı. Cihazın pilinden tasarruf etmek için bu süre boyunca işlem yapılmadığında uygulamadan çıkın.</string>
|
||||||
<string id="SettingsConfirmTimeout">Bu sürenin sonunda (saniye cinsinden), bir eyleme ilişkin onay iletişim kutusu otomatik olarak kapatılır ve eylem iptal edilir. Zaman aşımını devre dışı bırakmak için 0'a ayarlayın.</string>
|
<string id="SettingsConfirmTimeout">Bu sürenin sonunda (saniye olarak), bir eyleme ilişkin onay iletişim kutusu otomatik olarak kapatılır ve eylem iptal edilir. Zaman aşımını devre dışı bırakmak için 0'a ayarlayın.</string>
|
||||||
<string id="SettingsUi">Türleri simgelerle (kapalı) veya etiketlerle (açık) temsil etme.</string>
|
<string id="SettingsMenuItemStyle">Menü öğesi stili.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">Simgeler</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Ek Metin</string>
|
||||||
<string id="SettingsTextAlign">Sol (kapalı) veya Sağ (açık) Menü Hizalaması.</string>
|
<string id="SettingsTextAlign">Sol (kapalı) veya Sağ (açık) Menü Hizalaması.</string>
|
||||||
|
<string id="LeftToRight">Soldan sağa</string>
|
||||||
|
<string id="RightToLeft">Sağdan sola</string>
|
||||||
<string id="SettingsWidgetStart">(Yalnızca Widget) Dokunmayı beklemeden uygulamayı widget'tan otomatik olarak başlatın.</string>
|
<string id="SettingsWidgetStart">(Yalnızca Widget) Dokunmayı beklemeden uygulamayı widget'tan otomatik olarak başlatın.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Saatin pil seviyesini Ev Asistanına göndermek için arka plan hizmetini etkinleştirin.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">Arka plan hizmetinin pil seviyesini göndermeyi tekrarlaması gereken yenileme hızı (dakika olarak).</string>
|
||||||
</strings>
|
</strings>
|
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">Неналаштований</string>
|
<string id="Unconfigured" scope="glance">Неналаштований</string>
|
||||||
<string id="GlanceMenu" scope="glance">Меню</string>
|
<string id="GlanceMenu" scope="glance">Меню</string>
|
||||||
<!-- Для налаштування GUI -->
|
<!-- Для налаштування GUI -->
|
||||||
|
<string id="SettingsSelect">Виберіть...</string>
|
||||||
<string id="SettingsApiKey">Ключ API для HomeAssistant.</string>
|
<string id="SettingsApiKey">Ключ API для HomeAssistant.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Довговічний маркер доступу.</string>
|
<string id="SettingsApiKeyPrompt">Довговічний маркер доступу.</string>
|
||||||
<string id="SettingsApiUrl">URL для HomeAssistant API.</string>
|
<string id="SettingsApiUrl">URL для HomeAssistant API.</string>
|
||||||
<string id="SettingsConfigUrl">URL-адреса для налаштування меню (JSON).</string>
|
<string id="SettingsConfigUrl">URL-адреса для налаштування меню (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Час очікування в секундах. Вийдіть із програми після цього періоду бездіяльності, щоб заощадити батарею пристрою.</string>
|
<string id="SettingsAppTimeout">Час очікування в секундах. Вийдіть із програми після цього періоду бездіяльності, щоб заощадити батарею пристрою.</string>
|
||||||
<string id="SettingsConfirmTimeout">Після закінчення цього часу (у секундах) діалогове вікно підтвердження дії автоматично закривається, а дія скасовується. Встановіть 0, щоб вимкнути тайм-аут.</string>
|
<string id="SettingsConfirmTimeout">Після закінчення цього часу (у секундах) діалогове вікно підтвердження дії автоматично закривається, а дія скасовується. Встановіть 0, щоб вимкнути тайм-аут.</string>
|
||||||
<string id="SettingsUi">Представлення типів піктограмами (вимкнено) або мітками (увімкнено).</string>
|
<string id="SettingsMenuItemStyle">Стиль пункту меню.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">Ікони</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Додатковий текст</string>
|
||||||
<string id="SettingsTextAlign">Ліворуч (вимкнено) або праворуч (увімкнено) вирівнювання меню.</string>
|
<string id="SettingsTextAlign">Ліворуч (вимкнено) або праворуч (увімкнено) вирівнювання меню.</string>
|
||||||
|
<string id="LeftToRight">Зліва направо</string>
|
||||||
|
<string id="RightToLeft">Справа наліво</string>
|
||||||
<string id="SettingsWidgetStart">(Лише віджет) Автоматично запускайте програму з віджета, не чекаючи дотику.</string>
|
<string id="SettingsWidgetStart">(Лише віджет) Автоматично запускайте програму з віджета, не чекаючи дотику.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Увімкніть фонову службу, щоб надсилати інформацію про рівень заряду акумулятора годинника до Home Assistant.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">Частота оновлення (у хвилинах), з якою фонова служба має повторно надсилати рівень заряду акумулятора.</string>
|
||||||
</strings>
|
</strings>
|
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">Chưa được định cấu hình</string>
|
<string id="Unconfigured" scope="glance">Chưa được định cấu hình</string>
|
||||||
<string id="GlanceMenu" scope="glance">Thực đơn</string>
|
<string id="GlanceMenu" scope="glance">Thực đơn</string>
|
||||||
<!-- Đối với GUI cài đặt -->
|
<!-- Đối với GUI cài đặt -->
|
||||||
|
<string id="SettingsSelect">Lựa chọn...</string>
|
||||||
<string id="SettingsApiKey">Khóa API cho HomeAssistant.</string>
|
<string id="SettingsApiKey">Khóa API cho HomeAssistant.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Mã thông báo truy cập tồn tại lâu dài.</string>
|
<string id="SettingsApiKeyPrompt">Mã thông báo truy cập tồn tại lâu dài.</string>
|
||||||
<string id="SettingsApiUrl">URL cho API HomeAssistant.</string>
|
<string id="SettingsApiUrl">URL cho API HomeAssistant.</string>
|
||||||
<string id="SettingsConfigUrl">URL cho cấu hình menu (JSON).</string>
|
<string id="SettingsConfigUrl">URL cho cấu hình menu (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Thời gian chờ tính bằng giây. Thoát khỏi ứng dụng sau khoảng thời gian không hoạt động này để tiết kiệm pin cho thiết bị.</string>
|
<string id="SettingsAppTimeout">Thời gian chờ tính bằng giây. Thoát khỏi ứng dụng sau khoảng thời gian không hoạt động này để tiết kiệm pin cho thiết bị.</string>
|
||||||
<string id="SettingsConfirmTimeout">Sau thời gian này (tính bằng giây), hộp thoại xác nhận cho một hành động sẽ tự động đóng và hành động đó sẽ bị hủy. Đặt thành 0 để tắt thời gian chờ.</string>
|
<string id="SettingsConfirmTimeout">Sau thời gian này (tính bằng giây), hộp thoại xác nhận cho một hành động sẽ tự động đóng và hành động đó sẽ bị hủy. Đặt thành 0 để tắt thời gian chờ.</string>
|
||||||
<string id="SettingsUi">Biểu diễn các loại bằng biểu tượng (tắt) hoặc bằng nhãn (bật).</string>
|
<string id="SettingsMenuItemStyle">Phong cách mục menu.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">Biểu tượng</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Văn bản bổ sung</string>
|
||||||
<string id="SettingsTextAlign">Căn chỉnh menu Trái (tắt) hoặc Phải (bật).</string>
|
<string id="SettingsTextAlign">Căn chỉnh menu Trái (tắt) hoặc Phải (bật).</string>
|
||||||
|
<string id="LeftToRight">Trái sang phải</string>
|
||||||
|
<string id="RightToLeft">Phải sang trái</string>
|
||||||
<string id="SettingsWidgetStart">(Chỉ tiện ích) Tự động khởi động ứng dụng từ tiện ích mà không cần chờ nhấn.</string>
|
<string id="SettingsWidgetStart">(Chỉ tiện ích) Tự động khởi động ứng dụng từ tiện ích mà không cần chờ nhấn.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Kích hoạt dịch vụ nền để gửi mức pin đồng hồ đến Home Assistant.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">Tốc độ làm mới (tính bằng phút) mà dịch vụ nền sẽ lặp lại việc gửi mức pin.</string>
|
||||||
</strings>
|
</strings>
|
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">未配置</string>
|
<string id="Unconfigured" scope="glance">未配置</string>
|
||||||
<string id="GlanceMenu" scope="glance">菜单</string>
|
<string id="GlanceMenu" scope="glance">菜单</string>
|
||||||
<!-- 对于设置 GUI -->
|
<!-- 对于设置 GUI -->
|
||||||
|
<string id="SettingsSelect">选择...</string>
|
||||||
<string id="SettingsApiKey">HomeAssistant 的 API 密钥。</string>
|
<string id="SettingsApiKey">HomeAssistant 的 API 密钥。</string>
|
||||||
<string id="SettingsApiKeyPrompt">长期访问令牌。</string>
|
<string id="SettingsApiKeyPrompt">长期访问令牌。</string>
|
||||||
<string id="SettingsApiUrl">HomeAssistant API 的 URL。</string>
|
<string id="SettingsApiUrl">HomeAssistant API 的 URL。</string>
|
||||||
<string id="SettingsConfigUrl">菜单配置的 URL (JSON)。</string>
|
<string id="SettingsConfigUrl">菜单配置的 URL (JSON)。</string>
|
||||||
<string id="SettingsAppTimeout">超时(以秒为单位)。闲置一段时间后退出应用程序以节省设备电池。</string>
|
<string id="SettingsAppTimeout">超时(以秒为单位)。闲置一段时间后退出应用程序以节省设备电池。</string>
|
||||||
<string id="SettingsConfirmTimeout">在此时间(以秒为单位)之后,操作的确认对话框将自动关闭并取消该操作。设置为 0 以禁用超时。</string>
|
<string id="SettingsConfirmTimeout">在此时间(以秒为单位)之后,操作的确认对话框将自动关闭并取消该操作。设置为 0 以禁用超时。</string>
|
||||||
<string id="SettingsUi">用图标(关闭)或标签(打开)表示类型。</string>
|
<string id="SettingsMenuItemStyle">菜单项样式。</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">图标</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">附加文字</string>
|
||||||
<string id="SettingsTextAlign">左(关)或右(开)菜单对齐。</string>
|
<string id="SettingsTextAlign">左(关)或右(开)菜单对齐。</string>
|
||||||
|
<string id="LeftToRight">左到右</string>
|
||||||
|
<string id="RightToLeft">右到左</string>
|
||||||
<string id="SettingsWidgetStart">(仅限小部件)从小部件自动启动应用程序,无需等待点击。</string>
|
<string id="SettingsWidgetStart">(仅限小部件)从小部件自动启动应用程序,无需等待点击。</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">启用后台服务将时钟电池电量发送到 Home Assistant。</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">后台服务应重复发送电池电量的刷新率(以分钟为单位)。</string>
|
||||||
</strings>
|
</strings>
|
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">未配置</string>
|
<string id="Unconfigured" scope="glance">未配置</string>
|
||||||
<string id="GlanceMenu" scope="glance">選單</string>
|
<string id="GlanceMenu" scope="glance">選單</string>
|
||||||
<!-- 對於設定 GUI -->
|
<!-- 對於設定 GUI -->
|
||||||
|
<string id="SettingsSelect">選擇...</string>
|
||||||
<string id="SettingsApiKey">HomeAssistant 的 API 金鑰。</string>
|
<string id="SettingsApiKey">HomeAssistant 的 API 金鑰。</string>
|
||||||
<string id="SettingsApiKeyPrompt">長期訪問令牌。</string>
|
<string id="SettingsApiKeyPrompt">長期訪問令牌。</string>
|
||||||
<string id="SettingsApiUrl">HomeAssistant API 的 URL。</string>
|
<string id="SettingsApiUrl">HomeAssistant API 的 URL。</string>
|
||||||
<string id="SettingsConfigUrl">選單配置的 URL (JSON)。</string>
|
<string id="SettingsConfigUrl">選單配置的 URL (JSON)。</string>
|
||||||
<string id="SettingsAppTimeout">超時(以秒為單位)。閒置一段時間後退出應用程式以節省設備電池。</string>
|
<string id="SettingsAppTimeout">超時(以秒為單位)。閒置一段時間後退出應用程式以節省設備電池。</string>
|
||||||
<string id="SettingsConfirmTimeout">在此時間(以秒為單位)之後,操作的確認對話方塊將自動關閉並取消該操作。設定為 0 以停用逾時。</string>
|
<string id="SettingsConfirmTimeout">在此時間(以秒為單位)之後,操作的確認對話方塊將自動關閉並取消該操作。設定為 0 以停用逾時。</string>
|
||||||
<string id="SettingsUi">用圖示(關閉)或標籤(開啟)表示類型。</string>
|
<string id="SettingsMenuItemStyle">選單項目樣式。</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">圖示</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">附加文字</string>
|
||||||
<string id="SettingsTextAlign">左(關)或右(開)選單對齊。</string>
|
<string id="SettingsTextAlign">左(關)或右(開)選單對齊。</string>
|
||||||
|
<string id="LeftToRight">左至右</string>
|
||||||
|
<string id="RightToLeft">右到左</string>
|
||||||
<string id="SettingsWidgetStart">(僅限小部件)從小部件自動啟動應用程序,無需等待點擊。</string>
|
<string id="SettingsWidgetStart">(僅限小部件)從小部件自動啟動應用程序,無需等待點擊。</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">啟用後台服務將時鐘電池電量傳送到 Home Assistant。</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">後台服務應重複發送電池電量的更新率(以分鐘為單位)。</string>
|
||||||
</strings>
|
</strings>
|
@ -43,13 +43,20 @@
|
|||||||
<string id="Unconfigured" scope="glance">Tidak dikonfigurasikan</string>
|
<string id="Unconfigured" scope="glance">Tidak dikonfigurasikan</string>
|
||||||
<string id="GlanceMenu" scope="glance">Menu</string>
|
<string id="GlanceMenu" scope="glance">Menu</string>
|
||||||
<!-- Untuk GUI tetapan -->
|
<!-- Untuk GUI tetapan -->
|
||||||
|
<string id="SettingsSelect">Pilih...</string>
|
||||||
<string id="SettingsApiKey">Kunci API untuk HomeAssistant.</string>
|
<string id="SettingsApiKey">Kunci API untuk HomeAssistant.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Token Akses Berumur Panjang.</string>
|
<string id="SettingsApiKeyPrompt">Token Akses Berumur Panjang.</string>
|
||||||
<string id="SettingsApiUrl">URL untuk API HomeAssistant.</string>
|
<string id="SettingsApiUrl">URL untuk API HomeAssistant.</string>
|
||||||
<string id="SettingsConfigUrl">URL untuk konfigurasi menu (JSON).</string>
|
<string id="SettingsConfigUrl">URL untuk konfigurasi menu (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Tamat masa dalam beberapa saat. Keluar dari aplikasi selepas tempoh tidak aktif ini untuk menjimatkan bateri peranti.</string>
|
<string id="SettingsAppTimeout">Tamat masa dalam beberapa saat. Keluar dari aplikasi selepas tempoh tidak aktif ini untuk menjimatkan bateri peranti.</string>
|
||||||
<string id="SettingsConfirmTimeout">Selepas masa ini (dalam beberapa saat), dialog pengesahan untuk tindakan ditutup secara automatik dan tindakan itu dibatalkan. Tetapkan kepada 0 untuk melumpuhkan tamat masa.</string>
|
<string id="SettingsConfirmTimeout">Selepas masa ini (dalam beberapa saat), dialog pengesahan untuk tindakan ditutup secara automatik dan tindakan itu dibatalkan. Tetapkan kepada 0 untuk melumpuhkan tamat masa.</string>
|
||||||
<string id="SettingsUi">Mewakili jenis dengan ikon (dimatikan) atau dengan label (dihidupkan).</string>
|
<string id="SettingsMenuItemStyle">Gaya item menu.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">ikon</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Teks Tambahan</string>
|
||||||
<string id="SettingsTextAlign">Penjajaran Menu Kiri (mati) atau Kanan (hidup).</string>
|
<string id="SettingsTextAlign">Penjajaran Menu Kiri (mati) atau Kanan (hidup).</string>
|
||||||
|
<string id="LeftToRight">Kiri ke kanan</string>
|
||||||
|
<string id="RightToLeft">Kanan ke kiri</string>
|
||||||
<string id="SettingsWidgetStart">(Widget sahaja) Mulakan aplikasi secara automatik daripada widget tanpa menunggu satu ketikan.</string>
|
<string id="SettingsWidgetStart">(Widget sahaja) Mulakan aplikasi secara automatik daripada widget tanpa menunggu satu ketikan.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Dayakan perkhidmatan latar belakang untuk menghantar paras bateri jam kepada Home Assistant.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">Kadar penyegaran semula (dalam minit) di mana perkhidmatan latar belakang harus mengulangi penghantaran tahap bateri.</string>
|
||||||
</strings>
|
</strings>
|
Before Width: | Height: | Size: 6.3 KiB |
@ -31,20 +31,20 @@
|
|||||||
<property id="app_timeout" type="number">0</property>
|
<property id="app_timeout" type="number">0</property>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
After this time (in seconds), a confirmation dialog for an action is automatically closed and the action is cancelled.
|
After this time (in seconds), a confirmation dialog for an action is automatically closed and the action
|
||||||
Set to 0 to disable the timeout. The default value is 3 seconds.
|
is cancelled. Set to 0 to disable the timeout. The default value is 3 seconds.
|
||||||
-->
|
-->
|
||||||
<property id="confirm_timeout" type="number">3</property>
|
<property id="confirm_timeout" type="number">3</property>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Lean UI vs second level of menu text.
|
Lean UI with icons vs second level of menu text.
|
||||||
-->
|
-->
|
||||||
<property id="types_representation" type="boolean"></property>
|
<property id="menu_theme" type="number">0</property>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
left to right or right-to-left text. Language dependent.
|
Left to right or right to left text. Language dependent.
|
||||||
-->
|
-->
|
||||||
<property id="menu_alignment" type="boolean"></property>
|
<property id="menu_alignment" type="number">1</property>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Widget specific setting:
|
Widget specific setting:
|
||||||
@ -52,6 +52,17 @@
|
|||||||
This behaviour is inconsistent with the standard Garmin User Interface, but has been
|
This behaviour is inconsistent with the standard Garmin User Interface, but has been
|
||||||
requested by users so has been made the non-default option.
|
requested by users so has been made the non-default option.
|
||||||
-->
|
-->
|
||||||
<property id="widget_start_no_tap" type="boolean"></property>
|
<property id="widget_start_no_tap" type="boolean">false</property>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Enable the background service to send the clock battery level to Home Assistant.
|
||||||
|
-->
|
||||||
|
<property id="enable_battery_level" type="boolean">false</property>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
If enabled by 'enable_battery_level', the refresh rate (in minutes) at which the background service
|
||||||
|
should repeat sending the battery level.
|
||||||
|
-->
|
||||||
|
<property id="battery_level_refresh_rate" type="number">15</property>
|
||||||
|
|
||||||
</properties>
|
</properties>
|
||||||
|
@ -18,9 +18,7 @@
|
|||||||
title="@Strings.SettingsApiKey"
|
title="@Strings.SettingsApiKey"
|
||||||
prompt="@Strings.SettingsApiKeyPrompt"
|
prompt="@Strings.SettingsApiKeyPrompt"
|
||||||
>
|
>
|
||||||
<settingConfig
|
<settingConfig type="alphaNumeric" />
|
||||||
type="alphaNumeric"
|
|
||||||
/>
|
|
||||||
</setting>
|
</setting>
|
||||||
|
|
||||||
<setting
|
<setting
|
||||||
@ -28,9 +26,7 @@
|
|||||||
title="@Strings.SettingsApiUrl"
|
title="@Strings.SettingsApiUrl"
|
||||||
prompt="https://homeassistant.local/api"
|
prompt="https://homeassistant.local/api"
|
||||||
>
|
>
|
||||||
<settingConfig
|
<settingConfig type="alphaNumeric" />
|
||||||
type="alphaNumeric"
|
|
||||||
/>
|
|
||||||
</setting>
|
</setting>
|
||||||
|
|
||||||
<setting
|
<setting
|
||||||
@ -38,56 +34,63 @@
|
|||||||
title="@Strings.SettingsConfigUrl"
|
title="@Strings.SettingsConfigUrl"
|
||||||
prompt="https://homeassistant.local/local/garmin/menu.json"
|
prompt="https://homeassistant.local/local/garmin/menu.json"
|
||||||
>
|
>
|
||||||
<settingConfig
|
<settingConfig type="alphaNumeric" />
|
||||||
type="alphaNumeric"
|
|
||||||
/>
|
|
||||||
</setting>
|
</setting>
|
||||||
|
|
||||||
<setting
|
<setting
|
||||||
propertyKey="@Properties.app_timeout"
|
propertyKey="@Properties.app_timeout"
|
||||||
title="@Strings.SettingsAppTimeout"
|
title="@Strings.SettingsAppTimeout"
|
||||||
>
|
>
|
||||||
<settingConfig
|
<settingConfig type="numeric" min="0" />
|
||||||
type="numeric"
|
|
||||||
min="0"
|
|
||||||
/>
|
|
||||||
</setting>
|
</setting>
|
||||||
|
|
||||||
<setting
|
<setting
|
||||||
propertyKey="@Properties.confirm_timeout"
|
propertyKey="@Properties.confirm_timeout"
|
||||||
title="@Strings.SettingsConfirmTimeout"
|
title="@Strings.SettingsConfirmTimeout"
|
||||||
>
|
>
|
||||||
<settingConfig
|
<settingConfig type="numeric" min="0" />
|
||||||
type="numeric"
|
|
||||||
min="0"
|
|
||||||
/>
|
|
||||||
</setting>
|
</setting>
|
||||||
|
|
||||||
<setting
|
<setting
|
||||||
propertyKey="@Properties.types_representation"
|
propertyKey="@Properties.menu_theme"
|
||||||
title="@Strings.SettingsUi"
|
title="@Strings.SettingsMenuItemStyle"
|
||||||
|
prompt="@Strings.SettingsSelect"
|
||||||
>
|
>
|
||||||
<settingConfig
|
<settingConfig type="list">
|
||||||
type="boolean"
|
<listEntry value="0">@Strings.SettingsMenuItemStyleIcons</listEntry>
|
||||||
/>
|
<listEntry value="1">@Strings.SettingsMenuItemStyleText</listEntry>
|
||||||
|
</settingConfig>
|
||||||
</setting>
|
</setting>
|
||||||
|
|
||||||
<setting
|
<setting
|
||||||
propertyKey="@Properties.menu_alignment"
|
propertyKey="@Properties.menu_alignment"
|
||||||
title="@Strings.SettingsTextAlign"
|
title="@Strings.SettingsTextAlign"
|
||||||
>
|
>
|
||||||
<settingConfig
|
<settingConfig type="list">
|
||||||
type="boolean"
|
<listEntry value="1">@Strings.LeftToRight</listEntry>
|
||||||
/>
|
<listEntry value="0">@Strings.RightToLeft</listEntry>
|
||||||
|
</settingConfig>
|
||||||
</setting>
|
</setting>
|
||||||
|
|
||||||
<setting
|
<setting
|
||||||
propertyKey="@Properties.widget_start_no_tap"
|
propertyKey="@Properties.widget_start_no_tap"
|
||||||
title="@Strings.SettingsWidgetStart"
|
title="@Strings.SettingsWidgetStart"
|
||||||
>
|
>
|
||||||
<settingConfig
|
<settingConfig type="boolean" />
|
||||||
type="boolean"
|
</setting>
|
||||||
/>
|
|
||||||
|
<setting
|
||||||
|
propertyKey="@Properties.enable_battery_level"
|
||||||
|
title="@Strings.SettingsEnableBatteryLevel"
|
||||||
|
>
|
||||||
|
<settingConfig type="boolean" />
|
||||||
|
</setting>
|
||||||
|
|
||||||
|
<setting
|
||||||
|
propertyKey="@Properties.battery_level_refresh_rate"
|
||||||
|
title="@Strings.SettingsBatteryLevelRefreshRate"
|
||||||
|
>
|
||||||
|
<settingConfig type="numeric" min="5" />
|
||||||
</setting>
|
</setting>
|
||||||
|
|
||||||
</settings>
|
</settings>
|
||||||
|
@ -38,13 +38,20 @@
|
|||||||
<string id="GlanceMenu" scope="glance">Menu</string>
|
<string id="GlanceMenu" scope="glance">Menu</string>
|
||||||
|
|
||||||
<!-- For the settings GUI -->
|
<!-- For the settings GUI -->
|
||||||
|
<string id="SettingsSelect">Select...</string>
|
||||||
<string id="SettingsApiKey">API Key for HomeAssistant.</string>
|
<string id="SettingsApiKey">API Key for HomeAssistant.</string>
|
||||||
<string id="SettingsApiKeyPrompt">Long-Lived Access Token.</string>
|
<string id="SettingsApiKeyPrompt">Long-Lived Access Token.</string>
|
||||||
<string id="SettingsApiUrl">URL for HomeAssistant API.</string>
|
<string id="SettingsApiUrl">URL for HomeAssistant API.</string>
|
||||||
<string id="SettingsConfigUrl">URL for menu configuration (JSON).</string>
|
<string id="SettingsConfigUrl">URL for menu configuration (JSON).</string>
|
||||||
<string id="SettingsAppTimeout">Timeout in seconds. Exit the application after this period of inactivity to save the device battery.</string>
|
<string id="SettingsAppTimeout">Timeout in seconds. Exit the application after this period of inactivity to save the device battery.</string>
|
||||||
<string id="SettingsConfirmTimeout">After this time (in seconds), a confirmation dialog for an action is automatically closed and the action is cancelled. Set to 0 to disable the timeout.</string>
|
<string id="SettingsConfirmTimeout">After this time (in seconds), a confirmation dialog for an action is automatically closed and the action is cancelled. Set to 0 to disable the timeout.</string>
|
||||||
<string id="SettingsUi">Representing types with icons (off) or with labels (on).</string>
|
<string id="SettingsMenuItemStyle">Menu item style.</string>
|
||||||
|
<string id="SettingsMenuItemStyleIcons">Icons</string>
|
||||||
|
<string id="SettingsMenuItemStyleText">Additional Text</string>
|
||||||
<string id="SettingsTextAlign">Left (off) or Right (on) Menu Alignment.</string>
|
<string id="SettingsTextAlign">Left (off) or Right (on) Menu Alignment.</string>
|
||||||
|
<string id="LeftToRight">Left to right</string>
|
||||||
|
<string id="RightToLeft">Right to Left</string>
|
||||||
<string id="SettingsWidgetStart">(Widget only) Automatically start the application from the widget without waiting for a tap.</string>
|
<string id="SettingsWidgetStart">(Widget only) Automatically start the application from the widget without waiting for a tap.</string>
|
||||||
|
<string id="SettingsEnableBatteryLevel">Enable the background service to send the clock battery level to Home Assistant.</string>
|
||||||
|
<string id="SettingsBatteryLevelRefreshRate">The refresh rate (in minutes) at which the background service should repeat sending the battery level.</string>
|
||||||
</strings>
|
</strings>
|
||||||
|
73
source/BackgroundServiceDelegate.mc
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
//-----------------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// 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 & Someone0nEarth, 31 October 2023
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Description:
|
||||||
|
//
|
||||||
|
// The background service delegate currently just reports the Garmin watch's battery
|
||||||
|
// level.
|
||||||
|
//
|
||||||
|
//-----------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using Toybox.Lang;
|
||||||
|
using Toybox.Application.Properties;
|
||||||
|
using Toybox.Background;
|
||||||
|
using Toybox.System;
|
||||||
|
|
||||||
|
(:background)
|
||||||
|
class BackgroundServiceDelegate extends System.ServiceDelegate {
|
||||||
|
|
||||||
|
function initialize() {
|
||||||
|
ServiceDelegate.initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
function onReturnBatteryUpdate(responseCode as Lang.Number, data as Null or Lang.Dictionary or Lang.String) as Void {
|
||||||
|
if (Globals.scDebug) {
|
||||||
|
System.println("BackgroundServiceDelegate onReturnBatteryUpdate() Response Code: " + responseCode);
|
||||||
|
System.println("BackgroundServiceDelegate onReturnBatteryUpdate() Response Data: " + data);
|
||||||
|
}
|
||||||
|
Background.exit(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onTemporalEvent() as Void {
|
||||||
|
if (! System.getDeviceSettings().phoneConnected) {
|
||||||
|
if (Globals.scDebug) {
|
||||||
|
System.println("BackgroundServiceDelegate onTemporalEvent(): No Phone connection, skipping API call.");
|
||||||
|
}
|
||||||
|
} else if (! System.getDeviceSettings().connectionAvailable) {
|
||||||
|
if (Globals.scDebug) {
|
||||||
|
System.println("BackgroundServiceDelegate onTemporalEvent(): No Internet connection, skipping API call.");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Don't use Settings.* here as the object lasts < 30 secs and is recreated each time the background service is run
|
||||||
|
Communications.makeWebRequest(
|
||||||
|
(Properties.getValue("api_url") as Lang.String) + "/events/garmin.battery_level",
|
||||||
|
{
|
||||||
|
"level" => System.getSystemStats().battery,
|
||||||
|
"is_charging" => System.getSystemStats().charging,
|
||||||
|
"device_id" => System.getDeviceSettings().uniqueIdentifier
|
||||||
|
},
|
||||||
|
{
|
||||||
|
:method => Communications.HTTP_REQUEST_METHOD_POST,
|
||||||
|
:headers => {
|
||||||
|
"Content-Type" => Communications.REQUEST_CONTENT_TYPE_JSON,
|
||||||
|
"Authorization" => "Bearer " + (Properties.getValue("api_key") as Lang.String)
|
||||||
|
},
|
||||||
|
:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON
|
||||||
|
},
|
||||||
|
method(:onReturnBatteryUpdate)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
27
source/ClientId.mc.unpopulated
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
//-----------------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Description:
|
||||||
|
//
|
||||||
|
// ClientId is somewhere to store personal credentials that should not be shared in
|
||||||
|
// a separate file that is locally customised to the source code and not commited
|
||||||
|
// back to GitHub.
|
||||||
|
//
|
||||||
|
//-----------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
(:glance)
|
||||||
|
class ClientId {
|
||||||
|
static const webLogUrl = "https://...";
|
||||||
|
static const webLogClearUrl = "https://..._clear.php";
|
||||||
|
}
|
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
using Toybox.Lang;
|
using Toybox.Lang;
|
||||||
|
|
||||||
|
(:glance)
|
||||||
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!)
|
||||||
|
@ -21,40 +21,39 @@
|
|||||||
using Toybox.Application;
|
using Toybox.Application;
|
||||||
using Toybox.Lang;
|
using Toybox.Lang;
|
||||||
using Toybox.WatchUi;
|
using Toybox.WatchUi;
|
||||||
|
using Toybox.System;
|
||||||
using Toybox.Application.Properties;
|
using Toybox.Application.Properties;
|
||||||
using Toybox.Timer;
|
using Toybox.Timer;
|
||||||
|
|
||||||
|
(:background)
|
||||||
class HomeAssistantApp extends Application.AppBase {
|
class HomeAssistantApp extends Application.AppBase {
|
||||||
private var strNoApiKey as Lang.String or Null;
|
private var strNoApiKey as Lang.String or Null;
|
||||||
private var strNoApiUrl as Lang.String or Null;
|
private var strNoApiUrl as Lang.String or Null;
|
||||||
private var strNoConfigUrl as Lang.String or Null;
|
private var strNoConfigUrl as Lang.String or Null;
|
||||||
private var strNoPhone as Lang.String or Null;
|
private var strNoPhone as Lang.String or Null;
|
||||||
private var strNoInternet as Lang.String or Null;
|
private var strNoInternet as Lang.String or Null;
|
||||||
private var strNoResponse as Lang.String or Null;
|
private var strNoResponse as Lang.String or Null;
|
||||||
private var strApiFlood as Lang.String or Null;
|
private var strApiFlood as Lang.String or Null;
|
||||||
private var strConfigUrlNotFound as Lang.String or Null;
|
private var strConfigUrlNotFound as Lang.String or Null;
|
||||||
private var strNoJson as Lang.String or Null;
|
private var strNoJson as Lang.String or Null;
|
||||||
private var strUnhandledHttpErr as Lang.String or Null;
|
private var strUnhandledHttpErr as Lang.String or Null;
|
||||||
private var strTrailingSlashErr as Lang.String or Null;
|
private var strTrailingSlashErr as Lang.String or Null;
|
||||||
private var strAvailable = WatchUi.loadResource($.Rez.Strings.Available);
|
private var strAvailable as Lang.String or Null;
|
||||||
private var strUnavailable = WatchUi.loadResource($.Rez.Strings.Unavailable);
|
private var strUnavailable as Lang.String or Null;
|
||||||
private var strUnconfigured = WatchUi.loadResource($.Rez.Strings.Unconfigured);
|
private var strUnconfigured as Lang.String or Null;
|
||||||
|
|
||||||
private var mApiKey as Lang.String or Null; // The compiler can't tell these are updated by
|
private var mApiStatus as Lang.String or Null;
|
||||||
private var mApiUrl as Lang.String or Null; // initialize(), hence the "or Null".
|
private var mMenuStatus as Lang.String or Null;
|
||||||
private var mConfigUrl as Lang.String or Null; //
|
|
||||||
private var mApiStatus as Lang.String = WatchUi.loadResource($.Rez.Strings.Checking);
|
|
||||||
private var mMenuStatus as Lang.String = WatchUi.loadResource($.Rez.Strings.Checking);
|
|
||||||
private var mHaMenu as HomeAssistantView or Null;
|
private var mHaMenu as HomeAssistantView or Null;
|
||||||
private var mQuitTimer as QuitTimer or Null;
|
private var mQuitTimer as QuitTimer or Null;
|
||||||
private var mTimer as Timer.Timer or Null;
|
private var mTimer as Timer.Timer or Null;
|
||||||
private var mItemsToUpdate; // Array initialised by onReturnFetchMenuConfig()
|
private var mItemsToUpdate as Lang.Array<HomeAssistantToggleMenuItem> or Null; // Array initialised by onReturnFetchMenuConfig()
|
||||||
private var mNextItemToUpdate = 0; // Index into the above array
|
private var mNextItemToUpdate as Lang.Number = 0; // Index into the above array
|
||||||
private var mIsGlance as Lang.Boolean = false;
|
private var mIsGlance as Lang.Boolean = false;
|
||||||
|
private var mIsApp as Lang.Boolean = false; // Or Widget
|
||||||
|
|
||||||
function initialize() {
|
function initialize() {
|
||||||
AppBase.initialize();
|
AppBase.initialize();
|
||||||
onSettingsChanged();
|
|
||||||
// ATTENTION when adding stuff into this block:
|
// ATTENTION when adding stuff into this block:
|
||||||
// Because of the >>GlanceView<<, it should contain only
|
// Because of the >>GlanceView<<, it should contain only
|
||||||
// code, which is used as well for the glance:
|
// code, which is used as well for the glance:
|
||||||
@ -100,8 +99,18 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
// with "(:glance)".
|
// with "(:glance)".
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// These are required for the Application/Widget and the Glance view, but not for the background service.
|
||||||
|
function initResources() {
|
||||||
|
strAvailable = WatchUi.loadResource($.Rez.Strings.Available);
|
||||||
|
strUnavailable = WatchUi.loadResource($.Rez.Strings.Unavailable);
|
||||||
|
strUnconfigured = WatchUi.loadResource($.Rez.Strings.Unconfigured);
|
||||||
|
mApiStatus = WatchUi.loadResource($.Rez.Strings.Checking);
|
||||||
|
mMenuStatus = WatchUi.loadResource($.Rez.Strings.Checking);
|
||||||
|
}
|
||||||
|
|
||||||
// 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>? {
|
||||||
|
mIsApp = true;
|
||||||
strNoApiKey = WatchUi.loadResource($.Rez.Strings.NoAPIKey);
|
strNoApiKey = WatchUi.loadResource($.Rez.Strings.NoAPIKey);
|
||||||
strNoApiUrl = WatchUi.loadResource($.Rez.Strings.NoApiUrl);
|
strNoApiUrl = WatchUi.loadResource($.Rez.Strings.NoApiUrl);
|
||||||
strNoConfigUrl = WatchUi.loadResource($.Rez.Strings.NoConfigUrl);
|
strNoConfigUrl = WatchUi.loadResource($.Rez.Strings.NoConfigUrl);
|
||||||
@ -113,24 +122,25 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
strNoJson = WatchUi.loadResource($.Rez.Strings.NoJson);
|
strNoJson = WatchUi.loadResource($.Rez.Strings.NoJson);
|
||||||
strUnhandledHttpErr = WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr);
|
strUnhandledHttpErr = WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr);
|
||||||
strTrailingSlashErr = WatchUi.loadResource($.Rez.Strings.TrailingSlashErr);
|
strTrailingSlashErr = WatchUi.loadResource($.Rez.Strings.TrailingSlashErr);
|
||||||
|
initResources();
|
||||||
mQuitTimer = new QuitTimer();
|
mQuitTimer = new QuitTimer();
|
||||||
|
|
||||||
if (mApiKey.length() == 0) {
|
if (Settings.get().getApiKey().length() == 0) {
|
||||||
if (Globals.scDebug) {
|
if (Globals.scDebug) {
|
||||||
System.println("HomeAssistantApp getInitialView(): No API key in the application settings.");
|
System.println("HomeAssistantApp getInitialView(): No API key in the application Settings.get().");
|
||||||
}
|
}
|
||||||
return ErrorView.create(strNoApiKey + ".");
|
return ErrorView.create(strNoApiKey + ".");
|
||||||
} else if (mApiUrl.length() == 0) {
|
} else if (Settings.get().getApiUrl().length() == 0) {
|
||||||
if (Globals.scDebug) {
|
if (Globals.scDebug) {
|
||||||
System.println("HomeAssistantApp getInitialView(): No API URL in the application settings.");
|
System.println("HomeAssistantApp getInitialView(): No API URL in the application Settings.get().");
|
||||||
}
|
}
|
||||||
return ErrorView.create(strNoApiUrl + ".");
|
return ErrorView.create(strNoApiUrl + ".");
|
||||||
} else if (mApiUrl.substring(-1, mApiUrl.length()).equals("/")) {
|
} else if (Settings.get().getApiUrl().substring(-1, Settings.get().getApiUrl().length()).equals("/")) {
|
||||||
if (Globals.scDebug) {
|
if (Globals.scDebug) {
|
||||||
System.println("HomeAssistantApp getInitialView(): API URL must not have a trailing slash '/'.");
|
System.println("HomeAssistantApp getInitialView(): API URL must not have a trailing slash '/'.");
|
||||||
}
|
}
|
||||||
return ErrorView.create(strTrailingSlashErr + ".");
|
return ErrorView.create(strTrailingSlashErr + ".");
|
||||||
} else if (mConfigUrl.length() == 0) {
|
} else if (Settings.get().getConfigUrl().length() == 0) {
|
||||||
if (Globals.scDebug) {
|
if (Globals.scDebug) {
|
||||||
System.println("HomeAssistantApp getInitialView(): No configuration URL in the application settings.");
|
System.println("HomeAssistantApp getInitialView(): No configuration URL in the application settings.");
|
||||||
}
|
}
|
||||||
@ -218,7 +228,7 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
if (!mIsGlance) {
|
if (!mIsGlance) {
|
||||||
mHaMenu = new HomeAssistantView(data, null);
|
mHaMenu = new HomeAssistantView(data, null);
|
||||||
mQuitTimer.begin();
|
mQuitTimer.begin();
|
||||||
if (Properties.getValue("widget_start_no_tap")) {
|
if (Settings.get().get().getIsWidgetStartNoTap()) {
|
||||||
// As soon as the menu has been fetched start show the menu of items.
|
// As soon as the menu has been fetched start show the menu of items.
|
||||||
// This behaviour is inconsistent with the standard Garmin User Interface, but has been
|
// This behaviour is inconsistent with the standard Garmin User Interface, but has been
|
||||||
// requested by users so has been made the non-default option.
|
// requested by users so has been made the non-default option.
|
||||||
@ -250,14 +260,10 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
|
|
||||||
(:glance)
|
(:glance)
|
||||||
function fetchMenuConfig() as Void {
|
function fetchMenuConfig() as Void {
|
||||||
if (mConfigUrl.equals("")) {
|
if (Settings.get().getConfigUrl().equals("")) {
|
||||||
mMenuStatus = strUnconfigured;
|
mMenuStatus = strUnconfigured;
|
||||||
WatchUi.requestUpdate();
|
WatchUi.requestUpdate();
|
||||||
} else {
|
} else {
|
||||||
var options = {
|
|
||||||
:method => Communications.HTTP_REQUEST_METHOD_GET,
|
|
||||||
:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON
|
|
||||||
};
|
|
||||||
if (! System.getDeviceSettings().phoneConnected) {
|
if (! System.getDeviceSettings().phoneConnected) {
|
||||||
if (Globals.scDebug) {
|
if (Globals.scDebug) {
|
||||||
System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call.");
|
System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call.");
|
||||||
@ -280,9 +286,12 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
mMenuStatus = strUnavailable;
|
mMenuStatus = strUnavailable;
|
||||||
} else {
|
} else {
|
||||||
Communications.makeWebRequest(
|
Communications.makeWebRequest(
|
||||||
mConfigUrl,
|
Settings.get().getConfigUrl(),
|
||||||
null,
|
null,
|
||||||
options,
|
{
|
||||||
|
:method => Communications.HTTP_REQUEST_METHOD_GET,
|
||||||
|
:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON
|
||||||
|
},
|
||||||
method(:onReturnFetchMenuConfig)
|
method(:onReturnFetchMenuConfig)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -373,17 +382,10 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
|
|
||||||
(:glance)
|
(:glance)
|
||||||
function fetchApiStatus() as Void {
|
function fetchApiStatus() as Void {
|
||||||
if (mApiUrl.equals("")) {
|
if (Settings.get().getApiUrl().equals("")) {
|
||||||
mApiStatus = strUnconfigured;
|
mApiStatus = strUnconfigured;
|
||||||
WatchUi.requestUpdate();
|
WatchUi.requestUpdate();
|
||||||
} else {
|
} else {
|
||||||
var options = {
|
|
||||||
:method => Communications.HTTP_REQUEST_METHOD_GET,
|
|
||||||
:headers => {
|
|
||||||
"Authorization" => "Bearer " + mApiKey
|
|
||||||
},
|
|
||||||
:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON
|
|
||||||
};
|
|
||||||
if (! System.getDeviceSettings().phoneConnected) {
|
if (! System.getDeviceSettings().phoneConnected) {
|
||||||
if (Globals.scDebug) {
|
if (Globals.scDebug) {
|
||||||
System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call.");
|
System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call.");
|
||||||
@ -406,9 +408,15 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Communications.makeWebRequest(
|
Communications.makeWebRequest(
|
||||||
mApiUrl + "/",
|
Settings.get().getApiUrl() + "/",
|
||||||
null,
|
null,
|
||||||
options,
|
{
|
||||||
|
:method => Communications.HTTP_REQUEST_METHOD_GET,
|
||||||
|
:headers => {
|
||||||
|
"Authorization" => "Bearer " + Settings.get().getApiKey()
|
||||||
|
},
|
||||||
|
:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON
|
||||||
|
},
|
||||||
method(:onReturnFetchApiStatus)
|
method(:onReturnFetchApiStatus)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -437,8 +445,8 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
WatchUi.pushView(mHaMenu, new HomeAssistantViewDelegate(true), WatchUi.SLIDE_IMMEDIATE);
|
WatchUi.pushView(mHaMenu, new HomeAssistantViewDelegate(true), WatchUi.SLIDE_IMMEDIATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// We need to spread out the API calls so as not to overload the results queue and cause Communications.BLE_QUEUE_FULL (-101) error.
|
// We need to spread out the API calls so as not to overload the results queue and cause Communications.BLE_QUEUE_FULL
|
||||||
// This function is called by a timer every Globals.menuItemUpdateInterval ms.
|
// (-101) error. This function is called by a timer every Globals.menuItemUpdateInterval ms.
|
||||||
function updateNextMenuItem() as Void {
|
function updateNextMenuItem() as Void {
|
||||||
var itu = mItemsToUpdate as Lang.Array<HomeAssistantToggleMenuItem>;
|
var itu = mItemsToUpdate as Lang.Array<HomeAssistantToggleMenuItem>;
|
||||||
if (itu == null) {
|
if (itu == null) {
|
||||||
@ -458,9 +466,9 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
return mQuitTimer;
|
return mQuitTimer;
|
||||||
}
|
}
|
||||||
|
|
||||||
(:glance)
|
|
||||||
function getGlanceView() as Lang.Array<WatchUi.GlanceView or WatchUi.GlanceViewDelegate> or Null {
|
function getGlanceView() as Lang.Array<WatchUi.GlanceView or WatchUi.GlanceViewDelegate> or Null {
|
||||||
mIsGlance = true;
|
mIsGlance = true;
|
||||||
|
initResources();
|
||||||
updateGlance();
|
updateGlance();
|
||||||
mTimer = new Timer.Timer();
|
mTimer = new Timer.Timer();
|
||||||
mTimer.start(method(:updateGlance), Globals.scApiBackoff, true);
|
mTimer.start(method(:updateGlance), Globals.scApiBackoff, true);
|
||||||
@ -476,12 +484,25 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
// Replace this functionality with a more central settings class as proposed in
|
// Replace this functionality with a more central settings class as proposed in
|
||||||
// https://github.com/house-of-abbey/GarminHomeAssistant/pull/17.
|
// https://github.com/house-of-abbey/GarminHomeAssistant/pull/17.
|
||||||
function onSettingsChanged() as Void {
|
function onSettingsChanged() as Void {
|
||||||
mApiKey = Properties.getValue("api_key");
|
if (Globals.scDebug) {
|
||||||
mApiUrl = Properties.getValue("api_url");
|
System.println("HomeAssistantApp onSettingsChanged()");
|
||||||
mConfigUrl = Properties.getValue("config_url");
|
}
|
||||||
|
Settings.get().update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Called each time the Registered Temporal Event is to be invoked. So the object is created each time on request and
|
||||||
|
// then destroyed on completion (to save resources).
|
||||||
|
function getServiceDelegate() as Lang.Array<System.ServiceDelegate> {
|
||||||
|
return [new BackgroundServiceDelegate()];
|
||||||
|
}
|
||||||
|
|
||||||
|
function getIsApp() as Lang.Boolean {
|
||||||
|
return mIsApp;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
(:glance, :background)
|
||||||
function getApp() as HomeAssistantApp {
|
function getApp() as HomeAssistantApp {
|
||||||
return Application.getApp() as HomeAssistantApp;
|
return Application.getApp() as HomeAssistantApp;
|
||||||
}
|
}
|
||||||
|
@ -40,10 +40,10 @@ class HomeAssistantConfirmationDelegate extends WatchUi.ConfirmationDelegate {
|
|||||||
function initialize(callback as Method() as Void) {
|
function initialize(callback as Method() as Void) {
|
||||||
WatchUi.ConfirmationDelegate.initialize();
|
WatchUi.ConfirmationDelegate.initialize();
|
||||||
mConfirmMethod = callback;
|
mConfirmMethod = callback;
|
||||||
var timeoutSeconds = Properties.getValue("confirm_timeout") as Lang.Number;
|
var timeout = Settings.get().getConfirmTimeout(); // ms
|
||||||
if (timeoutSeconds > 0) {
|
if (timeout > 0) {
|
||||||
mTimer = new Timer.Timer();
|
mTimer = new Timer.Timer();
|
||||||
mTimer.start(method(:onTimeout), timeoutSeconds * 1000, true);
|
mTimer.start(method(:onTimeout), timeout, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,8 +24,7 @@ using Toybox.Graphics;
|
|||||||
|
|
||||||
(:glance)
|
(:glance)
|
||||||
class HomeAssistantGlanceView extends WatchUi.GlanceView {
|
class HomeAssistantGlanceView extends WatchUi.GlanceView {
|
||||||
private static const scLeftMargin = 20; // in pixels
|
private static const scLeftMargin = 5; // in pixels
|
||||||
private static const scLeftIndent = 10; // Left Indent "_text:" in pixels
|
|
||||||
private static const scMidSep = 10; // Middle Separator "text:_text" in pixels
|
private static const scMidSep = 10; // Middle Separator "text:_text" in pixels
|
||||||
private var mApp as HomeAssistantApp;
|
private var mApp as HomeAssistantApp;
|
||||||
private var mTitle as WatchUi.Text or Null;
|
private var mTitle as WatchUi.Text or Null;
|
||||||
@ -58,8 +57,8 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView {
|
|||||||
:text => "API:",
|
:text => "API:",
|
||||||
:color => Graphics.COLOR_WHITE,
|
:color => Graphics.COLOR_WHITE,
|
||||||
:font => Graphics.FONT_XTINY,
|
:font => Graphics.FONT_XTINY,
|
||||||
:justification => Graphics.TEXT_JUSTIFY_RIGHT | Graphics.TEXT_JUSTIFY_VCENTER,
|
:justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
|
||||||
:locX => scLeftMargin + scLeftIndent + tw,
|
:locX => scLeftMargin,
|
||||||
:locY => 3 * h / 6
|
:locY => 3 * h / 6
|
||||||
});
|
});
|
||||||
mApiStatus = new WatchUi.Text({
|
mApiStatus = new WatchUi.Text({
|
||||||
@ -67,15 +66,15 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView {
|
|||||||
:color => Graphics.COLOR_WHITE,
|
:color => Graphics.COLOR_WHITE,
|
||||||
:font => Graphics.FONT_XTINY,
|
:font => Graphics.FONT_XTINY,
|
||||||
:justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
|
:justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
|
||||||
:locX => scLeftMargin + scLeftIndent + scMidSep + tw,
|
:locX => scLeftMargin + scMidSep + tw,
|
||||||
:locY => 3 * h / 6
|
:locY => 3 * h / 6
|
||||||
});
|
});
|
||||||
mMenuText = new WatchUi.Text({
|
mMenuText = new WatchUi.Text({
|
||||||
:text => strGlanceMenu + ":",
|
:text => strGlanceMenu + ":",
|
||||||
:color => Graphics.COLOR_WHITE,
|
:color => Graphics.COLOR_WHITE,
|
||||||
:font => Graphics.FONT_XTINY,
|
:font => Graphics.FONT_XTINY,
|
||||||
:justification => Graphics.TEXT_JUSTIFY_RIGHT | Graphics.TEXT_JUSTIFY_VCENTER,
|
:justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
|
||||||
:locX => scLeftMargin + scLeftIndent + tw,
|
:locX => scLeftMargin,
|
||||||
:locY => 5 * h / 6
|
:locY => 5 * h / 6
|
||||||
});
|
});
|
||||||
mMenuStatus = new WatchUi.Text({
|
mMenuStatus = new WatchUi.Text({
|
||||||
@ -83,7 +82,7 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView {
|
|||||||
:color => Graphics.COLOR_WHITE,
|
:color => Graphics.COLOR_WHITE,
|
||||||
:font => Graphics.FONT_XTINY,
|
:font => Graphics.FONT_XTINY,
|
||||||
:justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
|
:justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
|
||||||
:locX => scLeftMargin + scLeftIndent + scMidSep + tw,
|
:locX => scLeftMargin + scMidSep + tw,
|
||||||
:locY => 5 * h / 6
|
:locY => 5 * h / 6
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -95,7 +94,7 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView {
|
|||||||
}
|
}
|
||||||
dc.setColor(
|
dc.setColor(
|
||||||
Graphics.COLOR_WHITE,
|
Graphics.COLOR_WHITE,
|
||||||
Graphics.COLOR_BLUE
|
Graphics.COLOR_TRANSPARENT
|
||||||
);
|
);
|
||||||
dc.clear();
|
dc.clear();
|
||||||
mTitle.draw(dc);
|
mTitle.draw(dc);
|
||||||
|
@ -23,13 +23,12 @@ using Toybox.Lang;
|
|||||||
using Toybox.WatchUi;
|
using Toybox.WatchUi;
|
||||||
|
|
||||||
class HomeAssistantMenuItemFactory {
|
class HomeAssistantMenuItemFactory {
|
||||||
private var mMenuItemOptions as Lang.Dictionary;
|
private var mMenuItemOptions as Lang.Dictionary;
|
||||||
private var mLabelToggle as Lang.Dictionary;
|
private var mLabelToggle as Lang.Dictionary;
|
||||||
private var strMenuItemTap as Lang.String;
|
private var strMenuItemTap as Lang.String;
|
||||||
private var bRepresentTypesWithLabels as Lang.Boolean;
|
private var mTapTypeIcon as WatchUi.Bitmap;
|
||||||
private var mTapTypeIcon as WatchUi.Bitmap;
|
private var mGroupTypeIcon as WatchUi.Bitmap;
|
||||||
private var mGroupTypeIcon as WatchUi.Bitmap;
|
private var mHomeAssistantService as HomeAssistantService;
|
||||||
private var mHomeAssistantService as HomeAssistantService;
|
|
||||||
|
|
||||||
private static var instance;
|
private static var instance;
|
||||||
|
|
||||||
@ -38,18 +37,10 @@ class HomeAssistantMenuItemFactory {
|
|||||||
:enabled => WatchUi.loadResource($.Rez.Strings.MenuItemOn) as Lang.String,
|
:enabled => WatchUi.loadResource($.Rez.Strings.MenuItemOn) as Lang.String,
|
||||||
:disabled => WatchUi.loadResource($.Rez.Strings.MenuItemOff) as Lang.String
|
:disabled => WatchUi.loadResource($.Rez.Strings.MenuItemOff) as Lang.String
|
||||||
};
|
};
|
||||||
bRepresentTypesWithLabels = Application.Properties.getValue("types_representation") as Lang.Boolean;
|
|
||||||
|
|
||||||
var menuItemAlignment = Application.Properties.getValue("menu_alignment") as Lang.Boolean;
|
mMenuItemOptions = {
|
||||||
if(menuItemAlignment){
|
:alignment => Settings.get().getMenuAlignment()
|
||||||
mMenuItemOptions = {
|
};
|
||||||
:alignment => WatchUi.MenuItem.MENU_ITEM_LABEL_ALIGN_RIGHT
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
mMenuItemOptions = {
|
|
||||||
:alignment => WatchUi.MenuItem.MENU_ITEM_LABEL_ALIGN_LEFT
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
strMenuItemTap = WatchUi.loadResource($.Rez.Strings.MenuItemTap);
|
strMenuItemTap = WatchUi.loadResource($.Rez.Strings.MenuItemTap);
|
||||||
mTapTypeIcon = new WatchUi.Bitmap({
|
mTapTypeIcon = new WatchUi.Bitmap({
|
||||||
@ -74,15 +65,9 @@ class HomeAssistantMenuItemFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function toggle(label as Lang.String or Lang.Symbol, identifier as Lang.Object or Null) as WatchUi.MenuItem {
|
function toggle(label as Lang.String or Lang.Symbol, identifier as Lang.Object or Null) as WatchUi.MenuItem {
|
||||||
var subLabel = null;
|
|
||||||
|
|
||||||
if (bRepresentTypesWithLabels == true){
|
|
||||||
subLabel=mLabelToggle;
|
|
||||||
}
|
|
||||||
|
|
||||||
return new HomeAssistantToggleMenuItem(
|
return new HomeAssistantToggleMenuItem(
|
||||||
label,
|
label,
|
||||||
subLabel,
|
Settings.get().getMenuStyle() == Settings.MENU_STYLE_TEXT ? mLabelToggle : null,
|
||||||
identifier,
|
identifier,
|
||||||
false,
|
false,
|
||||||
mMenuItemOptions
|
mMenuItemOptions
|
||||||
@ -95,7 +80,7 @@ class HomeAssistantMenuItemFactory {
|
|||||||
service as Lang.String or Null,
|
service as Lang.String or Null,
|
||||||
confirm as Lang.Boolean
|
confirm as Lang.Boolean
|
||||||
) as WatchUi.MenuItem {
|
) as WatchUi.MenuItem {
|
||||||
if (bRepresentTypesWithLabels) {
|
if (Settings.get().getMenuStyle() == Settings.MENU_STYLE_TEXT) {
|
||||||
return new HomeAssistantMenuItem(
|
return new HomeAssistantMenuItem(
|
||||||
label,
|
label,
|
||||||
strMenuItemTap,
|
strMenuItemTap,
|
||||||
@ -120,7 +105,7 @@ class HomeAssistantMenuItemFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function group(definition as Lang.Dictionary) as WatchUi.MenuItem {
|
function group(definition as Lang.Dictionary) as WatchUi.MenuItem {
|
||||||
if (bRepresentTypesWithLabels) {
|
if (Settings.get().getMenuStyle() == Settings.MENU_STYLE_TEXT) {
|
||||||
return new HomeAssistantViewMenuItem(definition);
|
return new HomeAssistantViewMenuItem(definition);
|
||||||
} else {
|
} else {
|
||||||
return new HomeAssistantViewIconMenuItem(definition, mGroupTypeIcon, mMenuItemOptions);
|
return new HomeAssistantViewIconMenuItem(definition, mGroupTypeIcon, mMenuItemOptions);
|
||||||
|
@ -27,17 +27,11 @@ class HomeAssistantService {
|
|||||||
private var strNoPhone = WatchUi.loadResource($.Rez.Strings.NoPhone);
|
private var strNoPhone = WatchUi.loadResource($.Rez.Strings.NoPhone);
|
||||||
private var strNoInternet = WatchUi.loadResource($.Rez.Strings.NoInternet);
|
private var strNoInternet = WatchUi.loadResource($.Rez.Strings.NoInternet);
|
||||||
private var strNoResponse = WatchUi.loadResource($.Rez.Strings.NoResponse);
|
private var strNoResponse = WatchUi.loadResource($.Rez.Strings.NoResponse);
|
||||||
private var strNoJson = WatchUi.loadResource($.Rez.Strings.NoJson);
|
private var strNoJson = WatchUi.loadResource($.Rez.Strings.NoJson);
|
||||||
private var strApiFlood = WatchUi.loadResource($.Rez.Strings.ApiFlood);
|
private var strApiFlood = WatchUi.loadResource($.Rez.Strings.ApiFlood);
|
||||||
private var strApiUrlNotFound = WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound);
|
private var strApiUrlNotFound = WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound);
|
||||||
private var strUnhandledHttpErr = WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr);
|
private var strUnhandledHttpErr = WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr);
|
||||||
|
|
||||||
private var mApiKey as Lang.String;
|
|
||||||
|
|
||||||
function initialize() {
|
|
||||||
mApiKey = Properties.getValue("api_key");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Callback function after completing the POST request to call a service.
|
// Callback function after completing the POST request to call a service.
|
||||||
//
|
//
|
||||||
function onReturnCall(responseCode as Lang.Number, data as Null or Lang.Dictionary or Lang.String, context as Lang.Object) as Void {
|
function onReturnCall(responseCode as Lang.Number, data as Null or Lang.Dictionary or Lang.String, context as Lang.Object) as Void {
|
||||||
@ -123,15 +117,6 @@ class HomeAssistantService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function call(identifier as Lang.String, service as Lang.String) as Void {
|
function call(identifier as Lang.String, service as Lang.String) as Void {
|
||||||
var options = {
|
|
||||||
:method => Communications.HTTP_REQUEST_METHOD_POST,
|
|
||||||
:headers => {
|
|
||||||
"Content-Type" => Communications.REQUEST_CONTENT_TYPE_JSON,
|
|
||||||
"Authorization" => "Bearer " + mApiKey
|
|
||||||
},
|
|
||||||
:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON,
|
|
||||||
:context => identifier
|
|
||||||
};
|
|
||||||
if (! System.getDeviceSettings().phoneConnected) {
|
if (! System.getDeviceSettings().phoneConnected) {
|
||||||
if (Globals.scDebug) {
|
if (Globals.scDebug) {
|
||||||
System.println("HomeAssistantService call(): No Phone connection, skipping API call.");
|
System.println("HomeAssistantService call(): No Phone connection, skipping API call.");
|
||||||
@ -144,7 +129,7 @@ class HomeAssistantService {
|
|||||||
ErrorView.show(strNoInternet + ".");
|
ErrorView.show(strNoInternet + ".");
|
||||||
} else {
|
} else {
|
||||||
// Can't use null for substring() parameters due to API version level.
|
// Can't use null for substring() parameters due to API version level.
|
||||||
var url = (Properties.getValue("api_url") as Lang.String) + "/services/" + service.substring(0, service.find(".")) + "/" + service.substring(service.find(".")+1, service.length());
|
var url = Settings.get().getApiUrl() + "/services/" + service.substring(0, service.find(".")) + "/" + service.substring(service.find(".")+1, service.length());
|
||||||
if (Globals.scDebug) {
|
if (Globals.scDebug) {
|
||||||
System.println("HomeAssistantService call() URL=" + url);
|
System.println("HomeAssistantService call() URL=" + url);
|
||||||
System.println("HomeAssistantService call() service=" + service);
|
System.println("HomeAssistantService call() service=" + service);
|
||||||
@ -154,7 +139,15 @@ class HomeAssistantService {
|
|||||||
{
|
{
|
||||||
"entity_id" => identifier
|
"entity_id" => identifier
|
||||||
},
|
},
|
||||||
options,
|
{
|
||||||
|
:method => Communications.HTTP_REQUEST_METHOD_POST,
|
||||||
|
:headers => {
|
||||||
|
"Content-Type" => Communications.REQUEST_CONTENT_TYPE_JSON,
|
||||||
|
"Authorization" => "Bearer " + Settings.get().getApiKey()
|
||||||
|
},
|
||||||
|
:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON,
|
||||||
|
:context => identifier
|
||||||
|
},
|
||||||
method(:onReturnCall)
|
method(:onReturnCall)
|
||||||
);
|
);
|
||||||
if (Attention has :vibrate) {
|
if (Attention has :vibrate) {
|
||||||
|
@ -35,8 +35,6 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
|
|||||||
private var strUnavailable = WatchUi.loadResource($.Rez.Strings.Unavailable);
|
private var strUnavailable = WatchUi.loadResource($.Rez.Strings.Unavailable);
|
||||||
private var strAvailable = WatchUi.loadResource($.Rez.Strings.Available);
|
private var strAvailable = WatchUi.loadResource($.Rez.Strings.Available);
|
||||||
|
|
||||||
private var mApiKey as Lang.String;
|
|
||||||
|
|
||||||
function initialize(
|
function initialize(
|
||||||
label as Lang.String or Lang.Symbol,
|
label as Lang.String or Lang.Symbol,
|
||||||
subLabel as Lang.String or Lang.Symbol or {
|
subLabel as Lang.String or Lang.Symbol or {
|
||||||
@ -50,7 +48,6 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
|
|||||||
:icon as Graphics.BitmapType or WatchUi.Drawable or Lang.Symbol
|
:icon as Graphics.BitmapType or WatchUi.Drawable or Lang.Symbol
|
||||||
} or Null
|
} or Null
|
||||||
) {
|
) {
|
||||||
mApiKey = Properties.getValue("api_key");
|
|
||||||
WatchUi.ToggleMenuItem.initialize(label, subLabel, identifier, enabled, options);
|
WatchUi.ToggleMenuItem.initialize(label, subLabel, identifier, enabled, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,7 +73,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
|
|||||||
System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Data: " + data);
|
System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Data: " + data);
|
||||||
}
|
}
|
||||||
|
|
||||||
var status = strUnavailable;
|
var status = strUnavailable;
|
||||||
switch (responseCode) {
|
switch (responseCode) {
|
||||||
case Communications.BLE_HOST_TIMEOUT:
|
case Communications.BLE_HOST_TIMEOUT:
|
||||||
case Communications.BLE_CONNECTION_UNAVAILABLE:
|
case Communications.BLE_CONNECTION_UNAVAILABLE:
|
||||||
@ -168,13 +165,6 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getState() as Void {
|
function getState() as Void {
|
||||||
var options = {
|
|
||||||
:method => Communications.HTTP_REQUEST_METHOD_GET,
|
|
||||||
:headers => {
|
|
||||||
"Authorization" => "Bearer " + mApiKey
|
|
||||||
},
|
|
||||||
:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON
|
|
||||||
};
|
|
||||||
if (! System.getDeviceSettings().phoneConnected) {
|
if (! System.getDeviceSettings().phoneConnected) {
|
||||||
if (Globals.scDebug) {
|
if (Globals.scDebug) {
|
||||||
System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call.");
|
System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call.");
|
||||||
@ -188,14 +178,20 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
|
|||||||
ErrorView.show(strNoInternet + ".");
|
ErrorView.show(strNoInternet + ".");
|
||||||
getApp().setApiStatus(strUnavailable);
|
getApp().setApiStatus(strUnavailable);
|
||||||
} else {
|
} else {
|
||||||
var url = Properties.getValue("api_url") + "/states/" + mIdentifier;
|
var url = Settings.get().getApiUrl() + "/states/" + mIdentifier;
|
||||||
if (Globals.scDebug) {
|
if (Globals.scDebug) {
|
||||||
System.println("HomeAssistantToggleMenuItem getState() URL=" + url);
|
System.println("HomeAssistantToggleMenuItem getState() URL=" + url);
|
||||||
}
|
}
|
||||||
Communications.makeWebRequest(
|
Communications.makeWebRequest(
|
||||||
url,
|
url,
|
||||||
null,
|
null,
|
||||||
options,
|
{
|
||||||
|
:method => Communications.HTTP_REQUEST_METHOD_GET,
|
||||||
|
:headers => {
|
||||||
|
"Authorization" => "Bearer " + Settings.get().getApiKey()
|
||||||
|
},
|
||||||
|
:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON
|
||||||
|
},
|
||||||
method(:onReturnGetState)
|
method(:onReturnGetState)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -272,14 +268,6 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function setState(s as Lang.Boolean) as Void {
|
function setState(s as Lang.Boolean) as Void {
|
||||||
var options = {
|
|
||||||
:method => Communications.HTTP_REQUEST_METHOD_POST,
|
|
||||||
:headers => {
|
|
||||||
"Content-Type" => Communications.REQUEST_CONTENT_TYPE_JSON,
|
|
||||||
"Authorization" => "Bearer " + mApiKey
|
|
||||||
},
|
|
||||||
:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON
|
|
||||||
};
|
|
||||||
if (! System.getDeviceSettings().phoneConnected) {
|
if (! System.getDeviceSettings().phoneConnected) {
|
||||||
if (Globals.scDebug) {
|
if (Globals.scDebug) {
|
||||||
System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call.");
|
System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call.");
|
||||||
@ -297,12 +285,12 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
|
|||||||
} else {
|
} else {
|
||||||
// Updated SDK and got a new error
|
// Updated SDK and got a new error
|
||||||
// ERROR: venu: Cannot find symbol ':substring' on type 'PolyType<Null or $.Toybox.Lang.Object>'.
|
// ERROR: venu: Cannot find symbol ':substring' on type 'PolyType<Null or $.Toybox.Lang.Object>'.
|
||||||
var id = mIdentifier as Lang.String;
|
var id = mIdentifier as Lang.String;
|
||||||
var url;
|
var url = Settings.get().getApiKey() + "/services/";
|
||||||
if (s) {
|
if (s) {
|
||||||
url = Properties.getValue("api_url") + "/services/" + id.substring(0, id.find(".")) + "/turn_on";
|
url = url + id.substring(0, id.find(".")) + "/turn_on";
|
||||||
} else {
|
} else {
|
||||||
url = Properties.getValue("api_url") + "/services/" + id.substring(0, id.find(".")) + "/turn_off";
|
url = url + id.substring(0, id.find(".")) + "/turn_off";
|
||||||
}
|
}
|
||||||
if (Globals.scDebug) {
|
if (Globals.scDebug) {
|
||||||
System.println("HomeAssistantToggleMenuItem setState() URL=" + url);
|
System.println("HomeAssistantToggleMenuItem setState() URL=" + url);
|
||||||
@ -313,7 +301,14 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
|
|||||||
{
|
{
|
||||||
"entity_id" => mIdentifier
|
"entity_id" => mIdentifier
|
||||||
},
|
},
|
||||||
options,
|
{
|
||||||
|
:method => Communications.HTTP_REQUEST_METHOD_POST,
|
||||||
|
:headers => {
|
||||||
|
"Content-Type" => Communications.REQUEST_CONTENT_TYPE_JSON,
|
||||||
|
"Authorization" => "Bearer " + Settings.get().getApiKey()
|
||||||
|
},
|
||||||
|
:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON
|
||||||
|
},
|
||||||
method(:onReturnSetState)
|
method(:onReturnSetState)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -24,12 +24,9 @@ using Toybox.Application.Properties;
|
|||||||
using Toybox.WatchUi;
|
using Toybox.WatchUi;
|
||||||
|
|
||||||
class QuitTimer extends Timer.Timer {
|
class QuitTimer extends Timer.Timer {
|
||||||
private var api_timeout;
|
|
||||||
|
|
||||||
function initialize() {
|
function initialize() {
|
||||||
Timer.Timer.initialize();
|
Timer.Timer.initialize();
|
||||||
// Timer needs delay in milliseconds.
|
|
||||||
api_timeout = (Properties.getValue("app_timeout") as Lang.Number) * 1000;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function exitApp() as Void {
|
function exitApp() as Void {
|
||||||
@ -41,6 +38,7 @@ class QuitTimer extends Timer.Timer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function begin() {
|
function begin() {
|
||||||
|
var api_timeout = Settings.get().getAppTimeout(); // ms
|
||||||
if (api_timeout > 0) {
|
if (api_timeout > 0) {
|
||||||
start(method(:exitApp), api_timeout, false);
|
start(method(:exitApp), api_timeout, false);
|
||||||
}
|
}
|
||||||
|
136
source/Settings.mc
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
//-----------------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// 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, SomeoneOnEarth, 23 November 2023
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Description:
|
||||||
|
//
|
||||||
|
// Home Assistant settings.
|
||||||
|
//
|
||||||
|
//-----------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using Toybox.Lang;
|
||||||
|
using Toybox.Application.Properties;
|
||||||
|
using Toybox.WatchUi;
|
||||||
|
using Toybox.System;
|
||||||
|
// Battery Level Reporting
|
||||||
|
using Toybox.Background;
|
||||||
|
using Toybox.Time;
|
||||||
|
|
||||||
|
(:glance, :background)
|
||||||
|
class Settings {
|
||||||
|
private static var instance;
|
||||||
|
|
||||||
|
public static const MENU_STYLE_ICONS = 0;
|
||||||
|
public static const MENU_STYLE_TEXT = 1;
|
||||||
|
|
||||||
|
private var mApiKey as Lang.String = "";
|
||||||
|
private var mApiUrl as Lang.String = "";
|
||||||
|
private var mConfigUrl as Lang.String = "";
|
||||||
|
private var mAppTimeout as Lang.Number = 0; // seconds
|
||||||
|
private var mConfirmTimeout as Lang.Number = 3; // seconds
|
||||||
|
private var mMenuStyle as Lang.Number = MENU_STYLE_ICONS;
|
||||||
|
private var mMenuAlignment as Lang.Number = WatchUi.MenuItem.MENU_ITEM_LABEL_ALIGN_LEFT;
|
||||||
|
private var mIsWidgetStartNoTap as Lang.Boolean = false;
|
||||||
|
private var mIsBatteryLevelEnabled as Lang.Boolean = false;
|
||||||
|
private var mBatteryRefreshRate as Lang.Number = 15; // minutes
|
||||||
|
private var mIsApp as Lang.Boolean = false;
|
||||||
|
|
||||||
|
private function initialize() {
|
||||||
|
mIsApp = getApp().getIsApp();
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Called on application start and then whenever the settings are changed.
|
||||||
|
function update() {
|
||||||
|
mApiKey = Properties.getValue("api_key");
|
||||||
|
mApiUrl = Properties.getValue("api_url");
|
||||||
|
mConfigUrl = Properties.getValue("config_url");
|
||||||
|
mAppTimeout = Properties.getValue("app_timeout");
|
||||||
|
mConfirmTimeout = Properties.getValue("confirm_timeout");
|
||||||
|
mMenuStyle = Properties.getValue("menu_theme");
|
||||||
|
mMenuAlignment = Properties.getValue("menu_alignment");
|
||||||
|
mIsWidgetStartNoTap = Properties.getValue("widget_start_no_tap");
|
||||||
|
mIsBatteryLevelEnabled = Properties.getValue("enable_battery_level");
|
||||||
|
mBatteryRefreshRate = Properties.getValue("battery_level_refresh_rate");
|
||||||
|
|
||||||
|
// Manage this inside the application or widget only (not a glance or background service process)
|
||||||
|
if (mIsApp) {
|
||||||
|
if (mIsBatteryLevelEnabled) {
|
||||||
|
if ((System has :ServiceDelegate) and
|
||||||
|
((Background.getTemporalEventRegisteredTime() == null) or
|
||||||
|
(Background.getTemporalEventRegisteredTime() != (mBatteryRefreshRate * 60)))) {
|
||||||
|
Background.registerForTemporalEvent(new Time.Duration(mBatteryRefreshRate * 60)); // Convert to seconds
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Explicitly disable the background event which persists when the application closes.
|
||||||
|
if ((System has :ServiceDelegate) and (Background.getTemporalEventRegisteredTime() != null)) {
|
||||||
|
Background.deleteTemporalEvent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Explicitly disable the background events for glances and ironically any use by the background service. However
|
||||||
|
// that has been avoided more recently by not using this object in BackgroundServiceDelegate.
|
||||||
|
if ((System has :ServiceDelegate) and (Background.getTemporalEventRegisteredTime() != null)) {
|
||||||
|
Background.deleteTemporalEvent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (Globals.scDebug) {
|
||||||
|
System.println("Settings update(): getTemporalEventRegisteredTime() = " + Background.getTemporalEventRegisteredTime());
|
||||||
|
if (Background.getTemporalEventRegisteredTime() != null) {
|
||||||
|
System.println("Settings update(): getTemporalEventRegisteredTime().value() = " + Background.getTemporalEventRegisteredTime().value().format("%d") + " seconds");
|
||||||
|
} else {
|
||||||
|
System.println("Settings update(): getTemporalEventRegisteredTime() = null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static function get() as Settings {
|
||||||
|
if (instance == null) {
|
||||||
|
instance = new Settings();
|
||||||
|
}
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getApiKey() as Lang.String {
|
||||||
|
return mApiKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getApiUrl() as Lang.String {
|
||||||
|
return mApiUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getConfigUrl() as Lang.String {
|
||||||
|
return mConfigUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getAppTimeout() as Lang.Number {
|
||||||
|
return mAppTimeout * 1000; // Convert to milliseconds
|
||||||
|
}
|
||||||
|
|
||||||
|
function getConfirmTimeout() as Lang.Number {
|
||||||
|
return mConfirmTimeout * 1000; // Convert to milliseconds
|
||||||
|
}
|
||||||
|
|
||||||
|
function getMenuStyle() as Lang.Number {
|
||||||
|
return mMenuStyle; // Either MENU_STYLE_ICONS or MENU_STYLE_TEXT
|
||||||
|
}
|
||||||
|
|
||||||
|
function getMenuAlignment() as Lang.Number {
|
||||||
|
return mMenuAlignment; // Either WatchUi.MenuItem.MENU_ITEM_LABEL_ALIGN_RIGHT or WatchUi.MenuItem.MENU_ITEM_LABEL_ALIGN_LEFT
|
||||||
|
}
|
||||||
|
|
||||||
|
function getIsWidgetStartNoTap() as Lang.Boolean {
|
||||||
|
return mIsWidgetStartNoTap;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
179
source/WebLog.mc
Normal file
@ -0,0 +1,179 @@
|
|||||||
|
//-----------------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Description:
|
||||||
|
//
|
||||||
|
// WebLog provides a logging and hence debugging aid for when the application is
|
||||||
|
// deployed to the watch. This is only used for development and use of it must not
|
||||||
|
// persist into a deployed version. It uses a string buffer to group log entries into
|
||||||
|
// larger submissions in order to prevent overflow of the blue tooth stack.
|
||||||
|
//
|
||||||
|
//-----------------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// Usage:
|
||||||
|
// wl = new WebLog();
|
||||||
|
// wl.clear();
|
||||||
|
// wl.println("Debug Message");
|
||||||
|
// wl.flush();
|
||||||
|
//
|
||||||
|
// https://domain.name/path/log.php
|
||||||
|
//
|
||||||
|
// <?php
|
||||||
|
// $myfile = fopen("log", "a");
|
||||||
|
// $queries = array();
|
||||||
|
// parse_str($_SERVER['QUERY_STRING'], $queries);
|
||||||
|
// fwrite($myfile, $queries['log']);
|
||||||
|
// print "Success";
|
||||||
|
// ?>
|
||||||
|
//
|
||||||
|
// Logs published to: https://domain.name/path/log
|
||||||
|
//
|
||||||
|
// https://domain.name/path/log_clear.php
|
||||||
|
//
|
||||||
|
// <?php
|
||||||
|
// $myfile = fopen("log", "w");
|
||||||
|
// fwrite($myfile, "");
|
||||||
|
// print "Success";
|
||||||
|
// ?>
|
||||||
|
|
||||||
|
using Toybox.Communications;
|
||||||
|
using Toybox.Lang;
|
||||||
|
using Toybox.System;
|
||||||
|
|
||||||
|
(:glance, :background)
|
||||||
|
class WebLog {
|
||||||
|
private var callsbuffer = 4 as Lang.Number;
|
||||||
|
private var numCalls = 0 as Lang.Number;
|
||||||
|
private var buffer = "" as Lang.String;
|
||||||
|
|
||||||
|
// Set the number of calls to print() before sending the buffer to the online
|
||||||
|
// logger.
|
||||||
|
//
|
||||||
|
function setCallsBuffer(l as Lang.Number) {
|
||||||
|
callsbuffer = l;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the number of calls to print() before sending the buffer to the online
|
||||||
|
// logger.
|
||||||
|
//
|
||||||
|
function getCallsBuffer() as Lang.Number {
|
||||||
|
return callsbuffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a debug log over the Internet to keep track of the watch's runtime
|
||||||
|
// execution.
|
||||||
|
//
|
||||||
|
function print(str as Lang.String) {
|
||||||
|
var myTime = System.getClockTime();
|
||||||
|
buffer += myTime.hour.format("%02d") + ":" + myTime.min.format("%02d") + ":" + myTime.sec.format("%02d") + " " + str;
|
||||||
|
numCalls++;
|
||||||
|
if (Globals.scDebug) {
|
||||||
|
System.println("WebLog print() str = " + str);
|
||||||
|
}
|
||||||
|
if (numCalls >= callsbuffer) {
|
||||||
|
doPrint();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a debug log over the Internet to keep track of the watch's runtime
|
||||||
|
// execution. Add a new line character to the end.
|
||||||
|
//
|
||||||
|
function println(str as Lang.String) {
|
||||||
|
print(str + "\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Flush the current buffer to the online logger even if it has not reach the
|
||||||
|
// submission level set by 'callsbuffer'.
|
||||||
|
//
|
||||||
|
function flush() {
|
||||||
|
if (Globals.scDebug) {
|
||||||
|
System.println("WebLog flush()");
|
||||||
|
}
|
||||||
|
if (numCalls > 0) {
|
||||||
|
doPrint();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Perform the submission to the online logger.
|
||||||
|
//
|
||||||
|
function doPrint() {
|
||||||
|
if (Globals.scDebug) {
|
||||||
|
System.println("WebLog doPrint()");
|
||||||
|
System.println(buffer);
|
||||||
|
}
|
||||||
|
Communications.makeWebRequest(
|
||||||
|
ClientId.webLogUrl,
|
||||||
|
{
|
||||||
|
"log" => buffer
|
||||||
|
},
|
||||||
|
{
|
||||||
|
:method => Communications.HTTP_REQUEST_METHOD_GET,
|
||||||
|
:headers => {
|
||||||
|
"Content-Type" => Communications.REQUEST_CONTENT_TYPE_URL_ENCODED
|
||||||
|
},
|
||||||
|
:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_TEXT_PLAIN
|
||||||
|
},
|
||||||
|
method(:onLog)
|
||||||
|
);
|
||||||
|
numCalls = 0;
|
||||||
|
buffer = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clear the debug log over the Internet to start a new track of the watch's runtime
|
||||||
|
// execution.
|
||||||
|
//
|
||||||
|
function clear() {
|
||||||
|
if (Globals.scDebug) {
|
||||||
|
System.println("WebLog clear()");
|
||||||
|
}
|
||||||
|
Communications.makeWebRequest(
|
||||||
|
ClientId.webLogClearUrl,
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
:method => Communications.HTTP_REQUEST_METHOD_GET,
|
||||||
|
:headers => {
|
||||||
|
"Content-Type" => Communications.REQUEST_CONTENT_TYPE_URL_ENCODED
|
||||||
|
},
|
||||||
|
:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_TEXT_PLAIN
|
||||||
|
},
|
||||||
|
method(:onClear)
|
||||||
|
);
|
||||||
|
numCalls = 0;
|
||||||
|
buffer = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Callback function to print the outcome of a doPrint() method.
|
||||||
|
//
|
||||||
|
function onLog(responseCode as Lang.Number, data as Null or Lang.Dictionary or Lang.String) as Void {
|
||||||
|
if (Globals.scDebug) {
|
||||||
|
if (responseCode != 200) {
|
||||||
|
System.println("WebLog onLog() Failed");
|
||||||
|
System.println("WebLog onLog() Response Code: " + responseCode);
|
||||||
|
System.println("WebLog onLog() Response Data: " + data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Callback function to print the outcome of a clear() method.
|
||||||
|
//
|
||||||
|
function onClear(responseCode as Lang.Number, data as Null or Lang.Dictionary or Lang.String) as Void {
|
||||||
|
if (Globals.scDebug) {
|
||||||
|
if (responseCode != 200) {
|
||||||
|
System.println("WebLog onClear() Failed");
|
||||||
|
System.println("WebLog onClear() Response Code: " + responseCode);
|
||||||
|
System.println("WebLog onClear() Response Data: " + data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|