import Toybox.Lang; import Toybox.WatchUi; // Routes menu input. UP/DOWN rotate the ring. Hardware START/STOP // opens the selected item. Screen tap rotates to tapped icon; // tap on already-selected icon opens it. class MenuDelegate extends WatchUi.InputDelegate { private var _view as MenuView; function initialize(view as MenuView) { InputDelegate.initialize(); _view = view; } // Hardware buttons. function onKey(evt as WatchUi.KeyEvent) as Boolean { var key = evt.getKey(); if (key == WatchUi.KEY_ENTER || key == WatchUi.KEY_START) { return _openSelected(); } if (key == WatchUi.KEY_DOWN) { _view.rotateNext(); return true; } if (key == WatchUi.KEY_UP) { _view.rotatePrev(); return true; } return false; } // Screen tap. function onTap(evt as WatchUi.ClickEvent) as Boolean { var coords = evt.getCoordinates(); var tapX = coords[0] as Number; var tapY = coords[1] as Number; var idx = _view.itemIndexAt(tapX, tapY); if (idx < 0) { return false; } if (idx == _view.selectedIndex()) { return _openSelected(); } _view.rotateTo(idx); return true; } private function _openSelected() as Boolean { var item = _view.selectedItem(); var k = item[:key] as String; if (k.equals(Config.ACTION_HISTORY)) { var view = new HistoryView(); WatchUi.pushView(view, new HistoryDelegate(view), WatchUi.SLIDE_LEFT); return true; } if (k.equals(Config.ACTION_DELETE)) { var view = new DeleteView(); WatchUi.pushView(view, new DeleteDelegate(view), WatchUi.SLIDE_LEFT); return true; } WatchUi.pushView(new LoadingView(k), new LoadingDelegate(), WatchUi.SLIDE_IMMEDIATE); return true; } }