wip: add flash info view
This commit is contained in:
@@ -1,11 +1,14 @@
|
||||
use crate::navigation::navigation::{Action, Navigable, NewState};
|
||||
use crate::navigation::outputs::Outputs;
|
||||
use crate::views::{menu_item, view::View};
|
||||
use crate::views::{flash_info_view::FlashInfoView, menu_item, view::View};
|
||||
|
||||
use crate::navigation::inputs::ButtonAction;
|
||||
|
||||
use embedded_graphics::pixelcolor::Rgb565;
|
||||
use embedded_graphics::prelude::RgbColor;
|
||||
use embedded_graphics_core::draw_target::DrawTarget;
|
||||
pub const MAX_SELECTED: i8 = 2;
|
||||
|
||||
pub const MAX_SELECTED: i32 = 2;
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct SettingsMenu {
|
||||
@@ -18,16 +21,50 @@ impl Navigable for SettingsMenu {
|
||||
display.clear(Rgb565::BLACK).unwrap();
|
||||
menu_item::show(display, "System Inforation", 0, self.selected);
|
||||
menu_item::show(display, "Wifi Information", 1, self.selected);
|
||||
menu_item::show(display, "Flash Information", 2, self.selected);
|
||||
|
||||
core::future::ready(())
|
||||
}
|
||||
|
||||
fn handle_input(&self, input: Action) -> impl core::future::Future<Output = NewState> + Send {
|
||||
async move {
|
||||
let Action::Button(input) = input else {
|
||||
// Skip timer inputs
|
||||
return NewState {
|
||||
view: View::Settings(self.clone()),
|
||||
replace_view: true,
|
||||
redraw: false,
|
||||
};
|
||||
};
|
||||
|
||||
let new_menu = match input {
|
||||
ButtonAction::Up => {
|
||||
let new_selected = if (self.selected - 1) < 0 {
|
||||
MAX_SELECTED - 1
|
||||
} else {
|
||||
self.selected - 1
|
||||
};
|
||||
View::Settings(SettingsMenu {
|
||||
selected: new_selected,
|
||||
})
|
||||
}
|
||||
ButtonAction::Down => {
|
||||
let new_selected = self.selected.wrapping_add(1) % MAX_SELECTED;
|
||||
View::Settings(SettingsMenu {
|
||||
selected: new_selected,
|
||||
})
|
||||
}
|
||||
ButtonAction::Ok => match self.selected {
|
||||
2 => View::FlashInfo(FlashInfoView {}),
|
||||
_ => View::Settings(self.clone()),
|
||||
},
|
||||
_ => View::Settings(self.clone()),
|
||||
};
|
||||
|
||||
NewState {
|
||||
view: View::Settings(SettingsMenu { selected: 0 }),
|
||||
replace_view: true,
|
||||
redraw: !matches!(input, Action::Timer),
|
||||
replace_view: matches!(new_menu, View::Settings(_)),
|
||||
view: new_menu,
|
||||
redraw: true,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user