28 lines
951 B
Rust
28 lines
951 B
Rust
|
use core::ffi::c_void;
|
||
|
|
||
|
use flipperzero_sys as sys;
|
||
|
|
||
|
use crate::{app::App, scenes};
|
||
|
|
||
|
#[derive(Primitive)]
|
||
|
pub enum Views {
|
||
|
Menu = 0,
|
||
|
Popup = 1
|
||
|
}
|
||
|
|
||
|
|
||
|
pub unsafe fn view_dispatcher_init(app: &mut App) {
|
||
|
sys::view_dispatcher_enable_queue(app.view_dispatcher);
|
||
|
sys::view_dispatcher_set_event_callback_context(app.view_dispatcher, &*app as *const App as *mut c_void);
|
||
|
|
||
|
sys::view_dispatcher_set_custom_event_callback(app.view_dispatcher, Some(scenes::custom_event_callback));
|
||
|
sys::view_dispatcher_set_navigation_event_callback(app.view_dispatcher, Some(scenes::navigation_event_callback));
|
||
|
|
||
|
sys::view_dispatcher_add_view(app.view_dispatcher, Views::Menu as u32, sys::menu_get_view(app.menu));
|
||
|
sys::view_dispatcher_add_view(app.view_dispatcher, Views::Popup as u32, sys::popup_get_view(app.popup));
|
||
|
}
|
||
|
|
||
|
pub unsafe extern "C" fn app_exit(_context: *mut core::ffi::c_void) -> u32 {
|
||
|
0xFFFFFFFF // Exit the view_dispatcher_run
|
||
|
}
|