diff --git a/src/app.rs b/src/app.rs index d75beb8..28933a4 100644 --- a/src/app.rs +++ b/src/app.rs @@ -61,6 +61,7 @@ pub enum Action { TabPrev, TabViewGrid, TabViewList, + ToggleShowHidden, WindowClose, WindowNew, } @@ -91,6 +92,7 @@ impl Action { Action::TabViewList => { Message::TabMessage(entity_opt, tab::Message::View(tab::View::List)) } + Action::ToggleShowHidden => Message::TabMessage(None, tab::Message::ToggleShowHidden), Action::WindowClose => Message::WindowClose, Action::WindowNew => Message::WindowNew, } @@ -681,8 +683,7 @@ impl Application for App { if let Some(tab) = self.tab_model.data_mut::(entity) { if let Some(ref mut items) = tab.items_opt { for item in items.iter_mut() { - if item.hidden { - //TODO: option to show hidden files + if !tab.config.show_hidden && item.hidden { continue; } item.selected = true; diff --git a/src/dialog.rs b/src/dialog.rs index 614925b..3e265ff 100644 --- a/src/dialog.rs +++ b/src/dialog.rs @@ -349,8 +349,7 @@ impl Application for App { if let Some(tab) = self.tab_model.data_mut::(entity) { if let Some(ref mut items) = tab.items_opt { for item in items.iter_mut() { - if item.hidden { - //TODO: option to show hidden files + if !tab.config.show_hidden && item.hidden { continue; } item.selected = true; diff --git a/src/key_bind.rs b/src/key_bind.rs index dec5b8b..b17d32d 100644 --- a/src/key_bind.rs +++ b/src/key_bind.rs @@ -71,6 +71,7 @@ pub fn key_binds() -> HashMap { bind!([Ctrl], Key::Character("t".into()), TabNew); bind!([Ctrl], Key::Named(Named::Tab), TabNext); bind!([Ctrl, Shift], Key::Named(Named::Tab), TabPrev); + bind!([Ctrl], Key::Character("h".into()), ToggleShowHidden); bind!([Ctrl], Key::Character("q".into()), WindowClose); bind!([Ctrl], Key::Character("n".into()), WindowNew); diff --git a/src/tab.rs b/src/tab.rs index ca0ae38..af0c2c5 100644 --- a/src/tab.rs +++ b/src/tab.rs @@ -380,12 +380,14 @@ impl Location { #[derive(Clone, Debug)] pub enum Message { Click(Option), + Config(TabConfig), EditLocation(Option), GoNext, GoPrevious, Location(Location), LocationUp, RightClick(usize), + ToggleShowHidden, View(View), } @@ -603,6 +605,9 @@ impl Tab { } self.context_menu = None; } + Message::Config(config) => { + self.config = config; + } Message::EditLocation(edit_location) => { self.edit_location = edit_location; } @@ -651,6 +656,7 @@ impl Tab { } } } + Message::ToggleShowHidden => self.config.show_hidden = !self.config.show_hidden, Message::View(view) => { self.view = view; } @@ -859,15 +865,15 @@ impl Tab { //TODO: get from config let item_width = Length::Fixed(96.0); let item_height = Length::Fixed(116.0); + let TabConfig { show_hidden } = self.config; let mut children: Vec> = Vec::new(); if let Some(ref items) = self.items_opt { let mut count = 0; let mut hidden = 0; for (i, item) in items.iter().enumerate() { - if item.hidden { + if !show_hidden && item.hidden { hidden += 1; - //TODO: SHOW HIDDEN OPTION continue; } @@ -942,10 +948,10 @@ impl Tab { if let Some(ref items) = self.items_opt { let mut count = 0; let mut hidden = 0; + let TabConfig { show_hidden } = self.config; for (i, item) in items.iter().enumerate() { - if item.hidden { + if !show_hidden && item.hidden { hidden += 1; - //TODO: SHOW HIDDEN OPTION continue; }