mirror of
https://github.com/house-of-abbey/GarminHomeAssistant.git
synced 2025-06-17 20:08:33 +00:00
Update HomeAssistantApp.mc (#152)
When Settings.getPollDelay() > 0, do not wait for this time before the initial batch of updates, so the app is more responsive on opening.
This commit is contained in:
@ -27,17 +27,18 @@ using Toybox.Timer;
|
|||||||
|
|
||||||
(:glance, :background)
|
(:glance, :background)
|
||||||
class HomeAssistantApp extends Application.AppBase {
|
class HomeAssistantApp extends Application.AppBase {
|
||||||
private var mApiStatus as Lang.String or Null;
|
private var mApiStatus as Lang.String or Null;
|
||||||
private var mMenuStatus as Lang.String or Null;
|
private var mMenuStatus as Lang.String or Null;
|
||||||
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 mGlanceTimer as Timer.Timer or Null;
|
private var mGlanceTimer as Timer.Timer or Null;
|
||||||
private var mUpdateTimer as Timer.Timer or Null;
|
private var mUpdateTimer as Timer.Timer or Null;
|
||||||
// Array initialised by onReturnFetchMenuConfig()
|
// Array initialised by onReturnFetchMenuConfig()
|
||||||
private var mItemsToUpdate as Lang.Array<HomeAssistantToggleMenuItem or HomeAssistantTemplateMenuItem> or Null;
|
private var mItemsToUpdate as Lang.Array<HomeAssistantToggleMenuItem or HomeAssistantTemplateMenuItem> or Null;
|
||||||
private var mNextItemToUpdate as Lang.Number = 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
|
private var mIsApp as Lang.Boolean = false; // Or Widget
|
||||||
|
private var mIsInitUpdateCompl as Lang.Boolean = false;
|
||||||
|
|
||||||
function initialize() {
|
function initialize() {
|
||||||
AppBase.initialize();
|
AppBase.initialize();
|
||||||
@ -400,7 +401,7 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
|
|
||||||
function updateNextMenuItem() as Void {
|
function updateNextMenuItem() as Void {
|
||||||
var delay = Settings.getPollDelay();
|
var delay = Settings.getPollDelay();
|
||||||
if ((delay > 0) and (mNextItemToUpdate == 0)) {
|
if (mIsInitUpdateCompl and (delay > 0) and (mNextItemToUpdate == 0)) {
|
||||||
mUpdateTimer.start(method(:updateNextMenuItemInternal), delay, false);
|
mUpdateTimer.start(method(:updateNextMenuItemInternal), delay, false);
|
||||||
} else {
|
} else {
|
||||||
updateNextMenuItemInternal();
|
updateNextMenuItemInternal();
|
||||||
@ -412,8 +413,16 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
function updateNextMenuItemInternal() as Void {
|
function updateNextMenuItemInternal() as Void {
|
||||||
var itu = mItemsToUpdate as Lang.Array<HomeAssistantToggleMenuItem>;
|
var itu = mItemsToUpdate as Lang.Array<HomeAssistantToggleMenuItem>;
|
||||||
if (itu != null) {
|
if (itu != null) {
|
||||||
|
// System.println("HomeAssistantApp updateNextMenuItemInternal(): Doing update for item " + mNextItemToUpdate + ", mIsInitUpdateCompl=" + mIsInitUpdateCompl);
|
||||||
itu[mNextItemToUpdate].getState();
|
itu[mNextItemToUpdate].getState();
|
||||||
mNextItemToUpdate = (mNextItemToUpdate + 1) % itu.size();
|
// mNextItemToUpdate = (mNextItemToUpdate + 1) % itu.size() - But with roll-over detection
|
||||||
|
if (mNextItemToUpdate == itu.size()-1) {
|
||||||
|
// Last item completed return to the start of the list
|
||||||
|
mNextItemToUpdate = 0;
|
||||||
|
mIsInitUpdateCompl = true;
|
||||||
|
} else {
|
||||||
|
mNextItemToUpdate++;
|
||||||
|
}
|
||||||
// } else {
|
// } else {
|
||||||
// System.println("HomeAssistantApp updateNextMenuItemInternal(): No menu items to update");
|
// System.println("HomeAssistantApp updateNextMenuItemInternal(): No menu items to update");
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user