From 6e67c4cf2aa1746faf77e75590ee2abaa80872dc Mon Sep 17 00:00:00 2001 From: Philip Abbey Date: Sun, 21 Jan 2024 20:38:01 +0000 Subject: [PATCH] Removed RezStrings.mc And in-lined the resource strings fetching. --- source/HomeAssistantConfirmation.mc | 2 +- source/HomeAssistantGlanceView.mc | 10 +- source/HomeAssistantService.mc | 18 +-- source/HomeAssistantTemplateMenuItem.mc | 26 ++-- source/HomeAssistantToggleMenuItem.mc | 44 +++--- source/RezStrings.mc | 199 ------------------------ source/RootView.mc | 12 +- source/WebhookManager.mc | 30 ++-- 8 files changed, 71 insertions(+), 270 deletions(-) delete mode 100644 source/RezStrings.mc diff --git a/source/HomeAssistantConfirmation.mc b/source/HomeAssistantConfirmation.mc index c42918f..1efec56 100644 --- a/source/HomeAssistantConfirmation.mc +++ b/source/HomeAssistantConfirmation.mc @@ -28,7 +28,7 @@ using Toybox.Application.Properties; class HomeAssistantConfirmation extends WatchUi.Confirmation { function initialize() { - WatchUi.Confirmation.initialize(RezStrings.getConfirm()); + WatchUi.Confirmation.initialize(WatchUi.loadResource($.Rez.Strings.Confirm)); } } diff --git a/source/HomeAssistantGlanceView.mc b/source/HomeAssistantGlanceView.mc index 9479b8f..4ecc8c9 100644 --- a/source/HomeAssistantGlanceView.mc +++ b/source/HomeAssistantGlanceView.mc @@ -44,10 +44,10 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView { function onLayout(dc as Graphics.Dc) as Void { var h = dc.getHeight(); - var tw = dc.getTextWidthInPixels(RezStrings.getGlanceMenu(), Graphics.FONT_XTINY); + var tw = dc.getTextWidthInPixels(WatchUi.loadResource($.Rez.Strings.GlanceMenu), Graphics.FONT_XTINY); mTitle = new WatchUi.Text({ - :text => RezStrings.getAppName(), + :text => WatchUi.loadResource($.Rez.Strings.AppName), :color => Graphics.COLOR_WHITE, :font => Graphics.FONT_TINY, :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER, @@ -64,7 +64,7 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView { :locY => 3 * h / 6 }); mApiStatus = new WatchUi.Text({ - :text => RezStrings.getChecking(), + :text => WatchUi.loadResource($.Rez.Strings.Checking), :color => Graphics.COLOR_WHITE, :font => Graphics.FONT_XTINY, :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER, @@ -72,7 +72,7 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView { :locY => 3 * h / 6 }); mMenuText = new WatchUi.Text({ - :text => RezStrings.getGlanceMenu() + ":", + :text => WatchUi.loadResource($.Rez.Strings.GlanceMenu) + ":", :color => Graphics.COLOR_WHITE, :font => Graphics.FONT_XTINY, :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER, @@ -80,7 +80,7 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView { :locY => 5 * h / 6 }); mMenuStatus = new WatchUi.Text({ - :text => RezStrings.getChecking(), + :text => WatchUi.loadResource($.Rez.Strings.Checking), :color => Graphics.COLOR_WHITE, :font => Graphics.FONT_XTINY, :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER, diff --git a/source/HomeAssistantService.mc b/source/HomeAssistantService.mc index 6a28feb..d0d448a 100644 --- a/source/HomeAssistantService.mc +++ b/source/HomeAssistantService.mc @@ -51,17 +51,17 @@ class HomeAssistantService { case Communications.BLE_HOST_TIMEOUT: case Communications.BLE_CONNECTION_UNAVAILABLE: // System.println("HomeAssistantService onReturnCall() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed."); - ErrorView.show(RezStrings.getNoPhone() + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); break; case Communications.BLE_QUEUE_FULL: // System.println("HomeAssistantService onReturnCall() Response Code: BLE_QUEUE_FULL, API calls too rapid."); - ErrorView.show(RezStrings.getApiFlood()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood)); break; case Communications.NETWORK_REQUEST_TIMED_OUT: // System.println("HomeAssistantService onReturnCall() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection."); - ErrorView.show(RezStrings.getNoResponse()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse)); break; case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY: @@ -70,18 +70,18 @@ class HomeAssistantService { break; case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE: // System.println("HomeAssistantService onReturnCall() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned."); - ErrorView.show(RezStrings.getNoJson()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson)); break; case 404: // System.println("HomeAssistantService onReturnCall() Response Code: 404, page not found. Check API URL setting."); - ErrorView.show(RezStrings.getApiUrlNotFound()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound)); break; case 200: // System.println("HomeAssistantService onReturnCall(): Service executed."); var d = data as Lang.Array; - var toast = RezStrings.getExecuted(); + var toast = WatchUi.loadResource($.Rez.Strings.Executed) as Lang.String; for(var i = 0; i < d.size(); i++) { if ((d[i].get("entity_id") as Lang.String).equals(entity_id)) { toast = (d[i].get("attributes") as Lang.Dictionary).get("friendly_name") as Lang.String; @@ -102,7 +102,7 @@ class HomeAssistantService { default: // System.println("HomeAssistantService onReturnCall(): Unhandled HTTP response code = " + responseCode); - ErrorView.show(RezStrings.getUnhandledHttpErr() + responseCode); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) + responseCode); } } @@ -112,10 +112,10 @@ class HomeAssistantService { ) as Void { if (! System.getDeviceSettings().phoneConnected) { // System.println("HomeAssistantService call(): No Phone connection, skipping API call."); - ErrorView.show(RezStrings.getNoPhone() + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); } else if (! System.getDeviceSettings().connectionAvailable) { // System.println("HomeAssistantService call(): No Internet connection, skipping API call."); - ErrorView.show(RezStrings.getNoInternet() + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) + "."); } else { // Can't use null for substring() parameters due to API version level. var url = Settings.getApiUrl() + "/services/" + service.substring(0, service.find(".")) + "/" + service.substring(service.find(".")+1, service.length()); diff --git a/source/HomeAssistantTemplateMenuItem.mc b/source/HomeAssistantTemplateMenuItem.mc index 60cb8f5..5dac253 100644 --- a/source/HomeAssistantTemplateMenuItem.mc +++ b/source/HomeAssistantTemplateMenuItem.mc @@ -87,27 +87,27 @@ class HomeAssistantTemplateMenuItem extends WatchUi.IconMenuItem { // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: " + responseCode); // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Data: " + data); - var status = RezStrings.getUnavailable(); + var status = WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String; switch (responseCode) { case Communications.BLE_HOST_TIMEOUT: case Communications.BLE_CONNECTION_UNAVAILABLE: // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed."); - ErrorView.show(RezStrings.getNoPhone() + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); break; case Communications.BLE_QUEUE_FULL: // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: BLE_QUEUE_FULL, API calls too rapid."); - ErrorView.show(RezStrings.getApiFlood()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood)); break; case Communications.NETWORK_REQUEST_TIMED_OUT: // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection."); - ErrorView.show(RezStrings.getNoResponse()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse)); break; case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE: // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned."); - ErrorView.show(RezStrings.getNoJson()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson)); break; case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY: @@ -121,16 +121,16 @@ class HomeAssistantTemplateMenuItem extends WatchUi.IconMenuItem { case 404: // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: 404, page not found. Check API URL setting."); - ErrorView.show(RezStrings.getApiUrlNotFound()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound)); break; case 400: // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: 400, bad request. Template error."); - ErrorView.show(RezStrings.getTemplateError()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.TemplateError)); break; case 200: - status = RezStrings.getAvailable(); + status = WatchUi.loadResource($.Rez.Strings.Available) as Lang.String; setSubLabel(data); requestUpdate(); // Now this feels very "closely coupled" to the application, but it is the most reliable method instead of using a timer. @@ -139,7 +139,7 @@ class HomeAssistantTemplateMenuItem extends WatchUi.IconMenuItem { default: // System.println("HomeAssistantTemplateMenuItem onReturnGetState(): Unhandled HTTP response code = " + responseCode); - ErrorView.show(RezStrings.getUnhandledHttpErr() + responseCode); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) + responseCode); } getApp().setApiStatus(status); } @@ -147,12 +147,12 @@ class HomeAssistantTemplateMenuItem extends WatchUi.IconMenuItem { function getState() as Void { if (! System.getDeviceSettings().phoneConnected) { // System.println("HomeAssistantTemplateMenuItem getState(): No Phone connection, skipping API call."); - ErrorView.show(RezStrings.getNoPhone() + "."); - getApp().setApiStatus(RezStrings.getUnavailable()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); + getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable)); } else if (! System.getDeviceSettings().connectionAvailable) { // System.println("HomeAssistantTemplateMenuItem getState(): No Internet connection, skipping API call."); - ErrorView.show(RezStrings.getNoInternet() + "."); - getApp().setApiStatus(RezStrings.getUnavailable()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) + "."); + getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable)); } else { var url = Settings.getApiUrl() + "/template"; // System.println("HomeAssistantTemplateMenuItem getState() URL=" + url + ", Template='" + mTemplate + "'"); diff --git a/source/HomeAssistantToggleMenuItem.mc b/source/HomeAssistantToggleMenuItem.mc index 75d713f..3f084fc 100644 --- a/source/HomeAssistantToggleMenuItem.mc +++ b/source/HomeAssistantToggleMenuItem.mc @@ -62,27 +62,27 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: " + responseCode); // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Data: " + data); - var status = RezStrings.getUnavailable(); + var status = WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String; switch (responseCode) { case Communications.BLE_HOST_TIMEOUT: case Communications.BLE_CONNECTION_UNAVAILABLE: // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed."); - ErrorView.show(RezStrings.getNoPhone() + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); break; case Communications.BLE_QUEUE_FULL: // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: BLE_QUEUE_FULL, API calls too rapid."); - ErrorView.show(RezStrings.getApiFlood()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood)); break; case Communications.NETWORK_REQUEST_TIMED_OUT: // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection."); - ErrorView.show(RezStrings.getNoResponse()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse)); break; case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE: // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned."); - ErrorView.show(RezStrings.getNoJson()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson)); break; case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY: @@ -105,7 +105,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { ErrorView.show("HTTP 404, " + mData.get("entity_id") + ". " + data.get("message")); } else { // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: 404, page not found. Check API URL setting."); - ErrorView.show(RezStrings.getApiUrlNotFound()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound)); } break; @@ -116,7 +116,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { break; case 200: - status = RezStrings.getAvailable(); + status = WatchUi.loadResource($.Rez.Strings.Available) as Lang.String; var state = data.get("state") as Lang.String; // System.println((data.get("attributes") as Lang.Dictionary).get("friendly_name") + " State=" + state); if (getLabel().equals("...")) { @@ -129,7 +129,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { default: // System.println("HomeAssistantToggleMenuItem onReturnGetState(): Unhandled HTTP response code = " + responseCode); - ErrorView.show(RezStrings.getUnhandledHttpErr() + responseCode); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) + responseCode); } getApp().setApiStatus(status); } @@ -137,12 +137,12 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { function getState() as Void { if (! System.getDeviceSettings().phoneConnected) { // System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call."); - ErrorView.show(RezStrings.getNoPhone() + "."); - getApp().setApiStatus(RezStrings.getUnavailable()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); + getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable)); } else if (! System.getDeviceSettings().connectionAvailable) { // System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call."); - ErrorView.show(RezStrings.getNoInternet() + "."); - getApp().setApiStatus(RezStrings.getUnavailable()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) + "."); + getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable)); } else { var url = Settings.getApiUrl() + "/states/" + mData.get("entity_id"); // System.println("HomeAssistantToggleMenuItem getState() URL=" + url); @@ -167,32 +167,32 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: " + responseCode); // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Data: " + data); - var status = RezStrings.getUnavailable(); + var status = WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String; switch (responseCode) { case Communications.BLE_HOST_TIMEOUT: case Communications.BLE_CONNECTION_UNAVAILABLE: // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed."); - ErrorView.show(RezStrings.getNoPhone() + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); break; case Communications.BLE_QUEUE_FULL: // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: BLE_QUEUE_FULL, API calls too rapid."); - ErrorView.show(RezStrings.getApiFlood()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood)); break; case Communications.NETWORK_REQUEST_TIMED_OUT: // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection."); - ErrorView.show(RezStrings.getNoResponse()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse)); break; case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE: // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned."); - ErrorView.show(RezStrings.getNoJson()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson)); break; case 404: // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: 404, page not found. Check API URL setting."); - ErrorView.show(RezStrings.getApiUrlNotFound()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound)); break; case 200: @@ -205,12 +205,12 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { setUiToggle(state); } } - status = RezStrings.getAvailable(); + status = WatchUi.loadResource($.Rez.Strings.Available) as Lang.String; break; default: // System.println("HomeAssistantToggleMenuItem onReturnSetState(): Unhandled HTTP response code = " + responseCode); - ErrorView.show(RezStrings.getUnhandledHttpErr() + responseCode); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) + responseCode); } getApp().setApiStatus(status); } @@ -220,12 +220,12 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { // System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call."); // Toggle the UI back setEnabled(!isEnabled()); - ErrorView.show(RezStrings.getNoPhone() + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); } else if (! System.getDeviceSettings().connectionAvailable) { // System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call."); // Toggle the UI back setEnabled(!isEnabled()); - ErrorView.show(RezStrings.getNoInternet() + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) + "."); } else { // Updated SDK and got a new error // ERROR: venu: Cannot find symbol ':substring' on type 'PolyType'. diff --git a/source/RezStrings.mc b/source/RezStrings.mc deleted file mode 100644 index 3109b4f..0000000 --- a/source/RezStrings.mc +++ /dev/null @@ -1,199 +0,0 @@ -//----------------------------------------------------------------------------------- -// -// 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: -// -// Load the strings centrally once rather than initialising locally within separate -// classes. This is to solve a problem with out of memory errors in some devices, -// e.g. Vivoactive 3. -// -//----------------------------------------------------------------------------------- - -using Toybox.Lang; -using Toybox.WatchUi; - -class RezStrings { - - (:glance) - private static var strAppName as Lang.String or Null; - private static var strConfirm as Lang.String or Null; - private static var strExecuted as Lang.String or Null; - private static var strNoPhone as Lang.String or Null; - private static var strNoInternet as Lang.String or Null; - private static var strNoResponse as Lang.String or Null; - private static var strNoApiKey as Lang.String or Null; - private static var strNoApiUrl as Lang.String or Null; - private static var strNoConfigUrl as Lang.String or Null; - private static var strApiFlood as Lang.String or Null; - private static var strApiUrlNotFound as Lang.String or Null; - private static var strConfigUrlNotFound as Lang.String or Null; - private static var strNoJson as Lang.String or Null; - private static var strUnhandledHttpErr as Lang.String or Null; - private static var strTrailingSlashErr as Lang.String or Null; - private static var strWebhookFailed as Lang.String or Null; - private static var strTemplateError as Lang.String or Null; - (:glance) - private static var strAvailable as Lang.String or Null; - (:glance) - private static var strChecking as Lang.String or Null; - (:glance) - private static var strUnavailable as Lang.String or Null; - (:glance) - private static var strUnconfigured as Lang.String or Null; - (:glance) - private static var strCached as Lang.String or Null; - (:glance) - private static var strGlanceMenu as Lang.String or Null; - private static var strMemory as Lang.String or Null; - - // Can't initialise a constant directly, have to be initialised via a function - // for 'WatchUi.loadResource' to be available. - (:glance) - static function update_glance() { - strAppName = WatchUi.loadResource($.Rez.Strings.AppName); - strAvailable = WatchUi.loadResource($.Rez.Strings.Available); - strChecking = WatchUi.loadResource($.Rez.Strings.Checking); - strUnavailable = WatchUi.loadResource($.Rez.Strings.Unavailable); - strUnconfigured = WatchUi.loadResource($.Rez.Strings.Unconfigured); - strCached = WatchUi.loadResource($.Rez.Strings.Cached); - strGlanceMenu = WatchUi.loadResource($.Rez.Strings.GlanceMenu); - } - - // Can't initialise a constant directly, have to be initialised via a function - // for 'WatchUi.loadResource' to be available. - static function update() { - update_glance(); - strConfirm = WatchUi.loadResource($.Rez.Strings.Confirm); - strExecuted = WatchUi.loadResource($.Rez.Strings.Executed); - strNoPhone = WatchUi.loadResource($.Rez.Strings.NoPhone); - strNoInternet = WatchUi.loadResource($.Rez.Strings.NoInternet); - strNoResponse = WatchUi.loadResource($.Rez.Strings.NoResponse); - strNoApiKey = WatchUi.loadResource($.Rez.Strings.NoAPIKey); - strNoApiUrl = WatchUi.loadResource($.Rez.Strings.NoApiUrl); - strNoConfigUrl = WatchUi.loadResource($.Rez.Strings.NoConfigUrl); - strApiFlood = WatchUi.loadResource($.Rez.Strings.ApiFlood); - strApiUrlNotFound = WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound); - strConfigUrlNotFound = WatchUi.loadResource($.Rez.Strings.ConfigUrlNotFound); - strNoJson = WatchUi.loadResource($.Rez.Strings.NoJson); - strUnhandledHttpErr = WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr); - strTrailingSlashErr = WatchUi.loadResource($.Rez.Strings.TrailingSlashErr); - strWebhookFailed = WatchUi.loadResource($.Rez.Strings.WebhookFailed); - strTemplateError = WatchUi.loadResource($.Rez.Strings.TemplateError); - strMemory = WatchUi.loadResource($.Rez.Strings.Memory); - } - - (:glance) - static function getAppName() as Lang.String { - return strAppName; - } - - static function getConfirm() as Lang.String { - return strConfirm; - } - - static function getExecuted() as Lang.String { - return strExecuted; - } - - static function getNoPhone() as Lang.String { - return strNoPhone; - } - - static function getNoInternet() as Lang.String { - return strNoInternet; - } - - static function getNoResponse() as Lang.String { - return strNoResponse; - } - - static function getNoApiKey() as Lang.String { - return strNoApiKey; - } - - static function getNoApiUrl() as Lang.String { - return strNoApiUrl; - } - - static function getNoConfigUrl() as Lang.String { - return strNoConfigUrl; - } - - static function getApiFlood() as Lang.String { - return strApiFlood; - } - - static function getApiUrlNotFound() as Lang.String { - return strApiUrlNotFound; - } - - static function getConfigUrlNotFound() as Lang.String { - return strConfigUrlNotFound; - } - - static function getNoJson() as Lang.String { - return strNoJson; - } - - static function getUnhandledHttpErr() as Lang.String { - return strUnhandledHttpErr; - } - - static function getTrailingSlashErr() as Lang.String { - return strTrailingSlashErr; - } - - static function getWebhookFailed() as Lang.String { - return strWebhookFailed; - } - - static function getTemplateError() as Lang.String { - return strTemplateError; - } - - (:glance) - static function getAvailable() as Lang.String { - return strAvailable; - } - - (:glance) - static function getChecking() as Lang.String { - return strChecking; - } - - (:glance) - static function getUnavailable() as Lang.String { - return strUnavailable; - } - - (:glance) - static function getUnconfigured() as Lang.String { - return strUnconfigured; - } - - (:glance) - static function getCached() as Lang.String { - return strCached; - } - - (:glance) - static function getGlanceMenu() as Lang.String { - return strGlanceMenu; - } - - static function getMemory() as Lang.String { - return strMemory; - } - -} diff --git a/source/RootView.mc b/source/RootView.mc index 1fc3403..4ecc7a2 100644 --- a/source/RootView.mc +++ b/source/RootView.mc @@ -61,7 +61,7 @@ class RootView extends ScalableView { var w = dc.getWidth(); mTitle = new WatchUi.Text({ - :text => RezStrings.getAppName(), + :text => WatchUi.loadResource($.Rez.Strings.AppName), :color => Graphics.COLOR_WHITE, :font => Graphics.FONT_TINY, :justification => Graphics.TEXT_JUSTIFY_CENTER | Graphics.TEXT_JUSTIFY_VCENTER, @@ -78,7 +78,7 @@ class RootView extends ScalableView { :locY => pixelsForScreen(50.0) }); mApiStatus = new WatchUi.Text({ - :text => RezStrings.getChecking(), + :text => WatchUi.loadResource($.Rez.Strings.Checking), :color => Graphics.COLOR_WHITE, :font => Graphics.FONT_XTINY, :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER, @@ -86,7 +86,7 @@ class RootView extends ScalableView { :locY => pixelsForScreen(50.0) }); mMenuText = new WatchUi.Text({ - :text => RezStrings.getGlanceMenu() + ":", + :text => WatchUi.loadResource($.Rez.Strings.GlanceMenu) + ":", :color => Graphics.COLOR_WHITE, :font => Graphics.FONT_XTINY, :justification => Graphics.TEXT_JUSTIFY_RIGHT | Graphics.TEXT_JUSTIFY_VCENTER, @@ -94,7 +94,7 @@ class RootView extends ScalableView { :locY => pixelsForScreen(60.0) }); mMenuStatus = new WatchUi.Text({ - :text => RezStrings.getChecking(), + :text => WatchUi.loadResource($.Rez.Strings.Checking), :color => Graphics.COLOR_WHITE, :font => Graphics.FONT_XTINY, :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER, @@ -102,7 +102,7 @@ class RootView extends ScalableView { :locY => pixelsForScreen(60.0) }); mMemText = new WatchUi.Text({ - :text => RezStrings.getMemory() + ":", + :text => WatchUi.loadResource($.Rez.Strings.Memory) + ":", :color => Graphics.COLOR_WHITE, :font => Graphics.FONT_XTINY, :justification => Graphics.TEXT_JUSTIFY_RIGHT | Graphics.TEXT_JUSTIFY_VCENTER, @@ -110,7 +110,7 @@ class RootView extends ScalableView { :locY => pixelsForScreen(70.0) }); mMemStatus = new WatchUi.Text({ - :text => RezStrings.getChecking(), + :text => WatchUi.loadResource($.Rez.Strings.Checking), :color => Graphics.COLOR_WHITE, :font => Graphics.FONT_XTINY, :justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER, diff --git a/source/WebhookManager.mc b/source/WebhookManager.mc index 2b76c91..1567332 100644 --- a/source/WebhookManager.mc +++ b/source/WebhookManager.mc @@ -33,17 +33,17 @@ class WebhookManager { case Communications.BLE_HOST_TIMEOUT: case Communications.BLE_CONNECTION_UNAVAILABLE: // System.println("WebhookManager onReturnRequestWebhookId() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed."); - ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getNoPhone() + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); break; case Communications.BLE_QUEUE_FULL: // System.println("WebhookManager onReturnRequestWebhookId() Response Code: BLE_QUEUE_FULL, API calls too rapid."); - ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getApiFlood()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.ApiFlood)); break; case Communications.NETWORK_REQUEST_TIMED_OUT: // System.println("WebhookManager onReturnRequestWebhookId() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection."); - ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getNoResponse()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.NoResponse)); break; case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY: @@ -53,13 +53,13 @@ class WebhookManager { case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE: // System.println("WebhookManager onReturnRequestWebhookId() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned."); Settings.unsetIsBatteryLevelEnabled(); - ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getNoJson()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.NoJson)); break; case 404: // System.println("WebhookManager onReturnRequestWebhookId() Response Code: 404, page not found. Check API URL setting."); Settings.unsetIsBatteryLevelEnabled(); - ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getApiUrlNotFound()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound)); break; case 201: @@ -89,14 +89,14 @@ class WebhookManager { } else { // System.println("WebhookManager onReturnRequestWebhookId(): No webhook id in response data."); Settings.unsetIsBatteryLevelEnabled(); - ErrorView.show(RezStrings.getWebhookFailed()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed)); } break; default: // System.println("WebhookManager onReturnRequestWebhookId(): Unhandled HTTP response code = " + responseCode); Settings.unsetIsBatteryLevelEnabled(); - ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getUnhandledHttpErr() + responseCode); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) + responseCode); } } @@ -107,7 +107,7 @@ class WebhookManager { { "device_id" => System.getDeviceSettings().uniqueIdentifier, "app_id" => "garmin_home_assistant", - "app_name" => RezStrings.getAppName(), + "app_name" => WatchUi.loadResource($.Rez.Strings.AppName), "app_version" => "", "device_name" => "Garmin Watch", "manufacturer" => "Garmin", @@ -135,19 +135,19 @@ class WebhookManager { case Communications.BLE_CONNECTION_UNAVAILABLE: // System.println("WebhookManager onReturnRegisterWebhookSensor() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed."); Settings.unsetWebhookId(); - ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getNoPhone() + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); break; case Communications.BLE_QUEUE_FULL: // System.println("WebhookManager onReturnRegisterWebhookSensor() Response Code: BLE_QUEUE_FULL, API calls too rapid."); Settings.unsetWebhookId(); - ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getApiFlood()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.ApiFlood)); break; case Communications.NETWORK_REQUEST_TIMED_OUT: // System.println("WebhookManager onReturnRegisterWebhookSensor() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection."); Settings.unsetWebhookId(); - ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getNoResponse()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.NoResponse)); break; case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY: @@ -159,14 +159,14 @@ class WebhookManager { // System.println("WebhookManager onReturnRegisterWebhookSensor() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned."); Settings.unsetWebhookId(); Settings.unsetIsBatteryLevelEnabled(); - ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getNoJson()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.NoJson)); break; case 404: // System.println("WebhookManager onReturnRequestWebhookId() Response Code: 404, page not found. Check API URL setting."); Settings.unsetWebhookId(); Settings.unsetIsBatteryLevelEnabled(); - ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getApiUrlNotFound()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound)); break; case 201: @@ -177,7 +177,7 @@ class WebhookManager { // System.println("WebhookManager onReturnRegisterWebhookSensor(): Failure"); Settings.unsetWebhookId(); Settings.unsetIsBatteryLevelEnabled(); - ErrorView.show(RezStrings.getWebhookFailed()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed)); } break; @@ -185,7 +185,7 @@ class WebhookManager { // System.println("WebhookManager onReturnRequestWebhookId(): Unhandled HTTP response code = " + responseCode); Settings.unsetWebhookId(); Settings.unsetIsBatteryLevelEnabled(); - ErrorView.show(RezStrings.getWebhookFailed() + "\n" + RezStrings.getUnhandledHttpErr() + responseCode); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) + responseCode); } }