Add long press to open currently playing app
This commit is contained in:
parent
4b17e0d361
commit
8981f51b94
|
@ -11,6 +11,7 @@ import MediaToolbox
|
||||||
|
|
||||||
class NowPlayingItem: NSCustomTouchBarItem {
|
class NowPlayingItem: NSCustomTouchBarItem {
|
||||||
|
|
||||||
|
var nowPlayingClientID: String?
|
||||||
var nowPlayingTitle: String?
|
var nowPlayingTitle: String?
|
||||||
var nowPlayingArtist: String?
|
var nowPlayingArtist: String?
|
||||||
var nowPlayingAlbum: String?
|
var nowPlayingAlbum: String?
|
||||||
|
@ -30,6 +31,10 @@ class NowPlayingItem: NSCustomTouchBarItem {
|
||||||
|
|
||||||
button.widthAnchor.constraint(equalToConstant: 200).isActive = true
|
button.widthAnchor.constraint(equalToConstant: 200).isActive = true
|
||||||
|
|
||||||
|
let longPressRecognizer = NSPressGestureRecognizer(target: self, action: #selector(buttonLongPressed))
|
||||||
|
longPressRecognizer.allowedTouchTypes = .direct
|
||||||
|
button.addGestureRecognizer(longPressRecognizer)
|
||||||
|
|
||||||
view = button
|
view = button
|
||||||
|
|
||||||
MRMediaRemoteRegisterForNowPlayingNotifications(.global(qos: .utility))
|
MRMediaRemoteRegisterForNowPlayingNotifications(.global(qos: .utility))
|
||||||
|
@ -61,6 +66,14 @@ class NowPlayingItem: NSCustomTouchBarItem {
|
||||||
self.updateButtonTitle()
|
self.updateButtonTitle()
|
||||||
self.updateButtonImage()
|
self.updateButtonImage()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MRMediaRemoteGetNowPlayingClient(.main) { (client) in
|
||||||
|
guard let client = client else {
|
||||||
|
self.nowPlayingClientID = nil
|
||||||
|
return
|
||||||
|
}
|
||||||
|
self.nowPlayingClientID = MRNowPlayingClientGetBundleIdentifier(client)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateButtonTitle() {
|
func updateButtonTitle() {
|
||||||
|
@ -82,6 +95,7 @@ class NowPlayingItem: NSCustomTouchBarItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateButtonImage() {
|
func updateButtonImage() {
|
||||||
|
// todo: custom spotify artwork helper
|
||||||
if let data = nowPlayingArtwork,
|
if let data = nowPlayingArtwork,
|
||||||
let image = NSImage(data: data) {
|
let image = NSImage(data: data) {
|
||||||
button.image = image
|
button.image = image
|
||||||
|
@ -124,4 +138,11 @@ class NowPlayingItem: NSCustomTouchBarItem {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@objc func buttonLongPressed(recognizer: NSPressGestureRecognizer) {
|
||||||
|
if recognizer.state == .began,
|
||||||
|
let nowPlayingClientID = nowPlayingClientID {
|
||||||
|
NSWorkspace.shared.launchApplication(withBundleIdentifier: nowPlayingClientID, options: .default, additionalEventParamDescriptor: nil, launchIdentifier: nil)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue