From ee3cd780e21260257b401c3f5cbababd9e27a15a Mon Sep 17 00:00:00 2001 From: Joe Carstairs Date: Wed, 13 Aug 2025 07:50:21 +0000 Subject: task-073 Co-authored-by: Joe Carstairs Reviewed-on: https://git.joeac.net/joeac/schist/pulls/1 Co-authored-by: Joe Carstairs Co-committed-by: Joe Carstairs --- .../navigation/view_navigation_button.rs | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 schist_desktop_gui/src/gui/components/navigation/view_navigation_button.rs (limited to 'schist_desktop_gui/src/gui/components/navigation/view_navigation_button.rs') diff --git a/schist_desktop_gui/src/gui/components/navigation/view_navigation_button.rs b/schist_desktop_gui/src/gui/components/navigation/view_navigation_button.rs new file mode 100644 index 0000000..3132bf1 --- /dev/null +++ b/schist_desktop_gui/src/gui/components/navigation/view_navigation_button.rs @@ -0,0 +1,27 @@ +use iced::Element; + +use crate::gui::components::{active_button, inactive_button}; + +use super::{Message, Navigation}; + +pub fn view_navigation_button<'a, TOption>( + navigation: &'a Navigation, + option: &'a TOption, +) -> Element<'a, Message> +where + TOption: Clone + PartialEq + Into>>, +{ + if navigation + .active_option + .as_ref() + .is_some_and(|o| *o == *option) + { + active_button(Into::>>::into(option.clone())).into() + } else { + inactive_button( + Into::>>::into(option.clone()), + Message::SelectOption(option.clone()), + ) + .into() + } +} -- cgit v1.2.3