mirror of
https://github.com/morgan9e/macos-stats
synced 2026-04-14 00:04:15 +09:00
- fix fans disappearing from the menu bar (#141)
This commit is contained in:
@@ -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))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user