main menu first simple implementation of display and state
This commit is contained in:
@@ -1,4 +1,14 @@
|
||||
use crate::navigation::inputs::Inputs;
|
||||
use crate::{display::primary_lcd::PrimaryLcdDisplay, navigation::inputs::Inputs};
|
||||
|
||||
use alloc::format;
|
||||
use embedded_graphics::mono_font::MonoTextStyle;
|
||||
use embedded_graphics::mono_font::ascii::FONT_6X10;
|
||||
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;
|
||||
|
||||
pub const MAX_SELECTED: i8 = 3;
|
||||
|
||||
@@ -7,5 +17,44 @@ pub struct MainMenu {
|
||||
}
|
||||
|
||||
impl MainMenu {
|
||||
pub async fn display(self: &Self) {}
|
||||
pub async fn display(&self, display: &mut PrimaryLcdDisplay<'static>) {
|
||||
let style = MonoTextStyle::new(&FONT_6X10, Rgb565::WHITE);
|
||||
let selected_style = MonoTextStyle::new(&FONT_6X10, Rgb565::BLUE);
|
||||
|
||||
Text::new(
|
||||
&format!("Last card"),
|
||||
Point::new(20, 240),
|
||||
if self.selected == 0 {
|
||||
selected_style
|
||||
} else {
|
||||
style
|
||||
},
|
||||
)
|
||||
.draw(display)
|
||||
.unwrap();
|
||||
|
||||
Text::new(
|
||||
&format!("Journal"),
|
||||
Point::new(20, 250),
|
||||
if self.selected == 1 {
|
||||
selected_style
|
||||
} else {
|
||||
style
|
||||
},
|
||||
)
|
||||
.draw(display)
|
||||
.unwrap();
|
||||
|
||||
Text::new(
|
||||
&format!("Settings"),
|
||||
Point::new(20, 260),
|
||||
if self.selected == 1 {
|
||||
selected_style
|
||||
} else {
|
||||
style
|
||||
},
|
||||
)
|
||||
.draw(display)
|
||||
.unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
use crate::navigation::inputs::Inputs;
|
||||
use crate::navigation::main_menu::{MAX_SELECTED, MainMenu};
|
||||
use crate::{display::primary_lcd::PrimaryLcdDisplay, navigation::inputs::Inputs};
|
||||
|
||||
use embassy_futures::select::Either6;
|
||||
use embassy_futures::select::select6;
|
||||
|
||||
#[embassy_executor::task]
|
||||
pub async fn run(mut inputs: Inputs) {
|
||||
pub async fn run(mut inputs: Inputs, display: &'static mut PrimaryLcdDisplay<'static>) {
|
||||
let mut state = MainMenu { selected: 0 };
|
||||
|
||||
loop {
|
||||
@@ -30,6 +30,6 @@ pub async fn run(mut inputs: Inputs) {
|
||||
|
||||
state.selected = value;
|
||||
|
||||
state.display().await
|
||||
state.display(display).await
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user