modde_ui/components/
update_banner.rs1use iced::widget::{button, container, row, text};
2use iced::{Element, Length};
3
4use crate::action_button::{ButtonAction, DescribedButtonExt};
5use crate::app::Message;
6
7pub fn view(update: &modde_core::update_check::UpdateInfo) -> Element<'_, Message> {
8 let label = text(format!(
9 "Update available: modde {} (current: {})",
10 update.latest_version, update.current_version
11 ))
12 .size(13);
13
14 let open = button(text("Open release page").size(12))
15 .style(button::primary)
16 .padding([4, 10])
17 .on_action(ButtonAction::OpenUpdateReleasePage);
18
19 let dismiss = button(text("Dismiss").size(12))
20 .style(button::secondary)
21 .padding([4, 10])
22 .on_action(ButtonAction::DismissUpdateBanner);
23
24 container(
25 row![
26 label,
27 iced::widget::Space::new().width(Length::Fill),
28 open,
29 dismiss
30 ]
31 .align_y(iced::Alignment::Center)
32 .spacing(8),
33 )
34 .padding([6, 10])
35 .width(Length::Fill)
36 .style(container::bordered_box)
37 .into()
38}