mirror of
https://github.com/house-of-abbey/GarminHomeAssistant.git
synced 2025-05-01 13:12:50 +00:00
107 lines
3.4 KiB
MonkeyC
107 lines
3.4 KiB
MonkeyC
//-----------------------------------------------------------------------------------
|
|
//
|
|
// 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, 17 November 2023
|
|
//
|
|
//
|
|
// Description:
|
|
//
|
|
// MenuItems Factory.
|
|
//
|
|
//-----------------------------------------------------------------------------------
|
|
|
|
using Toybox.Application;
|
|
using Toybox.Lang;
|
|
using Toybox.WatchUi;
|
|
|
|
class HomeAssistantMenuItemFactory {
|
|
private var mMenuItemOptions as Lang.Dictionary;
|
|
private var mTapTypeIcon as WatchUi.Bitmap;
|
|
private var mGroupTypeIcon as WatchUi.Bitmap;
|
|
private var mHomeAssistantService as HomeAssistantService;
|
|
|
|
private static var instance;
|
|
|
|
private function initialize() {
|
|
mMenuItemOptions = {
|
|
:alignment => Settings.getMenuAlignment()
|
|
};
|
|
|
|
mTapTypeIcon = new WatchUi.Bitmap({
|
|
:rezId => $.Rez.Drawables.TapTypeIcon,
|
|
:locX => WatchUi.LAYOUT_HALIGN_CENTER,
|
|
:locY => WatchUi.LAYOUT_VALIGN_CENTER
|
|
});
|
|
|
|
mGroupTypeIcon = new WatchUi.Bitmap({
|
|
:rezId => $.Rez.Drawables.GroupTypeIcon,
|
|
:locX => WatchUi.LAYOUT_HALIGN_CENTER,
|
|
:locY => WatchUi.LAYOUT_VALIGN_CENTER
|
|
});
|
|
mHomeAssistantService = new HomeAssistantService();
|
|
}
|
|
|
|
static function create() as HomeAssistantMenuItemFactory {
|
|
if (instance == null) {
|
|
instance = new HomeAssistantMenuItemFactory();
|
|
}
|
|
return instance;
|
|
}
|
|
|
|
function toggle(label as Lang.String or Lang.Symbol, identifier as Lang.Object or Null) as WatchUi.MenuItem {
|
|
return new HomeAssistantToggleMenuItem(
|
|
label,
|
|
Settings.getMenuStyle() == Settings.MENU_STYLE_TEXT ? RezStrings.getLabelToggle() : null,
|
|
identifier,
|
|
false,
|
|
mMenuItemOptions
|
|
);
|
|
}
|
|
|
|
function tap(
|
|
label as Lang.String or Lang.Symbol,
|
|
identifier as Lang.Object or Null,
|
|
service as Lang.String or Null,
|
|
confirm as Lang.Boolean
|
|
) as WatchUi.MenuItem {
|
|
if (Settings.getMenuStyle() == Settings.MENU_STYLE_TEXT) {
|
|
return new HomeAssistantMenuItem(
|
|
label,
|
|
RezStrings.getMenuItemTap(),
|
|
identifier,
|
|
service,
|
|
confirm,
|
|
mMenuItemOptions,
|
|
mHomeAssistantService
|
|
);
|
|
} else {
|
|
return new HomeAssistantIconMenuItem(
|
|
label,
|
|
null,
|
|
identifier,
|
|
service,
|
|
confirm,
|
|
mTapTypeIcon,
|
|
mMenuItemOptions,
|
|
mHomeAssistantService
|
|
);
|
|
}
|
|
}
|
|
|
|
function group(definition as Lang.Dictionary) as WatchUi.MenuItem {
|
|
if (Settings.getMenuStyle() == Settings.MENU_STYLE_TEXT) {
|
|
return new HomeAssistantViewMenuItem(definition);
|
|
} else {
|
|
return new HomeAssistantViewIconMenuItem(definition, mGroupTypeIcon, mMenuItemOptions);
|
|
}
|
|
}
|
|
}
|