diff options
author | der richter <der.richter@gmx.de> | 2024-02-06 21:04:37 +0100 |
---|---|---|
committer | der richter <der.richter@gmx.de> | 2024-02-15 00:11:55 +0100 |
commit | 80cde2671ce9304520465c94321721abf6114843 (patch) | |
tree | 31a0666691d4ca4846bc3b1e40932d3754e04a52 | |
parent | 023d02c9504e308ba5a295cd1846f2508b3dd9c2 (diff) | |
download | mpv-80cde2671ce9304520465c94321721abf6114843.tar.bz2 mpv-80cde2671ce9304520465c94321721abf6114843.tar.xz |
mac/remote: use explicit struct instead of generic array for configs
making the config explicit gets rid of some optional unwrapping. also
rename some variables to better represent their values.
-rw-r--r-- | osdep/macos/remote_command_center.swift | 79 |
1 files changed, 31 insertions, 48 deletions
diff --git a/osdep/macos/remote_command_center.swift b/osdep/macos/remote_command_center.swift index 6fb2229f3a..55e52c021a 100644 --- a/osdep/macos/remote_command_center.swift +++ b/osdep/macos/remote_command_center.swift @@ -23,41 +23,28 @@ class RemoteCommandCenter: NSObject { case repeatable } - var config: [MPRemoteCommand:[String:Any]] = [ - MPRemoteCommandCenter.shared().pauseCommand: [ - "mpKey": MP_KEY_PAUSEONLY, - "keyType": KeyType.normal - ], - MPRemoteCommandCenter.shared().playCommand: [ - "mpKey": MP_KEY_PLAYONLY, - "keyType": KeyType.normal - ], - MPRemoteCommandCenter.shared().stopCommand: [ - "mpKey": MP_KEY_STOP, - "keyType": KeyType.normal - ], - MPRemoteCommandCenter.shared().nextTrackCommand: [ - "mpKey": MP_KEY_NEXT, - "keyType": KeyType.normal - ], - MPRemoteCommandCenter.shared().previousTrackCommand: [ - "mpKey": MP_KEY_PREV, - "keyType": KeyType.normal - ], - MPRemoteCommandCenter.shared().togglePlayPauseCommand: [ - "mpKey": MP_KEY_PLAY, - "keyType": KeyType.normal - ], - MPRemoteCommandCenter.shared().seekForwardCommand: [ - "mpKey": MP_KEY_FORWARD, - "keyType": KeyType.repeatable, - "state": MP_KEY_STATE_UP - ], - MPRemoteCommandCenter.shared().seekBackwardCommand: [ - "mpKey": MP_KEY_REWIND, - "keyType": KeyType.repeatable, - "state": MP_KEY_STATE_UP - ], + struct Config { + let key: Int32 + let type: KeyType + var state: UInt32 = 0 + + init(key: Int32, type: KeyType = .normal) { + self.key = key + self.type = type + } + } + + var configs: [MPRemoteCommand:Config] = [ + MPRemoteCommandCenter.shared().pauseCommand: Config(key: MP_KEY_PAUSEONLY), + MPRemoteCommandCenter.shared().playCommand: Config(key: MP_KEY_PLAYONLY), + MPRemoteCommandCenter.shared().stopCommand: Config(key: MP_KEY_STOP), + MPRemoteCommandCenter.shared().nextTrackCommand: Config(key: MP_KEY_NEXT), + MPRemoteCommandCenter.shared().previousTrackCommand: Config(key: MP_KEY_PREV), + MPRemoteCommandCenter.shared().togglePlayPauseCommand: Config(key: MP_KEY_PLAY), + MPRemoteCommandCenter.shared().seekForwardCommand: + Config(key: MP_KEY_FORWARD, type: .repeatable), + MPRemoteCommandCenter.shared().seekBackwardCommand: + Config(key: MP_KEY_REWIND, type: .repeatable) ] var nowPlayingInfo: [String: Any] = [ @@ -97,7 +84,7 @@ class RemoteCommandCenter: NSObject { } @objc func start() { - for (cmd, _) in config { + for (cmd, _) in configs { cmd.isEnabled = true cmd.addTarget { [unowned self] event in return self.cmdHandler(event) @@ -123,7 +110,7 @@ class RemoteCommandCenter: NSObject { } @objc func stop() { - for (cmd, _) in config { + for (cmd, _) in configs { cmd.isEnabled = false cmd.removeTarget(nil) } @@ -143,25 +130,21 @@ class RemoteCommandCenter: NSObject { } func cmdHandler(_ event: MPRemoteCommandEvent) -> MPRemoteCommandHandlerStatus { - guard let cmdConfig = config[event.command], - let mpKey = cmdConfig["mpKey"] as? Int32, - let keyType = cmdConfig["keyType"] as? KeyType else - { + guard let config = configs[event.command] else { return .commandFailed } - var state = cmdConfig["state"] as? UInt32 ?? 0 - - if let currentState = cmdConfig["state"] as? UInt32, keyType == .repeatable { + var state = config.state + if config.type == .repeatable { state = MP_KEY_STATE_DOWN - config[event.command]?["state"] = MP_KEY_STATE_DOWN - if currentState == MP_KEY_STATE_DOWN { + configs[event.command]?.state = MP_KEY_STATE_DOWN + if config.state == MP_KEY_STATE_DOWN { state = MP_KEY_STATE_UP - config[event.command]?["state"] = MP_KEY_STATE_UP + configs[event.command]?.state = MP_KEY_STATE_UP } } - EventsResponder.sharedInstance().handleMPKey(mpKey, withMask: Int32(state)) + EventsResponder.sharedInstance().handleMPKey(config.key, withMask: Int32(state)) return .success } |