mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-20 04:54:45 -07:00
Merge branch 'dev' of https://github.com/flipperdevices/flipperzero-firmware into mntm-dev
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
#define TAG "ViewDispatcher"
|
||||
|
||||
ViewDispatcher* view_dispatcher_alloc() {
|
||||
ViewDispatcher* view_dispatcher_alloc(void) {
|
||||
ViewDispatcher* view_dispatcher = malloc(sizeof(ViewDispatcher));
|
||||
|
||||
view_dispatcher->view_port = view_port_alloc();
|
||||
@@ -25,7 +25,7 @@ void view_dispatcher_free(ViewDispatcher* view_dispatcher) {
|
||||
gui_remove_view_port(view_dispatcher->gui, view_dispatcher->view_port);
|
||||
}
|
||||
// Crash if not all views were freed
|
||||
furi_assert(!ViewDict_size(view_dispatcher->views));
|
||||
furi_check(!ViewDict_size(view_dispatcher->views));
|
||||
|
||||
ViewDict_clear(view_dispatcher->views);
|
||||
// Free ViewPort
|
||||
@@ -39,29 +39,29 @@ void view_dispatcher_free(ViewDispatcher* view_dispatcher) {
|
||||
}
|
||||
|
||||
void view_dispatcher_enable_queue(ViewDispatcher* view_dispatcher) {
|
||||
furi_assert(view_dispatcher);
|
||||
furi_assert(view_dispatcher->queue == NULL);
|
||||
furi_check(view_dispatcher);
|
||||
furi_check(view_dispatcher->queue == NULL);
|
||||
view_dispatcher->queue = furi_message_queue_alloc(16, sizeof(ViewDispatcherMessage));
|
||||
}
|
||||
|
||||
void view_dispatcher_set_event_callback_context(ViewDispatcher* view_dispatcher, void* context) {
|
||||
furi_assert(view_dispatcher);
|
||||
furi_check(view_dispatcher);
|
||||
view_dispatcher->event_context = context;
|
||||
}
|
||||
|
||||
void view_dispatcher_set_navigation_event_callback(
|
||||
ViewDispatcher* view_dispatcher,
|
||||
ViewDispatcherNavigationEventCallback callback) {
|
||||
furi_assert(view_dispatcher);
|
||||
furi_assert(callback);
|
||||
furi_check(view_dispatcher);
|
||||
furi_check(callback);
|
||||
view_dispatcher->navigation_event_callback = callback;
|
||||
}
|
||||
|
||||
void view_dispatcher_set_custom_event_callback(
|
||||
ViewDispatcher* view_dispatcher,
|
||||
ViewDispatcherCustomEventCallback callback) {
|
||||
furi_assert(view_dispatcher);
|
||||
furi_assert(callback);
|
||||
furi_check(view_dispatcher);
|
||||
furi_check(callback);
|
||||
view_dispatcher->custom_event_callback = callback;
|
||||
}
|
||||
|
||||
@@ -69,15 +69,15 @@ void view_dispatcher_set_tick_event_callback(
|
||||
ViewDispatcher* view_dispatcher,
|
||||
ViewDispatcherTickEventCallback callback,
|
||||
uint32_t tick_period) {
|
||||
furi_assert(view_dispatcher);
|
||||
furi_assert(callback);
|
||||
furi_check(view_dispatcher);
|
||||
furi_check(callback);
|
||||
view_dispatcher->tick_event_callback = callback;
|
||||
view_dispatcher->tick_period = tick_period;
|
||||
}
|
||||
|
||||
void view_dispatcher_run(ViewDispatcher* view_dispatcher) {
|
||||
furi_assert(view_dispatcher);
|
||||
furi_assert(view_dispatcher->queue);
|
||||
furi_check(view_dispatcher);
|
||||
furi_check(view_dispatcher->queue);
|
||||
|
||||
uint32_t tick_period = view_dispatcher->tick_period == 0 ? FuriWaitForever :
|
||||
view_dispatcher->tick_period;
|
||||
@@ -113,8 +113,8 @@ void view_dispatcher_run(ViewDispatcher* view_dispatcher) {
|
||||
}
|
||||
|
||||
void view_dispatcher_stop(ViewDispatcher* view_dispatcher) {
|
||||
furi_assert(view_dispatcher);
|
||||
furi_assert(view_dispatcher->queue);
|
||||
furi_check(view_dispatcher);
|
||||
furi_check(view_dispatcher->queue);
|
||||
ViewDispatcherMessage message;
|
||||
message.type = ViewDispatcherMessageTypeStop;
|
||||
furi_check(
|
||||
@@ -122,8 +122,8 @@ void view_dispatcher_stop(ViewDispatcher* view_dispatcher) {
|
||||
}
|
||||
|
||||
void view_dispatcher_add_view(ViewDispatcher* view_dispatcher, uint32_t view_id, View* view) {
|
||||
furi_assert(view_dispatcher);
|
||||
furi_assert(view);
|
||||
furi_check(view_dispatcher);
|
||||
furi_check(view);
|
||||
// Check if view id is not used and register view
|
||||
furi_check(ViewDict_get(view_dispatcher->views, view_id) == NULL);
|
||||
|
||||
@@ -143,7 +143,7 @@ void view_dispatcher_add_view(ViewDispatcher* view_dispatcher, uint32_t view_id,
|
||||
}
|
||||
|
||||
void view_dispatcher_remove_view(ViewDispatcher* view_dispatcher, uint32_t view_id) {
|
||||
furi_assert(view_dispatcher);
|
||||
furi_check(view_dispatcher);
|
||||
|
||||
// Lock gui
|
||||
if(view_dispatcher->gui) {
|
||||
@@ -173,7 +173,7 @@ void view_dispatcher_remove_view(ViewDispatcher* view_dispatcher, uint32_t view_
|
||||
}
|
||||
|
||||
void view_dispatcher_switch_to_view(ViewDispatcher* view_dispatcher, uint32_t view_id) {
|
||||
furi_assert(view_dispatcher);
|
||||
furi_check(view_dispatcher);
|
||||
if(view_id == VIEW_NONE) {
|
||||
view_dispatcher_set_current_view(view_dispatcher, NULL);
|
||||
} else if(view_id == VIEW_IGNORE) {
|
||||
@@ -185,14 +185,14 @@ void view_dispatcher_switch_to_view(ViewDispatcher* view_dispatcher, uint32_t vi
|
||||
}
|
||||
|
||||
void view_dispatcher_send_to_front(ViewDispatcher* view_dispatcher) {
|
||||
furi_assert(view_dispatcher);
|
||||
furi_assert(view_dispatcher->gui);
|
||||
furi_check(view_dispatcher);
|
||||
furi_check(view_dispatcher->gui);
|
||||
gui_view_port_send_to_front(view_dispatcher->gui, view_dispatcher->view_port);
|
||||
}
|
||||
|
||||
void view_dispatcher_send_to_back(ViewDispatcher* view_dispatcher) {
|
||||
furi_assert(view_dispatcher);
|
||||
furi_assert(view_dispatcher->gui);
|
||||
furi_check(view_dispatcher);
|
||||
furi_check(view_dispatcher->gui);
|
||||
gui_view_port_send_to_back(view_dispatcher->gui, view_dispatcher->view_port);
|
||||
}
|
||||
|
||||
@@ -200,9 +200,9 @@ void view_dispatcher_attach_to_gui(
|
||||
ViewDispatcher* view_dispatcher,
|
||||
Gui* gui,
|
||||
ViewDispatcherType type) {
|
||||
furi_assert(view_dispatcher);
|
||||
furi_assert(view_dispatcher->gui == NULL);
|
||||
furi_assert(gui);
|
||||
furi_check(view_dispatcher);
|
||||
furi_check(view_dispatcher->gui == NULL);
|
||||
furi_check(gui);
|
||||
|
||||
if(type == ViewDispatcherTypeDesktop) {
|
||||
gui_add_view_port(gui, view_dispatcher->view_port, GuiLayerDesktop);
|
||||
@@ -372,8 +372,8 @@ void view_dispatcher_handle_custom_event(ViewDispatcher* view_dispatcher, uint32
|
||||
}
|
||||
|
||||
void view_dispatcher_send_custom_event(ViewDispatcher* view_dispatcher, uint32_t event) {
|
||||
furi_assert(view_dispatcher);
|
||||
furi_assert(view_dispatcher->queue);
|
||||
furi_check(view_dispatcher);
|
||||
furi_check(view_dispatcher->queue);
|
||||
|
||||
ViewDispatcherMessage message;
|
||||
message.type = ViewDispatcherMessageTypeCustomEvent;
|
||||
@@ -391,7 +391,7 @@ static const ViewPortOrientation view_dispatcher_view_port_orientation_table[] =
|
||||
};
|
||||
|
||||
void view_dispatcher_set_current_view(ViewDispatcher* view_dispatcher, View* view) {
|
||||
furi_assert(view_dispatcher);
|
||||
furi_check(view_dispatcher);
|
||||
// Dispatch view exit event
|
||||
if(view_dispatcher->current_view) {
|
||||
view_exit(view_dispatcher->current_view);
|
||||
@@ -419,8 +419,8 @@ void view_dispatcher_set_current_view(ViewDispatcher* view_dispatcher, View* vie
|
||||
}
|
||||
|
||||
void view_dispatcher_update(View* view, void* context) {
|
||||
furi_assert(view);
|
||||
furi_assert(context);
|
||||
furi_check(view);
|
||||
furi_check(context);
|
||||
|
||||
ViewDispatcher* view_dispatcher = context;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user