From 254c7a385677261f60443d54fa831fe1ec3eba6e Mon Sep 17 00:00:00 2001 From: Henrik Friedrichsen Date: Sat, 9 Jan 2021 23:23:57 +0100 Subject: [PATCH] refactor: differentiate between screens and views --- src/main.rs | 10 +++++----- src/ui/layout.rs | 29 +++++++++++++++++------------ 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/src/main.rs b/src/main.rs index e7a93a7..c335054 100644 --- a/src/main.rs +++ b/src/main.rs @@ -264,12 +264,12 @@ fn main() { ); let mut layout = ui::layout::Layout::new(status, &event_manager, theme) - .view("search", search.with_name("search"), "Search") - .view("library", libraryview.with_name("library"), "Library") - .view("queue", queueview, "Queue"); + .screen("search", search.with_name("search"), "Search") + .screen("library", libraryview.with_name("library"), "Library") + .screen("queue", queueview, "Queue"); - // initial view is library - layout.set_view("library"); + // initial screen is library + layout.set_screen("library"); cursive.add_global_callback(':', move |s| { if s.find_name::("contextmenu").is_none() { diff --git a/src/ui/layout.rs b/src/ui/layout.rs index a937352..b7143e1 100644 --- a/src/ui/layout.rs +++ b/src/ui/layout.rs @@ -23,7 +23,7 @@ struct Screen { } pub struct Layout { - views: HashMap, + screens: HashMap, stack: Vec, statusbar: Box, focus: Option, @@ -45,7 +45,7 @@ impl Layout { ); Layout { - views: HashMap::new(), + screens: HashMap::new(), stack: Vec::new(), statusbar: status.as_boxed_view(), focus: None, @@ -74,22 +74,27 @@ impl Layout { } } - pub fn add_view, T: IntoBoxedViewExt>(&mut self, id: S, view: T, title: S) { + pub fn add_screen, T: IntoBoxedViewExt>(&mut self, id: S, view: T, title: S) { let s = id.into(); let screen = Screen { title: title.into(), view: view.as_boxed_view_ext(), }; - self.views.insert(s.clone(), screen); + self.screens.insert(s.clone(), screen); self.focus = Some(s); } - pub fn view, T: IntoBoxedViewExt>(mut self, id: S, view: T, title: S) -> Self { - (&mut self).add_view(id, view, title); + pub fn screen, T: IntoBoxedViewExt>( + mut self, + id: S, + view: T, + title: S, + ) -> Self { + (&mut self).add_screen(id, view, title); self } - pub fn set_view>(&mut self, id: S) { + pub fn set_screen>(&mut self, id: S) { let s = id.into(); self.focus = Some(s); self.cmdline_focus = false; @@ -138,7 +143,7 @@ impl Layout { } if let Some(id) = self.focus.as_ref() { - self.views.get(id) + self.screens.get(id) } else { None } @@ -150,7 +155,7 @@ impl Layout { } if let Some(id) = self.focus.as_ref() { - self.views.get_mut(id) + self.screens.get_mut(id) } else { None } @@ -293,9 +298,9 @@ impl ViewExt for Layout { fn on_command(&mut self, s: &mut Cursive, cmd: &Command) -> Result { match cmd { Command::Focus(view) => { - if self.views.keys().any(|k| k == view) { - self.set_view(view.clone()); - let screen = self.views.get_mut(view).unwrap(); + if self.screens.keys().any(|k| k == view) { + self.set_screen(view.clone()); + let screen = self.screens.get_mut(view).unwrap(); screen.view.on_command(s, cmd)?; }