//----------------------------------------------------------------------------------- // // 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: // // Menu button that triggers a service. // //----------------------------------------------------------------------------------- using Toybox.Lang; using Toybox.WatchUi; using Toybox.Graphics; class HomeAssistantMenuItem extends WatchUi.MenuItem { private var mHomeAssistantService as HomeAssistantService; private var mService as Lang.String; private var mConfirm as Lang.Boolean; function initialize( label as Lang.String or Lang.Symbol, subLabel as Lang.String or Lang.Symbol or Null, identifier as Lang.Object or Null, service as Lang.String or Null, confirm as Lang.Boolean, options as { :alignment as WatchUi.MenuItem.Alignment, :icon as Graphics.BitmapType or WatchUi.Drawable or Lang.Symbol } or Null, haService as HomeAssistantService ) { WatchUi.MenuItem.initialize( label, subLabel, identifier, options ); mHomeAssistantService = haService; mService = service; mConfirm = confirm; } function callService() as Void { if (mConfirm) { WatchUi.pushView( new HomeAssistantConfirmation(), new HomeAssistantConfirmationDelegate(method(:onConfirm)), WatchUi.SLIDE_IMMEDIATE ); } else { onConfirm(); } } function onConfirm() as Void { mHomeAssistantService.call(mIdentifier as Lang.String, mService); } }