aboutsummaryrefslogtreecommitdiff
path: root/src/browser.rs
diff options
context:
space:
mode:
authorkrolxon <krolyxon@tutanota.com>2024-04-29 15:52:27 +0530
committerkrolxon <krolyxon@tutanota.com>2024-04-29 15:52:27 +0530
commitc61b0503c7b9f112a72829004ea5308083f39185 (patch)
tree3bba4fc082846fffe2d896d92ed34d186ff53fe0 /src/browser.rs
parent49934311862747e33550ccfebbc9cbbef6a3455d (diff)
sort by directories in directory browser
Diffstat (limited to 'src/browser.rs')
-rwxr-xr-xsrc/browser.rs26
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() {