Use Outputs type in Navigable trait

This commit is contained in:
2026-08-23 11:35:15 +02:00
parent 889da2e62c
commit dbbc93b528
10 changed files with 114 additions and 119 deletions
+68 -70
View File
@@ -1,5 +1,6 @@
use crate::display::sprite::render_sprite_onto_ili9341;
use crate::navigation::navigation::NewState;
use crate::navigation::outputs::Outputs;
use alloc::format;
use embedded_graphics::mono_font::MonoTextStyle;
use embedded_graphics::mono_font::ascii::FONT_6X10;
@@ -24,80 +25,77 @@ pub struct CardView {
}
impl Navigable for CardView {
fn display<D>(&self, display: &mut D) -> impl core::future::Future<Output = ()> + Send
where
D: DrawTarget<Color = Rgb565>,
D::Error: core::fmt::Debug,
{
display.clear(Rgb565::BLACK).unwrap();
fn display(&self, outputs: &mut Outputs) -> impl core::future::Future<Output = ()> + Send {
async move {
let display = &mut outputs.primary_display;
display.clear(Rgb565::BLACK).unwrap();
let background = Rectangle::new(Point::new(0, 0), Size::new(240, 320));
let bg_color = self.card.cardtype.clone().into();
let background = Rectangle::new(Point::new(0, 0), Size::new(240, 320));
let bg_color = self.card.cardtype.clone().into();
let _ = display.fill_solid(&background, bg_color);
let _ = display.fill_solid(&background, bg_color);
let style = MonoTextStyle::new(&FONT_6X10, Rgb565::WHITE);
Text::new(
&format!("Name: {}", self.card.name),
Point::new(20, 240),
style,
)
.draw(display)
.unwrap();
Text::new(
&format!("Type: {}", self.card.cardtype),
Point::new(20, 250),
style,
)
.draw(display)
.unwrap();
Text::new(
&format!("Event: {}", self.card.event),
Point::new(20, 260),
style,
)
.draw(display)
.unwrap();
Text::new(
&format!("UUID: {}", self.card.uuid),
Point::new(20, 270),
style,
)
.draw(display)
.unwrap();
Text::new(
&format!("Trait1: {}", self.card.trait1),
Point::new(20, 280),
style,
)
.draw(display)
.unwrap();
Text::new(
&format!("Trait2: {}", self.card.trait2),
Point::new(20, 290),
style,
)
.draw(display)
.unwrap();
Text::new(
&format!("Trait3: {}", self.card.trait3),
Point::new(20, 300),
style,
)
.draw(display)
.unwrap();
Text::new(
&format!("Secret: {}", self.card.secret),
Point::new(20, 310),
style,
)
.draw(display)
.unwrap();
let style = MonoTextStyle::new(&FONT_6X10, Rgb565::WHITE);
Text::new(
&format!("Name: {}", self.card.name),
Point::new(20, 240),
style,
)
.draw(display)
.unwrap();
Text::new(
&format!("Type: {}", self.card.cardtype),
Point::new(20, 250),
style,
)
.draw(display)
.unwrap();
Text::new(
&format!("Event: {}", self.card.event),
Point::new(20, 260),
style,
)
.draw(display)
.unwrap();
Text::new(
&format!("UUID: {}", self.card.uuid),
Point::new(20, 270),
style,
)
.draw(display)
.unwrap();
Text::new(
&format!("Trait1: {}", self.card.trait1),
Point::new(20, 280),
style,
)
.draw(display)
.unwrap();
Text::new(
&format!("Trait2: {}", self.card.trait2),
Point::new(20, 290),
style,
)
.draw(display)
.unwrap();
Text::new(
&format!("Trait3: {}", self.card.trait3),
Point::new(20, 300),
style,
)
.draw(display)
.unwrap();
Text::new(
&format!("Secret: {}", self.card.secret),
Point::new(20, 310),
style,
)
.draw(display)
.unwrap();
let palette: Palette = self.card.cardtype.clone().into();
render_sprite_onto_ili9341(display, self.card.sprite.data.as_slice(), &palette);
core::future::ready(())
let palette: Palette = self.card.cardtype.clone().into();
render_sprite_onto_ili9341(display, self.card.sprite.data.as_slice(), &palette);
}
}
fn handle_input(&self, input: Action) -> impl core::future::Future<Output = NewState> + Send {