group sort members

This commit is contained in:
yggverse 2025-06-25 12:34:17 +03:00
parent 936b459f12
commit 917b1007ad
2 changed files with 36 additions and 24 deletions

View file

@ -147,13 +147,13 @@ impl Storage {
// format dirs list // format dirs list
let dc = &self.list_config.dir; // just short alias let dc = &self.list_config.dir; // just short alias
dirs.sort_by(|a, b| { dirs.sort_by(|a, b| {
if dc.is_sort_accessed { if dc.sort.time.is_accessed {
a.meta.atime().cmp(&b.meta.atime()) a.meta.atime().cmp(&b.meta.atime())
} else if dc.is_sort_created { } else if dc.sort.time.is_created {
a.meta.ctime().cmp(&b.meta.ctime()) a.meta.ctime().cmp(&b.meta.ctime())
} else if dc.is_sort_modified { } else if dc.sort.time.is_modified {
a.meta.mtime().cmp(&b.meta.mtime()) a.meta.mtime().cmp(&b.meta.mtime())
} else if dc.is_sort_count { } else if dc.sort.is_count {
a.meta.size().cmp(&b.meta.size()) a.meta.size().cmp(&b.meta.size())
} else { } else {
a.name.cmp(&b.name) a.name.cmp(&b.name)
@ -188,13 +188,13 @@ impl Storage {
// format files list // format files list
let fc = &self.list_config.file; // just short alias let fc = &self.list_config.file; // just short alias
files.sort_by(|a, b| { files.sort_by(|a, b| {
if fc.is_sort_accessed { if fc.sort.time.is_accessed {
a.meta.atime().cmp(&b.meta.atime()) a.meta.atime().cmp(&b.meta.atime())
} else if fc.is_sort_created { } else if fc.sort.time.is_created {
a.meta.ctime().cmp(&b.meta.ctime()) a.meta.ctime().cmp(&b.meta.ctime())
} else if fc.is_sort_modified { } else if fc.sort.time.is_modified {
a.meta.mtime().cmp(&b.meta.mtime()) a.meta.mtime().cmp(&b.meta.mtime())
} else if fc.is_sort_size { } else if fc.sort.is_size {
a.meta.size().cmp(&b.meta.size()) a.meta.size().cmp(&b.meta.size())
} else { } else {
a.name.cmp(&b.name) a.name.cmp(&b.name)

View file

@ -4,22 +4,26 @@ pub struct Time {
pub is_modified: bool, pub is_modified: bool,
} }
pub struct DirSort {
pub time: Time,
pub is_count: bool,
}
pub struct FileSort {
pub time: Time,
pub is_size: bool,
}
pub struct Dir { pub struct Dir {
pub is_count: bool, pub is_count: bool,
pub is_reverse: bool, pub is_reverse: bool,
pub is_sort_accessed: bool, pub sort: DirSort,
pub is_sort_count: bool,
pub is_sort_created: bool,
pub is_sort_modified: bool,
pub time: Time, pub time: Time,
} }
pub struct File { pub struct File {
pub is_reverse: bool, pub is_reverse: bool,
pub is_size: bool, pub is_size: bool,
pub is_sort_accessed: bool, pub sort: FileSort,
pub is_sort_created: bool,
pub is_sort_modified: bool,
pub is_sort_size: bool,
pub time: Time, pub time: Time,
} }
@ -40,10 +44,14 @@ impl ListConfig {
}, },
is_count: config.list_dir_count, is_count: config.list_dir_count,
is_reverse: config.list_dir_reverse, is_reverse: config.list_dir_reverse,
is_sort_accessed: config.list_dir_sort_accessed, sort: DirSort {
is_sort_created: config.list_dir_sort_created, time: Time {
is_sort_modified: config.list_dir_sort_modified, is_accessed: config.list_dir_sort_accessed,
is_sort_count: config.list_dir_sort_count, is_created: config.list_dir_sort_created,
is_modified: config.list_dir_sort_modified,
},
is_count: config.list_dir_sort_count,
},
}, },
file: File { file: File {
time: Time { time: Time {
@ -53,10 +61,14 @@ impl ListConfig {
}, },
is_reverse: config.list_file_reverse, is_reverse: config.list_file_reverse,
is_size: config.list_file_size, is_size: config.list_file_size,
is_sort_accessed: config.list_file_sort_accessed, sort: FileSort {
is_sort_created: config.list_file_sort_created, time: Time {
is_sort_modified: config.list_file_sort_modified, is_accessed: config.list_file_sort_accessed,
is_sort_size: config.list_file_sort_size, is_created: config.list_file_sort_created,
is_modified: config.list_file_sort_modified,
},
is_size: config.list_file_sort_size,
},
}, },
time_format: config.list_time_format.clone(), time_format: config.list_time_format.clone(),
} }