summaryrefslogtreecommitdiffstats
path: root/src/files.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/files.rs')
-rw-r--r--src/files.rs22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/files.rs b/src/files.rs
index 2ea4512..54e9049 100644
--- a/src/files.rs
+++ b/src/files.rs
@@ -61,6 +61,7 @@ pub struct Files {
pub dirs_first: bool,
pub reverse: bool,
pub show_hidden: bool,
+ pub filter: Option<String>,
pub dirty: DirtyBit
}
@@ -104,6 +105,7 @@ impl Files {
dirs_first: true,
reverse: false,
show_hidden: true,
+ filter: None,
dirty: DirtyBit::new()
};
@@ -148,6 +150,7 @@ impl Files {
dirs_first: true,
reverse: false,
show_hidden: true,
+ filter: None,
dirty: DirtyBit::new()
};
@@ -295,8 +298,25 @@ impl Files {
}
}
+ pub fn set_filter(&mut self, filter: Option<String>) {
+ self.filter = filter;
+ self.set_dirty();
+ }
+
+ pub fn get_filter(&self) -> Option<String> {
+ self.filter.clone()
+ }
+
pub fn len(&self) -> usize {
- self.files.len()
+ match &self.filter {
+ None => self.files.len(),
+ Some(filter) => {
+ self.files
+ .iter()
+ .filter(|f| f.name.contains(filter))
+ .count()
+ }
+ }
}
pub fn get_selected(&self) -> Vec<&File> {