From b6f27f308772e2ee5d52ca475d7f829bb53c86b0 Mon Sep 17 00:00:00 2001 From: obrusvit Date: Mon, 10 Mar 2025 18:03:17 +0100 Subject: [PATCH] feat(eckhart): implement WelcomeScreen --- .../component/welcome_screen.rs | 45 ++++++++++--------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/core/embed/rust/src/ui/layout_eckhart/component/welcome_screen.rs b/core/embed/rust/src/ui/layout_eckhart/component/welcome_screen.rs index 0cab31011e..03fe7fcbcd 100644 --- a/core/embed/rust/src/ui/layout_eckhart/component/welcome_screen.rs +++ b/core/embed/rust/src/ui/layout_eckhart/component/welcome_screen.rs @@ -1,17 +1,18 @@ use crate::ui::{ component::{Component, Event, EventCtx, Never}, - geometry::{Alignment, Alignment2D, Offset, Rect}, + geometry::{Alignment, Offset, Rect}, shape, shape::Renderer, }; -use super::super::{fonts, theme}; +use super::super::{ + fonts, + theme::{GREY_LIGHT, TEXT_VERTICAL_SPACING}, +}; -const TEXT_BOTTOM_MARGIN: i16 = 54; -const ICON_TOP_MARGIN: i16 = 48; - -use crate::trezorhal::model; +const TEXT_OFFSET: Offset = Offset::new(30, 40); +/// Firmware welcome screen pub struct WelcomeScreen { area: Rect, } @@ -35,26 +36,26 @@ impl Component for WelcomeScreen { } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - shape::ToifImage::new( - self.area.top_center() + Offset::y(ICON_TOP_MARGIN), - theme::ICON_LOGO.toif, - ) - .with_align(Alignment2D::TOP_CENTER) - .with_fg(theme::FG) - .with_bg(theme::BG) - .render(target); + // TODO: should we use `model::FULL_NAME`? - shape::Text::new( - self.area.bottom_center() - Offset::y(TEXT_BOTTOM_MARGIN), - model::FULL_NAME, - fonts::FONT_SATOSHI_REGULAR_38, - ) - .with_align(Alignment::Center) - .with_fg(theme::FG) - .render(target); + const NAME_PARTS: [&str; 3] = ["Trezor", "Safe", "5"]; + + let font = fonts::FONT_SATOSHI_REGULAR_38; + let mut cursor = self.area.top_left() + TEXT_OFFSET; + let row_height = font.text_height() + TEXT_VERTICAL_SPACING; + + for part in &NAME_PARTS { + shape::Text::new(cursor, part, font) + .with_align(Alignment::Start) + .with_fg(GREY_LIGHT) + .render(target); + cursor = cursor + Offset::y(row_height); + } } } +#[cfg(not(feature = "bootloader"))] +use crate::trezorhal::model; #[cfg(feature = "ui_debug")] impl crate::trace::Trace for WelcomeScreen { fn trace(&self, t: &mut dyn crate::trace::Tracer) {