1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2025-04-22 10:09:04 +00:00

fix(eckhart): Fix behavior of set brightness screen:

Do not confirm brightness by releasing finger, but by pressing the cross button.
This commit is contained in:
Lukas Bielesch 2025-04-01 15:32:11 +02:00 committed by Lukáš Bielesch
parent 36d77044d4
commit a0f2a0c024
3 changed files with 15 additions and 23 deletions

View File

@ -17,7 +17,7 @@ use super::firmware::{
AllowedTextContent, ConfirmHomescreen, ConfirmHomescreenMsg, Homescreen, HomescreenMsg,
MnemonicInput, MnemonicKeyboard, MnemonicKeyboardMsg, NumberInputScreen, NumberInputScreenMsg,
PinKeyboard, PinKeyboardMsg, SelectWordCountMsg, SelectWordCountScreen, SelectWordMsg,
SelectWordScreen, SetBrightnessMsg, SetBrightnessScreen, TextScreen, TextScreenMsg,
SelectWordScreen, SetBrightnessScreen, TextScreen, TextScreenMsg,
};
impl ComponentMsgObj for PinKeyboard<'_> {
@ -130,10 +130,7 @@ impl ComponentMsgObj for ConfirmHomescreen {
}
impl ComponentMsgObj for SetBrightnessScreen {
fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> {
match msg {
SetBrightnessMsg::Confirmed => Ok(CONFIRMED.as_obj()),
SetBrightnessMsg::Cancelled => Ok(CANCELLED.as_obj()),
}
fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> {
Ok(CONFIRMED.as_obj())
}
}

View File

@ -21,11 +21,6 @@ pub struct SetBrightnessScreen {
slider: VerticalSlider,
}
pub enum SetBrightnessMsg {
Confirmed,
Cancelled,
}
impl SetBrightnessScreen {
const SLIDER_HEIGHT: i16 = 392;
pub fn new(min: u16, max: u16, init_value: u16) -> Self {
@ -37,7 +32,7 @@ impl SetBrightnessScreen {
}
impl Component for SetBrightnessScreen {
type Msg = SetBrightnessMsg;
type Msg = ();
fn place(&mut self, bounds: Rect) -> Rect {
// assert full screen
@ -55,12 +50,11 @@ impl Component for SetBrightnessScreen {
fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> {
if let Some(HeaderMsg::Cancelled) = self.header.event(ctx, event) {
return Some(SetBrightnessMsg::Cancelled);
return Some(());
}
if let Some(value) = self.slider.event(ctx, event) {
unwrap!(storage::set_brightness(value as _));
return Some(SetBrightnessMsg::Confirmed);
}
None
}
@ -136,7 +130,7 @@ impl Component for VerticalSlider {
Offset::new(Self::SLIDER_WIDTH, bounds.height()),
Alignment2D::CENTER,
);
self.touch_area = self.area.outset(Insets::uniform(20));
self.touch_area = self.area.outset(Insets::uniform(30));
bounds
}
@ -159,12 +153,7 @@ impl Component for VerticalSlider {
self.touching = false;
self.update_value(pos, ctx);
ctx.request_paint();
// Confirm the value only if the touch ended inside the touch area
if self.touch_area.contains(pos) {
return Some(self.value as _);
} else {
display::backlight(self.value as _);
}
return Some(self.value as _);
}
_ => {}
};
@ -184,12 +173,18 @@ impl Component for VerticalSlider {
.with_bg(theme::GREY_EXTRA_DARK)
.render(target);
let slider_color = if self.touching {
theme::GREY
} else {
theme::GREY_LIGHT
};
// Moving slider
Bar::new(small_area.translate(
Offset::y(val_pct as i16 * (self.area.height() - Self::SLIDER_WIDTH) / 100).neg(),
))
.with_radius(4)
.with_bg(theme::GREY_LIGHT)
.with_bg(slider_color)
.render(target);
}
}

View File

@ -15,7 +15,7 @@ mod vertical_menu;
mod vertical_menu_screen;
pub use action_bar::{ActionBar, ActionBarMsg};
pub use brightness_screen::{SetBrightnessMsg, SetBrightnessScreen};
pub use brightness_screen::SetBrightnessScreen;
pub use confirm_homescreen::{ConfirmHomescreen, ConfirmHomescreenMsg};
pub use header::{Header, HeaderMsg};
pub use hint::Hint;