diff --git a/MTMR/BrightnessViewController.swift b/MTMR/BrightnessViewController.swift index 1e9b102..ad9fab1 100644 --- a/MTMR/BrightnessViewController.swift +++ b/MTMR/BrightnessViewController.swift @@ -6,7 +6,7 @@ import CoreAudio class BrightnessViewController: NSCustomTouchBarItem { private(set) var sliderItem: NSSlider! - init(identifier: NSTouchBarItem.Identifier, image: NSImage? = nil) { + init(identifier: NSTouchBarItem.Identifier, refreshInterval: Double, image: NSImage? = nil) { super.init(identifier: identifier) let brightness:Double = Double(getBrightness()) sliderItem = NSSlider(value: brightness*100.0, minValue: 0.0, maxValue: 100.0, target: self, action:#selector(BrightnessViewController.sliderValueChanged(_:))) @@ -17,7 +17,7 @@ class BrightnessViewController: NSCustomTouchBarItem { self.view = sliderItem - let timer = Timer.scheduledTimer(timeInterval: 0.5, target: self, selector: #selector(BrightnessViewController.updateBrightnessSlider), userInfo: nil, repeats: true) + let timer = Timer.scheduledTimer(timeInterval: refreshInterval, target: self, selector: #selector(BrightnessViewController.updateBrightnessSlider), userInfo: nil, repeats: true) RunLoop.current.add(timer, forMode: RunLoopMode.commonModes) } diff --git a/MTMR/ItemsParsing.swift b/MTMR/ItemsParsing.swift index a32d6de..8107323 100644 --- a/MTMR/ItemsParsing.swift +++ b/MTMR/ItemsParsing.swift @@ -58,6 +58,12 @@ class SupportedTypesHolder { let item = ItemType.appleScriptTitledButton(source: Source(filePath: scriptPath), refreshInterval: interval ?? 1800.0) return (item: item, action: .none) }, + "brightness": { decoder in + enum CodingKeys: String, CodingKey { case refreshInterval } + let container = try decoder.container(keyedBy: CodingKeys.self) + let interval = try container.decodeIfPresent(Double.self, forKey: .refreshInterval) + return (item: .brightness(refreshInterval: interval ?? 0.5), action: .none) + }, "battery": { decoder in enum CodingKeys: String, CodingKey { case refreshInterval } let container = try decoder.container(keyedBy: CodingKeys.self) @@ -96,7 +102,7 @@ enum ItemType: Decodable { case timeButton(formatTemplate: String) case flexSpace() case volume() - case brightness() + case brightness(refreshInterval: Double) private enum CodingKeys: String, CodingKey { case type @@ -145,7 +151,8 @@ enum ItemType: Decodable { case .volume: self = .volume() case .brightness: - self = .brightness() + let interval = try container.decodeIfPresent(Double.self, forKey: .refreshInterval) ?? 0.5 + self = .brightness(refreshInterval: interval) } } } diff --git a/MTMR/TouchBarController.swift b/MTMR/TouchBarController.swift index 6e42b9e..5d5548d 100644 --- a/MTMR/TouchBarController.swift +++ b/MTMR/TouchBarController.swift @@ -29,7 +29,7 @@ extension ItemType { return "NSTouchBarItem.Identifier.flexibleSpace" case .volume(): return "com.toxblh.mtmr.volume" - case .brightness(): + case .brightness(refreshInterval: _): return "com.toxblh.mtmr.brightness" } } @@ -120,8 +120,8 @@ class TouchBarController: NSObject, NSTouchBarDelegate { barItem = nil case .volume: barItem = VolumeViewController(identifier: identifier) - case .brightness: - barItem = BrightnessViewController(identifier: identifier) + case .brightness(refreshInterval: let interval): + barItem = BrightnessViewController(identifier: identifier, refreshInterval: interval) } for parameter in item.additionalParameters { if case .width(let value) = parameter, let widthBarItem = barItem as? CanSetWidth {