From 7362373464ddea4858175d76002ec7333f1725f9 Mon Sep 17 00:00:00 2001 From: Serhiy Mytrovtsiy Date: Thu, 5 Nov 2020 08:42:07 +0100 Subject: [PATCH] - fix fans disappearing from the menu bar (#141) --- Modules/Fans/main.swift | 10 +++++----- Modules/Fans/popup.swift | 14 +++++++------- Modules/Fans/readers.swift | 6 ++++-- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/Modules/Fans/main.swift b/Modules/Fans/main.swift index 5df87bc3..ae18162f 100644 --- a/Modules/Fans/main.swift +++ b/Modules/Fans/main.swift @@ -18,7 +18,7 @@ public struct Fan { public let name: String public let minSpeed: Double public let maxSpeed: Double - public var value: Double? + public var value: Double var state: Bool { get { @@ -26,9 +26,9 @@ public struct Fan { } } - var formattedValue: String? { + var formattedValue: String { get { - return (value != nil) ? "\(Int(value!)) RPM": nil + return "\(Int(value)) RPM" } } } @@ -95,8 +95,8 @@ public class Fans: Module { let label: Bool = store.pointee.bool(key: "Fans_label", defaultValue: false) var list: [SensorValue_t] = [] value!.forEach { (f: Fan) in - if let value = f.formattedValue, f.state { - let str = label ? "\(f.name.prefix(1).uppercased()): \(value)" : value + if f.state { + let str = label ? "\(f.name.prefix(1).uppercased()): \(f.formattedValue)" : f.formattedValue list.append(SensorValue_t(str)) } } diff --git a/Modules/Fans/popup.swift b/Modules/Fans/popup.swift index 332eecf4..4de1c4ee 100644 --- a/Modules/Fans/popup.swift +++ b/Modules/Fans/popup.swift @@ -68,7 +68,7 @@ internal class Popup: NSView, Popup_p { values.forEach { (f: Fan) in if self.list[f.id] != nil { DispatchQueue.main.async(execute: { - if f.value != nil && (self.window?.isVisible ?? false) { + if self.window?.isVisible ?? false { self.list[f.id]?.update(f) } }) @@ -111,7 +111,7 @@ internal class FanView: NSView { private func addFirstRow() { let row: NSView = NSView(frame: NSRect(x: 0, y: 14, width: self.mainView.frame.width, height: 16)) - let value = self.fan.formattedValue ?? "0 RPM" + let value = self.fan.formattedValue let valueWidth: CGFloat = 80 let nameField: NSTextField = TextView(frame: NSRect( @@ -143,7 +143,7 @@ internal class FanView: NSView { private func addSecondRow() { let row: NSView = NSView(frame: NSRect(x: 0, y: 0, width: self.mainView.frame.width, height: 14)) - let value = (self.fan.value ?? 0) + let value = self.fan.value let percentage = "\((100*Int(value)) / Int(self.fan.maxSpeed))%" let percentageWidth: CGFloat = 40 @@ -167,12 +167,12 @@ internal class FanView: NSView { DispatchQueue.main.async(execute: { if (self.window?.isVisible ?? false) || !self.ready { - if let view = self.valueField, let value = value.formattedValue { - view.stringValue = value + if let view = self.valueField { + view.stringValue = value.formattedValue } - if let view = self.percentageField, let value = value.value { - view.stringValue = "\((100*Int(value)) / Int(self.fan.maxSpeed))%" + if let view = self.percentageField { + view.stringValue = "\((100*Int(value.value)) / Int(self.fan.maxSpeed))%" } self.ready = true diff --git a/Modules/Fans/readers.swift b/Modules/Fans/readers.swift index 1d2aa20d..91491b86 100644 --- a/Modules/Fans/readers.swift +++ b/Modules/Fans/readers.swift @@ -33,14 +33,16 @@ internal class FansReader: Reader<[Fan]> { name: smc.pointee.getStringValue("F\(i)ID") ?? "Fan #\(i)", minSpeed: smc.pointee.getValue("F\(i)Mn") ?? 1, maxSpeed: smc.pointee.getValue("F\(i)Mx") ?? 1, - value: smc.pointee.getValue("F\(i)Ac") + value: smc.pointee.getValue("F\(i)Ac") ?? 0 )) } } public override func read() { for i in 0..