diff --git a/Persephone/Controllers/QueueViewController.swift b/Persephone/Controllers/QueueViewController.swift
index 0c7ed7d..1a9fa09 100644
--- a/Persephone/Controllers/QueueViewController.swift
+++ b/Persephone/Controllers/QueueViewController.swift
@@ -43,6 +43,12 @@ class QueueViewController: NSViewController,
App.store.dispatch(MPDPlayTrack(queuePos: newQueuePos))
}
}
+
+ @IBAction func removeSongMenuAction(_ sender: NSMenuItem) {
+ let row = queueView.clickedRow
+
+ App.store.dispatch(MPDRemoveTrack(queuePos: row - 1))
+ }
func outlineView(
_ outlineView: NSOutlineView,
diff --git a/Persephone/MPDClient/Extensions/MPDClient+Command.swift b/Persephone/MPDClient/Extensions/MPDClient+Command.swift
index 0934c89..f6bdea2 100644
--- a/Persephone/MPDClient/Extensions/MPDClient+Command.swift
+++ b/Persephone/MPDClient/Extensions/MPDClient+Command.swift
@@ -62,6 +62,10 @@ extension MPDClient {
guard let song = userData["song"] as? MPDSong
else { return }
sendAppendSong(song)
+ case .removeSong:
+ guard let queuePos = userData["queuePos"] as? Int
+ else { return }
+ sendRemoveSong(at: queuePos)
// Album commands
case .fetchAllAlbums:
diff --git a/Persephone/MPDClient/Extensions/MPDClient+Queue.swift b/Persephone/MPDClient/Extensions/MPDClient+Queue.swift
index 43c4792..1d08788 100644
--- a/Persephone/MPDClient/Extensions/MPDClient+Queue.swift
+++ b/Persephone/MPDClient/Extensions/MPDClient+Queue.swift
@@ -22,6 +22,10 @@ extension MPDClient {
enqueueCommand(command: .appendSong, userData: ["song": song])
}
+ func removeSong(at queuePos: Int) {
+ enqueueCommand(command: .removeSong, userData: ["queuePos": queuePos])
+ }
+
func sendPlayTrack(at queuePos: Int) {
mpd_run_play_pos(self.connection, UInt32(queuePos))
}
@@ -48,4 +52,8 @@ extension MPDClient {
func sendAppendSong(_ song: MPDSong) {
mpd_run_add(self.connection, song.uri)
}
+
+ func sendRemoveSong(at queuePos: Int) {
+ mpd_run_delete(self.connection, UInt32(queuePos))
+ }
}
diff --git a/Persephone/MPDClient/Models/MPDCommand.swift b/Persephone/MPDClient/Models/MPDCommand.swift
index eaa328c..4cb2013 100644
--- a/Persephone/MPDClient/Models/MPDCommand.swift
+++ b/Persephone/MPDClient/Models/MPDCommand.swift
@@ -31,6 +31,7 @@ extension MPDClient {
case playTrack
case replaceQueue
case appendSong
+ case removeSong
// Album commands
case fetchAllAlbums
diff --git a/Persephone/Resources/Base.lproj/Main.storyboard b/Persephone/Resources/Base.lproj/Main.storyboard
index 572256c..650d657 100644
--- a/Persephone/Resources/Base.lproj/Main.storyboard
+++ b/Persephone/Resources/Base.lproj/Main.storyboard
@@ -75,6 +75,16 @@
+