From c024d9f021ca91d166461478081bf784f30f77ed Mon Sep 17 00:00:00 2001 From: Serhiy Mytrovtsiy Date: Tue, 10 Sep 2019 19:01:12 +0200 Subject: [PATCH] changed battery widget percentage view; changed the source for battery charging information --- Stats/Modules/Battery/Battery.swift | 6 ++++-- Stats/Widgets/BatteryWidget.swift | 30 +++++++++++++++++++++++------ 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/Stats/Modules/Battery/Battery.swift b/Stats/Modules/Battery/Battery.swift index 7e1b8478..68b1691c 100644 --- a/Stats/Modules/Battery/Battery.swift +++ b/Stats/Modules/Battery/Battery.swift @@ -38,17 +38,19 @@ class Battery: Module { func start() { if !self.reader.value.value.isEmpty { let value = self.reader.value!.value - (self.view as! BatteryWidget).setCharging(value: value.first! > 0) (self.view as! Widget).setValue(data: [abs(value.first!)]) } + (self.view as! BatteryWidget).setCharging(value: (self.reader as! BatteryReader).usage.value.isCharged) self.reader.start() self.reader.value.subscribe(observer: self) { (value, _) in if !value.isEmpty { - (self.view as! BatteryWidget).setCharging(value: value.first! > 0) (self.view as! Widget).setValue(data: [abs(value.first!)]) } } + (self.reader as! BatteryReader).usage.subscribe(observer: self) { (value, _) in + (self.view as! BatteryWidget).setCharging(value: value.isCharged) + } } func initWidget() { diff --git a/Stats/Widgets/BatteryWidget.swift b/Stats/Widgets/BatteryWidget.swift index a1ccf773..2c483c68 100644 --- a/Stats/Widgets/BatteryWidget.swift +++ b/Stats/Widgets/BatteryWidget.swift @@ -17,7 +17,8 @@ class BatteryWidget: NSView, Widget { let defaults = UserDefaults.standard let batteryWidth: CGFloat = 32 - let percentageWidth: CGFloat = 40 + let percentageWidth: CGFloat = 30 + let percentageWidthFull: CGFloat = 37 var color: Bool = false var value: Double { @@ -39,7 +40,7 @@ class BatteryWidget: NSView, Widget { var percentageValue: NSTextField = NSTextField() override init(frame: NSRect) { - self.value = 1.0 + self.value = 0.0 self.charging = false self.percentage = false super.init(frame: CGRect(x: 0, y: 0, width: self.size, height: widgetSize.height)) @@ -111,7 +112,12 @@ class BatteryWidget: NSView, Widget { func percentageView() { if self.percentage { - percentageValue = NSTextField(frame: NSMakeRect(0, 0, percentageWidth, self.frame.size.height - 2)) + var width = percentageWidth + if self.value == 1 { + width = percentageWidthFull + } + + percentageValue = NSTextField(frame: NSMakeRect(0, 0, width, self.frame.size.height - 2)) percentageValue.isEditable = false percentageValue.isSelectable = false percentageValue.isBezeled = false @@ -119,12 +125,12 @@ class BatteryWidget: NSView, Widget { percentageValue.textColor = .labelColor percentageValue.backgroundColor = .controlColor percentageValue.canDrawSubviewsIntoLayer = true - percentageValue.alignment = .natural - percentageValue.font = NSFont.systemFont(ofSize: 13, weight: .light) + percentageValue.alignment = .right + percentageValue.font = NSFont.systemFont(ofSize: 12, weight: .regular) percentageValue.stringValue = "\(Int(self.value * 100))%" self.addSubview(percentageValue) - self.frame = CGRect(x: 0, y: 0, width: batteryWidth + percentageWidth, height: self.frame.size.height) + self.frame = CGRect(x: 0, y: 0, width: batteryWidth + width, height: self.frame.size.height) } else { for subview in self.subviews { subview.removeFromSuperview() @@ -144,6 +150,18 @@ class BatteryWidget: NSView, Widget { if self.value != value { self.value = value + if self.value == 1 && self.frame.size.width != batteryWidth + percentageWidthFull { + self.percentage = false + self.percentageView() + self.percentage = true + self.percentageView() + } else if self.value != 1 && self.frame.size.width != batteryWidth + percentageWidth { + self.percentage = false + self.percentageView() + self.percentage = true + self.percentageView() + } + if percentage { self.percentageValue.stringValue = "\(Int(self.value * 100))%" }