move menu drawing to own function

This commit is contained in:
2026-08-14 21:40:24 +00:00
parent 0fb87f2913
commit e1ab69d1ab
3 changed files with 42 additions and 42 deletions
+2
View File
@@ -1,5 +1,7 @@
pub mod inputs; pub mod inputs;
pub mod main_menu; pub mod main_menu;
pub mod menu_item;
pub mod navigation; pub mod navigation;
pub mod scan_menu; pub mod scan_menu;
pub mod settings_menu;
pub mod state; pub mod state;
+7 -42
View File
@@ -2,23 +2,20 @@ use core::future;
use crate::{display::primary_lcd::PrimaryLcdDisplay, navigation::inputs::Inputs}; use crate::{display::primary_lcd::PrimaryLcdDisplay, navigation::inputs::Inputs};
use alloc::format; use crate::navigation::menu_item;
use embedded_graphics::mono_font::MonoTextStyle; use embedded_graphics::mono_font::MonoTextStyle;
use embedded_graphics::mono_font::ascii::FONT_10X20; use embedded_graphics::mono_font::ascii::FONT_10X20;
use embedded_graphics::pixelcolor::Rgb565; use embedded_graphics::pixelcolor::Rgb565;
use embedded_graphics::prelude::Point;
use embedded_graphics::prelude::RgbColor; use embedded_graphics::prelude::RgbColor;
use embedded_graphics::text::Text;
use embedded_graphics::{Drawable, geometry::Size, primitives::Rectangle};
use embedded_graphics_core::draw_target::DrawTarget;
use super::state::Menu; use super::state::Menu;
pub const MAX_SELECTED: i8 = 3; pub const MAX_SELECTED: i32 = 3;
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub struct MainMenu { pub struct MainMenu {
pub selected: i8, pub selected: i32,
} }
impl super::navigation::Navigable for MainMenu { impl super::navigation::Navigable for MainMenu {
@@ -29,41 +26,9 @@ impl super::navigation::Navigable for MainMenu {
let style = MonoTextStyle::new(&FONT_10X20, Rgb565::WHITE); let style = MonoTextStyle::new(&FONT_10X20, Rgb565::WHITE);
let selected_style = MonoTextStyle::new(&FONT_10X20, Rgb565::BLUE); let selected_style = MonoTextStyle::new(&FONT_10X20, Rgb565::BLUE);
Text::new( menu_item::show(display, "Last card", 0, self.selected);
&format!("Last card"), menu_item::show(display, "Journal", 1, self.selected);
Point::new(40, 40), menu_item::show(display, "Settings", 2, self.selected);
if self.selected == 0 {
selected_style
} else {
style
},
)
.draw(display)
.unwrap();
Text::new(
&format!("Journal"),
Point::new(40, 60),
if self.selected == 1 {
selected_style
} else {
style
},
)
.draw(display)
.unwrap();
Text::new(
&format!("Settings"),
Point::new(40, 80),
if self.selected == 2 {
selected_style
} else {
style
},
)
.draw(display)
.unwrap();
core::future::ready(()) core::future::ready(())
} }
+33
View File
@@ -0,0 +1,33 @@
use embedded_graphics::mono_font::MonoTextStyle;
use embedded_graphics::mono_font::ascii::FONT_10X20;
use embedded_graphics::pixelcolor::Rgb565;
use embedded_graphics::prelude::Point;
use embedded_graphics::prelude::RgbColor;
use embedded_graphics::text::Text;
use embedded_graphics::{Drawable, geometry::Size, primitives::Rectangle};
use embedded_graphics_core::draw_target::DrawTarget;
use crate::display::primary_lcd::PrimaryLcdDisplay;
pub fn show<'a>(
display: &mut PrimaryLcdDisplay<'static>,
name: &str,
position: i32,
selected: i32,
) {
let style = MonoTextStyle::new(&FONT_10X20, Rgb565::WHITE);
let selected_style = MonoTextStyle::new(&FONT_10X20, Rgb565::BLUE);
Text::new(
name,
Point::new(40, 40 + position * 40),
if position == selected {
selected_style
} else {
style
},
)
.draw(display)
.unwrap();
}