1
1
mirror of https://github.com/danbee/persephone synced 2025-03-04 08:39:11 +00:00

Add queue play/remove menu

This commit is contained in:
Daniel Barber 2019-06-08 13:25:36 -04:00
parent 5291ee7153
commit a88d55d1a4
Signed by: danbarber
GPG Key ID: 931D8112E0103DD8
3 changed files with 20 additions and 5 deletions

View File

@ -43,13 +43,20 @@ class QueueViewController: NSViewController,
} }
@IBAction func playTrack(_ sender: Any) { @IBAction func playTrack(_ sender: Any) {
let newQueuePos = queueView.selectedRow - 1 let queuePos = queueView.selectedRow - 1
if newQueuePos >= 0 { if queuePos >= 0 {
App.store.dispatch(MPDPlayTrack(queuePos: newQueuePos)) App.store.dispatch(MPDPlayTrack(queuePos: queuePos))
} }
} }
@IBAction func playSongMenuAction(_ sender: NSMenuItem) {
let queuePos = queueView.clickedRow - 1
if queuePos >= 0 {
App.store.dispatch(MPDPlayTrack(queuePos: queuePos))
}
}
@IBAction func removeSongMenuAction(_ sender: NSMenuItem) { @IBAction func removeSongMenuAction(_ sender: NSMenuItem) {
let queuePos = queueView.clickedRow - 1 let queuePos = queueView.clickedRow - 1

View File

@ -575,7 +575,7 @@
<rect key="frame" x="0.0" y="0.0" width="328" height="219"/> <rect key="frame" x="0.0" y="0.0" width="328" height="219"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<outlineView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" selectionHighlightStyle="sourceList" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" viewBased="YES" indentationPerLevel="16" outlineTableColumn="0Co-uF-CCB" id="jEJ-jg-fll"> <outlineView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" selectionHighlightStyle="sourceList" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" viewBased="YES" indentationPerLevel="16" outlineTableColumn="0Co-uF-CCB" id="jEJ-jg-fll" customClass="QueueView" customModule="Persephone" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="328" height="219"/> <rect key="frame" x="0.0" y="0.0" width="328" height="219"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<size key="intercellSpacing" width="3" height="2"/> <size key="intercellSpacing" width="3" height="2"/>
@ -757,6 +757,12 @@
<customObject id="du4-e9-TfX" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/> <customObject id="du4-e9-TfX" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
<menu id="dYA-Jm-eOa"> <menu id="dYA-Jm-eOa">
<items> <items>
<menuItem title="Play" id="kp1-XJ-9CL">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="playSongMenuAction:" target="KIP-rq-4dM" id="1nO-8z-LT2"/>
</connections>
</menuItem>
<menuItem title="Remove" id="GaJ-qk-Cg4"> <menuItem title="Remove" id="GaJ-qk-Cg4">
<modifierMask key="keyEquivalentModifierMask"/> <modifierMask key="keyEquivalentModifierMask"/>
<connections> <connections>

View File

@ -14,7 +14,9 @@ func queueReducer(action: Action, state: QueueState?) -> QueueState {
switch action { switch action {
case let action as UpdateQueueAction: case let action as UpdateQueueAction:
state.queuePos = -1 if state.queuePos >= action.queue.count {
state.queuePos = -1
}
state.queue = action.queue.enumerated().map { index, mpdSong in state.queue = action.queue.enumerated().map { index, mpdSong in
let song = Song(mpdSong: mpdSong) let song = Song(mpdSong: mpdSong)