diff options
| author | krolxon <krolyxon@tutanota.com> | 2024-04-29 15:52:27 +0530 |
|---|---|---|
| committer | krolxon <krolyxon@tutanota.com> | 2024-04-29 15:52:27 +0530 |
| commit | c61b0503c7b9f112a72829004ea5308083f39185 (patch) | |
| tree | 3bba4fc082846fffe2d896d92ed34d186ff53fe0 | |
| parent | 49934311862747e33550ccfebbc9cbbef6a3455d (diff) | |
sort by directories in directory browser
| -rwxr-xr-x | src/browser.rs | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/src/browser.rs b/src/browser.rs index 73f9cdd..e82692a 100755 --- a/src/browser.rs +++ b/src/browser.rs @@ -46,15 +46,23 @@ impl FileBrowser { pub fn update_directory(&mut self, conn: &mut Connection) -> AppResult<()> { self.filetree.clear(); - self.filetree = conn - .conn - .listfiles(self.path.as_str())? - .into_iter() - .filter(|(f, l)| { - f == "directory" - || f == "file" && Path::new(l).has_extension(&["mp3", "ogg", "flac", "m4a", "wav", "aac" ,"opus", "ape", "wma", "mpc", "aiff", "dff", "mp2", "mka"]) - }) - .collect::<Vec<(String, String)>>(); + let mut file_vec: Vec<(String, String)> = vec![]; + let mut dir_vec: Vec<(String, String)> = vec![]; + for (t, f) in conn.conn.listfiles(self.path.as_str())?.into_iter() { + if t == "directory" { + dir_vec.push((t, f)); + } else if t == "file" + && Path::new(&f).has_extension(&[ + "mp3", "ogg", "flac", "m4a", "wav", "aac", "opus", "ape", "wma", "mpc", "aiff", + "dff", "mp2", "mka", + ]) + { + file_vec.push((t, f)); + } + } + + dir_vec.extend(file_vec); + self.filetree = dir_vec; self.songs.clear(); for (t, song) in self.filetree.iter() { |
