- fix fans disappearing from the menu bar (#141)

This commit is contained in:
Serhiy Mytrovtsiy
2020-11-05 08:42:07 +01:00
parent 85742785e7
commit 7362373464
3 changed files with 16 additions and 14 deletions

View File

@@ -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))
}
}

View File

@@ -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

View File

@@ -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..<self.list.count {
self.list[i].value = smc.pointee.getValue("F\(self.list[i].id)Ac")
if let value = smc.pointee.getValue("F\(self.list[i].id)Ac") {
self.list[i].value = value
}
}
self.callback(self.list)
}