mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-05-28 11:48:45 +00:00
chore(eckhart): use dedicated function for menu buttons creation
This commit is contained in:
parent
11fb6f3e90
commit
48ae2bad26
@ -15,7 +15,7 @@ use crate::{
|
||||
base::{Decision, DecisionBuilder as _},
|
||||
FlowController, FlowMsg, SwipeFlow,
|
||||
},
|
||||
geometry::{Alignment, Direction, LinearPlacement, Offset},
|
||||
geometry::{Direction, LinearPlacement},
|
||||
layout::util::StrOrBytes,
|
||||
},
|
||||
};
|
||||
@ -218,29 +218,23 @@ fn content_main_menu(
|
||||
let mut main_menu = VerticalMenu::<ShortMenuVec>::empty();
|
||||
let mut main_menu_items = Vec::<usize, 3>::new();
|
||||
if address_params {
|
||||
main_menu.item(
|
||||
Button::with_text(address_title)
|
||||
.styled(theme::menu_item_title())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
);
|
||||
main_menu.item(Button::new_menu_item(
|
||||
address_title,
|
||||
theme::menu_item_title(),
|
||||
));
|
||||
unwrap!(main_menu_items.push(MENU_ITEM_ADDRESS_INFO));
|
||||
}
|
||||
if account_params {
|
||||
main_menu.item(
|
||||
Button::with_text(TR::address_details__account_info.into())
|
||||
.styled(theme::menu_item_title())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
);
|
||||
main_menu.item(Button::new_menu_item(
|
||||
TR::address_details__account_info.into(),
|
||||
theme::menu_item_title(),
|
||||
));
|
||||
unwrap!(main_menu_items.push(MENU_ITEM_ACCOUNT_INFO));
|
||||
}
|
||||
main_menu.item(
|
||||
Button::with_text(cancel_menu_label)
|
||||
.styled(theme::menu_item_title_orange())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
);
|
||||
main_menu.item(Button::new_menu_item(
|
||||
cancel_menu_label,
|
||||
theme::menu_item_title_orange(),
|
||||
));
|
||||
unwrap!(main_menu_items.push(MENU_ITEM_CANCEL));
|
||||
|
||||
VerticalMenuScreen::<ShortMenuVec>::new(main_menu)
|
||||
@ -436,29 +430,23 @@ pub fn new_confirm_output(
|
||||
let mut summary_menu_items = Vec::<usize, 3>::new();
|
||||
|
||||
if extra_menu_item {
|
||||
summary_menu.item(
|
||||
Button::with_text(extra_title.unwrap_or(TString::empty()))
|
||||
.styled(theme::menu_item_title())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
);
|
||||
summary_menu.item(Button::new_menu_item(
|
||||
extra_title.unwrap_or(TString::empty()),
|
||||
theme::menu_item_title(),
|
||||
));
|
||||
unwrap!(summary_menu_items.push(MENU_ITEM_EXTRA_INFO));
|
||||
}
|
||||
if fee_menu_item {
|
||||
summary_menu.item(
|
||||
Button::with_text(TR::confirm_total__title_fee.into())
|
||||
.styled(theme::menu_item_title())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
);
|
||||
summary_menu.item(Button::new_menu_item(
|
||||
TR::confirm_total__title_fee.into(),
|
||||
theme::menu_item_title(),
|
||||
));
|
||||
unwrap!(summary_menu_items.push(MENU_ITEM_FEE_INFO));
|
||||
}
|
||||
summary_menu.item(
|
||||
Button::with_text(cancel_menu_label)
|
||||
.styled(theme::menu_item_title_orange())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
);
|
||||
summary_menu.item(Button::new_menu_item(
|
||||
cancel_menu_label,
|
||||
theme::menu_item_title_orange(),
|
||||
));
|
||||
unwrap!(summary_menu_items.push(MENU_ITEM_CANCEL));
|
||||
let content_summary_menu = VerticalMenuScreen::new(summary_menu)
|
||||
.with_header(Header::new(TString::empty()).with_close_button())
|
||||
|
@ -8,7 +8,7 @@ use crate::{
|
||||
base::{Decision, DecisionBuilder as _},
|
||||
FlowController, FlowMsg, SwipeFlow,
|
||||
},
|
||||
geometry::{Alignment, Direction, Offset},
|
||||
geometry::{Alignment, Direction},
|
||||
layout_eckhart::{component::Button, firmware::ShortMenuVec},
|
||||
},
|
||||
};
|
||||
@ -83,14 +83,9 @@ pub fn new_confirm_reset(recovery: bool) -> Result<SwipeFlow, error::Error> {
|
||||
})
|
||||
.one_button_request(br);
|
||||
|
||||
let content_menu = VerticalMenuScreen::new(
|
||||
VerticalMenu::<ShortMenuVec>::empty().with_item(
|
||||
Button::with_text(TR::buttons__cancel.into())
|
||||
.styled(theme::menu_item_title_orange())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
),
|
||||
)
|
||||
let content_menu = VerticalMenuScreen::new(VerticalMenu::<ShortMenuVec>::empty().with_item(
|
||||
Button::new_menu_item(TR::buttons__cancel.into(), theme::menu_item_title_orange()),
|
||||
))
|
||||
.with_header(
|
||||
Header::new(title)
|
||||
.with_right_button(Button::with_icon(theme::ICON_CROSS), HeaderMsg::Cancelled),
|
||||
|
@ -13,7 +13,7 @@ use crate::{
|
||||
base::{Decision, DecisionBuilder as _},
|
||||
FlowController, FlowMsg, SwipeFlow,
|
||||
},
|
||||
geometry::{Alignment, Direction, LinearPlacement, Offset},
|
||||
geometry::{Direction, LinearPlacement},
|
||||
},
|
||||
};
|
||||
|
||||
@ -135,29 +135,23 @@ pub fn new_confirm_summary(
|
||||
let mut menu_items = Vec::<usize, 3>::new();
|
||||
|
||||
if account_paragraphs.is_some() {
|
||||
menu.item(
|
||||
Button::with_text(TR::address_details__account_info.into())
|
||||
.styled(theme::menu_item_title())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
);
|
||||
menu.item(Button::new_menu_item(
|
||||
TR::address_details__account_info.into(),
|
||||
theme::menu_item_title(),
|
||||
));
|
||||
unwrap!(menu_items.push(MENU_ITEM_ACCOUNT_INFO));
|
||||
}
|
||||
if extra_paragraphs.is_some() {
|
||||
menu.item(
|
||||
Button::with_text(extra_title.unwrap_or(TR::buttons__more_info.into()))
|
||||
.styled(theme::menu_item_title())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
);
|
||||
menu.item(Button::new_menu_item(
|
||||
extra_title.unwrap_or(TR::buttons__more_info.into()),
|
||||
theme::menu_item_title(),
|
||||
));
|
||||
unwrap!(menu_items.push(MENU_ITEM_EXTRA_INFO));
|
||||
}
|
||||
menu.item(
|
||||
Button::with_text(verb_cancel.unwrap_or(TR::buttons__cancel.into()))
|
||||
.styled(theme::menu_item_title_orange())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
);
|
||||
menu.item(Button::new_menu_item(
|
||||
verb_cancel.unwrap_or(TR::buttons__cancel.into()),
|
||||
theme::menu_item_title_orange(),
|
||||
));
|
||||
unwrap!(menu_items.push(MENU_ITEM_CANCEL));
|
||||
let content_menu = VerticalMenuScreen::new(menu)
|
||||
.with_header(Header::new(title).with_close_button())
|
||||
|
@ -12,7 +12,7 @@ use crate::{
|
||||
base::{Decision, DecisionBuilder as _},
|
||||
FlowController, FlowMsg, SwipeFlow,
|
||||
},
|
||||
geometry::{Alignment, Direction, LinearPlacement, Offset},
|
||||
geometry::{Direction, LinearPlacement},
|
||||
layout::util::StrOrBytes,
|
||||
},
|
||||
};
|
||||
@ -105,18 +105,14 @@ pub fn new_confirm_value_intro(
|
||||
});
|
||||
|
||||
let menu_items = VerticalMenu::<ShortMenuVec>::empty()
|
||||
.with_item(
|
||||
Button::with_text(value_menu_label)
|
||||
.styled(theme::menu_item_title())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
)
|
||||
.with_item(
|
||||
Button::with_text(cancel_menu_label)
|
||||
.styled(theme::menu_item_title_orange())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
);
|
||||
.with_item(Button::new_menu_item(
|
||||
value_menu_label,
|
||||
theme::menu_item_title(),
|
||||
))
|
||||
.with_item(Button::new_menu_item(
|
||||
cancel_menu_label,
|
||||
theme::menu_item_title_orange(),
|
||||
));
|
||||
|
||||
let content_menu = VerticalMenuScreen::new(menu_items)
|
||||
.with_header(Header::new(TString::empty()).with_close_button())
|
||||
|
@ -9,7 +9,7 @@ use crate::{
|
||||
base::{Decision, DecisionBuilder as _},
|
||||
FlowController, FlowMsg, SwipeFlow,
|
||||
},
|
||||
geometry::{Alignment, Direction, Offset},
|
||||
geometry::Direction,
|
||||
},
|
||||
};
|
||||
|
||||
@ -83,20 +83,16 @@ pub fn new_confirm_with_menu<T: AllowedTextContent + MaybeTrace + 'static>(
|
||||
let mut menu_items = VerticalMenu::<ShortMenuVec>::empty();
|
||||
|
||||
if let Some(extra_menu_label) = extra_menu_label {
|
||||
menu_items.item(
|
||||
Button::with_text(extra_menu_label)
|
||||
.styled(theme::menu_item_title())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
);
|
||||
menu_items.item(Button::new_menu_item(
|
||||
extra_menu_label,
|
||||
theme::menu_item_title(),
|
||||
));
|
||||
}
|
||||
|
||||
menu_items.item(
|
||||
Button::with_text(cancel_menu_label)
|
||||
.styled(theme::menu_item_title_orange())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
);
|
||||
menu_items.item(Button::new_menu_item(
|
||||
cancel_menu_label,
|
||||
theme::menu_item_title_orange(),
|
||||
));
|
||||
|
||||
let content_menu = VerticalMenuScreen::new(menu_items)
|
||||
.with_header(Header::new(TString::empty()).with_close_button())
|
||||
|
@ -15,7 +15,7 @@ use crate::{
|
||||
base::{Decision, DecisionBuilder as _},
|
||||
FlowController, FlowMsg, SwipeFlow,
|
||||
},
|
||||
geometry::{Alignment, Direction, LinearPlacement, Offset},
|
||||
geometry::{Direction, LinearPlacement},
|
||||
layout::util::RecoveryType,
|
||||
},
|
||||
};
|
||||
@ -207,20 +207,16 @@ pub fn new_continue_recovery_homepage(
|
||||
));
|
||||
|
||||
let res = if show_instructions {
|
||||
let content_menu = VerticalMenuScreen::new(
|
||||
VerticalMenu::<ShortMenuVec>::empty().with_item(
|
||||
Button::with_text(cancel_btn.into())
|
||||
.styled(theme::menu_item_title_orange())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
),
|
||||
)
|
||||
.with_header(Header::new(TString::empty()).with_close_button())
|
||||
.map(|msg| match msg {
|
||||
VerticalMenuScreenMsg::Selected(i) => Some(FlowMsg::Choice(i)),
|
||||
VerticalMenuScreenMsg::Close => Some(FlowMsg::Cancelled),
|
||||
_ => None,
|
||||
});
|
||||
let content_menu =
|
||||
VerticalMenuScreen::new(VerticalMenu::<ShortMenuVec>::empty().with_item(
|
||||
Button::new_menu_item(cancel_btn.into(), theme::menu_item_title_orange()),
|
||||
))
|
||||
.with_header(Header::new(TString::empty()).with_close_button())
|
||||
.map(|msg| match msg {
|
||||
VerticalMenuScreenMsg::Selected(i) => Some(FlowMsg::Choice(i)),
|
||||
VerticalMenuScreenMsg::Close => Some(FlowMsg::Cancelled),
|
||||
_ => None,
|
||||
});
|
||||
|
||||
let mut res = SwipeFlow::new(&ContinueRecoveryBeforeShares::Main)?;
|
||||
res.add_page(&ContinueRecoveryBeforeShares::Main, content_main)?
|
||||
@ -229,22 +225,16 @@ pub fn new_continue_recovery_homepage(
|
||||
} else if pages.is_none() {
|
||||
let content_menu = VerticalMenuScreen::new(
|
||||
VerticalMenu::<ShortMenuVec>::empty()
|
||||
.with_item(
|
||||
Button::with_text_and_subtext(
|
||||
TR::words__recovery_share.into(),
|
||||
TR::buttons__more_info.into(),
|
||||
None,
|
||||
)
|
||||
.styled(theme::menu_item_title())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
)
|
||||
.with_item(
|
||||
Button::with_text(cancel_btn.into())
|
||||
.styled(theme::menu_item_title_orange())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
),
|
||||
.with_item(Button::new_menu_item_with_subtext(
|
||||
TR::words__recovery_share.into(),
|
||||
theme::menu_item_title(),
|
||||
TR::buttons__more_info.into(),
|
||||
None,
|
||||
))
|
||||
.with_item(Button::new_menu_item(
|
||||
cancel_btn.into(),
|
||||
theme::menu_item_title_orange(),
|
||||
)),
|
||||
)
|
||||
.with_header(Header::new(TR::recovery__title.into()).with_close_button())
|
||||
.map(|msg| match msg {
|
||||
@ -281,18 +271,14 @@ pub fn new_continue_recovery_homepage(
|
||||
} else {
|
||||
let content_menu = VerticalMenuScreen::new(
|
||||
VerticalMenu::<ShortMenuVec>::empty()
|
||||
.with_item(
|
||||
Button::with_text(TR::recovery__title_remaining_shares.into())
|
||||
.styled(theme::menu_item_title())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
)
|
||||
.with_item(
|
||||
Button::with_text(cancel_btn.into())
|
||||
.styled(theme::menu_item_title_orange())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
),
|
||||
.with_item(Button::new_menu_item(
|
||||
TR::recovery__title_remaining_shares.into(),
|
||||
theme::menu_item_title(),
|
||||
))
|
||||
.with_item(Button::new_menu_item(
|
||||
cancel_btn.into(),
|
||||
theme::menu_item_title_orange(),
|
||||
)),
|
||||
)
|
||||
.with_header(Header::new(TString::empty()).with_close_button())
|
||||
.map(|msg| match msg {
|
||||
|
@ -13,7 +13,7 @@ use crate::{
|
||||
base::{Decision, DecisionBuilder as _},
|
||||
FlowController, FlowMsg, SwipeFlow,
|
||||
},
|
||||
geometry::{Alignment, Direction, LinearPlacement, Offset},
|
||||
geometry::{Direction, LinearPlacement},
|
||||
},
|
||||
};
|
||||
use heapless::Vec;
|
||||
@ -135,24 +135,18 @@ pub fn new_get_address(
|
||||
|
||||
let content_menu = VerticalMenuScreen::new(
|
||||
VerticalMenu::<ShortMenuVec>::empty()
|
||||
.with_item(
|
||||
Button::with_text(TR::address__qr_code.into())
|
||||
.styled(theme::menu_item_title())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
)
|
||||
.with_item(
|
||||
Button::with_text(TR::address_details__account_info.into())
|
||||
.styled(theme::menu_item_title())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
)
|
||||
.with_item(
|
||||
Button::with_text(TR::buttons__cancel.into())
|
||||
.styled(theme::menu_item_title_orange())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
),
|
||||
.with_item(Button::new_menu_item(
|
||||
TR::address__qr_code.into(),
|
||||
theme::menu_item_title(),
|
||||
))
|
||||
.with_item(Button::new_menu_item(
|
||||
TR::address_details__account_info.into(),
|
||||
theme::menu_item_title(),
|
||||
))
|
||||
.with_item(Button::new_menu_item(
|
||||
TR::buttons__cancel.into(),
|
||||
theme::menu_item_title_orange(),
|
||||
)),
|
||||
)
|
||||
.with_header(
|
||||
Header::new(flow_title)
|
||||
|
@ -11,7 +11,7 @@ use crate::{
|
||||
base::{Decision, DecisionBuilder as _},
|
||||
FlowController, FlowMsg, SwipeFlow,
|
||||
},
|
||||
geometry::{Alignment, Direction, LinearPlacement, Offset},
|
||||
geometry::{Direction, LinearPlacement},
|
||||
},
|
||||
};
|
||||
|
||||
@ -72,14 +72,12 @@ pub fn new_prompt_backup() -> Result<SwipeFlow, error::Error> {
|
||||
_ => None,
|
||||
});
|
||||
|
||||
let content_menu = VerticalMenuScreen::new(
|
||||
VerticalMenu::<ShortMenuVec>::empty().with_item(
|
||||
Button::with_text(TR::backup__title_skip.into())
|
||||
.styled(theme::menu_item_title_orange())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
let content_menu = VerticalMenuScreen::new(VerticalMenu::<ShortMenuVec>::empty().with_item(
|
||||
Button::new_menu_item(
|
||||
TR::backup__title_skip.into(),
|
||||
theme::menu_item_title_orange(),
|
||||
),
|
||||
)
|
||||
))
|
||||
.with_header(
|
||||
Header::new(title)
|
||||
.with_right_button(Button::with_icon(theme::ICON_CROSS), HeaderMsg::Cancelled),
|
||||
|
@ -8,7 +8,7 @@ use crate::{
|
||||
base::{Decision, DecisionBuilder as _},
|
||||
FlowController, FlowMsg, SwipeFlow,
|
||||
},
|
||||
geometry::{Alignment, Direction, Offset},
|
||||
geometry::Direction,
|
||||
},
|
||||
};
|
||||
|
||||
@ -88,18 +88,14 @@ pub fn new_request_number(
|
||||
});
|
||||
|
||||
let menu_items = VerticalMenu::<ShortMenuVec>::empty()
|
||||
.with_item(
|
||||
Button::with_text(TR::buttons__more_info.into())
|
||||
.styled(theme::menu_item_title())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
)
|
||||
.with_item(
|
||||
Button::with_text(TR::buttons__cancel.into())
|
||||
.styled(theme::menu_item_title_orange())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
);
|
||||
.with_item(Button::new_menu_item(
|
||||
TR::buttons__more_info.into(),
|
||||
theme::menu_item_title(),
|
||||
))
|
||||
.with_item(Button::new_menu_item(
|
||||
TR::buttons__cancel.into(),
|
||||
theme::menu_item_title_orange(),
|
||||
));
|
||||
|
||||
let content_menu = VerticalMenuScreen::new(menu_items)
|
||||
.with_header(Header::new(TString::empty()).with_close_button())
|
||||
|
@ -11,7 +11,7 @@ use crate::{
|
||||
base::{Decision, DecisionBuilder as _},
|
||||
FlowController, FlowMsg, SwipeFlow,
|
||||
},
|
||||
geometry::{Alignment, Direction, LinearPlacement, Offset},
|
||||
geometry::{Direction, LinearPlacement},
|
||||
},
|
||||
};
|
||||
|
||||
@ -91,18 +91,11 @@ pub fn new_show_danger(
|
||||
let content_menu = VerticalMenuScreen::new(
|
||||
VerticalMenu::<ShortMenuVec>::empty()
|
||||
.with_separators()
|
||||
.with_item(
|
||||
Button::with_text(verb_cancel)
|
||||
.styled(theme::menu_item_title())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
)
|
||||
.with_item(
|
||||
Button::with_text(TR::words__continue_anyway.into())
|
||||
.styled(theme::menu_item_title_orange())
|
||||
.with_text_align(Alignment::Start)
|
||||
.with_content_offset(Offset::x(12)),
|
||||
),
|
||||
.with_item(Button::new_menu_item(verb_cancel, theme::menu_item_title()))
|
||||
.with_item(Button::new_menu_item(
|
||||
TR::words__continue_anyway.into(),
|
||||
theme::menu_item_title_orange(),
|
||||
)),
|
||||
)
|
||||
.with_header(
|
||||
Header::new(menu_title.unwrap_or("".into()))
|
||||
|
Loading…
Reference in New Issue
Block a user