diff --git a/mqtt_display/src/display/task.rs b/mqtt_display/src/display/task.rs index c8aea67..a9cab25 100644 --- a/mqtt_display/src/display/task.rs +++ b/mqtt_display/src/display/task.rs @@ -39,13 +39,14 @@ pub async fn display_task(i2c: I2cDevice) { let mut terminal = Terminal::new(backend).expect("terminal init failed"); let mut state = DisplayState::default(); - let mut orchestrator = Orchestrator::::new(); + let mut orchestrator = Orchestrator::::new(); let rx = receiver(); // Register pages - orchestrator.register_page("menu".into(), Screen::Menu); - orchestrator.register_page("imu".into(), Screen::Imu); - orchestrator.register_page("chat".into(), Screen::Chat); + // Enum-based registration + orchestrator.register_page(Screen::Menu, Screen::Menu); + orchestrator.register_page(Screen::Imu, Screen::Imu); + orchestrator.register_page(Screen::Chat, Screen::Chat); orchestrator.bind(Key::tab(), ComponentAction::Next); orchestrator.bind(Key::enter(), ComponentAction::Select); diff --git a/mqtt_display/src/display/tui.rs b/mqtt_display/src/display/tui.rs index 92ed593..81940d8 100644 --- a/mqtt_display/src/display/tui.rs +++ b/mqtt_display/src/display/tui.rs @@ -11,6 +11,15 @@ use ratatui::{ }; use log::info; +#[derive(Clone, Debug, PartialEq, Eq, Hash)] +pub enum Screen { + Menu, + Imu, + Chat, +} + +impl pages_tui::page::PageId for Screen {} + /// Focus targets - different per screen #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] pub enum PageFocus {