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:
parent
7b9f894bf3
commit
85785018f4
@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user