1
0
mirror of https://github.com/Toxblh/MTMR.git synced 2026-01-12 09:58:38 +00:00

create all items in advance

This commit is contained in:
Serg 2018-04-14 00:23:42 +07:00
parent 7b9f894bf3
commit 85785018f4

View File

@ -44,7 +44,9 @@ class TouchBarController: NSObject, NSTouchBarDelegate {
let touchBar = NSTouchBar() let touchBar = NSTouchBar()
var items: [NSTouchBarItem.Identifier: BarItemDefinition] = [:] var itemDefinitions: [NSTouchBarItem.Identifier: BarItemDefinition] = [:]
var items: [NSTouchBarItem.Identifier: NSTouchBarItem] = [:]
var orderedIdentifiers: [NSTouchBarItem.Identifier] = []
private override init() { private override init() {
super.init() super.init()
@ -52,13 +54,15 @@ class TouchBarController: NSObject, NSTouchBarDelegate {
self?.dismissTouchBar() self?.dismissTouchBar()
})) }))
loadItems() loadItemDefinitions()
createItems()
touchBar.delegate = self touchBar.delegate = self
touchBar.defaultItemIdentifiers = self.orderedIdentifiers
self.presentTouchBar() self.presentTouchBar()
} }
func loadItems() { func loadItemDefinitions() {
let appSupportDirectory = NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true).first!.appending("/MTMR") let appSupportDirectory = NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true).first!.appending("/MTMR")
let presetPath = appSupportDirectory.appending("/items.json") let presetPath = appSupportDirectory.appending("/items.json")
if !FileManager.default.fileExists(atPath: presetPath), if !FileManager.default.fileExists(atPath: presetPath),
@ -74,8 +78,14 @@ class TouchBarController: NSObject, NSTouchBarDelegate {
let identifier = item.type == ItemType.flexSpace() let identifier = item.type == ItemType.flexSpace()
? NSTouchBarItem.Identifier.flexibleSpace ? NSTouchBarItem.Identifier.flexibleSpace
: NSTouchBarItem.Identifier(identifierString) : NSTouchBarItem.Identifier(identifierString)
items[identifier] = item itemDefinitions[identifier] = item
touchBar.defaultItemIdentifiers += [identifier] orderedIdentifiers.append(identifier)
}
}
func createItems() {
for (identifier, definition) in self.itemDefinitions {
self.items[identifier] = self.createItem(forIdentifier: identifier, definition: definition)
} }
} }
@ -103,6 +113,10 @@ class TouchBarController: NSObject, NSTouchBarDelegate {
guard let item = self.items[identifier] else { guard let item = self.items[identifier] else {
return nil return nil
} }
return item
}
func createItem(forIdentifier identifier: NSTouchBarItem.Identifier, definition item: BarItemDefinition) -> NSTouchBarItem? {
let action = self.action(forItem: item) let action = self.action(forItem: item)
var barItem: NSTouchBarItem! var barItem: NSTouchBarItem!
@ -179,3 +193,19 @@ extension NSCustomTouchBarItem: CanSetWidth {
} }
} }
extension Collection where Element == GeneralParameter {
var align: Align? {
for x in self {
if case .align(let result) = x {
return result
}
}
return nil
}
}
extension BarItemDefinition {
var centerAligned: Bool {
let align = self.additionalParameters.align
return align == .none || align == .center
}
}