pub struct FileBrowserState { /* private fields */ }Expand description
State for a FileBrowser component.
Manages the current directory, entries, filtering, sorting, and selection.
Implementations§
Source§impl FileBrowserState
impl FileBrowserState
Sourcepub fn new(path: impl Into<String>, entries: Vec<FileEntry>) -> Self
pub fn new(path: impl Into<String>, entries: Vec<FileEntry>) -> Self
Creates a new file browser with initial path and entries.
§Example
use envision::component::file_browser::{FileEntry, FileBrowserState};
let entries = vec![
FileEntry::directory("src", "/src"),
FileEntry::file("main.rs", "/main.rs"),
];
let state = FileBrowserState::new("/", entries);
assert_eq!(state.current_path(), "/");
assert_eq!(state.entries().len(), 2);Sourcepub fn with_provider(
path: impl Into<String>,
provider: Arc<dyn DirectoryProvider>,
) -> Self
pub fn with_provider( path: impl Into<String>, provider: Arc<dyn DirectoryProvider>, ) -> Self
Creates a new file browser with a directory provider.
Sourcepub fn with_selection_mode(self, mode: SelectionMode) -> Self
pub fn with_selection_mode(self, mode: SelectionMode) -> Self
Sets the selection mode (builder pattern).
§Example
use envision::component::file_browser::{FileEntry, FileBrowserState, SelectionMode};
let state = FileBrowserState::new("/", vec![
FileEntry::file("a.txt", "/a.txt"),
]).with_selection_mode(SelectionMode::Multiple);
assert_eq!(state.selection_mode(), &SelectionMode::Multiple);Sourcepub fn with_sort_field(self, field: FileSortField) -> Self
pub fn with_sort_field(self, field: FileSortField) -> Self
Sets the sort field (builder pattern).
§Example
use envision::component::file_browser::{FileEntry, FileBrowserState, FileSortField};
let state = FileBrowserState::new("/", vec![
FileEntry::file("a.txt", "/a.txt"),
]).with_sort_field(FileSortField::Size);
assert_eq!(state.sort_field(), &FileSortField::Size);Sourcepub fn with_sort_direction(self, direction: FileSortDirection) -> Self
pub fn with_sort_direction(self, direction: FileSortDirection) -> Self
Sets the sort direction (builder pattern).
§Example
use envision::component::file_browser::{FileEntry, FileBrowserState, FileSortDirection};
let state = FileBrowserState::new("/", vec![
FileEntry::file("a.txt", "/a.txt"),
]).with_sort_direction(FileSortDirection::Descending);
assert_eq!(state.sort_direction(), &FileSortDirection::Descending);Sourcepub fn with_directories_first(self, directories_first: bool) -> Self
pub fn with_directories_first(self, directories_first: bool) -> Self
Sets whether directories are shown first (builder pattern).
Sets whether hidden files are shown (builder pattern).
Sourcepub fn current_path(&self) -> &str
pub fn current_path(&self) -> &str
Returns the current directory path.
§Example
use envision::component::file_browser::{FileEntry, FileBrowserState};
let state = FileBrowserState::new("/home/user", vec![]);
assert_eq!(state.current_path(), "/home/user");Sourcepub fn path_segments(&self) -> &[String]
pub fn path_segments(&self) -> &[String]
Returns the path segments for breadcrumb display.
§Example
use envision::component::file_browser::{FileEntry, FileBrowserState};
let state = FileBrowserState::new("/home/user", vec![]);
assert_eq!(state.path_segments(), &["/", "home", "user"]);Sourcepub fn entries(&self) -> &[FileEntry]
pub fn entries(&self) -> &[FileEntry]
Returns all entries (unfiltered).
§Example
use envision::component::file_browser::{FileEntry, FileBrowserState};
let state = FileBrowserState::new("/", vec![
FileEntry::file("a.txt", "/a.txt"),
FileEntry::directory("src", "/src"),
]);
assert_eq!(state.entries().len(), 2);Sourcepub fn filtered_indices(&self) -> &[usize]
pub fn filtered_indices(&self) -> &[usize]
Returns the indices of visible (filtered) entries.
Sourcepub fn filtered_entries(&self) -> Vec<&FileEntry>
pub fn filtered_entries(&self) -> Vec<&FileEntry>
Returns the filtered entries.
§Example
use envision::component::file_browser::{FileEntry, FileBrowserState};
let state = FileBrowserState::new("/", vec![
FileEntry::file("readme.md", "/readme.md"),
FileEntry::directory("src", "/src"),
]);
assert_eq!(state.filtered_entries().len(), 2);Sourcepub fn selected_entry(&self) -> Option<&FileEntry>
pub fn selected_entry(&self) -> Option<&FileEntry>
Returns the currently selected entry.
§Example
use envision::component::file_browser::{FileEntry, FileBrowserState};
let state = FileBrowserState::new("/", vec![
FileEntry::file("readme.md", "/readme.md"),
]);
let entry = state.selected_entry().unwrap();
assert_eq!(entry.name(), "readme.md");Sourcepub fn selected_index(&self) -> Option<usize>
pub fn selected_index(&self) -> Option<usize>
Returns the selected index within the filtered list.
§Example
use envision::component::file_browser::{FileEntry, FileBrowserState};
let state = FileBrowserState::new("/", vec![FileEntry::file("a.txt", "/a.txt")]);
assert_eq!(state.selected_index(), Some(0));
let empty = FileBrowserState::new("/", vec![]);
assert_eq!(empty.selected_index(), None);Sourcepub fn selected(&self) -> Option<usize>
pub fn selected(&self) -> Option<usize>
Returns the selected index within the filtered list.
This is an alias for selected_index() that provides a
consistent accessor name across all selection-based components.
Sourcepub fn selected_item(&self) -> Option<&FileEntry>
pub fn selected_item(&self) -> Option<&FileEntry>
Returns the currently selected file entry.
This is an alias for selected_entry() that provides a
consistent accessor name across all selection-based components.
Sourcepub fn selected_paths(&self) -> &[String]
pub fn selected_paths(&self) -> &[String]
Returns the selected paths (for multi-select mode).
§Example
use envision::component::file_browser::{FileEntry, FileBrowserState};
let state = FileBrowserState::new("/", vec![]);
assert!(state.selected_paths().is_empty());Sourcepub fn filter_text(&self) -> &str
pub fn filter_text(&self) -> &str
Returns the current filter text.
§Example
use envision::component::file_browser::{FileEntry, FileBrowserState};
let state = FileBrowserState::new("/", vec![]);
assert_eq!(state.filter_text(), "");Sourcepub fn selection_mode(&self) -> &SelectionMode
pub fn selection_mode(&self) -> &SelectionMode
Returns the selection mode.
§Example
use envision::component::file_browser::{FileEntry, FileBrowserState, SelectionMode};
let state = FileBrowserState::new("/", vec![])
.with_selection_mode(SelectionMode::Multiple);
assert_eq!(state.selection_mode(), &SelectionMode::Multiple);Sourcepub fn sort_field(&self) -> &FileSortField
pub fn sort_field(&self) -> &FileSortField
Returns the sort field.
§Example
use envision::component::file_browser::{FileEntry, FileBrowserState, FileSortField};
let state = FileBrowserState::new("/", vec![]);
assert_eq!(state.sort_field(), &FileSortField::Name);Sourcepub fn sort_direction(&self) -> &FileSortDirection
pub fn sort_direction(&self) -> &FileSortDirection
Returns the sort direction.
Returns whether hidden files are shown.
§Example
use envision::component::file_browser::{FileEntry, FileBrowserState};
let state = FileBrowserState::new("/", vec![]);
assert!(!state.show_hidden());
let state = FileBrowserState::new("/", vec![]).with_show_hidden(true);
assert!(state.show_hidden());Sets whether hidden files are shown.
§Example
use envision::component::FileBrowserState;
let mut state = FileBrowserState::new("/", vec![]);
state.set_show_hidden(true);
assert!(state.show_hidden());Sourcepub fn update(&mut self, msg: FileBrowserMessage) -> Option<FileBrowserOutput>
pub fn update(&mut self, msg: FileBrowserMessage) -> Option<FileBrowserOutput>
Updates the state with a message, returning any output.
§Example
use envision::component::file_browser::{FileEntry, FileBrowserState};
use envision::component::{FileBrowserMessage, FileBrowserOutput};
let mut state = FileBrowserState::new("/", vec![
FileEntry::file("a.txt", "/a.txt"),
FileEntry::file("b.txt", "/b.txt"),
]);
let output = state.update(FileBrowserMessage::Down);
assert_eq!(output, Some(FileBrowserOutput::SelectionChanged(1)));Trait Implementations§
Source§impl Clone for FileBrowserState
impl Clone for FileBrowserState
Source§fn clone(&self) -> FileBrowserState
fn clone(&self) -> FileBrowserState
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for FileBrowserState
impl Debug for FileBrowserState
Source§impl Default for FileBrowserState
impl Default for FileBrowserState
Source§impl PartialEq for FileBrowserState
impl PartialEq for FileBrowserState
Auto Trait Implementations§
impl Freeze for FileBrowserState
impl !RefUnwindSafe for FileBrowserState
impl !Send for FileBrowserState
impl !Sync for FileBrowserState
impl Unpin for FileBrowserState
impl UnsafeUnpin for FileBrowserState
impl !UnwindSafe for FileBrowserState
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more