diff options
author | rabite <rabite@posteo.de> | 2019-03-20 23:38:58 +0100 |
---|---|---|
committer | rabite <rabite@posteo.de> | 2019-03-20 23:38:58 +0100 |
commit | 095cd1074e5240433de67b9ffd052c0555dabd8e (patch) | |
tree | 00710f64ef7eca106679371217c36d1fcbb61a24 /src/files.rs | |
parent | fc2d6d268c6059981422bbe6879f887a5856a7e5 (diff) |
filtering by name
Diffstat (limited to 'src/files.rs')
-rw-r--r-- | src/files.rs | 22 |
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> { |