summaryrefslogtreecommitdiffstats
path: root/src/files.rs
diff options
context:
space:
mode:
authorrabite <rabite@posteo.de>2019-03-20 23:38:58 +0100
committerrabite <rabite@posteo.de>2019-03-20 23:38:58 +0100
commit095cd1074e5240433de67b9ffd052c0555dabd8e (patch)
tree00710f64ef7eca106679371217c36d1fcbb61a24 /src/files.rs
parentfc2d6d268c6059981422bbe6879f887a5856a7e5 (diff)
filtering by name
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> {