summaryrefslogtreecommitdiff
path: root/schist_desktop_gui/src/gui/components/navigation/view_navigation.rs
diff options
context:
space:
mode:
authorjoeac <me@joeac.net>2026-01-17 17:17:50 +0000
committerjoeac <me@joeac.net>2026-01-17 17:17:50 +0000
commitbf74f305894bde98033932235a4210c7d6865adf (patch)
tree051422c97fcb5d7c2eafd426ea66e1a906948747 /schist_desktop_gui/src/gui/components/navigation/view_navigation.rs
parentfe85652e4d3e8906824baddaafd05d19105579b8 (diff)
parentf69ec8416c4e6301dcfa06791b025785d7f61b6b (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.rs37
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()
}