add entire directory to playlists
This commit is contained in:
parent
38ebdf9283
commit
c047f63cd1
|
|
@ -1,4 +1,5 @@
|
||||||
use std::time::Duration;
|
use crate::browser::FileExtension;
|
||||||
|
use std::{path::Path, time::Duration};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
app::{App, AppResult, SelectedTab},
|
app::{App, AppResult, SelectedTab},
|
||||||
|
|
@ -118,35 +119,63 @@ pub fn handle_key_events(key_event: KeyEvent, app: &mut App) -> AppResult<()> {
|
||||||
|
|
||||||
KeyCode::Enter => {
|
KeyCode::Enter => {
|
||||||
let pl_index = app.append_list.index;
|
let pl_index = app.append_list.index;
|
||||||
let pl_name = app.append_list.list.get(pl_index).unwrap();
|
let pl_name = &app.append_list.list.get(pl_index).unwrap();
|
||||||
|
|
||||||
let s_index: usize;
|
let s_index: usize;
|
||||||
let mut short_path: String = String::new();
|
|
||||||
match app.selected_tab {
|
match app.selected_tab {
|
||||||
SelectedTab::Queue => {
|
SelectedTab::Queue => {
|
||||||
s_index = app.queue_list.index;
|
s_index = app.queue_list.index;
|
||||||
short_path = app.queue_list.list.get(s_index).unwrap().to_string();
|
let short_path = app.queue_list.list.get(s_index).unwrap().to_string();
|
||||||
|
|
||||||
|
if let Some(full_path) = app.conn.get_full_path(&short_path) {
|
||||||
|
let song = app.conn.get_song_with_only_filename(&full_path);
|
||||||
|
|
||||||
|
if pl_name.to_string() == "Current Playlist" {
|
||||||
|
app.conn.conn.push(&song)?;
|
||||||
|
app.update_queue();
|
||||||
|
} else {
|
||||||
|
app.conn.add_to_playlist(pl_name, &song)?;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SelectedTab::DirectoryBrowser => {
|
SelectedTab::DirectoryBrowser => {
|
||||||
let (t, f) = app.browser.filetree.get(app.browser.selected).unwrap();
|
let (t, f) = app.browser.filetree.get(app.browser.selected).unwrap();
|
||||||
if t == "file" {
|
if t == "file" {
|
||||||
short_path = f.to_string();
|
let short_path = f;
|
||||||
|
if let Some(full_path) = app.conn.get_full_path(short_path) {
|
||||||
|
let song = app.conn.get_song_with_only_filename(&full_path);
|
||||||
|
|
||||||
|
if pl_name.to_string() == "Current Playlist" {
|
||||||
|
app.conn.conn.push(&song)?;
|
||||||
|
app.update_queue();
|
||||||
|
} else {
|
||||||
|
app.conn.add_to_playlist(pl_name, &song)?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if t == "directory" {
|
||||||
|
for (t, f) in app.conn.conn.listfiles(f)?.iter() {
|
||||||
|
// dir_vec.push((t, f));
|
||||||
|
if t == "file"
|
||||||
|
&& Path::new(&f).has_extension(&[
|
||||||
|
"mp3", "ogg", "flac", "m4a", "wav", "aac", "opus", "ape",
|
||||||
|
"wma", "mpc", "aiff", "dff", "mp2", "mka",
|
||||||
|
])
|
||||||
|
{
|
||||||
|
let full_path = app.conn.get_full_path(&f).unwrap_or_default();
|
||||||
|
let song = app.conn.get_song_with_only_filename(&full_path);
|
||||||
|
if pl_name.to_string() == "Current Playlist" {
|
||||||
|
app.conn.conn.push(&song)?;
|
||||||
|
} else {
|
||||||
|
app.conn.add_to_playlist(pl_name, &song)?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(full_path) = app.conn.get_full_path(&short_path) {
|
|
||||||
let song = app.conn.get_song_with_only_filename(&full_path);
|
|
||||||
|
|
||||||
if pl_name == "Current Playlist" {
|
|
||||||
app.conn.conn.push(&song)?;
|
|
||||||
app.update_queue();
|
|
||||||
} else {
|
|
||||||
app.conn.add_to_playlist(pl_name, &song)?;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// hide the playlist popup
|
// hide the playlist popup
|
||||||
app.playlist_popup = false;
|
app.playlist_popup = false;
|
||||||
app.append_list.index = 0;
|
app.append_list.index = 0;
|
||||||
|
|
|
||||||
Reference in New Issue