mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-12 09:08:36 -07:00
* feat: backport js_gpio from unleashed * feat: backport js_keyboard, TextInputModel::minimum_length from unleashed * fix: api version inconsistency * style: js_gpio * build: fix submodule ._ . * refactor: js_gpio * docs: type declarations for gpio * feat: gpio interrupts * fix: js_gpio freeing, resetting and minor stylistic changes * style: js_gpio * style: mlib array, fixme's * feat: js_gpio adc * feat: js_event_loop * docs: js_event_loop * feat: js_event_loop subscription cancellation * feat: js_event_loop + js_gpio integration * fix: js_event_loop memory leak * feat: stop event loop on back button * test: js: basic, math, event_loop * feat: js_event_loop queue * feat: js linkage to previously loaded plugins * build: fix ci errors * feat: js module ordered teardown * feat: js_gui_defer_free * feat: basic hourglass view * style: JS ASS (Argument Schema for Scripts) * fix: js_event_loop mem leaks and lifetime problems * fix: crashing test and pvs false positives * feat: mjs custom obj destructors, gui submenu view * refactor: yank js_gui_defer_free (yuck) * refactor: maybe_unsubscribe * empty_screen, docs, typing fix-ups * docs: navigation event & demo * feat: submenu setHeader * feat: text_input * feat: text_box * docs: text_box availability * ci: silence irrelevant pvs low priority warning * style: use furistring * style: _get_at -> _safe_get * fix: built-in module name assignment * feat: js_dialog; refactor, optimize: js_gui * docs: js_gui * ci: silence pvs warning: Memory allocation is infallible * style: fix storage spelling * feat: foreign pointer signature checks * feat: js_storage * docs: js_storage * fix: my unit test was breaking other tests ;_; * ci: fix ci? * Make doxygen happy * docs: flipper, math, notification, global * style: review suggestions * style: review fixups * fix: badusb demo script * docs: badusb * ci: add nofl * ci: make linter happy * Bump api version Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
64 lines
1.8 KiB
C
64 lines
1.8 KiB
C
/**
|
|
* @file view_dispatcher_i.h
|
|
* GUI: ViewDispatcher API
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <m-dict.h>
|
|
|
|
#include "view_dispatcher.h"
|
|
#include "view_i.h"
|
|
#include "gui_i.h"
|
|
|
|
DICT_DEF2(ViewDict, uint32_t, M_DEFAULT_OPLIST, View*, M_PTR_OPLIST) // NOLINT
|
|
|
|
struct ViewDispatcher {
|
|
bool is_event_loop_owned;
|
|
FuriEventLoop* event_loop;
|
|
FuriMessageQueue* input_queue;
|
|
FuriMessageQueue* event_queue;
|
|
|
|
Gui* gui;
|
|
ViewPort* view_port;
|
|
ViewDict_t views;
|
|
|
|
View* current_view;
|
|
|
|
View* ongoing_input_view;
|
|
uint8_t ongoing_input;
|
|
|
|
ViewDispatcherCustomEventCallback custom_event_callback;
|
|
ViewDispatcherNavigationEventCallback navigation_event_callback;
|
|
ViewDispatcherTickEventCallback tick_event_callback;
|
|
uint32_t tick_period;
|
|
void* event_context;
|
|
};
|
|
|
|
/** ViewPort Draw Callback */
|
|
void view_dispatcher_draw_callback(Canvas* canvas, void* context);
|
|
|
|
/** ViewPort Input Callback */
|
|
void view_dispatcher_input_callback(InputEvent* event, void* context);
|
|
|
|
/** Input handler */
|
|
void view_dispatcher_handle_input(ViewDispatcher* view_dispatcher, InputEvent* event);
|
|
|
|
/** Tick handler */
|
|
void view_dispatcher_handle_tick_event(void* context);
|
|
|
|
/** Custom event handler */
|
|
void view_dispatcher_handle_custom_event(ViewDispatcher* view_dispatcher, uint32_t event);
|
|
|
|
/** Set current view, dispatches view enter and exit */
|
|
void view_dispatcher_set_current_view(ViewDispatcher* view_dispatcher, View* view);
|
|
|
|
/** ViewDispatcher update event */
|
|
void view_dispatcher_update(View* view, void* context);
|
|
|
|
/** ViewDispatcher run event loop event callback */
|
|
bool view_dispatcher_run_event_callback(FuriEventLoopObject* object, void* context);
|
|
|
|
/** ViewDispatcher run event loop input callback */
|
|
bool view_dispatcher_run_input_callback(FuriEventLoopObject* object, void* context);
|