feat: moved all modules to the new way of reader mode with a small refactoring

This commit is contained in:
Serhiy Mytrovtsiy
2024-02-10 17:03:47 +01:00
parent 1e9073424b
commit 7e833176d9
30 changed files with 222 additions and 320 deletions

View File

@@ -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?) {

View File

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

View File

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