mirror of https://github.com/bobwen-dev/hunter
hide hidden files
This commit is contained in:
parent
26dc8db216
commit
c1eef611e3
23
src/files.rs
23
src/files.rs
|
@ -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()
|
||||
}
|
||||
|
|
|
@ -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(),
|
||||
|
|
Loading…
Reference in New Issue