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 @@ - +