mirror of
https://github.com/morgan9e/macos-stats
synced 2026-04-14 00:04:15 +09:00
feat: added module types to the readers
This commit is contained in:
@@ -55,3 +55,29 @@ public struct Constants {
|
||||
|
||||
public static let defaultProcessIcon = NSWorkspace.shared.icon(forFile: "/bin/bash")
|
||||
}
|
||||
|
||||
public enum ModuleType: Int {
|
||||
case CPU
|
||||
case RAM
|
||||
case GPU
|
||||
case disk
|
||||
case sensors
|
||||
case network
|
||||
case battery
|
||||
case bluetooth
|
||||
case clock
|
||||
|
||||
var rawValue: String {
|
||||
switch self {
|
||||
case .CPU: return "CPU"
|
||||
case .RAM: return "RAM"
|
||||
case .GPU: return "GPU"
|
||||
case .disk: return "Disk"
|
||||
case .sensors: return "Sensors"
|
||||
case .network: return "Network"
|
||||
case .battery: return "Battery"
|
||||
case .bluetooth: return "Bluetooth"
|
||||
case .clock: return "Clock"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,6 @@ public protocol Reader_p {
|
||||
func terminate()
|
||||
|
||||
func getValue<T>() -> T
|
||||
func getHistory() -> [value_t]
|
||||
|
||||
func start()
|
||||
func pause()
|
||||
@@ -44,11 +43,15 @@ public protocol ReaderInternal_p {
|
||||
func read()
|
||||
}
|
||||
|
||||
open class Reader<T>: NSObject, ReaderInternal_p {
|
||||
open class Reader<T: Codable>: NSObject, ReaderInternal_p {
|
||||
public var log: NextLog {
|
||||
return NextLog.shared.copy(category: "\(String(describing: self))")
|
||||
NextLog.shared.copy(category: "\(String(describing: self))")
|
||||
}
|
||||
public var value: T?
|
||||
public var name: String {
|
||||
String(NSStringFromClass(type(of: self)).split(separator: ".").last ?? "unknown")
|
||||
}
|
||||
|
||||
public var interval: Double? = nil
|
||||
public var defaultInterval: Double = 1
|
||||
public var optional: Bool = false
|
||||
@@ -75,9 +78,7 @@ open class Reader<T>: NSObject, ReaderInternal_p {
|
||||
}
|
||||
}
|
||||
|
||||
private var history: [T]? = []
|
||||
|
||||
public init(popup: Bool = false) {
|
||||
public init(_ module: ModuleType, popup: Bool = false) {
|
||||
self.popup = popup
|
||||
|
||||
super.init()
|
||||
@@ -120,12 +121,8 @@ open class Reader<T>: NSObject, ReaderInternal_p {
|
||||
}
|
||||
|
||||
self.value = value
|
||||
if value != nil {
|
||||
if self.history?.count ?? 0 >= 300 {
|
||||
self.history!.remove(at: 0)
|
||||
}
|
||||
self.history?.append(value!)
|
||||
self.callbackHandler(value!)
|
||||
if let value {
|
||||
self.callbackHandler(value)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -187,10 +184,6 @@ extension Reader: Reader_p {
|
||||
return self.value as! T
|
||||
}
|
||||
|
||||
public func getHistory<T>() -> [T] {
|
||||
return self.history as! [T]
|
||||
}
|
||||
|
||||
public func lock() {
|
||||
self.locked = true
|
||||
}
|
||||
|
||||
@@ -70,8 +70,8 @@ public class Battery: Module {
|
||||
)
|
||||
guard self.available else { return }
|
||||
|
||||
self.usageReader = UsageReader()
|
||||
self.processReader = ProcessReader()
|
||||
self.usageReader = UsageReader(.battery)
|
||||
self.processReader = ProcessReader(.battery)
|
||||
|
||||
self.settingsView.callback = {
|
||||
DispatchQueue.global(qos: .background).async {
|
||||
|
||||
@@ -41,7 +41,7 @@ internal class DevicesReader: Reader<[BLEDevice]>, CBCentralManagerDelegate, CBP
|
||||
static let batteryCharacteristicsUUID = CBUUID(string: "0x2A19")
|
||||
|
||||
init() {
|
||||
super.init()
|
||||
super.init(.bluetooth)
|
||||
self.manager = CBCentralManager(delegate: self, queue: nil)
|
||||
}
|
||||
|
||||
|
||||
@@ -88,10 +88,10 @@ public class CPU: Module {
|
||||
)
|
||||
guard self.available else { return }
|
||||
|
||||
self.loadReader = LoadReader()
|
||||
self.processReader = ProcessReader()
|
||||
self.averageReader = AverageReader(popup: true)
|
||||
self.temperatureReader = TemperatureReader(popup: true)
|
||||
self.loadReader = LoadReader(.CPU)
|
||||
self.processReader = ProcessReader(.CPU)
|
||||
self.averageReader = AverageReader(.CPU, popup: true)
|
||||
self.temperatureReader = TemperatureReader(.CPU, popup: true)
|
||||
|
||||
#if arch(x86_64)
|
||||
self.limitReader = LimitReader(popup: true)
|
||||
|
||||
@@ -49,7 +49,7 @@ public class Clock: Module {
|
||||
private let popupView: Popup = Popup()
|
||||
private let settingsView: Settings = Settings()
|
||||
|
||||
private var reader: ClockReader = ClockReader()
|
||||
private var reader: ClockReader = ClockReader(.clock)
|
||||
|
||||
private var list: [Clock_t] {
|
||||
if let objects = Store.shared.data(key: "\(Clock.title)_list") {
|
||||
|
||||
@@ -201,9 +201,9 @@ public class Disk: Module {
|
||||
private let settingsView: Settings = Settings()
|
||||
private let portalView: Portal = Portal()
|
||||
|
||||
private var capacityReader: CapacityReader = CapacityReader()
|
||||
private var capacityReader: CapacityReader = CapacityReader(.disk)
|
||||
private var activityReader: ActivityReader = ActivityReader()
|
||||
private var processReader: ProcessReader = ProcessReader()
|
||||
private var processReader: ProcessReader = ProcessReader(.disk)
|
||||
|
||||
private var selectedDisk: String = ""
|
||||
private var notificationLevelState: Bool = false
|
||||
|
||||
@@ -177,7 +177,7 @@ internal class ActivityReader: Reader<Disks> {
|
||||
internal var list: Disks = Disks()
|
||||
|
||||
init() {
|
||||
super.init()
|
||||
super.init(.disk)
|
||||
}
|
||||
|
||||
override func setup() {
|
||||
|
||||
@@ -98,7 +98,7 @@ public class GPU: Module {
|
||||
)
|
||||
guard self.available else { return }
|
||||
|
||||
self.infoReader = InfoReader()
|
||||
self.infoReader = InfoReader(.GPU)
|
||||
self.selectedGPU = Store.shared.string(key: "\(self.config.name)_gpu", defaultValue: self.selectedGPU)
|
||||
|
||||
self.infoReader?.callbackHandler = { [unowned self] value in
|
||||
|
||||
@@ -145,9 +145,9 @@ public class Network: Module {
|
||||
)
|
||||
guard self.available else { return }
|
||||
|
||||
self.usageReader = UsageReader()
|
||||
self.processReader = ProcessReader()
|
||||
self.connectivityReader = ConnectivityReader()
|
||||
self.usageReader = UsageReader(.network)
|
||||
self.processReader = ProcessReader(.network)
|
||||
self.connectivityReader = ConnectivityReader(.network)
|
||||
|
||||
self.settingsView.callbackWhenUpdateNumberOfProcesses = {
|
||||
self.popupView.numberOfProcessesUpdated()
|
||||
|
||||
@@ -117,8 +117,8 @@ public class RAM: Module {
|
||||
self.processReader?.setInterval(value)
|
||||
}
|
||||
|
||||
self.usageReader = UsageReader()
|
||||
self.processReader = ProcessReader()
|
||||
self.usageReader = UsageReader(.RAM)
|
||||
self.processReader = ProcessReader(.RAM)
|
||||
|
||||
self.settingsView.callbackWhenUpdateNumberOfProcesses = {
|
||||
self.popupView.numberOfProcessesUpdated()
|
||||
|
||||
@@ -27,7 +27,7 @@ internal class SensorsReader: Reader<Sensors_List> {
|
||||
|
||||
init() {
|
||||
self.unknownSensorsState = Store.shared.bool(key: "Sensors_unknown", defaultValue: false)
|
||||
super.init()
|
||||
super.init(.sensors)
|
||||
self.list.sensors = self.sensors()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user