now color and label preferences menu not global, but local for each module

This commit is contained in:
Serhiy Mytrovtsiy
2019-07-08 21:51:55 +02:00
parent 5bf458f12a
commit 21c050d19a
14 changed files with 231 additions and 86 deletions

View File

@@ -14,8 +14,6 @@ extension Notification.Name {
}
let modules: Observable<[Module]> = Observable([CPU(), Memory(), Disk(), Battery(), Network()])
let colors: Observable<Bool> = Observable(true)
let labelForChart: Observable<Bool> = Observable(true)
let updater = macAppUpdater(user: "exelban", repo: "stats")
@@ -50,8 +48,6 @@ class AppDelegate: NSObject, NSApplicationDelegate {
}
}
colors << (defaults.object(forKey: "colors") != nil ? defaults.bool(forKey: "colors") : false)
labelForChart << (defaults.object(forKey: "labelForChart") != nil ? defaults.bool(forKey: "labelForChart") : false)
_ = MenuBar(menuBarItem, menuBarButton: menuBarButton)
let launcherAppId = "eu.exelban.StatsLauncher"
@@ -65,11 +61,6 @@ class AppDelegate: NSObject, NSApplicationDelegate {
self.defaults.set(true, forKey: "runAtLogin")
}
if defaults.object(forKey: "labelForChart") == nil {
self.defaults.set(true, forKey: "labelForChart")
labelForChart << true
}
if defaults.object(forKey: "dockIcon") != nil {
let dockIconStatus = defaults.bool(forKey: "dockIcon") ? NSApplication.ActivationPolicy.regular : NSApplication.ActivationPolicy.accessory
NSApp.setActivationPolicy(dockIconStatus)

View File

@@ -60,16 +60,6 @@ class MenuBar {
let preferences = NSMenuItem(title: "Preferences", action: nil, keyEquivalent: "")
let preferencesMenu = NSMenu()
let colorStatus = NSMenuItem(title: "Colors", action: #selector(toggleMenu), keyEquivalent: "")
colorStatus.state = defaults.bool(forKey: "colors") ? NSControl.StateValue.on : NSControl.StateValue.off
colorStatus.target = self
preferencesMenu.addItem(colorStatus)
let chartLabels = NSMenuItem(title: "Label in chart", action: #selector(toggleMenu), keyEquivalent: "")
chartLabels.state = defaults.bool(forKey: "labelForChart") || defaults.object(forKey: "labelForChart") == nil ? NSControl.StateValue.on : NSControl.StateValue.off
chartLabels.target = self
preferencesMenu.addItem(chartLabels)
let runAtLogin = NSMenuItem(title: "Start at login", action: #selector(toggleMenu), keyEquivalent: "")
runAtLogin.state = defaults.bool(forKey: "runAtLogin") || defaults.object(forKey: "runAtLogin") == nil ? NSControl.StateValue.on : NSControl.StateValue.off
runAtLogin.target = self
@@ -126,14 +116,6 @@ class MenuBar {
let iconStatus = status ? NSApplication.ActivationPolicy.regular : NSApplication.ActivationPolicy.accessory
NSApp.setActivationPolicy(iconStatus)
return
case "Colors":
self.defaults.set(status, forKey: "colors")
colors << status
return
case "Label in chart":
self.defaults.set(status, forKey: "labelForChart")
labelForChart << status
return
default: break
}
}

View File

@@ -16,6 +16,7 @@ class Battery: Module {
var submenu: NSMenu = NSMenu()
var active: Observable<Bool>
var available: Observable<Bool>
var color: Observable<Bool>
var reader: Reader = BatteryReader()
let defaults = UserDefaults.standard
@@ -26,6 +27,7 @@ class Battery: Module {
self.available = Observable(self.reader.available)
self.active = Observable(defaults.object(forKey: name) != nil ? defaults.bool(forKey: name) : true)
self.percentageView = Observable(defaults.object(forKey: "\(self.name)_percentage") != nil ? defaults.bool(forKey: "\(self.name)_percentage") : false)
self.color = Observable(defaults.object(forKey: "\(name)_color") != nil ? defaults.bool(forKey: "\(name)_color") : false)
self.view = BatteryView(frame: NSMakeRect(0, 0, MODULE_WIDTH, MODULE_HEIGHT))
initMenu()
initWidget()
@@ -69,7 +71,13 @@ class Battery: Module {
percentage.state = defaults.bool(forKey: "\(self.name)_percentage") ? NSControl.StateValue.on : NSControl.StateValue.off
percentage.target = self
let color = NSMenuItem(title: "Color", action: #selector(toggleColor), keyEquivalent: "")
color.state = defaults.bool(forKey: "\(name)_color") ? NSControl.StateValue.on : NSControl.StateValue.off
color.target = self
submenu.addItem(percentage)
submenu.addItem(color)
menu.submenu = submenu
}
@@ -97,5 +105,11 @@ class Battery: Module {
self.percentageView << state
self.initWidget()
}
@objc func toggleColor(_ sender: NSMenuItem) {
sender.state = sender.state == NSControl.StateValue.on ? NSControl.StateValue.off : NSControl.StateValue.on
self.defaults.set(sender.state == NSControl.StateValue.on, forKey: "\(name)_color")
self.color << (sender.state == NSControl.StateValue.on)
}
}

View File

@@ -16,6 +16,7 @@ class CPU: Module {
var submenu: NSMenu = NSMenu()
var active: Observable<Bool>
var available: Observable<Bool>
var color: Observable<Bool>
var reader: Reader = CPUReader()
let defaults = UserDefaults.standard
@@ -25,17 +26,17 @@ class CPU: Module {
self.available = Observable(true)
self.active = Observable(defaults.object(forKey: name) != nil ? defaults.bool(forKey: name) : true)
self.widgetType = defaults.object(forKey: "\(name)_widget") != nil ? defaults.float(forKey: "\(name)_widget") : Widgets.Mini
self.color = Observable(defaults.object(forKey: "\(name)_color") != nil ? defaults.bool(forKey: "\(name)_color") : false)
initMenu()
initWidget()
labelForChart.subscribe(observer: self) { (value, _) in
guard let chartView: Chart = self.view as? Chart else {
return
}
self.active << false
chartView.toggleLabel(value: value)
self.active << true
let labelStatus = defaults.bool(forKey: "\(name)_label") || defaults.object(forKey: "\(name)_label") == nil ? true : false
guard let chartView: Chart = self.view as? Chart else {
return
}
self.active << false
chartView.toggleLabel(value: labelStatus)
self.active << true
}
func initMenu() {
@@ -61,10 +62,23 @@ class CPU: Module {
chartWithValue.state = self.widgetType == Widgets.ChartWithValue ? NSControl.StateValue.on : NSControl.StateValue.off
chartWithValue.target = self
let color = NSMenuItem(title: "Color", action: #selector(toggleColor), keyEquivalent: "")
color.state = defaults.bool(forKey: "\(name)_color") ? NSControl.StateValue.on : NSControl.StateValue.off
color.target = self
let label = NSMenuItem(title: "Label", action: #selector(toggleLabel), keyEquivalent: "")
label.state = defaults.bool(forKey: "\(name)_label") || defaults.object(forKey: "\(name)_label") == nil ? NSControl.StateValue.on : NSControl.StateValue.off
label.target = self
submenu.addItem(mini)
submenu.addItem(chart)
submenu.addItem(chartWithValue)
submenu.addItem(NSMenuItem.separator())
submenu.addItem(label)
submenu.addItem(color)
menu.submenu = submenu
}
@@ -111,7 +125,25 @@ class CPU: Module {
self.defaults.set(widgetCode, forKey: "\(name)_widget")
self.widgetType = widgetCode
self.active << false
initWidget()
initWidget(color: defaults.object(forKey: "\(name)_color") != nil ? defaults.bool(forKey: "\(name)_color") : false)
self.active << true
}
@objc func toggleColor(_ sender: NSMenuItem) {
sender.state = sender.state == NSControl.StateValue.on ? NSControl.StateValue.off : NSControl.StateValue.on
self.defaults.set(sender.state == NSControl.StateValue.on, forKey: "\(name)_color")
self.color << (sender.state == NSControl.StateValue.on)
}
@objc func toggleLabel(_ sender: NSMenuItem) {
sender.state = sender.state == NSControl.StateValue.on ? NSControl.StateValue.off : NSControl.StateValue.on
self.defaults.set(sender.state == NSControl.StateValue.on, forKey: "\(name)_label")
guard let chartView: Chart = self.view as? Chart else {
return
}
self.active << false
chartView.toggleLabel(value: sender.state == NSControl.StateValue.on)
self.active << true
}
}

View File

@@ -19,6 +19,8 @@ class Disk: Module {
var active: Observable<Bool>
var available: Observable<Bool>
var color: Observable<Bool>
var reader: Reader = DiskReader()
@IBOutlet weak var value: NSTextField!
@@ -27,23 +29,30 @@ class Disk: Module {
self.available = Observable(true)
self.active = Observable(defaults.object(forKey: name) != nil ? defaults.bool(forKey: name) : true)
self.widgetType = defaults.object(forKey: "\(name)_widget") != nil ? defaults.float(forKey: "\(name)_widget") : Widgets.Mini
self.color = Observable(defaults.object(forKey: "\(name)_color") != nil ? defaults.bool(forKey: "\(name)_color") : false)
self.initMenu()
let widget = Mini(frame: NSMakeRect(0, 0, MODULE_WIDTH, MODULE_HEIGHT))
widget.label = self.shortName
self.view = widget
self.initWidget()
}
func initMenu() {
menu = NSMenuItem(title: name, action: #selector(toggle), keyEquivalent: "")
submenu = NSMenu()
if defaults.object(forKey: name) != nil {
menu.state = defaults.bool(forKey: name) ? NSControl.StateValue.on : NSControl.StateValue.off
} else {
menu.state = NSControl.StateValue.on
}
menu.target = self
menu.isEnabled = true
let color = NSMenuItem(title: "Color", action: #selector(toggleColor), keyEquivalent: "")
color.state = defaults.bool(forKey: "\(name)_color") ? NSControl.StateValue.on : NSControl.StateValue.off
color.target = self
submenu.addItem(color)
menu.submenu = submenu
}
@objc func toggle(_ sender: NSMenuItem) {
@@ -59,4 +68,10 @@ class Disk: Module {
self.start()
}
}
@objc func toggleColor(_ sender: NSMenuItem) {
sender.state = sender.state == NSControl.StateValue.on ? NSControl.StateValue.off : NSControl.StateValue.on
self.defaults.set(sender.state == NSControl.StateValue.on, forKey: "\(name)_color")
self.color << (sender.state == NSControl.StateValue.on)
}
}

View File

@@ -16,6 +16,7 @@ class Memory: Module {
var submenu: NSMenu = NSMenu()
var active: Observable<Bool>
var available: Observable<Bool>
var color: Observable<Bool>
var reader: Reader = MemoryReader()
var widgetType: WidgetType
@@ -27,17 +28,17 @@ class Memory: Module {
self.available = Observable(true)
self.active = Observable(defaults.object(forKey: name) != nil ? defaults.bool(forKey: name) : true)
self.widgetType = defaults.object(forKey: "\(name)_widget") != nil ? defaults.float(forKey: "\(name)_widget") : Widgets.Mini
self.color = Observable(defaults.object(forKey: "\(name)_color") != nil ? defaults.bool(forKey: "\(name)_color") : false)
initMenu()
initWidget()
labelForChart.subscribe(observer: self) { (value, _) in
guard let chartView: Chart = self.view as? Chart else {
return
}
self.active << false
chartView.toggleLabel(value: value)
self.active << true
let labelStatus = defaults.bool(forKey: "\(name)_label") || defaults.object(forKey: "\(name)_label") == nil ? true : false
guard let chartView: Chart = self.view as? Chart else {
return
}
self.active << false
chartView.toggleLabel(value: labelStatus)
self.active << true
}
func initMenu() {
@@ -63,10 +64,23 @@ class Memory: Module {
chartWithValue.state = self.widgetType == Widgets.ChartWithValue ? NSControl.StateValue.on : NSControl.StateValue.off
chartWithValue.target = self
let color = NSMenuItem(title: "Color", action: #selector(toggleColor), keyEquivalent: "")
color.state = defaults.bool(forKey: "\(name)_color") ? NSControl.StateValue.on : NSControl.StateValue.off
color.target = self
let label = NSMenuItem(title: "Label", action: #selector(toggleLabel), keyEquivalent: "")
label.state = defaults.bool(forKey: "\(name)_label") || defaults.object(forKey: "\(name)_label") == nil ? NSControl.StateValue.on : NSControl.StateValue.off
label.target = self
submenu.addItem(mini)
submenu.addItem(chart)
submenu.addItem(chartWithValue)
submenu.addItem(NSMenuItem.separator())
submenu.addItem(label)
submenu.addItem(color)
menu.submenu = submenu
}
@@ -117,4 +131,22 @@ class Memory: Module {
self.initWidget()
self.active << true
}
@objc func toggleColor(_ sender: NSMenuItem) {
sender.state = sender.state == NSControl.StateValue.on ? NSControl.StateValue.off : NSControl.StateValue.on
self.defaults.set(sender.state == NSControl.StateValue.on, forKey: "\(name)_color")
self.color << (sender.state == NSControl.StateValue.on)
}
@objc func toggleLabel(_ sender: NSMenuItem) {
sender.state = sender.state == NSControl.StateValue.on ? NSControl.StateValue.off : NSControl.StateValue.on
self.defaults.set(sender.state == NSControl.StateValue.on, forKey: "\(name)_label")
guard let chartView: Chart = self.view as? Chart else {
return
}
self.active << false
chartView.toggleLabel(value: sender.state == NSControl.StateValue.on)
self.active << true
}
}

View File

@@ -18,6 +18,8 @@ protocol Module: class {
var active: Observable<Bool> { get }
var available: Observable<Bool> { get }
var color: Observable<Bool> { get set }
var reader: Reader { get }
func start()
@@ -25,43 +27,33 @@ protocol Module: class {
}
extension Module {
func initWidget() {
func initWidget(color: Bool = false) {
var widget: Widget = Mini(frame: NSMakeRect(0, 0, MODULE_WIDTH, MODULE_HEIGHT))
switch self.widgetType {
case Widgets.Mini:
let widget = Mini(frame: NSMakeRect(0, 0, MODULE_WIDTH, MODULE_HEIGHT))
widget.label = self.shortName
self.view = widget
break
widget = Mini(frame: NSMakeRect(0, 0, MODULE_WIDTH, MODULE_HEIGHT))
case Widgets.Chart:
let widget = Chart(frame: NSMakeRect(0, 0, MODULE_WIDTH + 7, MODULE_HEIGHT))
widget.label = self.shortName
self.view = widget
break
widget = Chart(frame: NSMakeRect(0, 0, MODULE_WIDTH + 7, MODULE_HEIGHT))
case Widgets.ChartWithValue:
let widget = ChartWithValue(frame: NSMakeRect(0, 0, MODULE_WIDTH + 7, MODULE_HEIGHT))
widget.label = self.shortName
self.view = widget
break
widget = ChartWithValue(frame: NSMakeRect(0, 0, MODULE_WIDTH + 7, MODULE_HEIGHT))
case Widgets.NetworkDots:
self.view = NetworkDotsView(frame: NSMakeRect(0, 0, MODULE_WIDTH, MODULE_HEIGHT))
break
widget = NetworkDotsView(frame: NSMakeRect(0, 0, MODULE_WIDTH, MODULE_HEIGHT))
case Widgets.NetworkArrows:
self.view = NetworkArrowsView(frame: NSMakeRect(0, 0, MODULE_WIDTH, MODULE_HEIGHT))
break
widget = NetworkArrowsView(frame: NSMakeRect(0, 0, MODULE_WIDTH, MODULE_HEIGHT))
case Widgets.NetworkText:
self.view = NetworkTextView(frame: NSMakeRect(0, 0, MODULE_WIDTH, MODULE_HEIGHT))
break
widget = NetworkTextView(frame: NSMakeRect(0, 0, MODULE_WIDTH, MODULE_HEIGHT))
case Widgets.NetworkDotsWithText:
self.view = NetworkDotsTextView(frame: NSMakeRect(0, 0, MODULE_WIDTH, MODULE_HEIGHT))
break
widget = NetworkDotsTextView(frame: NSMakeRect(0, 0, MODULE_WIDTH, MODULE_HEIGHT))
case Widgets.NetworkArrowsWithText:
self.view = NetworkArrowsTextView(frame: NSMakeRect(0, 0, MODULE_WIDTH, MODULE_HEIGHT))
break
widget = NetworkArrowsTextView(frame: NSMakeRect(0, 0, MODULE_WIDTH, MODULE_HEIGHT))
default:
let widget = Mini(frame: NSMakeRect(0, 0, MODULE_WIDTH, MODULE_HEIGHT))
widget.label = self.shortName
self.view = widget
widget = Mini(frame: NSMakeRect(0, 0, MODULE_WIDTH, MODULE_HEIGHT))
}
widget.label = self.shortName
widget.color(state: self.color.value)
self.view = widget as! NSView
}
func start() {
@@ -82,10 +74,11 @@ extension Module {
}
}
colors.subscribe(observer: self) { (value, _) in
self.color.subscribe(observer: self) { (value, _) in
guard let widget = self.view as? Widget else {
return
}
widget.color(state: value)
widget.redraw()
}
}
@@ -93,6 +86,6 @@ extension Module {
func stop() {
self.reader.stop()
self.reader.value.unsubscribe(observer: self)
colors.unsubscribe(observer: self)
self.color.unsubscribe(observer: self)
}
}

View File

@@ -16,6 +16,7 @@ class Network: Module {
var submenu: NSMenu = NSMenu()
var active: Observable<Bool>
var available: Observable<Bool>
var color: Observable<Bool>
var reader: Reader = NetworkReader()
var widgetType: WidgetType = 2.0
@@ -25,6 +26,7 @@ class Network: Module {
self.available = Observable(self.reader.available)
self.active = Observable(defaults.object(forKey: name) != nil ? defaults.bool(forKey: name) : true)
self.widgetType = defaults.object(forKey: "\(name)_widget") != nil ? defaults.float(forKey: "\(name)_widget") : Widgets.NetworkDots
self.color = Observable(defaults.object(forKey: "\(name)_color") != nil ? defaults.bool(forKey: "\(name)_color") : false)
initMenu()
initWidget()
}

View File

@@ -9,9 +9,12 @@
import Cocoa
class BatteryView: NSView, Widget {
var label: String = ""
let batteryWidth: CGFloat = 32
let percentageWidth: CGFloat = 40
var color: Bool = false
var value: Double {
didSet {
self.redraw()
@@ -72,7 +75,7 @@ class BatteryView: NSView, Widget {
let maxWidth = w-4
let inner = NSBezierPath(roundedRect: NSRect(x: x+0.5, y: y+1.5, width: maxWidth*CGFloat(self.value), height: h-3), xRadius: 0.5, yRadius: 0.5)
self.value.batteryColor().set()
self.value.batteryColor(color: self.color).set()
inner.lineWidth = 0
inner.stroke()
inner.close()
@@ -127,6 +130,12 @@ class BatteryView: NSView, Widget {
}
}
func color(state: Bool) {
if self.color != state {
self.color = state
}
}
func setCharging(value: Bool) {
if self.charging != value {
self.charging = value

View File

@@ -14,6 +14,7 @@ class Chart: NSView, Widget {
var label: String = ""
var height: CGFloat = 0.0
var color: Bool = false
var points: [Double] {
didSet {
self.redraw()
@@ -25,7 +26,6 @@ class Chart: NSView, Widget {
super.init(frame: frame)
self.wantsLayer = true
self.addSubview(NSView())
self.labelEnabled = labelForChart.value
if self.labelEnabled {
self.frame = CGRect(x: self.frame.origin.x, y: self.frame.origin.y, width: self.frame.size.width + labelPadding, height: self.frame.size.height)
@@ -138,6 +138,12 @@ class Chart: NSView, Widget {
}
}
func color(state: Bool) {
if self.color != state {
self.color = state
}
}
func toggleLabel(value: Bool) {
labelEnabled = value
if value {
@@ -182,7 +188,7 @@ class ChartWithValue: Chart {
override func value(value: Double) {
self.valueLabel.stringValue = "\(Int(Float(value.roundTo(decimalPlaces: 2))! * 100))%"
self.valueLabel.textColor = value.usageColor()
self.valueLabel.textColor = value.usageColor(color: self.color)
if self.points.count < 50 {
self.points.append(value)
@@ -208,4 +214,11 @@ class ChartWithValue: Chart {
self.frame = CGRect(x: self.frame.origin.x, y: self.frame.origin.y, width: self.frame.size.width - labelPadding, height: self.frame.size.height)
}
}
override func color(state: Bool) {
if self.color != state {
self.color = state
self.valueLabel.textColor = self.points.last?.usageColor(color: state)
}
}
}

View File

@@ -12,6 +12,7 @@ class Mini: NSView, Widget {
var valueView: NSTextField = NSTextField()
var labelView: NSTextField = NSTextField()
var color: Bool = false
var value: Double = 0
var label: String = "" {
didSet {
@@ -66,7 +67,7 @@ class Mini: NSView, Widget {
}
func redraw() {
self.valueView.textColor = self.value.usageColor()
self.valueView.textColor = self.value.usageColor(color: self.color)
self.needsDisplay = true
setNeedsDisplay(self.frame)
}
@@ -76,7 +77,14 @@ class Mini: NSView, Widget {
self.value = value
self.valueView.stringValue = "\(Int(Float(value.roundTo(decimalPlaces: 2))! * 100))%"
self.valueView.textColor = value.usageColor()
self.valueView.textColor = value.usageColor(color: self.color)
}
}
func color(state: Bool) {
if self.color != state {
self.color = state
self.valueView.textColor = value.usageColor(color: state)
}
}
}

View File

@@ -9,6 +9,9 @@
import Cocoa
class NetworkDotsView: NSView, Widget {
var label: String = ""
var color: Bool = false
var download: Int64 {
didSet {
self.redraw()
@@ -71,9 +74,19 @@ class NetworkDotsView: NSView, Widget {
self.upload = values[1]
}
}
func color(state: Bool) {
if self.color != state {
self.color = state
self.redraw()
}
}
}
class NetworkTextView: NSView, Widget {
var label: String = ""
var color: Bool = false
var downloadValue: NSTextField = NSTextField()
var uploadValue: NSTextField = NSTextField()
@@ -102,6 +115,13 @@ class NetworkTextView: NSView, Widget {
uploadValue.stringValue = Units(bytes: values[1]).getReadableUnit()
}
func color(state: Bool) {
if self.color != state {
self.color = state
self.redraw()
}
}
func valueView() {
downloadValue = NSTextField(frame: NSMakeRect(MODULE_MARGIN, MODULE_MARGIN, self.frame.size.width - MODULE_MARGIN, 9))
downloadValue.isEditable = false
@@ -133,6 +153,9 @@ class NetworkTextView: NSView, Widget {
}
class NetworkArrowsView: NSView, Widget {
var label: String = ""
var color: Bool = false
var download: Int64 {
didSet {
self.redraw()
@@ -209,9 +232,19 @@ class NetworkArrowsView: NSView, Widget {
self.upload = values[1]
}
}
func color(state: Bool) {
if self.color != state {
self.color = state
self.redraw()
}
}
}
class NetworkDotsTextView: NSView, Widget {
var label: String = ""
var color: Bool = false
var download: Int64 {
didSet {
self.redraw()
@@ -280,6 +313,13 @@ class NetworkDotsTextView: NSView, Widget {
}
}
func color(state: Bool) {
if self.color != state {
self.color = state
self.redraw()
}
}
func valueView() {
downloadValue = NSTextField(frame: NSMakeRect(MODULE_MARGIN, MODULE_MARGIN, self.frame.size.width - MODULE_MARGIN, 9))
downloadValue.isEditable = false
@@ -311,6 +351,9 @@ class NetworkDotsTextView: NSView, Widget {
}
class NetworkArrowsTextView: NSView, Widget {
var label: String = ""
var color: Bool = false
var download: Int64 {
didSet {
self.redraw()
@@ -393,6 +436,13 @@ class NetworkArrowsTextView: NSView, Widget {
}
}
func color(state: Bool) {
if self.color != state {
self.color = state
self.redraw()
}
}
func valueView() {
downloadValue = NSTextField(frame: NSMakeRect(MODULE_MARGIN, MODULE_MARGIN, self.frame.size.width - MODULE_MARGIN, 9))
downloadValue.isEditable = false

View File

@@ -9,7 +9,11 @@
import Foundation
protocol Widget {
var label: String { get set }
func value(value: Double)
func color(state: Bool)
func redraw()
}

View File

@@ -14,11 +14,11 @@ extension Double {
return NSString(format: "%.\(decimalPlaces)f" as NSString, self) as String
}
func usageColor(reversed: Bool = false) -> NSColor {
if !colors.value {
func usageColor(reversed: Bool = false, color: Bool = false) -> NSColor {
if !color {
return NSColor.textColor
}
if reversed {
switch self {
case 0.6...0.8:
@@ -40,10 +40,10 @@ extension Double {
}
}
func batteryColor() -> NSColor {
func batteryColor(color: Bool = false) -> NSColor {
switch self {
case 0.2...0.4:
if !colors.value {
if !color {
return NSColor.controlTextColor
}
return NSColor.systemOrange
@@ -51,7 +51,7 @@ extension Double {
if self == 1 {
return NSColor.controlTextColor
}
if !colors.value {
if !color {
return NSColor.controlTextColor
}
return NSColor.systemGreen