From 833c2108262948ff9be964f0f0fa50ed78c8e310 Mon Sep 17 00:00:00 2001 From: Serhiy Mytrovtsiy Date: Thu, 10 Mar 2022 18:26:56 +0100 Subject: [PATCH] feat: added color zones to the Mini widget --- Kit/Widgets/Mini.swift | 19 +++++++++++++------ Modules/Battery/main.swift | 4 +++- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/Kit/Widgets/Mini.swift b/Kit/Widgets/Mini.swift index c0833842..1d36a1e9 100644 --- a/Kit/Widgets/Mini.swift +++ b/Kit/Widgets/Mini.swift @@ -21,6 +21,7 @@ public class Mini: WidgetWrapper { private let onlyValueWidth: CGFloat = 40 private var colors: [Color] = Color.allCases + private var colorZones: colorZones = (0.6, 0.8) private var value: Double = 0 private var pressureLevel: Int = 0 @@ -121,12 +122,7 @@ public class Mini: WidgetWrapper { var color: NSColor = controlAccentColor switch self.colorState { case .systemAccent: color = controlAccentColor - case .utilization: - if self.title == "BAT" { - color = value.usageColor(zones: (0.15, 0.3), reversed: true) - } else { - color = value.usageColor() - } + case .utilization: color = value.usageColor(zones: self.colorZones, reversed: self.title == "BAT") case .pressure: color = self.pressureLevel.pressureColor() case .monochrome: color = (isDarkMode ? NSColor.white : NSColor.black) default: color = self.colorState.additional as? NSColor ?? controlAccentColor @@ -182,6 +178,17 @@ public class Mini: WidgetWrapper { }) } + public func setColorZones(_ zones: colorZones) { + guard self.colorZones != zones else { + return + } + + self.colorZones = zones + DispatchQueue.main.async(execute: { + self.display() + }) + } + // MARK: - Settings public override func settings() -> NSView { diff --git a/Modules/Battery/main.swift b/Modules/Battery/main.swift index 088f6599..9b6ad26f 100644 --- a/Modules/Battery/main.swift +++ b/Modules/Battery/main.swift @@ -114,7 +114,9 @@ public class Battery: Module { self.widgets.filter{ $0.isActive }.forEach { (w: Widget) in switch w.item { - case let widget as Mini: widget.setValue(abs(value.level)) + case let widget as Mini: + widget.setValue(abs(value.level)) + widget.setColorZones((0.15, 0.3)) case let widget as BarChart: widget.setValue([[ColorValue(value.level)]]) case let widget as BatterykWidget: widget.setValue(