diff --git a/source/HomeAssistantApp.mc b/source/HomeAssistantApp.mc index 3044179..f2827cd 100644 --- a/source/HomeAssistantApp.mc +++ b/source/HomeAssistantApp.mc @@ -89,30 +89,33 @@ class HomeAssistantApp extends Application.AppBase { function getInitialView() as Lang.Array? { mIsApp = true; mQuitTimer = new QuitTimer(); - RezStrings.update(); - mApiStatus = RezStrings.getChecking(); - mMenuStatus = RezStrings.getChecking(); + // RezStrings.update(); + mApiStatus = WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String; + mMenuStatus = WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String; Settings.update(); if (Settings.getApiKey().length() == 0) { // System.println("HomeAssistantApp getInitialView(): No API key in the application Settings."); - return ErrorView.create(RezStrings.getNoApiKey() + "."); + return ErrorView.create(WatchUi.loadResource($.Rez.Strings.NoAPIKey) as Lang.String + "."); } else if (Settings.getApiUrl().length() == 0) { // System.println("HomeAssistantApp getInitialView(): No API URL in the application Settings."); - return ErrorView.create(RezStrings.getNoApiUrl() + "."); + return ErrorView.create(WatchUi.loadResource($.Rez.Strings.NoApiUrl) as Lang.String + "."); } else if (Settings.getApiUrl().substring(-1, Settings.getApiUrl().length()).equals("/")) { // System.println("HomeAssistantApp getInitialView(): API URL must not have a trailing slash '/'."); - return ErrorView.create(RezStrings.getTrailingSlashErr() + "."); + return ErrorView.create(WatchUi.loadResource($.Rez.Strings.TrailingSlashErr) as Lang.String + "."); } else if (Settings.getConfigUrl().length() == 0) { // System.println("HomeAssistantApp getInitialView(): No configuration URL in the application settings."); - return ErrorView.create(RezStrings.getNoConfigUrl() + "."); + return ErrorView.create(WatchUi.loadResource($.Rez.Strings.NoConfigUrl) as Lang.String + "."); } else if (! System.getDeviceSettings().phoneConnected) { // System.println("HomeAssistantApp fetchMenuConfig(): No Phone connection, skipping API call."); - return ErrorView.create(RezStrings.getNoPhone() + "."); + return ErrorView.create(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + "."); } else if (! System.getDeviceSettings().connectionAvailable) { // System.println("HomeAssistantApp fetchMenuConfig(): No Internet connection, skipping API call."); - return ErrorView.create(RezStrings.getNoInternet() + "."); + return ErrorView.create(WatchUi.loadResource($.Rez.Strings.NoInternet) as Lang.String + "."); } else { + var stats = System.getSystemStats(); + var memUsed = (100f * stats.usedMemory) / stats.totalMemory; + System.println("Before menu fetch: used = " + stats.usedMemory + ", total = " + stats.totalMemory + ", " + memUsed + "%"); var isCached = fetchMenuConfig(); fetchApiStatus(); if (WidgetApp.isWidget) { @@ -134,50 +137,50 @@ class HomeAssistantApp extends Application.AppBase { // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: " + responseCode); // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Data: " + data); - mMenuStatus = RezStrings.getUnavailable(); + mMenuStatus = WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String; switch (responseCode) { case Communications.BLE_HOST_TIMEOUT: case Communications.BLE_CONNECTION_UNAVAILABLE: // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed."); if (!mIsGlance) { - ErrorView.show(RezStrings.getNoPhone() + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + "."); } break; case Communications.BLE_QUEUE_FULL: // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: BLE_QUEUE_FULL, API calls too rapid."); if (!mIsGlance) { - ErrorView.show(RezStrings.getApiFlood()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood) as Lang.String); } break; case Communications.NETWORK_REQUEST_TIMED_OUT: // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection."); if (!mIsGlance) { - ErrorView.show(RezStrings.getNoResponse()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse) as Lang.String); } break; case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE: // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned."); if (!mIsGlance) { - ErrorView.show(RezStrings.getNoJson()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String); } break; case 404: // System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: 404, page not found. Check Configuration URL setting."); if (!mIsGlance) { - ErrorView.show(RezStrings.getConfigUrlNotFound()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ConfigUrlNotFound) as Lang.String); } break; case 200: if (Settings.getCacheConfig()) { Storage.setValue("menu", data as Lang.Dictionary); - mMenuStatus = RezStrings.getCached(); + mMenuStatus = WatchUi.loadResource($.Rez.Strings.Cached) as Lang.String; } else { - mMenuStatus = RezStrings.getAvailable(); + mMenuStatus = WatchUi.loadResource($.Rez.Strings.Available) as Lang.String; } if (!mIsGlance) { buildMenu(data); @@ -190,7 +193,7 @@ class HomeAssistantApp extends Application.AppBase { default: // System.println("HomeAssistantApp onReturnFetchMenuConfig(): Unhandled HTTP response code = " + responseCode); if (!mIsGlance) { - ErrorView.show(RezStrings.getUnhandledHttpErr() + responseCode); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) as Lang.String + responseCode); } break; } @@ -202,7 +205,7 @@ class HomeAssistantApp extends Application.AppBase { (:glance) function fetchMenuConfig() as Lang.Boolean { if (Settings.getConfigUrl().equals("")) { - mMenuStatus = RezStrings.getUnconfigured(); + mMenuStatus = WatchUi.loadResource($.Rez.Strings.Unconfigured) as Lang.String; WatchUi.requestUpdate(); } else { var menu = Storage.getValue("menu") as Lang.Dictionary; @@ -217,17 +220,17 @@ class HomeAssistantApp extends Application.AppBase { if (mIsGlance) { WatchUi.requestUpdate(); } else { - ErrorView.show(RezStrings.getNoPhone() + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + "."); } - mMenuStatus = RezStrings.getUnavailable(); + mMenuStatus = WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String; } else if (! System.getDeviceSettings().connectionAvailable) { // System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call."); if (mIsGlance) { WatchUi.requestUpdate(); } else { - ErrorView.show(RezStrings.getNoInternet() + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) as Lang.String + "."); } - mMenuStatus = RezStrings.getUnavailable(); + mMenuStatus = WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String; } else { Communications.makeWebRequest( Settings.getConfigUrl(), @@ -240,7 +243,7 @@ class HomeAssistantApp extends Application.AppBase { ); } } else { - mMenuStatus = RezStrings.getCached(); + mMenuStatus = WatchUi.loadResource($.Rez.Strings.Cached) as Lang.String; WatchUi.requestUpdate(); if (!mIsGlance) { buildMenu(menu); @@ -252,7 +255,16 @@ class HomeAssistantApp extends Application.AppBase { } private function buildMenu(menu as Lang.Dictionary) { + var stats = System.getSystemStats(); + var memUsed = (100f * stats.usedMemory) / stats.totalMemory; + System.println("Before menu construction: used = " + stats.usedMemory + ", total = " + stats.totalMemory + ", " + memUsed + "%"); + mHaMenu = new HomeAssistantView(menu, null); + + stats = System.getSystemStats(); + memUsed = (100f * stats.usedMemory) / stats.totalMemory; + System.println("After menu construction: used = " + stats.usedMemory + ", total = " + stats.totalMemory + ", " + memUsed + "%"); + mQuitTimer.begin(); if (Settings.getIsWidgetStartNoTap()) { // As soon as the menu has been fetched start show the menu of items. @@ -275,41 +287,41 @@ class HomeAssistantApp extends Application.AppBase { // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: " + responseCode); // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Data: " + data); - mApiStatus = RezStrings.getUnavailable(); + mApiStatus = WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String; switch (responseCode) { case Communications.BLE_HOST_TIMEOUT: case Communications.BLE_CONNECTION_UNAVAILABLE: // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed."); if (!mIsGlance) { - ErrorView.show(RezStrings.getNoPhone() + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + "."); } break; case Communications.BLE_QUEUE_FULL: // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: BLE_QUEUE_FULL, API calls too rapid."); if (!mIsGlance) { - ErrorView.show(RezStrings.getApiFlood()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood) as Lang.String); } break; case Communications.NETWORK_REQUEST_TIMED_OUT: // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection."); if (!mIsGlance) { - ErrorView.show(RezStrings.getNoResponse()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse) as Lang.String); } break; case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE: // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned."); if (!mIsGlance) { - ErrorView.show(RezStrings.getNoJson()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String); } break; case 404: // System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: 404, page not found. Check Configuration URL setting."); if (!mIsGlance) { - ErrorView.show(RezStrings.getConfigUrlNotFound()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ConfigUrlNotFound) as Lang.String); } break; @@ -319,7 +331,7 @@ class HomeAssistantApp extends Application.AppBase { msg = data.get("message"); } if (msg.equals("API running.")) { - mApiStatus = RezStrings.getAvailable(); + mApiStatus = WatchUi.loadResource($.Rez.Strings.Available) as Lang.String; } else { if (!mIsGlance) { ErrorView.show("API " + mApiStatus + "."); @@ -330,7 +342,7 @@ class HomeAssistantApp extends Application.AppBase { default: // System.println("HomeAssistantApp onReturnFetchApiStatus(): Unhandled HTTP response code = " + responseCode); if (!mIsGlance) { - ErrorView.show(RezStrings.getUnhandledHttpErr() + responseCode); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) as Lang.String + responseCode); } } WatchUi.requestUpdate(); @@ -339,24 +351,24 @@ class HomeAssistantApp extends Application.AppBase { (:glance) function fetchApiStatus() as Void { if (Settings.getApiUrl().equals("")) { - mApiStatus = RezStrings.getUnconfigured(); + mApiStatus = WatchUi.loadResource($.Rez.Strings.Unconfigured) as Lang.String; WatchUi.requestUpdate(); } else { if (! System.getDeviceSettings().phoneConnected) { // System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call."); - mApiStatus = RezStrings.getUnavailable(); + mApiStatus = WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String; if (mIsGlance) { WatchUi.requestUpdate(); } else { - ErrorView.show(RezStrings.getNoPhone() + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + "."); } } else if (! System.getDeviceSettings().connectionAvailable) { // System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call."); - mApiStatus = RezStrings.getUnavailable(); + mApiStatus = WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String; if (mIsGlance) { WatchUi.requestUpdate(); } else { - ErrorView.show(RezStrings.getNoInternet() + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) as Lang.String + "."); } } else { Communications.makeWebRequest( @@ -404,7 +416,7 @@ class HomeAssistantApp extends Application.AppBase { if (itu == null) { // System.println("HomeAssistantApp updateNextMenuItem(): No menu items to update"); if (!mIsGlance) { - ErrorView.show(RezStrings.getConfigUrlNotFound()); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ConfigUrlNotFound) as Lang.String); } } else { itu[mNextItemToUpdate].getState(); @@ -418,9 +430,9 @@ class HomeAssistantApp extends Application.AppBase { function getGlanceView() as Lang.Array or Null { mIsGlance = true; - RezStrings.update_glance(); - mApiStatus = RezStrings.getChecking(); - mMenuStatus = RezStrings.getChecking(); + // RezStrings.update_glance(); + mApiStatus = WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String; + mMenuStatus = WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String; updateStatus(); Settings.update(); mTimer = new Timer.Timer(); diff --git a/source/HomeAssistantConfirmation.mc b/source/HomeAssistantConfirmation.mc index 1efec56..c3b7f27 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(WatchUi.loadResource($.Rez.Strings.Confirm)); + WatchUi.Confirmation.initialize(WatchUi.loadResource($.Rez.Strings.Confirm) as Lang.String); } } diff --git a/source/HomeAssistantGlanceView.mc b/source/HomeAssistantGlanceView.mc index 4ecc8c9..0d26204 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(WatchUi.loadResource($.Rez.Strings.GlanceMenu), Graphics.FONT_XTINY); + var tw = dc.getTextWidthInPixels(WatchUi.loadResource($.Rez.Strings.GlanceMenu) as Lang.String, Graphics.FONT_XTINY); mTitle = new WatchUi.Text({ - :text => WatchUi.loadResource($.Rez.Strings.AppName), + :text => WatchUi.loadResource($.Rez.Strings.AppName) as Lang.String, :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 => WatchUi.loadResource($.Rez.Strings.Checking), + :text => WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String, :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 => WatchUi.loadResource($.Rez.Strings.GlanceMenu) + ":", + :text => WatchUi.loadResource($.Rez.Strings.GlanceMenu) as Lang.String + ":", :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 => WatchUi.loadResource($.Rez.Strings.Checking), + :text => WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String, :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 d0d448a..9542634 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(WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + "."); break; case Communications.BLE_QUEUE_FULL: // System.println("HomeAssistantService onReturnCall() Response Code: BLE_QUEUE_FULL, API calls too rapid."); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood) as Lang.String); break; case Communications.NETWORK_REQUEST_TIMED_OUT: // System.println("HomeAssistantService onReturnCall() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection."); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse) as Lang.String); break; case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY: @@ -70,12 +70,12 @@ 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(WatchUi.loadResource($.Rez.Strings.NoJson)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String); break; case 404: // System.println("HomeAssistantService onReturnCall() Response Code: 404, page not found. Check API URL setting."); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound) as Lang.String); break; case 200: @@ -102,7 +102,7 @@ class HomeAssistantService { default: // System.println("HomeAssistantService onReturnCall(): Unhandled HTTP response code = " + responseCode); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) + responseCode); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) as Lang.String + 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(WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + "."); } else if (! System.getDeviceSettings().connectionAvailable) { // System.println("HomeAssistantService call(): No Internet connection, skipping API call."); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) as Lang.String + "."); } 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 5dac253..23c683e 100644 --- a/source/HomeAssistantTemplateMenuItem.mc +++ b/source/HomeAssistantTemplateMenuItem.mc @@ -92,22 +92,22 @@ class HomeAssistantTemplateMenuItem extends WatchUi.IconMenuItem { 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(WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + "."); break; case Communications.BLE_QUEUE_FULL: // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: BLE_QUEUE_FULL, API calls too rapid."); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood) as Lang.String); break; case Communications.NETWORK_REQUEST_TIMED_OUT: // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection."); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse) as Lang.String); 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(WatchUi.loadResource($.Rez.Strings.NoJson)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String); break; case Communications.NETWORK_RESPONSE_OUT_OF_MEMORY: @@ -121,12 +121,12 @@ class HomeAssistantTemplateMenuItem extends WatchUi.IconMenuItem { case 404: // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: 404, page not found. Check API URL setting."); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound) as Lang.String); break; case 400: // System.println("HomeAssistantTemplateMenuItem onReturnGetState() Response Code: 400, bad request. Template error."); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.TemplateError)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.TemplateError) as Lang.String); break; case 200: @@ -139,7 +139,7 @@ class HomeAssistantTemplateMenuItem extends WatchUi.IconMenuItem { default: // System.println("HomeAssistantTemplateMenuItem onReturnGetState(): Unhandled HTTP response code = " + responseCode); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) + responseCode); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) as Lang.String + 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(WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); - getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + "."); + getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String); } else if (! System.getDeviceSettings().connectionAvailable) { // System.println("HomeAssistantTemplateMenuItem getState(): No Internet connection, skipping API call."); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) + "."); - getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) as Lang.String + "."); + getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String); } 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 3f084fc..2402c8c 100644 --- a/source/HomeAssistantToggleMenuItem.mc +++ b/source/HomeAssistantToggleMenuItem.mc @@ -67,22 +67,22 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { 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(WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + "."); break; case Communications.BLE_QUEUE_FULL: // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: BLE_QUEUE_FULL, API calls too rapid."); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood) as Lang.String); break; case Communications.NETWORK_REQUEST_TIMED_OUT: // System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection."); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse) as Lang.String); 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(WatchUi.loadResource($.Rez.Strings.NoJson)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String); 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(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound) as Lang.String); } break; @@ -129,7 +129,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { default: // System.println("HomeAssistantToggleMenuItem onReturnGetState(): Unhandled HTTP response code = " + responseCode); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) + responseCode); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) as Lang.String + 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(WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); - getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + "."); + getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String); } else if (! System.getDeviceSettings().connectionAvailable) { // System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call."); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) + "."); - getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) as Lang.String + "."); + getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String); } else { var url = Settings.getApiUrl() + "/states/" + mData.get("entity_id"); // System.println("HomeAssistantToggleMenuItem getState() URL=" + url); @@ -172,27 +172,27 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { 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(WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + "."); break; case Communications.BLE_QUEUE_FULL: // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: BLE_QUEUE_FULL, API calls too rapid."); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood) as Lang.String); break; case Communications.NETWORK_REQUEST_TIMED_OUT: // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection."); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse) as Lang.String); 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(WatchUi.loadResource($.Rez.Strings.NoJson)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String); break; case 404: // System.println("HomeAssistantToggleMenuItem onReturnSetState() Response Code: 404, page not found. Check API URL setting."); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound) as Lang.String); break; case 200: @@ -210,7 +210,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { default: // System.println("HomeAssistantToggleMenuItem onReturnSetState(): Unhandled HTTP response code = " + responseCode); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) + responseCode); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) as Lang.String + 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(WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + "."); } else if (! System.getDeviceSettings().connectionAvailable) { // System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call."); // Toggle the UI back setEnabled(!isEnabled()); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) as Lang.String + "."); } else { // Updated SDK and got a new error // ERROR: venu: Cannot find symbol ':substring' on type 'PolyType'. diff --git a/source/RootView.mc b/source/RootView.mc index 4ecc7a2..6edef1c 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 => WatchUi.loadResource($.Rez.Strings.AppName), + :text => WatchUi.loadResource($.Rez.Strings.AppName) as Lang.String, :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 => WatchUi.loadResource($.Rez.Strings.Checking), + :text => WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String, :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 => WatchUi.loadResource($.Rez.Strings.GlanceMenu) + ":", + :text => WatchUi.loadResource($.Rez.Strings.GlanceMenu) as Lang.String + ":", :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 => WatchUi.loadResource($.Rez.Strings.Checking), + :text => WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String, :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 => WatchUi.loadResource($.Rez.Strings.Memory) + ":", + :text => WatchUi.loadResource($.Rez.Strings.Memory) as Lang.String + ":", :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 => WatchUi.loadResource($.Rez.Strings.Checking), + :text => WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String, :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 1567332..3e38f72 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(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String + "\n" + WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + "."); break; case Communications.BLE_QUEUE_FULL: // System.println("WebhookManager onReturnRequestWebhookId() Response Code: BLE_QUEUE_FULL, API calls too rapid."); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.ApiFlood)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String + "\n" + WatchUi.loadResource($.Rez.Strings.ApiFlood) as Lang.String); break; case Communications.NETWORK_REQUEST_TIMED_OUT: // System.println("WebhookManager onReturnRequestWebhookId() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection."); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.NoResponse)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String + "\n" + WatchUi.loadResource($.Rez.Strings.NoResponse) as Lang.String); 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(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.NoJson)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String + "\n" + WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String); break; case 404: // System.println("WebhookManager onReturnRequestWebhookId() Response Code: 404, page not found. Check API URL setting."); Settings.unsetIsBatteryLevelEnabled(); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String + "\n" + WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound) as Lang.String); break; case 201: @@ -89,14 +89,14 @@ class WebhookManager { } else { // System.println("WebhookManager onReturnRequestWebhookId(): No webhook id in response data."); Settings.unsetIsBatteryLevelEnabled(); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String); } break; default: // System.println("WebhookManager onReturnRequestWebhookId(): Unhandled HTTP response code = " + responseCode); Settings.unsetIsBatteryLevelEnabled(); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) + responseCode); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String + "\n" + WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) as Lang.String + responseCode); } } @@ -107,7 +107,7 @@ class WebhookManager { { "device_id" => System.getDeviceSettings().uniqueIdentifier, "app_id" => "garmin_home_assistant", - "app_name" => WatchUi.loadResource($.Rez.Strings.AppName), + "app_name" => WatchUi.loadResource($.Rez.Strings.AppName) as Lang.String, "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(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.NoPhone) + "."); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String + "\n" + WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String + "."); break; case Communications.BLE_QUEUE_FULL: // System.println("WebhookManager onReturnRegisterWebhookSensor() Response Code: BLE_QUEUE_FULL, API calls too rapid."); Settings.unsetWebhookId(); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.ApiFlood)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String + "\n" + WatchUi.loadResource($.Rez.Strings.ApiFlood) as Lang.String); break; case Communications.NETWORK_REQUEST_TIMED_OUT: // System.println("WebhookManager onReturnRegisterWebhookSensor() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection."); Settings.unsetWebhookId(); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.NoResponse)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String + "\n" + WatchUi.loadResource($.Rez.Strings.NoResponse) as Lang.String); 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(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.NoJson)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String + "\n" + WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String); break; case 404: // System.println("WebhookManager onReturnRequestWebhookId() Response Code: 404, page not found. Check API URL setting."); Settings.unsetWebhookId(); Settings.unsetIsBatteryLevelEnabled(); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String + "\n" + WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound) as Lang.String); break; case 201: @@ -177,7 +177,7 @@ class WebhookManager { // System.println("WebhookManager onReturnRegisterWebhookSensor(): Failure"); Settings.unsetWebhookId(); Settings.unsetIsBatteryLevelEnabled(); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed)); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String); } break; @@ -185,7 +185,7 @@ class WebhookManager { // System.println("WebhookManager onReturnRequestWebhookId(): Unhandled HTTP response code = " + responseCode); Settings.unsetWebhookId(); Settings.unsetIsBatteryLevelEnabled(); - ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) + "\n" + WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) + responseCode); + ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String + "\n" + WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) as Lang.String + responseCode); } }