diff options
| author | joeac <me@joeac.net> | 2026-01-17 17:17:50 +0000 |
|---|---|---|
| committer | joeac <me@joeac.net> | 2026-01-17 17:17:50 +0000 |
| commit | bf74f305894bde98033932235a4210c7d6865adf (patch) | |
| tree | 051422c97fcb5d7c2eafd426ea66e1a906948747 /schist_desktop_gui/src/gui/components/navigation/view_navigation.rs | |
| parent | fe85652e4d3e8906824baddaafd05d19105579b8 (diff) | |
| parent | f69ec8416c4e6301dcfa06791b025785d7f61b6b (diff) | |
Merge pull request 'random-stuff' (#4) from random-stuff into main
Reviewed-on: https://git.joeac.net/joeac/schist/pulls/4
Diffstat (limited to 'schist_desktop_gui/src/gui/components/navigation/view_navigation.rs')
| -rw-r--r-- | schist_desktop_gui/src/gui/components/navigation/view_navigation.rs | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/schist_desktop_gui/src/gui/components/navigation/view_navigation.rs b/schist_desktop_gui/src/gui/components/navigation/view_navigation.rs index beec818..3f1da18 100644 --- a/schist_desktop_gui/src/gui/components/navigation/view_navigation.rs +++ b/schist_desktop_gui/src/gui/components/navigation/view_navigation.rs @@ -1,26 +1,27 @@ use iced::{widget::column, Element}; +use crate::traits::Viewable; + use super::{Message, Navigation}; -pub fn view_navigation<'a, TOption>( - navigation: &'a Navigation<TOption>, -) -> Element<'a, Message<TOption>> +impl<'a, TOption> Viewable<'a, Message<TOption>> for Navigation<TOption> where - TOption: Clone + PartialEq + Into<Element<'a, Message<TOption>>>, + TOption: Clone + PartialEq + 'a, + Element<'a, Message<TOption>>: From<&'a TOption>, { - let mut options = Vec::new(); - navigation - .options_before_active - .iter() - .map(|option| navigation.button(&option)) - .for_each(|option| options.push(option)); - if let Some(active_option) = navigation.active_option.as_ref() { - options.push(navigation.button(&active_option)); + fn view(&'a self) -> iced::Element<'a, Message<TOption>> { + let mut options = Vec::new(); + self.options_before_active + .iter() + .map(|option| self.view_navigation_button(&option)) + .for_each(|option| options.push(option)); + if let Some(active_option) = self.active_option.as_ref() { + options.push(self.view_navigation_button(&active_option)); + } + self.options_after_active + .iter() + .map(|option| self.view_navigation_button(&option)) + .for_each(|option| options.push(option)); + column(options).into() } - navigation - .options_after_active - .iter() - .map(|option| navigation.button(&option)) - .for_each(|option| options.push(option)); - column(options).into() } |
