flipper-zero-tutorial-app-rs/src/views.rs

28 lines
951 B
Rust
Raw Normal View History

2024-04-09 22:37:23 +02:00
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
}