diff options
author | Jiayi Zhao <jeff.no.zhao@gmail.com> | 2020-03-19 10:22:03 -0400 |
---|---|---|
committer | Jiayi Zhao <jeff.no.zhao@gmail.com> | 2020-03-19 10:26:25 -0400 |
commit | bd779fc6df4641f81bbbfe50663d883d64a5c88e (patch) | |
tree | e139f2d588f46142b2d632741a91339df66d1b8f /src/commands | |
parent | 06b2d7730d10240b471e859c7988ed219aa4c590 (diff) |
add soft-reload option
- this helps with reloading upon sort order change
Diffstat (limited to 'src/commands')
-rw-r--r-- | src/commands/delete_files.rs | 2 | ||||
-rw-r--r-- | src/commands/mod.rs | 2 | ||||
-rw-r--r-- | src/commands/parent_directory.rs | 3 | ||||
-rw-r--r-- | src/commands/reload_dir.rs | 23 | ||||
-rw-r--r-- | src/commands/sort.rs | 13 |
5 files changed, 37 insertions, 6 deletions
diff --git a/src/commands/delete_files.rs b/src/commands/delete_files.rs index 628f324..85fe4b6 100644 --- a/src/commands/delete_files.rs +++ b/src/commands/delete_files.rs @@ -6,8 +6,8 @@ use termion::event::Key; use crate::commands::{JoshutoCommand, JoshutoRunnable, ReloadDirList}; use crate::context::JoshutoContext; use crate::error::JoshutoResult; -use crate::ui::TuiBackend; use crate::ui::widgets::TuiPrompt; +use crate::ui::TuiBackend; use crate::util::load_child::LoadChild; #[derive(Clone, Debug)] diff --git a/src/commands/mod.rs b/src/commands/mod.rs index b322d49..953da26 100644 --- a/src/commands/mod.rs +++ b/src/commands/mod.rs @@ -48,8 +48,8 @@ use crate::config::JoshutoCommandMapping; use crate::context::JoshutoContext; use crate::error::{JoshutoError, JoshutoErrorKind, JoshutoResult}; use crate::io::Options; -use crate::sort::SortType; use crate::ui::TuiBackend; +use crate::util::sort::SortType; use crate::HOME_DIR; diff --git a/src/commands/parent_directory.rs b/src/commands/parent_directory.rs index 6f654e9..d6d05bd 100644 --- a/src/commands/parent_directory.rs +++ b/src/commands/parent_directory.rs @@ -1,4 +1,4 @@ -use crate::commands::{JoshutoCommand, JoshutoRunnable}; +use crate::commands::{JoshutoCommand, JoshutoRunnable, ReloadDirList}; use crate::context::JoshutoContext; use crate::error::JoshutoResult; use crate::ui::TuiBackend; @@ -35,6 +35,7 @@ impl std::fmt::Display for ParentDirectory { impl JoshutoRunnable for ParentDirectory { fn execute(&self, context: &mut JoshutoContext, _: &mut TuiBackend) -> JoshutoResult<()> { Self::parent_directory(context)?; + ReloadDirList::soft_reload(context.curr_tab_index, context)?; Ok(()) } } diff --git a/src/commands/reload_dir.rs b/src/commands/reload_dir.rs index a5ef752..30aa386 100644 --- a/src/commands/reload_dir.rs +++ b/src/commands/reload_dir.rs @@ -15,6 +15,29 @@ impl ReloadDirList { "reload_dir_list" } + pub fn soft_reload(index: usize, context: &mut JoshutoContext) -> std::io::Result<()> { + let curr_tab = &mut context.tabs[index]; + let sort_option = &context.config_t.sort_option; + + if let Some(curr_list) = curr_tab.curr_list_mut() { + if curr_list.need_update() { + curr_list.reload_contents(sort_option)?; + } + } + if let Some(curr_list) = curr_tab.parent_list_mut() { + if curr_list.need_update() { + curr_list.reload_contents(sort_option)?; + } + } + if let Some(curr_list) = curr_tab.child_list_mut() { + if curr_list.need_update() { + curr_list.reload_contents(sort_option)?; + } + } + + Ok(()) + } + pub fn reload(index: usize, context: &mut JoshutoContext) -> std::io::Result<()> { let curr_tab = &mut context.tabs[index]; let sort_option = &context.config_t.sort_option; diff --git a/src/commands/sort.rs b/src/commands/sort.rs index 935e7fd..bbb90c2 100644 --- a/src/commands/sort.rs +++ b/src/commands/sort.rs @@ -1,11 +1,13 @@ use std::path; -use crate::commands::{JoshutoCommand, JoshutoRunnable}; +use crate::commands::{JoshutoCommand, JoshutoRunnable, ReloadDirList}; use crate::context::JoshutoContext; use crate::error::JoshutoResult; +use crate::history::DirectoryHistory; use crate::ui::TuiBackend; -use crate::sort::SortType; +use crate::util::load_child::LoadChild; +use crate::util::sort::SortType; use crate::HOME_DIR; @@ -27,13 +29,18 @@ impl JoshutoCommand for Sort {} impl std::fmt::Display for Sort { fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { - f.write_str(Self::command()) + write!(f, "{} {}", Self::command(), self.sort_method.as_str()) } } impl JoshutoRunnable for Sort { fn execute(&self, context: &mut JoshutoContext, backend: &mut TuiBackend) -> JoshutoResult<()> { context.config_t.sort_option.sort_method = self.sort_method; + for tab in context.tabs.iter_mut() { + tab.history.depreciate_all_entries(); + } + ReloadDirList::soft_reload(context.curr_tab_index, context)?; + LoadChild::load_child(context)?; Ok(()) } } |