mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-08-05 05:15:27 +00:00
fixup! fix(core/ui): set page_count through rust ButtonRequest
This commit is contained in:
parent
dab63478c4
commit
d359f81af3
@ -569,6 +569,10 @@ impl EventCtx {
|
||||
self.page_count = Some(count);
|
||||
}
|
||||
|
||||
pub fn map_page_count(&mut self, func: fn(usize) -> usize) {
|
||||
self.page_count = Some(func(self.page_count.unwrap_or(1)));
|
||||
}
|
||||
|
||||
pub fn page_count(&self) -> Option<usize> {
|
||||
self.page_count
|
||||
}
|
||||
|
@ -9,7 +9,7 @@ use crate::ui::{
|
||||
#[derive(Clone)]
|
||||
pub struct OneButtonRequest<T> {
|
||||
button_request: Option<ButtonRequest>,
|
||||
page_count: Option<u16>,
|
||||
page_count_func: Option<fn(usize) -> usize>,
|
||||
pub inner: T,
|
||||
}
|
||||
|
||||
@ -17,13 +17,13 @@ impl<T> OneButtonRequest<T> {
|
||||
pub const fn new(button_request: ButtonRequest, inner: T) -> Self {
|
||||
Self {
|
||||
button_request: Some(button_request),
|
||||
page_count: None,
|
||||
page_count_func: None,
|
||||
inner,
|
||||
}
|
||||
}
|
||||
|
||||
pub const fn with_pages(mut self, page_count: u16) -> Self {
|
||||
self.page_count = Some(page_count);
|
||||
pub const fn with_pages(mut self, func: fn(usize) -> usize) -> Self {
|
||||
self.page_count_func = Some(func);
|
||||
self
|
||||
}
|
||||
}
|
||||
@ -36,15 +36,16 @@ impl<T: Component> Component for OneButtonRequest<T> {
|
||||
}
|
||||
|
||||
fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> {
|
||||
if let Some(page_count) = self.page_count {
|
||||
ctx.set_page_count(page_count.into());
|
||||
}
|
||||
if matches!(event, Event::Attach) {
|
||||
if let Some(button_request) = self.button_request.take() {
|
||||
ctx.send_button_request(button_request.code, button_request.br_type)
|
||||
}
|
||||
}
|
||||
self.inner.event(ctx, event)
|
||||
let res = self.inner.event(ctx, event);
|
||||
if let Some(func) = self.page_count_func {
|
||||
ctx.map_page_count(func);
|
||||
}
|
||||
res
|
||||
}
|
||||
|
||||
fn paint(&mut self) {
|
||||
|
@ -107,7 +107,7 @@ impl ConfirmSummary {
|
||||
.into_layout()?
|
||||
.one_button_request(ButtonRequest::from_tstring(br_code, br_type))
|
||||
// Summary(1) + Hold(1)
|
||||
.with_pages(2);
|
||||
.with_pages(|summary_pages| summary_pages + 1);
|
||||
|
||||
// Hold to confirm
|
||||
let content_hold = Frame::left_aligned(
|
||||
|
@ -171,7 +171,9 @@ impl GetAddress {
|
||||
.with_menu_button()
|
||||
.with_footer(TR::instructions__swipe_up.into(), None)
|
||||
.map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info))
|
||||
.one_button_request(ButtonRequest::from_tstring(br_code, br_type));
|
||||
.one_button_request(ButtonRequest::from_tstring(br_code, br_type))
|
||||
// Count tap-to-confirm screen towards page count
|
||||
.with_pages(|address_pages| address_pages + 1);
|
||||
|
||||
// Tap
|
||||
let content_tap = Frame::left_aligned(title, PromptScreen::new_tap_to_confirm())
|
||||
|
Loading…
Reference in New Issue
Block a user