diff options
author | Piotr Wach <pwach@bloomberg.net> | 2024-01-07 09:19:09 +0000 |
---|---|---|
committer | Piotr Wach <pwach@bloomberg.net> | 2024-01-07 09:19:09 +0000 |
commit | feec3eb37d50c4b927ae3f948159693f134edf4b (patch) | |
tree | 7bd9ed5b4d42cac213255ff43e9b7e7e81afed40 /src | |
parent | 5123cf584ab68c0a2f491580289c7243e8651bfa (diff) |
Move AppState to separate file
Diffstat (limited to 'src')
-rw-r--r-- | src/interactive/app/app_state.rs | 35 | ||||
-rw-r--r-- | src/interactive/app/eventloop.rs | 36 | ||||
-rw-r--r-- | src/interactive/app/handlers.rs | 5 | ||||
-rw-r--r-- | src/interactive/app/mod.rs | 1 | ||||
-rw-r--r-- | src/interactive/app/terminal_app.rs | 2 | ||||
-rw-r--r-- | src/interactive/widgets/glob.rs | 2 | ||||
-rw-r--r-- | src/interactive/widgets/main.rs | 2 |
7 files changed, 44 insertions, 39 deletions
diff --git a/src/interactive/app/app_state.rs b/src/interactive/app/app_state.rs new file mode 100644 index 0000000..7983374 --- /dev/null +++ b/src/interactive/app/app_state.rs @@ -0,0 +1,35 @@ +use dua::WalkResult; + +use super::{navigation::Navigation, EntryDataBundle, SortMode}; + +#[derive(Default, Copy, Clone, PartialEq)] +pub enum FocussedPane { + #[default] + Main, + Help, + Mark, + Glob, +} + +#[derive(Default)] +pub struct Cursor { + pub show: bool, + pub x: u16, + pub y: u16, +} + +#[derive(Default)] +pub struct AppState { + pub navigation: Navigation, + pub glob_navigation: Option<Navigation>, + pub entries: Vec<EntryDataBundle>, + pub sorting: SortMode, + pub message: Option<String>, + pub focussed: FocussedPane, + pub is_scanning: bool, +} + +pub enum ProcessingResult { + Finished(WalkResult), + ExitRequested(WalkResult), +}
\ No newline at end of file diff --git a/src/interactive/app/eventloop.rs b/src/interactive/app/eventloop.rs index 2d2459c..98e13c2 100644 --- a/src/interactive/app/eventloop.rs +++ b/src/interactive/app/eventloop.rs @@ -3,7 +3,7 @@ use crate::interactive::{ sorted_entries, widgets::{glob_search, MainWindow, MainWindowProps}, ByteVisualization, CursorDirection, CursorMode, DisplayOptions, EntryDataBundle, MarkEntryMode, - SortMode, + SortMode, app_state::FocussedPane, }; use anyhow::Result; use crossbeam::channel::Receiver; @@ -17,41 +17,9 @@ use std::path::PathBuf; use tui::backend::Backend; use tui_react::Terminal; -use super::input::input_channel; +use super::{input::input_channel, app_state::{AppState, Cursor, ProcessingResult}}; use super::tree_view::TreeView; -#[derive(Default, Copy, Clone, PartialEq)] -pub enum FocussedPane { - #[default] - Main, - Help, - Mark, - Glob, -} - -#[derive(Default)] -pub struct Cursor { - pub show: bool, - pub x: u16, - pub y: u16, -} - -#[derive(Default)] -pub struct AppState { - pub navigation: Navigation, - pub glob_navigation: Option<Navigation>, - pub entries: Vec<EntryDataBundle>, - pub sorting: SortMode, - pub message: Option<String>, - pub focussed: FocussedPane, - pub is_scanning: bool, -} - -pub enum ProcessingResult { - Finished(WalkResult), - ExitRequested(WalkResult), -} - impl AppState { pub fn navigation_mut(&mut self) -> &mut Navigation { self.glob_navigation diff --git a/src/interactive/app/handlers.rs b/src/interactive/app/handlers.rs index 6d5a7dd..611c2a0 100644 --- a/src/interactive/app/handlers.rs +++ b/src/interactive/app/handlers.rs @@ -1,8 +1,7 @@ use crate::interactive::{ app::tree_view::TreeView, - app::FocussedPane::*, widgets::{GlobPane, HelpPane, MainWindow, MarkMode, MarkPane}, - AppState, DisplayOptions, EntryDataBundle, + DisplayOptions, EntryDataBundle, }; use crosstermion::input::Key; use dua::traverse::TreeIndex; @@ -10,6 +9,8 @@ use std::{fs, io, path::PathBuf}; use tui::backend::Backend; use tui_react::Terminal; +use super::app_state::{AppState, FocussedPane::*}; + #[derive(Copy, Clone)] pub enum CursorMode { Advance, diff --git a/src/interactive/app/mod.rs b/src/interactive/app/mod.rs index 73eb2f2..742127a 100644 --- a/src/interactive/app/mod.rs +++ b/src/interactive/app/mod.rs @@ -6,6 +6,7 @@ pub mod input; mod navigation; pub mod tree_view; pub mod terminal_app; +pub mod app_state; pub use bytevis::*; pub use common::*; diff --git a/src/interactive/app/terminal_app.rs b/src/interactive/app/terminal_app.rs index b19bf1b..1367724 100644 --- a/src/interactive/app/terminal_app.rs +++ b/src/interactive/app/terminal_app.rs @@ -9,7 +9,7 @@ use anyhow::Result; use crate::interactive::widgets::MainWindow; -use super::{DisplayOptions, AppState, ProcessingResult, ByteVisualization, sorted_entries, refresh_key}; +use super::{DisplayOptions, ByteVisualization, sorted_entries, refresh_key, app_state::{ProcessingResult, AppState}}; /// State and methods representing the interactive disk usage analyser for the terminal diff --git a/src/interactive/widgets/glob.rs b/src/interactive/widgets/glob.rs index bad9fd9..9f385a2 100644 --- a/src/interactive/widgets/glob.rs +++ b/src/interactive/widgets/glob.rs @@ -18,7 +18,7 @@ use tui_react::{draw_text_nowrap_fn, Terminal}; use unicode_segmentation::UnicodeSegmentation; use unicode_width::UnicodeWidthStr; -use crate::interactive::Cursor; +use crate::interactive::app_state::Cursor; pub struct GlobPaneProps { pub border_style: Style, diff --git a/src/interactive/widgets/main.rs b/src/interactive/widgets/main.rs index 46e6724..6a4bfb8 100644 --- a/src/interactive/widgets/main.rs +++ b/src/interactive/widgets/main.rs @@ -3,7 +3,7 @@ use crate::interactive::{ Entries, EntriesProps, Footer, FooterProps, GlobPane, GlobPaneProps, Header, HelpPane, HelpPaneProps, MarkPane, MarkPaneProps, COLOR_MARKED, }, - AppState, Cursor, DisplayOptions, FocussedPane, + DisplayOptions, app_state::{AppState, FocussedPane, Cursor}, }; use std::borrow::Borrow; use tui::backend::Backend; |