diff options
| author | krolxon <krolyxon@tutanota.com> | 2024-04-28 14:34:30 +0530 |
|---|---|---|
| committer | krolxon <krolyxon@tutanota.com> | 2024-04-28 14:34:30 +0530 |
| commit | bf939a4702ebf5570b60fa2018eeb6a29beb2aa4 (patch) | |
| tree | 55fcb82eaec7d55fe50c72b28cd6b43236b3d1a9 /src/browser.rs | |
| parent | 828c0a50dcddf203fdc049456adc7722cf0c1498 (diff) | |
Major changes to queue pushing added search feature to playlist and queue
Diffstat (limited to 'src/browser.rs')
| -rwxr-xr-x | src/browser.rs | 55 |
1 files changed, 23 insertions, 32 deletions
diff --git a/src/browser.rs b/src/browser.rs index 88d1db1..9add421 100755 --- a/src/browser.rs +++ b/src/browser.rs @@ -1,4 +1,8 @@ -use crate::{app::AppResult, connection::Connection}; +use crate::{ + app::{App, AppResult}, + connection::Connection, + song::RSong, +}; #[derive(Debug)] pub struct FileBrowser { @@ -7,6 +11,8 @@ pub struct FileBrowser { pub prev_selected: usize, pub path: String, pub prev_path: String, + + pub rsongs: Vec<Option<RSong>>, } impl FileBrowser { @@ -17,6 +23,7 @@ impl FileBrowser { prev_selected: 0, path: ".".to_string(), prev_path: ".".to_string(), + rsongs: Vec::new(), } } @@ -32,6 +39,21 @@ impl FileBrowser { Ok(()) } + // read all songs into a vec of RSongs + pub fn get_all_rsongs(&mut self, conn: &mut Connection) -> AppResult<Vec<Option<RSong>>> { + for (t, s) in self.filetree.iter() { + if t == "file" { + let s = conn.get_full_path(s)?; + let s = RSong::new(&mut conn.conn, s); + self.rsongs.push(Some(s)); + } else if t == "directory" { + self.rsongs.push(None) + } + } + + Ok(self.rsongs.clone()) + } + // Go to next item in filetree pub fn next(&mut self) { // if self.selected < self.filetree.len() - 1 { @@ -54,38 +76,7 @@ impl FileBrowser { } } - pub fn handle_enter(&mut self, conn: &mut Connection) -> AppResult<()> { - let (t, path) = self.filetree.get(self.selected).unwrap(); - if t == "directory" { - if path != "." { - self.prev_path = self.path.clone(); - self.path = self.prev_path.clone() + "/" + path; - self.update_directory(conn)?; - self.prev_selected = self.selected; - self.selected = 0; - // println!("self.path: {}", self.path); - // println!("self.prev_pat: {}", self.prev_path); - } - } else { - // let list = conn - // .songs_filenames - // .iter() - // .map(|f| f.as_str()) - // .collect::<Vec<&str>>(); - // let (filename, _) = rust_fuzzy_search::fuzzy_search_sorted(&path, &list) - // .get(0) - // .unwrap() - // .clone(); - for filename in conn.songs_filenames.clone().iter() { - if filename.contains(path) { - let song = conn.get_song_with_only_filename(filename); - conn.push(&song)?; - } - } - } - Ok(()) - } pub fn handle_go_back(&mut self, conn: &mut Connection) -> AppResult<()> { if self.prev_path != "." { |
