Files
Swiftgram/submodules/Display/Display/KeyShortcut.swift
Peter 8f5a4f7dc1 Add 'submodules/Display/' from commit '7bd11013ea936e3d49d937550d599f5816d32560'
git-subtree-dir: submodules/Display
git-subtree-mainline: 9bc996374f
git-subtree-split: 7bd11013ea
2019-06-11 18:44:37 +01:00

44 lines
1.4 KiB
Swift

import UIKit
public struct KeyShortcut: Hashable {
let title: String
let input: String
let modifiers: UIKeyModifierFlags
let action: () -> Void
public init(title: String = "", input: String = "", modifiers: UIKeyModifierFlags = [], action: @escaping () -> Void = {}) {
self.title = title
self.input = input
self.modifiers = modifiers
self.action = action
}
public var hashValue: Int {
return input.hashValue ^ modifiers.hashValue
}
public static func ==(lhs: KeyShortcut, rhs: KeyShortcut) -> Bool {
return lhs.hashValue == rhs.hashValue
}
}
extension UIKeyModifierFlags: Hashable {
public var hashValue: Int {
return self.rawValue
}
}
extension KeyShortcut {
var uiKeyCommand: UIKeyCommand {
if #available(iOSApplicationExtension 9.0, *), !self.title.isEmpty {
return UIKeyCommand(input: self.input, modifierFlags: self.modifiers, action: #selector(KeyShortcutsController.handleKeyCommand(_:)), discoverabilityTitle: self.title)
} else {
return UIKeyCommand(input: self.input, modifierFlags: self.modifiers, action: #selector(KeyShortcutsController.handleKeyCommand(_:)))
}
}
func isEqual(to command: UIKeyCommand) -> Bool {
return self.input == command.input && self.modifiers == command.modifierFlags
}
}