hide hidden files

This commit is contained in:
rabite 2019-02-07 02:25:22 +01:00
parent 26dc8db216
commit c1eef611e3
2 changed files with 36 additions and 7 deletions

View File

@ -21,6 +21,7 @@ pub struct Files {
pub sort: SortBy,
pub dirs_first: bool,
pub reverse: bool,
pub show_hidden: bool
}
impl Index<usize> for Files {
@ -58,7 +59,7 @@ impl Files {
let files: Vec<_> = direntries?
.iter()
.map(|file| {
//let file = file?;
//let file = file?;
let name = file.file_name();
let name = name.to_string_lossy();
let kind = get_kind(&file);
@ -69,7 +70,7 @@ impl Files {
let mtime = meta.mtime();
let user = meta.uid();
let group = meta.gid();
let color = get_color(&path, &meta);
let color = get_color(&path, &meta);
File::new(&name, path, kind, size as usize, mtime, color, mode,
user, group)
})
@ -81,6 +82,7 @@ impl Files {
sort: SortBy::Name,
dirs_first: true,
reverse: false,
show_hidden: true
};
files.sort();
@ -148,6 +150,23 @@ impl Files {
pub fn reverse_sort(&mut self) {
self.reverse = !self.reverse
}
pub fn toggle_hidden(&mut self) {
self.show_hidden = !self.show_hidden
}
pub fn reload_files(&mut self) {
let dir = self.directory.clone();
let files = Files::new_from_path(&dir.path()).unwrap();
let files = files
.files
.into_iter()
.skip_while(|f| f.name.starts_with(".") && !self.show_hidden )
.collect();
self.files = files;
}
pub fn len(&self) -> usize {
self.files.len()
}

View File

@ -82,7 +82,7 @@ where
let ysize = self.coordinates.ysize() as usize;
let mut offset = 0;
while position >= ysize - 2 + offset {
while position >= ysize + offset {
offset += 1
}
@ -179,7 +179,7 @@ where
.files
.par_iter()
.position_any(|item| item == file)
.unwrap();
.unwrap_or(0);
self.set_selection(pos);
}
@ -247,14 +247,23 @@ where
}
let file = self.clone_selected_file();
self.content.dirs_first = dir_settings;
self.content.sort = sort_settings;
self.content.sort();
// self.content.dirs_first = dir_settings;
// self.content.sort = sort_settings;
// self.content.sort();
self.select_file(&file);
self.seeking = true;
self.refresh();
}
fn toggle_hidden(&mut self) {
let file = self.clone_selected_file();
self.content.toggle_hidden();
self.content.reload_files();
self.select_file(&file);
self.refresh();
}
fn toggle_dirs_first(&mut self) {
let file = self.clone_selected_file();
self.content.dirs_first = !self.content.dirs_first;
@ -371,6 +380,7 @@ impl Widget for ListView<Files> {
}
Key::Left => self.goto_grand_parent(),
Key::Right => self.goto_selected(),
Key::Char('h') => self.toggle_hidden(),
Key::Char('r') => self.reverse_sort(),
Key::Char('s') => self.cycle_sort(),
Key::Char('k') => self.select_next_mtime(),