summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSebastian Thiel <sebastian.thiel@icloud.com>2024-01-10 09:00:02 +0100
committerPiotr Wach <pwach@bloomberg.net>2024-01-10 20:48:54 +0000
commit0ad90ba23e59b98ccca198ce075e582c93d13c5c (patch)
treefa659bf4a6df5259ccb39fea2773d0ab33d7dd81 /src
parent85005ce364b08066a76ab2a8743ce18b4662fa3c (diff)
make WalkOptions available in State so it can re-use it for additional walks.
Diffstat (limited to 'src')
-rw-r--r--src/interactive/app/eventloop.rs11
-rw-r--r--src/interactive/app/state.rs20
-rw-r--r--src/interactive/app/terminal.rs7
3 files changed, 24 insertions, 14 deletions
diff --git a/src/interactive/app/eventloop.rs b/src/interactive/app/eventloop.rs
index 71dcb82..bdb278e 100644
--- a/src/interactive/app/eventloop.rs
+++ b/src/interactive/app/eventloop.rs
@@ -11,7 +11,7 @@ use crosstermion::crossterm::event::{KeyCode, KeyEvent, KeyEventKind, KeyModifie
use crosstermion::input::Event;
use dua::{
traverse::{BackgroundTraversal, EntryData, Traversal},
- WalkOptions, WalkResult,
+ WalkResult,
};
use std::path::PathBuf;
use tui::backend::Backend;
@@ -64,14 +64,9 @@ impl AppState {
result
}
- pub fn traverse(
- &mut self,
- traversal: &Traversal,
- walk_options: &WalkOptions,
- input: Vec<PathBuf>,
- ) -> Result<()> {
+ pub fn traverse(&mut self, traversal: &Traversal, input: Vec<PathBuf>) -> Result<()> {
let background_traversal =
- BackgroundTraversal::start(traversal.root_index, walk_options, input)?;
+ BackgroundTraversal::start(traversal.root_index, &self.walk_options, input)?;
self.navigation_mut().view_root = traversal.root_index;
self.active_traversal = Some(background_traversal);
Ok(())
diff --git a/src/interactive/app/state.rs b/src/interactive/app/state.rs
index b303531..5dcdbff 100644
--- a/src/interactive/app/state.rs
+++ b/src/interactive/app/state.rs
@@ -1,6 +1,7 @@
use std::collections::HashSet;
use dua::traverse::BackgroundTraversal;
+use dua::WalkOptions;
use crate::interactive::widgets::Column;
@@ -22,7 +23,6 @@ pub struct Cursor {
pub y: u16,
}
-#[derive(Default)]
pub struct AppState {
pub navigation: Navigation,
pub glob_navigation: Option<Navigation>,
@@ -33,4 +33,22 @@ pub struct AppState {
pub focussed: FocussedPane,
pub received_events: bool,
pub active_traversal: Option<BackgroundTraversal>,
+ pub walk_options: WalkOptions,
+}
+
+impl AppState {
+ pub fn new(walk_options: WalkOptions) -> Self {
+ AppState {
+ navigation: Default::default(),
+ glob_navigation: None,
+ entries: vec![],
+ sorting: Default::default(),
+ show_columns: Default::default(),
+ message: None,
+ focussed: Default::default(),
+ received_events: false,
+ active_traversal: None,
+ walk_options,
+ }
+ }
}
diff --git a/src/interactive/app/terminal.rs b/src/interactive/app/terminal.rs
index 2109e00..64c68af 100644
--- a/src/interactive/app/terminal.rs
+++ b/src/interactive/app/terminal.rs
@@ -20,7 +20,6 @@ pub struct TerminalApp {
pub display: DisplayOptions,
pub state: AppState,
pub window: MainWindow,
- pub walk_options: WalkOptions,
}
impl TerminalApp {
@@ -38,7 +37,7 @@ impl TerminalApp {
let display = DisplayOptions::new(byte_format);
let window = MainWindow::default();
- let mut state = AppState::default();
+ let mut state = AppState::new(walk_options);
let traversal = {
let mut tree = Tree::new();
@@ -68,14 +67,12 @@ impl TerminalApp {
display,
traversal,
window,
- walk_options,
};
Ok(app)
}
pub fn traverse(&mut self, input: Vec<PathBuf>) -> Result<()> {
- self.state
- .traverse(&self.traversal, &self.walk_options, input)?;
+ self.state.traverse(&self.traversal, input)?;
Ok(())
}