mirror of
https://github.com/memen45/SubMusic.git
synced 2026-02-18 00:57:39 +01:00
added dynamic menus capability added note to user for possibly hanging sync fixed sync button when accessed from ConfigureSyncView
87 lines
1.9 KiB
MonkeyC
87 lines
1.9 KiB
MonkeyC
using Toybox.WatchUi;
|
|
|
|
module SubMusic {
|
|
module Menu {
|
|
|
|
// define keys for the menu parameters
|
|
enum {
|
|
LABEL,
|
|
SUBLABEL,
|
|
METHOD,
|
|
}
|
|
|
|
class MenuView extends WatchUi.Menu2 {
|
|
|
|
private var d_menu;
|
|
private var d_created = false; // menu not created yet
|
|
|
|
function initialize(menu) {
|
|
Menu2.initialize({:title => menu.title});
|
|
|
|
d_menu = menu;
|
|
}
|
|
|
|
// update the created menu with new values
|
|
function updateMenu(items) {
|
|
for (var idx = 0; idx != items.keys().size(); ++idx) {
|
|
updateItem(makeMenuItem(items[idx]), idx);
|
|
}
|
|
}
|
|
|
|
// create the menu by adding the items
|
|
function createMenu(items) {
|
|
for (var idx = 0; idx != items.keys().size(); ++idx) {
|
|
addItem(makeMenuItem(items[idx]));
|
|
}
|
|
}
|
|
|
|
// returns a WatchUi.MenuItem from object
|
|
function makeMenuItem(item) {
|
|
return new WatchUi.MenuItem(
|
|
item[LABEL], // label
|
|
item[SUBLABEL], // sublabel
|
|
item[METHOD], // identifier (use method for simple callback)
|
|
null // options
|
|
);
|
|
}
|
|
|
|
function onShow() {
|
|
|
|
var items = d_menu.getItems();
|
|
if (d_created) {
|
|
System.println("MenuView::onShow(update)");
|
|
setTitle(d_menu.title);
|
|
updateMenu(items);
|
|
return;
|
|
}
|
|
|
|
// create menu and indicate created
|
|
System.println("MenuView::onShow(create)");
|
|
createMenu(items);
|
|
d_created = true;
|
|
}
|
|
|
|
}
|
|
|
|
class Delegate extends WatchUi.Menu2InputDelegate {
|
|
|
|
private var d_callback; // callback on Back
|
|
|
|
function initialize(callback) {
|
|
Menu2InputDelegate.initialize();
|
|
|
|
d_callback = callback;
|
|
}
|
|
|
|
function onSelect(item) {
|
|
item.getId().invoke();
|
|
}
|
|
|
|
function onBack() {
|
|
if (d_callback) { d_callback.invoke(); }
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|