Flipper Zero Firmware
Loading...
Searching...
No Matches
view_dispatcher.h File Reference

GUI: ViewDispatcher API. More...

#include "view.h"
#include "gui.h"
#include "scene_manager.h"

Go to the source code of this file.

Typedefs

typedef struct ViewDispatcher ViewDispatcher
 
typedef bool(* ViewDispatcherCustomEventCallback) (void *context, uint32_t event)
 Prototype for custom event callback.
 
typedef bool(* ViewDispatcherNavigationEventCallback) (void *context)
 Prototype for navigation event callback.
 
typedef void(* ViewDispatcherTickEventCallback) (void *context)
 Prototype for tick event callback.
 

Enumerations

enum  ViewDispatcherType { ViewDispatcherTypeDesktop , ViewDispatcherTypeWindow , ViewDispatcherTypeFullscreen }
 ViewDispatcher view_port placement. More...
 

Functions

ViewDispatcherview_dispatcher_alloc (void)
 Allocate ViewDispatcher instance.
 
void view_dispatcher_free (ViewDispatcher *view_dispatcher)
 Free ViewDispatcher instance.
 
void view_dispatcher_enable_queue (ViewDispatcher *view_dispatcher)
 Enable queue support.
 
void view_dispatcher_send_custom_event (ViewDispatcher *view_dispatcher, uint32_t event)
 Send custom event.
 
void view_dispatcher_set_custom_event_callback (ViewDispatcher *view_dispatcher, ViewDispatcherCustomEventCallback callback)
 Set custom event handler.
 
void view_dispatcher_set_navigation_event_callback (ViewDispatcher *view_dispatcher, ViewDispatcherNavigationEventCallback callback)
 Set navigation event handler.
 
void view_dispatcher_set_tick_event_callback (ViewDispatcher *view_dispatcher, ViewDispatcherTickEventCallback callback, uint32_t tick_period)
 Set tick event handler.
 
void view_dispatcher_set_event_callback_context (ViewDispatcher *view_dispatcher, void *context)
 Set event callback context.
 
FuriEventLoopview_dispatcher_get_event_loop (ViewDispatcher *view_dispatcher)
 Get event_loop instance.
 
void view_dispatcher_run (ViewDispatcher *view_dispatcher)
 Run ViewDispatcher.
 
void view_dispatcher_stop (ViewDispatcher *view_dispatcher)
 Stop ViewDispatcher.
 
void view_dispatcher_add_view (ViewDispatcher *view_dispatcher, uint32_t view_id, View *view)
 Add view to ViewDispatcher.
 
void view_dispatcher_remove_view (ViewDispatcher *view_dispatcher, uint32_t view_id)
 Remove view from ViewDispatcher.
 
void view_dispatcher_switch_to_view (ViewDispatcher *view_dispatcher, uint32_t view_id)
 Switch to View.
 
void view_dispatcher_send_to_front (ViewDispatcher *view_dispatcher)
 Send ViewPort of this ViewDispatcher instance to front.
 
void view_dispatcher_send_to_back (ViewDispatcher *view_dispatcher)
 Send ViewPort of this ViewDispatcher instance to back.
 
void view_dispatcher_attach_to_gui (ViewDispatcher *view_dispatcher, Gui *gui, ViewDispatcherType type)
 Attach ViewDispatcher to GUI.
 

Detailed Description

GUI: ViewDispatcher API.

Warning
Views added to a ViewDispatcher MUST NOT be in a ViewStack at the same time.

Enumeration Type Documentation

◆ ViewDispatcherType

ViewDispatcher view_port placement.

Enumerator
ViewDispatcherTypeDesktop 

Desktop layer: fullscreen with status bar on top of it.

For internal usage.

ViewDispatcherTypeWindow 

Window layer: with status bar

ViewDispatcherTypeFullscreen 

Fullscreen layer: without status bar.

Function Documentation

◆ view_dispatcher_add_view()

void view_dispatcher_add_view ( ViewDispatcher * view_dispatcher,
uint32_t view_id,
View * view )

Add view to ViewDispatcher.

Parameters
view_dispatcherViewDispatcher instance
view_idView id to register
viewView instance

◆ view_dispatcher_alloc()

ViewDispatcher * view_dispatcher_alloc ( void )

Allocate ViewDispatcher instance.

Returns
pointer to ViewDispatcher instance

◆ view_dispatcher_attach_to_gui()

