mirror of
https://github.com/danbee/persephone
synced 2025-03-04 08:39:11 +00:00
Context menu to remove tracks from queue
This commit is contained in:
parent
cd094c3a64
commit
5a9c2c0698
@ -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,
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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))
|
||||
}
|
||||
}
|
||||
|
||||
@ -31,6 +31,7 @@ extension MPDClient {
|
||||
case playTrack
|
||||
case replaceQueue
|
||||
case appendSong
|
||||
case removeSong
|
||||
|
||||
// Album commands
|
||||
case fetchAllAlbums
|
||||
|
||||
@ -75,6 +75,16 @@
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Queue" id="zZL-2K-acp">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Queue" id="CWM-rf-Ozu">
|
||||
<items>
|
||||
<menuItem title="Remove song" id="x9q-fx-zaQ">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Song" id="elk-xW-VXb">
|
||||
<menu key="submenu" title="Song" autoenablesItems="NO" id="RuT-kk-xTu">
|
||||
<items>
|
||||
@ -694,6 +704,7 @@
|
||||
<connections>
|
||||
<action trigger="doubleAction" selector="playTrack:" target="KIP-rq-4dM" id="opa-6G-OW0"/>
|
||||
<outlet property="delegate" destination="KIP-rq-4dM" id="60F-6x-bUE"/>
|
||||
<outlet property="menu" destination="dYA-Jm-eOa" id="9s2-7K-tVx"/>
|
||||
</connections>
|
||||
</outlineView>
|
||||
</subviews>
|
||||
@ -744,8 +755,18 @@
|
||||
</connections>
|
||||
</viewController>
|
||||
<customObject id="du4-e9-TfX" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
|
||||
<menu id="dYA-Jm-eOa">
|
||||
<items>
|
||||
<menuItem title="Remove" id="GaJ-qk-Cg4">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="removeSongMenuAction:" target="KIP-rq-4dM" id="0Oc-Z3-4OD"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="820" y="749"/>
|
||||
<point key="canvasLocation" x="796" y="848"/>
|
||||
</scene>
|
||||
<!--Album View Controller-->
|
||||
<scene sceneID="7Ua-Hj-zWt">
|
||||
|
||||
@ -20,6 +20,10 @@ struct MPDAppendTrack: Action {
|
||||
let song: MPDClient.MPDSong
|
||||
}
|
||||
|
||||
struct MPDRemoveTrack: Action {
|
||||
let queuePos: Int
|
||||
}
|
||||
|
||||
struct MPDPlayTrack: Action {
|
||||
let queuePos: Int
|
||||
}
|
||||
|
||||
@ -33,6 +33,9 @@ func mpdReducer(action: Action, state: MPDState?) -> MPDState {
|
||||
case let action as MPDAppendTrack:
|
||||
App.mpdClient.appendSong(action.song)
|
||||
|
||||
case let action as MPDRemoveTrack:
|
||||
App.mpdClient.removeSong(at: action.queuePos)
|
||||
|
||||
case let action as MPDPlayTrack:
|
||||
App.mpdClient.playTrack(at: action.queuePos)
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user