From c61b0503c7b9f112a72829004ea5308083f39185 Mon Sep 17 00:00:00 2001 From: krolxon Date: Mon, 29 Apr 2024 15:52:27 +0530 Subject: [PATCH] sort by directories in directory browser --- src/browser.rs | 26 +++++++++++++++++--------- 1 file 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::>(); + 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() {