mirror of
https://github.com/morgan9e/macos-stats
synced 2026-04-15 00:34:08 +09:00
feat: moved all modules to the new way of reader mode with a small refactoring
This commit is contained in:
@@ -89,8 +89,8 @@ public class CPU: Module {
|
||||
}
|
||||
|
||||
public init() {
|
||||
self.settingsView = Settings("CPU")
|
||||
self.popupView = Popup("CPU")
|
||||
self.settingsView = Settings(.CPU)
|
||||
self.popupView = Popup(.CPU)
|
||||
self.portalView = Portal(.CPU)
|
||||
self.notificationsView = Notifications(.CPU)
|
||||
|
||||
@@ -102,14 +102,26 @@ public class CPU: Module {
|
||||
)
|
||||
guard self.available else { return }
|
||||
|
||||
self.loadReader = LoadReader(.CPU)
|
||||
self.processReader = ProcessReader(.CPU)
|
||||
self.averageReader = AverageReader(.CPU, popup: true)
|
||||
self.temperatureReader = TemperatureReader(.CPU, popup: true)
|
||||
self.loadReader = LoadReader(.CPU) { [weak self] value in
|
||||
self?.loadCallback(value)
|
||||
}
|
||||
self.processReader = ProcessReader(.CPU) { [weak self] value in
|
||||
self?.popupView.processCallback(value)
|
||||
}
|
||||
self.averageReader = AverageReader(.CPU, popup: true) { [weak self] value in
|
||||
self?.popupView.averageCallback(value)
|
||||
}
|
||||
self.temperatureReader = TemperatureReader(.CPU, popup: true) { [weak self] value in
|
||||
self?.popupView.temperatureCallback(value)
|
||||
}
|
||||
|
||||
#if arch(x86_64)
|
||||
self.limitReader = LimitReader(.CPU, popup: true)
|
||||
self.frequencyReader = FrequencyReader(.CPU, popup: true)
|
||||
self.limitReader = LimitReader(.CPU, popup: true) { [weak self] value in
|
||||
self?.popupView.limitCallback(value)
|
||||
}
|
||||
self.frequencyReader = FrequencyReader(.CPU, popup: true) { [weak self] value in
|
||||
self?.popupView.frequencyCallback(value)
|
||||
}
|
||||
#endif
|
||||
|
||||
self.settingsView.callback = { [weak self] in
|
||||
@@ -134,58 +146,14 @@ public class CPU: Module {
|
||||
self?.popupView.toggleFrequency(state: value)
|
||||
}
|
||||
|
||||
self.loadReader?.callbackHandler = { [weak self] value in
|
||||
self?.loadCallback(value)
|
||||
}
|
||||
self.loadReader?.readyCallback = { [weak self] in
|
||||
self?.readyHandler()
|
||||
}
|
||||
|
||||
self.processReader?.callbackHandler = { [weak self] value in
|
||||
if let list = value {
|
||||
self?.popupView.processCallback(list)
|
||||
}
|
||||
}
|
||||
|
||||
self.temperatureReader?.callbackHandler = { [weak self] value in
|
||||
if let v = value {
|
||||
self?.popupView.temperatureCallback(v)
|
||||
}
|
||||
}
|
||||
self.frequencyReader?.callbackHandler = { [weak self] value in
|
||||
if let v = value {
|
||||
self?.popupView.frequencyCallback(v)
|
||||
}
|
||||
}
|
||||
self.limitReader?.callbackHandler = { [weak self] value in
|
||||
if let v = value {
|
||||
self?.popupView.limitCallback(v)
|
||||
}
|
||||
}
|
||||
self.averageReader?.callbackHandler = { [weak self] value in
|
||||
if let v = value {
|
||||
self?.popupView.averageCallback(v)
|
||||
}
|
||||
}
|
||||
|
||||
if let reader = self.loadReader {
|
||||
self.addReader(reader)
|
||||
}
|
||||
if let reader = self.processReader {
|
||||
self.addReader(reader)
|
||||
}
|
||||
if let reader = self.temperatureReader {
|
||||
self.addReader(reader)
|
||||
}
|
||||
if let reader = self.frequencyReader {
|
||||
self.addReader(reader)
|
||||
}
|
||||
if let reader = self.limitReader {
|
||||
self.addReader(reader)
|
||||
}
|
||||
if let reader = self.averageReader {
|
||||
self.addReader(reader)
|
||||
}
|
||||
self.setReaders([
|
||||
self.loadReader,
|
||||
self.processReader,
|
||||
self.temperatureReader,
|
||||
self.frequencyReader,
|
||||
self.limitReader,
|
||||
self.averageReader
|
||||
])
|
||||
}
|
||||
|
||||
private func loadCallback(_ raw: CPU_Load?) {
|
||||
|
||||
@@ -89,8 +89,8 @@ internal class Popup: PopupWrapper {
|
||||
(self.processHeight*CGFloat(self.numberOfProcesses)) + (self.numberOfProcesses == 0 ? 0 : Constants.Popup.separatorHeight + 22)
|
||||
}
|
||||
|
||||
public init(_ title: String) {
|
||||
self.title = title
|
||||
public init(_ module: ModuleType) {
|
||||
self.title = module.rawValue
|
||||
|
||||
super.init(frame: NSRect(
|
||||
x: 0,
|
||||
@@ -341,7 +341,9 @@ internal class Popup: PopupWrapper {
|
||||
})
|
||||
}
|
||||
|
||||
public func temperatureCallback(_ value: Double) {
|
||||
public func temperatureCallback(_ value: Double?) {
|
||||
guard let value else { return }
|
||||
|
||||
DispatchQueue.main.async(execute: {
|
||||
if (self.window?.isVisible ?? false) || !self.initializedTemperature {
|
||||
if let view = self.temperatureCircle, (view as NSView).isHidden {
|
||||
@@ -355,7 +357,9 @@ internal class Popup: PopupWrapper {
|
||||
})
|
||||
}
|
||||
|
||||
public func frequencyCallback(_ value: Double) {
|
||||
public func frequencyCallback(_ value: Double?) {
|
||||
guard let value else { return }
|
||||
|
||||
DispatchQueue.main.async(execute: {
|
||||
if let view = self.frequencyCircle, (view as NSView).isHidden {
|
||||
view.isHidden = false
|
||||
@@ -376,7 +380,9 @@ internal class Popup: PopupWrapper {
|
||||
})
|
||||
}
|
||||
|
||||
public func processCallback(_ list: [TopProcess]) {
|
||||
public func processCallback(_ list: [TopProcess]?) {
|
||||
guard let list else { return }
|
||||
|
||||
DispatchQueue.main.async(execute: {
|
||||
if !(self.window?.isVisible ?? false) && self.initializedProcesses {
|
||||
return
|
||||
@@ -393,7 +399,9 @@ internal class Popup: PopupWrapper {
|
||||
})
|
||||
}
|
||||
|
||||
public func limitCallback(_ value: CPU_Limit) {
|
||||
public func limitCallback(_ value: CPU_Limit?) {
|
||||
guard let value else { return }
|
||||
|
||||
DispatchQueue.main.async(execute: {
|
||||
if !(self.window?.isVisible ?? false) && self.initializedLimits {
|
||||
return
|
||||
@@ -406,10 +414,8 @@ internal class Popup: PopupWrapper {
|
||||
})
|
||||
}
|
||||
|
||||
public func averageCallback(_ value: [Double]) {
|
||||
guard value.count == 3 else {
|
||||
return
|
||||
}
|
||||
public func averageCallback(_ value: [Double]?) {
|
||||
guard let value, value.count == 3 else { return }
|
||||
|
||||
DispatchQueue.main.async(execute: {
|
||||
if !(self.window?.isVisible ?? false) && self.initializedAverage {
|
||||
|
||||
@@ -36,8 +36,8 @@ internal class Settings: NSStackView, Settings_v {
|
||||
private var usagePerCoreView: NSView? = nil
|
||||
private var groupByClustersView: NSView? = nil
|
||||
|
||||
public init(_ title: String) {
|
||||
self.title = title
|
||||
public init(_ module: ModuleType) {
|
||||
self.title = module.rawValue
|
||||
self.hyperthreadState = Store.shared.bool(key: "\(self.title)_hyperhreading", defaultValue: self.hyperthreadState)
|
||||
self.usagePerCoreState = Store.shared.bool(key: "\(self.title)_usagePerCore", defaultValue: self.usagePerCoreState)
|
||||
self.splitValueState = Store.shared.bool(key: "\(self.title)_splitValue", defaultValue: self.splitValueState)
|
||||
|
||||
Reference in New Issue
Block a user