aboutsummaryrefslogtreecommitdiff
path: root/src/event
diff options
context:
space:
mode:
Diffstat (limited to 'src/event')
-rwxr-xr-xsrc/event/handler.rs10
-rwxr-xr-xsrc/event/mod.rs1
-rw-r--r--src/event/new_pl_keys.rs45
-rwxr-xr-xsrc/event/pl_append_keys.rs15
4 files changed, 68 insertions, 3 deletions
diff --git a/src/event/handler.rs b/src/event/handler.rs
index 02bdb14..8fd4286 100755
--- a/src/event/handler.rs
+++ b/src/event/handler.rs
@@ -6,7 +6,7 @@ use crate::{
use crossterm::event::{KeyCode, KeyEvent, KeyModifiers, MouseEvent, MouseEventKind};
use std::time::Duration;
-use super::{pl_append_keys, pl_rename_keys, search_keys};
+use super::{pl_append_keys, pl_rename_keys, new_pl_keys, search_keys};
pub fn handle_key_events(key_event: KeyEvent, app: &mut App) -> AppResult<()> {
// searching, playlist renaming, playlist appending
@@ -14,6 +14,8 @@ pub fn handle_key_events(key_event: KeyEvent, app: &mut App) -> AppResult<()> {
search_keys::handle_search_keys(key_event, app)?;
} else if app.inputmode == InputMode::PlaylistRename {
pl_rename_keys::handle_pl_rename_keys(key_event, app)?;
+ } else if app.inputmode == InputMode::NewPlaylist {
+ new_pl_keys::handle_new_pl_keys(key_event, app)?;
} else if app.playlist_popup {
pl_append_keys::hande_pl_append_keys(key_event, app)?;
} else {
@@ -295,8 +297,10 @@ pub fn handle_key_events(key_event: KeyEvent, app: &mut App) -> AppResult<()> {
// go to bottom of list
KeyCode::Char('G') => app.pl_list.index = app.pl_list.list.len() - 1,
- // Change playlist name
- KeyCode::Char('e') => app.change_playlist_name()?,
+ // Playlist Rename
+ KeyCode::Char('R') => {
+ app.inputmode = InputMode::PlaylistRename;
+ }
// add to current playlist
KeyCode::Enter | KeyCode::Char('l') | KeyCode::Right | KeyCode::Char(' ') => {
diff --git a/src/event/mod.rs b/src/event/mod.rs
index e0f3b13..efc9b9e 100755
--- a/src/event/mod.rs
+++ b/src/event/mod.rs
@@ -3,3 +3,4 @@ pub mod handler;
pub mod search_keys;
pub mod pl_rename_keys;
pub mod pl_append_keys;
+pub mod new_pl_keys;
diff --git a/src/event/new_pl_keys.rs b/src/event/new_pl_keys.rs
new file mode 100644
index 0000000..75c9e97
--- /dev/null
+++ b/src/event/new_pl_keys.rs
@@ -0,0 +1,45 @@
+use crate::{
+ app::{App, AppResult},
+ ui::InputMode,
+};
+use crossterm::event::{KeyCode, KeyEvent};
+
+pub fn handle_new_pl_keys(key_event: KeyEvent, app: &mut App) -> AppResult<()> {
+ match key_event.code {
+ KeyCode::Esc => {
+ app.pl_new_pl_input.clear();
+ app.reset_cursor();
+ app.inputmode = InputMode::Normal;
+ }
+ KeyCode::Char(to_insert) => {
+ app.enter_char(to_insert);
+ }
+ KeyCode::Enter => {
+ let pl_name = &app.pl_new_pl_input;
+
+ for song in app.pl_new_pl_songs_buffer.iter() {
+ app.conn.conn.pl_push(pl_name, song)?;
+ }
+ app.pl_new_pl_input.clear();
+
+ app.pl_list.list = App::get_playlist(&mut app.conn.conn)?;
+ app.reset_cursor();
+ app.inputmode = InputMode::Normal;
+ }
+
+ KeyCode::Backspace => {
+ app.delete_char();
+ }
+
+ KeyCode::Left => {
+ app.move_cursor_left();
+ }
+
+ KeyCode::Right => {
+ app.move_cursor_right();
+ }
+
+ _ => {}
+ }
+ Ok(())
+}
diff --git a/src/event/pl_append_keys.rs b/src/event/pl_append_keys.rs
index f56d597..0f7df81 100755
--- a/src/event/pl_append_keys.rs
+++ b/src/event/pl_append_keys.rs
@@ -1,4 +1,5 @@
use crate::app::{App, AppResult, SelectedTab};
+use crate::ui::InputMode;
use crate::utils::FileExtension;
use crossterm::event::{KeyCode, KeyEvent};
use std::path::Path;
@@ -30,6 +31,10 @@ pub fn hande_pl_append_keys(key_event: KeyEvent, app: &mut App) -> AppResult<()>
if *pl_name == "Current Playlist" {
app.conn.conn.push(&song)?;
app.update_queue();
+ } else if *pl_name == "New Playlist" {
+ app.pl_new_pl_songs_buffer.clear();
+ app.pl_new_pl_songs_buffer.push(song.clone());
+ app.inputmode = InputMode::NewPlaylist;
} else {
app.conn.add_to_playlist(pl_name, &song)?;
}
@@ -47,12 +52,17 @@ pub fn hande_pl_append_keys(key_event: KeyEvent, app: &mut App) -> AppResult<()>
if *pl_name == "Current Playlist" {
app.conn.conn.push(&song)?;
app.update_queue();
+ } else if *pl_name == "New Playlist" {
+ app.pl_new_pl_songs_buffer.clear();
+ app.pl_new_pl_songs_buffer.push(song.clone());
+ app.inputmode = InputMode::NewPlaylist;
} else {
app.conn.add_to_playlist(pl_name, &song)?;
}
}
} else if t == "directory" {
let file = format!("{}/{}", app.browser.path, f);
+ app.pl_new_pl_songs_buffer.clear();
for (t, f) in app.conn.conn.listfiles(&file)?.iter() {
// dir_vec.push((t, f));
if t == "file"
@@ -65,6 +75,9 @@ pub fn hande_pl_append_keys(key_event: KeyEvent, app: &mut App) -> AppResult<()>
let song = app.conn.get_song_with_only_filename(&full_path);
if *pl_name == "Current Playlist" {
app.conn.conn.push(&song)?;
+ } else if *pl_name == "New Playlist" {
+ app.pl_new_pl_songs_buffer.push(song.clone());
+ app.inputmode = InputMode::NewPlaylist;
} else {
app.conn.add_to_playlist(pl_name, &song)?;
}
@@ -78,6 +91,8 @@ pub fn hande_pl_append_keys(key_event: KeyEvent, app: &mut App) -> AppResult<()>
if *pl_name == "Current Playlist" {
app.conn.load_playlist(playlist_name)?;
app.update_queue();
+ } else if *pl_name == "New Playlist" {
+ app.inputmode = InputMode::NewPlaylist;
} else {
let songs = app.conn.conn.playlist(playlist_name)?;
for song in songs {