mirror of
https://github.com/flipperdevices/flipperzero-firmware.git
synced 2025-12-12 12:51:22 +04:00
JS: gui: viewDispatcher.currentView
This commit is contained in:
@@ -105,9 +105,13 @@ eventLoop.subscribe(views.bytekb.input, function (_sub, data, gui, views) {
|
|||||||
}, gui, views);
|
}, gui, views);
|
||||||
|
|
||||||
// go to the demo chooser screen when the back key is pressed
|
// go to the demo chooser screen when the back key is pressed
|
||||||
eventLoop.subscribe(gui.viewDispatcher.navigation, function (_sub, _, gui, views) {
|
eventLoop.subscribe(gui.viewDispatcher.navigation, function (_sub, _, gui, views, eventLoop) {
|
||||||
|
if (gui.viewDispatcher.currentView === views.demos) {
|
||||||
|
eventLoop.stop();
|
||||||
|
return;
|
||||||
|
}
|
||||||
gui.viewDispatcher.switchTo(views.demos);
|
gui.viewDispatcher.switchTo(views.demos);
|
||||||
}, gui, views);
|
}, gui, views, eventLoop);
|
||||||
|
|
||||||
// run UI
|
// run UI
|
||||||
gui.viewDispatcher.switchTo(views.demos);
|
gui.viewDispatcher.switchTo(views.demos);
|
||||||
|
|||||||
@@ -101,8 +101,10 @@ static void js_gui_vd_switch_to(struct mjs* mjs) {
|
|||||||
mjs_val_t view;
|
mjs_val_t view;
|
||||||
JS_FETCH_ARGS_OR_RETURN(mjs, JS_EXACTLY, JS_ARG_OBJ(&view));
|
JS_FETCH_ARGS_OR_RETURN(mjs, JS_EXACTLY, JS_ARG_OBJ(&view));
|
||||||
JsGuiViewData* view_data = JS_GET_INST(mjs, view);
|
JsGuiViewData* view_data = JS_GET_INST(mjs, view);
|
||||||
JsGui* module = JS_GET_CONTEXT(mjs);
|
mjs_val_t vd_obj = mjs_get_this(mjs);
|
||||||
|
JsGui* module = JS_GET_INST(mjs, vd_obj);
|
||||||
view_dispatcher_switch_to_view(module->dispatcher, (uint32_t)view_data->id);
|
view_dispatcher_switch_to_view(module->dispatcher, (uint32_t)view_data->id);
|
||||||
|
mjs_set(mjs, vd_obj, "currentView", ~0, view);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void* js_gui_create(struct mjs* mjs, mjs_val_t* object, JsModules* modules) {
|
static void* js_gui_create(struct mjs* mjs, mjs_val_t* object, JsModules* modules) {
|
||||||
@@ -154,6 +156,7 @@ static void* js_gui_create(struct mjs* mjs, mjs_val_t* object, JsModules* module
|
|||||||
JS_FIELD("switchTo", MJS_MK_FN(js_gui_vd_switch_to));
|
JS_FIELD("switchTo", MJS_MK_FN(js_gui_vd_switch_to));
|
||||||
JS_FIELD("custom", mjs_mk_foreign(mjs, &module->custom_contract));
|
JS_FIELD("custom", mjs_mk_foreign(mjs, &module->custom_contract));
|
||||||
JS_FIELD("navigation", mjs_mk_foreign(mjs, &module->navigation_contract));
|
JS_FIELD("navigation", mjs_mk_foreign(mjs, &module->navigation_contract));
|
||||||
|
JS_FIELD("currentView", MJS_NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
// create API object
|
// create API object
|
||||||
|
|||||||
@@ -20,6 +20,10 @@ declare class ViewDispatcher {
|
|||||||
* Event source for navigation events (back key presses)
|
* Event source for navigation events (back key presses)
|
||||||
*/
|
*/
|
||||||
navigation: Contract;
|
navigation: Contract;
|
||||||
|
/**
|
||||||
|
* View object currently shown
|
||||||
|
*/
|
||||||
|
currentView: View<any>;
|
||||||
/**
|
/**
|
||||||
* Sends a number to the custom event handler
|
* Sends a number to the custom event handler
|
||||||
* @param event number to send
|
* @param event number to send
|
||||||
|
|||||||
Reference in New Issue
Block a user