aboutsummaryrefslogtreecommitdiff
path: root/src/browser.rs
diff options
context:
space:
mode:
authorkrolxon <krolyxon@tutanota.com>2024-04-28 14:34:30 +0530
committerkrolxon <krolyxon@tutanota.com>2024-04-28 14:34:30 +0530
commitbf939a4702ebf5570b60fa2018eeb6a29beb2aa4 (patch)
tree55fcb82eaec7d55fe50c72b28cd6b43236b3d1a9 /src/browser.rs
parent828c0a50dcddf203fdc049456adc7722cf0c1498 (diff)
Major changes to queue pushing added search feature to playlist and queue
Diffstat (limited to 'src/browser.rs')
-rwxr-xr-xsrc/browser.rs55
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 != "." {