void view_dispatcher_attach_to_gui ( ViewDispatcher * view_dispatcher,
Gui * gui,
ViewDispatcherType type )

Attach ViewDispatcher to GUI.

Parameters
view_dispatcherViewDispatcher instance
guiGUI instance to attach to
[in]typeThe type

◆ view_dispatcher_enable_queue()

void view_dispatcher_enable_queue ( ViewDispatcher * view_dispatcher)

Enable queue support.

Allocates event_loop, input and event message queues. Must be used with view_dispatcher_run

Parameters
view_dispatcherViewDispatcher instance

◆ view_dispatcher_free()

void view_dispatcher_free ( ViewDispatcher * view_dispatcher)

Free ViewDispatcher instance.

Parameters
view_dispatcherpointer to ViewDispatcher

◆ view_dispatcher_get_event_loop()

FuriEventLoop * view_dispatcher_get_event_loop ( ViewDispatcher * view_dispatcher)

Get event_loop instance.

event_loop instance is allocated on view_dispatcher_enable_queue and used in view_dispatcher_run.

You can add your objects into event_loop instance, but don't run the loop on your side as it will cause issues with input processing on dispatcher stop.

Parameters
view_dispatcherViewDispatcher instance
Returns
The event_loop instance.

◆ view_dispatcher_remove_view()

void view_dispatcher_remove_view ( ViewDispatcher * view_dispatcher,
uint32_t view_id )

Remove view from ViewDispatcher.

Parameters
view_dispatcherViewDispatcher instance
view_idView id to remove

◆ view_dispatcher_run()

void view_dispatcher_run ( ViewDispatcher * view_dispatcher)

Run ViewDispatcher.

Use only after queue enabled

Parameters
view_dispatcherViewDispatcher instance

◆ view_dispatcher_send_custom_event()

void view_dispatcher_send_custom_event ( ViewDispatcher * view_dispatcher,
uint32_t event )

Send custom event.

Parameters
view_dispatcherViewDispatcher instance
[in]eventThe event

◆ view_dispatcher_send_to_back()

void view_dispatcher_send_to_back ( ViewDispatcher * view_dispatcher)

Send ViewPort of this ViewDispatcher instance to back.

Parameters
view_dispatcherViewDispatcher instance

◆ view_dispatcher_send_to_front()

void view_dispatcher_send_to_front ( ViewDispatcher * view_dispatcher)

Send ViewPort of this ViewDispatcher instance to front.

Parameters
view_dispatcherViewDispatcher instance

◆ view_dispatcher_set_custom_event_callback()

void view_dispatcher_set_custom_event_callback ( ViewDispatcher * view_dispatcher,
ViewDispatcherCustomEventCallback callback )

Set custom event handler.

Called on Custom Event, if it is not consumed by view

Parameters
view_dispatcherViewDispatcher instance
callbackViewDispatcherCustomEventCallback instance

◆ view_dispatcher_set_event_callback_context()

void view_dispatcher_set_event_callback_context ( ViewDispatcher * view_dispatcher,
void * context )

Set event callback context.

Parameters
view_dispatcherViewDispatcher instance
contextpointer to context

◆ view_dispatcher_set_navigation_event_callback()

void view_dispatcher_set_navigation_event_callback ( ViewDispatcher * view_dispatcher,
ViewDispatcherNavigationEventCallback callback )

Set navigation event handler.

Called on Input Short Back Event, if it is not consumed by view

Parameters
view_dispatcherViewDispatcher instance
callbackViewDispatcherNavigationEventCallback instance

◆ view_dispatcher_set_tick_event_callback()

void view_dispatcher_set_tick_event_callback ( ViewDispatcher * view_dispatcher,
ViewDispatcherTickEventCallback callback,
uint32_t tick_period )

Set tick event handler.

Parameters
view_dispatcherViewDispatcher instance
callbackViewDispatcherTickEventCallback
tick_periodcallback call period

◆ view_dispatcher_stop()

void view_dispatcher_stop ( ViewDispatcher * view_dispatcher)

Stop ViewDispatcher.

Use only after queue enabled

Parameters
view_dispatcherViewDispatcher instance

◆ view_dispatcher_switch_to_view()

void view_dispatcher_switch_to_view ( ViewDispatcher * view_dispatcher,
uint32_t view_id )

Switch to View.

Parameters
view_dispatcherViewDispatcher instance
view_idView id to register
Warning
switching may be delayed till input events complementarity reached