diff --git a/README.md b/README.md index 2b25aeb..35b6583 100755 --- a/README.md +++ b/README.md @@ -12,6 +12,8 @@ A MPD client in Rust - `D` to get dmenu prompt - `j` OR `Down` to scroll down - `k` OR `Up` to scroll up +- `J` to swap highlighted song with next one +- `K` to swap highlighted song with previous one - `l` OR `Right` add song to playlist or go inside the directory - `h` OR `Left` to go back to previous directory - `Tab` to cycle through tabs @@ -41,3 +43,4 @@ A MPD client in Rust - [x] metadata based tree view - [x] view playlist - [x] change playlist name +- [ ] add lyrics fetcher diff --git a/src/event/handler.rs b/src/event/handler.rs index 8fd41c3..85334a9 100755 --- a/src/event/handler.rs +++ b/src/event/handler.rs @@ -175,6 +175,33 @@ pub fn handle_key_events(key_event: KeyEvent, app: &mut App) -> AppResult<()> { app.update_queue(); } + // Swap highlighted song with next one + KeyCode::Char('J') => { + let current: u32 = app.queue_list.index as u32; + let next: u32 = if (current + 1) as usize == app.queue_list.list.len() { + app.queue_list.index as u32 + } else { + app.queue_list.index += 1; + (current + 1) as u32 + }; + app.conn.conn.swap(current, next)?; + app.update_queue(); + } + + // Swap highlighted song with previous one + KeyCode::Char('K') => { + let current: u32 = app.queue_list.index as u32; + let prev: u32 = if current == 0 { + app.queue_list.index as u32 + } else { + app.queue_list.index -= 1; + (current - 1) as u32 + }; + app.conn.conn.swap(current, prev)?; + app.update_queue(); + } + + // Update MPD database KeyCode::Char('U') => { app.conn.conn.rescan()?;