diff --git a/Persephone/AppDelegate.swift b/Persephone/AppDelegate.swift
index 967c315..0888409 100644
--- a/Persephone/AppDelegate.swift
+++ b/Persephone/AppDelegate.swift
@@ -43,11 +43,46 @@ class AppDelegate: NSObject,
}
}
+ func setDockTransportControlState(_ state: MPDClient.MPDStatus.State) {
+ playPauseMenuItem.isEnabled = state.isOneOf([.playing, .paused, .stopped])
+ stopMenuItem.isEnabled = state.isOneOf([.playing, .paused])
+ nextTrackMenuItem.isEnabled = state.isOneOf([.playing, .paused])
+ prevTrackMenuItem.isEnabled = state.isOneOf([.playing, .paused])
+
+ if state.isOneOf([.paused, .stopped, .unknown]) {
+ playPauseMenuItem.title = "Play"
+ } else {
+ playPauseMenuItem.title = "Pause"
+ }
+ }
+
+ @objc func enableUpdateDatabaseMenuItem() {
+ updateDatabaseMenuItem?.isEnabled = true
+ }
+
@IBAction func updateDatabase(_ sender: NSMenuItem) {
App.store.dispatch(MPDUpdateDatabaseAction())
}
+ @IBAction func playPauseMenuAction(_ sender: NSMenuItem) {
+ AppDelegate.mpdClient.playPause()
+ }
+ @IBAction func stopMenuAction(_ sender: NSMenuItem) {
+ AppDelegate.mpdClient.stop()
+ }
+ @IBAction func nextTrackMenuAction(_ sender: NSMenuItem) {
+ AppDelegate.mpdClient.nextTrack()
+ }
+ @IBAction func prevTrackMenuAction(_ sender: Any) {
+ AppDelegate.mpdClient.prevTrack()
+ }
+
@IBOutlet weak var updateDatabaseMenuItem: NSMenuItem!
+
+ @IBOutlet weak var playPauseMenuItem: NSMenuItem!
+ @IBOutlet weak var stopMenuItem: NSMenuItem!
+ @IBOutlet weak var nextTrackMenuItem: NSMenuItem!
+ @IBOutlet weak var prevTrackMenuItem: NSMenuItem!
}
extension AppDelegate: StoreSubscriber {
diff --git a/Persephone/Controllers/WindowController.swift b/Persephone/Controllers/WindowController.swift
index 2315a58..bcf15aa 100644
--- a/Persephone/Controllers/WindowController.swift
+++ b/Persephone/Controllers/WindowController.swift
@@ -53,6 +53,12 @@ class WindowController: NSWindowController {
}
}
+ func setWindowTitle() {
+ guard let status = AppDelegate.mpdClient.status else { return }
+
+ self.window?.title = status.
+ }
+
func setTrackProgressControls(_ playerState: PlayerState) {
guard let state = playerState.state,
let totalTime = playerState.totalTime,
diff --git a/Persephone/Resources/Base.lproj/Main.storyboard b/Persephone/Resources/Base.lproj/Main.storyboard
index ab0c78b..df394b0 100644
--- a/Persephone/Resources/Base.lproj/Main.storyboard
+++ b/Persephone/Resources/Base.lproj/Main.storyboard
@@ -3,7 +3,6 @@
-
@@ -117,17 +116,51 @@
+
+
+
+
+
+
+
-
+
@@ -527,7 +560,7 @@
-
+