mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-04-24 03:29:57 -07:00
Merge branch 'feat/nfc-type-4-final' into mntm-dev
This commit is contained in:
@@ -9,9 +9,16 @@ let byteInputView = require("gui/byte_input");
|
||||
let textBoxView = require("gui/text_box");
|
||||
let dialogView = require("gui/dialog");
|
||||
let filePicker = require("gui/file_picker");
|
||||
let buttonMenuView = require("gui/button_menu");
|
||||
let buttonPanelView = require("gui/button_panel");
|
||||
let menuView = require("gui/menu");
|
||||
let numberInputView = require("gui/number_input");
|
||||
let popupView = require("gui/popup");
|
||||
let viListView = require("gui/vi_list");
|
||||
let widget = require("gui/widget");
|
||||
let icon = require("gui/icon");
|
||||
let flipper = require("flipper");
|
||||
let math = require("math");
|
||||
|
||||
// declare clock widget children
|
||||
let cuteDolphinWithWatch = icon.getBuiltin("DolphinWait_59x54");
|
||||
@@ -26,6 +33,11 @@ let stopwatchWidgetElements = [
|
||||
{ element: "button", button: "right", text: "Back" },
|
||||
];
|
||||
|
||||
// icons for the button panel
|
||||
let offIcons = [icon.getBuiltin("off_19x20"), icon.getBuiltin("off_hover_19x20")];
|
||||
let powerIcons = [icon.getBuiltin("power_19x20"), icon.getBuiltin("power_hover_19x20")];
|
||||
let settingsIcon = icon.getBuiltin("Settings_14");
|
||||
|
||||
// declare view instances
|
||||
let views = {
|
||||
loading: loadingView.make(),
|
||||
@@ -47,19 +59,57 @@ let views = {
|
||||
text: "This is a very long string that demonstrates the TextBox view. Use the D-Pad to scroll backwards and forwards.\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse rhoncus est malesuada quam egestas ultrices. Maecenas non eros a nulla eleifend vulputate et ut risus. Quisque in mauris mattis, venenatis risus eget, aliquam diam. Fusce pretium feugiat mauris, ut faucibus ex volutpat in. Phasellus volutpat ex sed gravida consectetur. Aliquam sed lectus feugiat, tristique lectus et, bibendum lacus. Ut sit amet augue eu sapien elementum aliquam quis vitae tortor. Vestibulum quis commodo odio. In elementum fermentum massa, eu pellentesque nibh cursus at. Integer eleifend lacus nec purus elementum sodales. Nulla elementum neque urna, non vulputate massa semper sed. Fusce ut nisi vitae dui blandit congue pretium vitae turpis.",
|
||||
}),
|
||||
stopwatchWidget: widget.makeWith({}, stopwatchWidgetElements),
|
||||
buttonMenu: buttonMenuView.makeWith({
|
||||
header: "Header"
|
||||
}, [
|
||||
{ type: "common", label: "Test" },
|
||||
{ type: "control", label: "Test2" },
|
||||
]),
|
||||
buttonPanel: buttonPanelView.makeWith({
|
||||
matrixSizeX: 2,
|
||||
matrixSizeY: 2,
|
||||
}, [
|
||||
{ type: "button", x: 0, y: 0, matrixX: 0, matrixY: 0, icon: offIcons[0], iconSelected: offIcons[1] },
|
||||
{ type: "button", x: 30, y: 30, matrixX: 1, matrixY: 1, icon: powerIcons[0], iconSelected: powerIcons[1] },
|
||||
{ type: "label", x: 0, y: 50, text: "Label", font: "primary" },
|
||||
]),
|
||||
menu: menuView.makeWith({}, [
|
||||
{ label: "One", icon: settingsIcon },
|
||||
{ label: "Two", icon: settingsIcon },
|
||||
{ label: "three", icon: settingsIcon },
|
||||
]),
|
||||
numberKbd: numberInputView.makeWith({
|
||||
header: "Number input",
|
||||
defaultValue: 100,
|
||||
minValue: 0,
|
||||
maxValue: 200,
|
||||
}),
|
||||
popup: popupView.makeWith({
|
||||
header: "Hello",
|
||||
text: "I'm going to be gone\nin 2 seconds",
|
||||
}),
|
||||
viList: viListView.makeWith({}, [
|
||||
{ label: "One", variants: ["1", "1.0"] },
|
||||
{ label: "Two", variants: ["2", "2.0"] },
|
||||
]),
|
||||
demos: submenuView.makeWith({
|
||||
header: "Choose a demo",
|
||||
items: [
|
||||
"Hourglass screen",
|
||||
"Empty screen",
|
||||
"Text input & Dialog",
|
||||
"Byte input",
|
||||
"Text box",
|
||||
"File picker",
|
||||
"Widget",
|
||||
"Exit app",
|
||||
],
|
||||
}),
|
||||
}, [
|
||||
"Hourglass screen",
|
||||
"Empty screen",
|
||||
"Text input & Dialog",
|
||||
"Byte input",
|
||||
"Text box",
|
||||
"File picker",
|
||||
"Widget",
|
||||
"Button menu",
|
||||
"Button panel",
|
||||
"Menu",
|
||||
"Number input",
|
||||
"Popup",
|
||||
"Var. item list",
|
||||
"Exit app",
|
||||
]),
|
||||
};
|
||||
|
||||
// Enable illegal filename symbols since we're not choosing filenames, gives more flexibility
|
||||
@@ -97,6 +147,19 @@ eventLoop.subscribe(views.demos.chosen, function (_sub, index, gui, eventLoop, v
|
||||
} else if (index === 6) {
|
||||
gui.viewDispatcher.switchTo(views.stopwatchWidget);
|
||||
} else if (index === 7) {
|
||||
gui.viewDispatcher.switchTo(views.buttonMenu);
|
||||
} else if (index === 8) {
|
||||
gui.viewDispatcher.switchTo(views.buttonPanel);
|
||||
} else if (index === 9) {
|
||||
gui.viewDispatcher.switchTo(views.menu);
|
||||
} else if (index === 10) {
|
||||
gui.viewDispatcher.switchTo(views.numberKbd);
|
||||
} else if (index === 11) {
|
||||
views.popup.set("timeout", 2000);
|
||||
gui.viewDispatcher.switchTo(views.popup);
|
||||
} else if (index === 12) {
|
||||
gui.viewDispatcher.switchTo(views.viList);
|
||||
} else if (index === 13) {
|
||||
eventLoop.stop();
|
||||
}
|
||||
}, gui, eventLoop, views);
|
||||
@@ -144,7 +207,7 @@ eventLoop.subscribe(views.stopwatchWidget.button, function (_sub, buttonEvent, g
|
||||
|
||||
// count time
|
||||
eventLoop.subscribe(eventLoop.timer("periodic", 500), function (_sub, _item, views, stopwatchWidgetElements, halfSeconds) {
|
||||
let text = (halfSeconds / 2 / 60).toString();
|
||||
let text = math.floor(halfSeconds / 2 / 60).toString();
|
||||
if (halfSeconds < 10 * 60 * 2)
|
||||
text = "0" + text;
|
||||
|
||||
@@ -152,7 +215,7 @@ eventLoop.subscribe(eventLoop.timer("periodic", 500), function (_sub, _item, vie
|
||||
|
||||
if (((halfSeconds / 2) % 60) < 10)
|
||||
text += "0";
|
||||
text += ((halfSeconds / 2) % 60).toString();
|
||||
text += (math.floor(halfSeconds / 2) % 60).toString();
|
||||
|
||||
stopwatchWidgetElements[0].text = text;
|
||||
views.stopwatchWidget.setChildren(stopwatchWidgetElements);
|
||||
@@ -161,6 +224,42 @@ eventLoop.subscribe(eventLoop.timer("periodic", 500), function (_sub, _item, vie
|
||||
return [views, stopwatchWidgetElements, halfSeconds];
|
||||
}, views, stopwatchWidgetElements, 0);
|
||||
|
||||
// go back after popup times out
|
||||
eventLoop.subscribe(views.popup.timeout, function (_sub, _item, gui, views) {
|
||||
gui.viewDispatcher.switchTo(views.demos);
|
||||
}, gui, views);
|
||||
|
||||
// button menu callback
|
||||
eventLoop.subscribe(views.buttonMenu.input, function (_sub, input, gui, views) {
|
||||
views.helloDialog.set("text", "You selected #" + input.index.toString());
|
||||
views.helloDialog.set("center", "Cool!");
|
||||
gui.viewDispatcher.switchTo(views.helloDialog);
|
||||
}, gui, views);
|
||||
|
||||
// button panel callback
|
||||
eventLoop.subscribe(views.buttonPanel.input, function (_sub, input, gui, views) {
|
||||
views.helloDialog.set("text", "You selected #" + input.index.toString());
|
||||
views.helloDialog.set("center", "Cool!");
|
||||
gui.viewDispatcher.switchTo(views.helloDialog);
|
||||
}, gui, views);
|
||||
|
||||
// menu callback
|
||||
eventLoop.subscribe(views.menu.chosen, function (_sub, index, gui, views) {
|
||||
views.helloDialog.set("text", "You selected #" + index.toString());
|
||||
views.helloDialog.set("center", "Cool!");
|
||||
gui.viewDispatcher.switchTo(views.helloDialog);
|
||||
}, gui, views);
|
||||
|
||||
// menu callback
|
||||
eventLoop.subscribe(views.numberKbd.input, function (_sub, number, gui, views) {
|
||||
views.helloDialog.set("text", "You typed " + number.toString());
|
||||
views.helloDialog.set("center", "Cool!");
|
||||
gui.viewDispatcher.switchTo(views.helloDialog);
|
||||
}, gui, views);
|
||||
|
||||
// ignore VI list
|
||||
eventLoop.subscribe(views.viList.valueUpdate, function (_sub, _item) {});
|
||||
|
||||
// run UI
|
||||
gui.viewDispatcher.switchTo(views.demos);
|
||||
eventLoop.run();
|
||||
|
||||
Reference in New Issue
Block a user