diff --git a/Modules/CPU/main.swift b/Modules/CPU/main.swift index c95f160a..ddb229b5 100644 --- a/Modules/CPU/main.swift +++ b/Modules/CPU/main.swift @@ -114,6 +114,10 @@ public class CPU: Module { return color.additional as! NSColor } + private var systemWidgetsUpdatesState: Bool { + Store.shared.bool(key: "systemWidgetsUpdates_state", defaultValue: true) + } + public init() { self.settingsView = Settings(.CPU) self.popupView = Popup(.CPU) @@ -233,12 +237,14 @@ public class CPU: Module { } } - if #available(macOS 11.0, *) { - if isWidgetActive(self.userDefaults, [CPU_entry.kind, "UnitedWidget"]), let blobData = try? JSONEncoder().encode(value) { - self.userDefaults?.set(blobData, forKey: "CPU@LoadReader") + if self.systemWidgetsUpdatesState { + if #available(macOS 11.0, *) { + if isWidgetActive(self.userDefaults, [CPU_entry.kind, "UnitedWidget"]), let blobData = try? JSONEncoder().encode(value) { + self.userDefaults?.set(blobData, forKey: "CPU@LoadReader") + } + WidgetCenter.shared.reloadTimelines(ofKind: CPU_entry.kind) + WidgetCenter.shared.reloadTimelines(ofKind: "UnitedWidget") } - WidgetCenter.shared.reloadTimelines(ofKind: CPU_entry.kind) - WidgetCenter.shared.reloadTimelines(ofKind: "UnitedWidget") } } } diff --git a/Modules/Disk/main.swift b/Modules/Disk/main.swift index 19ed8189..2b873dde 100644 --- a/Modules/Disk/main.swift +++ b/Modules/Disk/main.swift @@ -221,6 +221,10 @@ public class Disk: Module { Store.shared.string(key: "\(self.name)_textWidgetValue", defaultValue: "$capacity.free/$capacity.total") } + private var systemWidgetsUpdatesState: Bool { + Store.shared.bool(key: "systemWidgetsUpdates_state", defaultValue: true) + } + public init() { super.init( moduleType: .disk, @@ -329,12 +333,14 @@ public class Disk: Module { } } - if #available(macOS 11.0, *) { - if isWidgetActive(self.userDefaults, [Disk_entry.kind, "UnitedWidget"]), let blobData = try? JSONEncoder().encode(d) { - self.userDefaults?.set(blobData, forKey: "Disk@CapacityReader") + if self.systemWidgetsUpdatesState { + if #available(macOS 11.0, *) { + if isWidgetActive(self.userDefaults, [Disk_entry.kind, "UnitedWidget"]), let blobData = try? JSONEncoder().encode(d) { + self.userDefaults?.set(blobData, forKey: "Disk@CapacityReader") + } + WidgetCenter.shared.reloadTimelines(ofKind: Disk_entry.kind) + WidgetCenter.shared.reloadTimelines(ofKind: "UnitedWidget") } - WidgetCenter.shared.reloadTimelines(ofKind: Disk_entry.kind) - WidgetCenter.shared.reloadTimelines(ofKind: "UnitedWidget") } } diff --git a/Modules/GPU/main.swift b/Modules/GPU/main.swift index 06df5e00..536ae9db 100644 --- a/Modules/GPU/main.swift +++ b/Modules/GPU/main.swift @@ -117,9 +117,11 @@ public class GPU: Module { private var notificationID: String? = nil private var showType: Bool { - get { - return Store.shared.bool(key: "\(self.config.name)_showType", defaultValue: false) - } + Store.shared.bool(key: "\(self.config.name)_showType", defaultValue: false) + } + + private var systemWidgetsUpdatesState: Bool { + Store.shared.bool(key: "systemWidgetsUpdates_state", defaultValue: true) } public init() { @@ -191,12 +193,14 @@ public class GPU: Module { } } - if #available(macOS 11.0, *) { - if isWidgetActive(self.userDefaults, [GPU_entry.kind, "UnitedWidget"]), let blobData = try? JSONEncoder().encode(selectedGPU) { - self.userDefaults?.set(blobData, forKey: "GPU@InfoReader") + if self.systemWidgetsUpdatesState { + if #available(macOS 11.0, *) { + if isWidgetActive(self.userDefaults, [GPU_entry.kind, "UnitedWidget"]), let blobData = try? JSONEncoder().encode(selectedGPU) { + self.userDefaults?.set(blobData, forKey: "GPU@InfoReader") + } + WidgetCenter.shared.reloadTimelines(ofKind: GPU_entry.kind) + WidgetCenter.shared.reloadTimelines(ofKind: "UnitedWidget") } - WidgetCenter.shared.reloadTimelines(ofKind: GPU_entry.kind) - WidgetCenter.shared.reloadTimelines(ofKind: "UnitedWidget") } } } diff --git a/Modules/Net/main.swift b/Modules/Net/main.swift index b9b58405..5f7dd3eb 100644 --- a/Modules/Net/main.swift +++ b/Modules/Net/main.swift @@ -158,6 +158,10 @@ public class Network: Module { Store.shared.string(key: "\(self.name)_textWidgetValue", defaultValue: "$addr.public - $status") } + private var systemWidgetsUpdatesState: Bool { + Store.shared.bool(key: "systemWidgetsUpdates_state", defaultValue: true) + } + public init() { self.settingsView = Settings(.network) self.popupView = Popup(.network) @@ -325,11 +329,13 @@ public class Network: Module { } } - if #available(macOS 11.0, *) { - if isWidgetActive(self.userDefaults, [Network_entry.kind]), let blobData = try? JSONEncoder().encode(raw) { - self.userDefaults?.set(blobData, forKey: "Network@UsageReader") + if self.systemWidgetsUpdatesState { + if #available(macOS 11.0, *) { + if isWidgetActive(self.userDefaults, [Network_entry.kind]), let blobData = try? JSONEncoder().encode(raw) { + self.userDefaults?.set(blobData, forKey: "Network@UsageReader") + } + WidgetCenter.shared.reloadTimelines(ofKind: Network_entry.kind) } - WidgetCenter.shared.reloadTimelines(ofKind: Network_entry.kind) } } diff --git a/Modules/RAM/main.swift b/Modules/RAM/main.swift index 62724583..6d41d7c6 100644 --- a/Modules/RAM/main.swift +++ b/Modules/RAM/main.swift @@ -94,6 +94,10 @@ public class RAM: Module { Store.shared.string(key: "\(self.name)_textWidgetValue", defaultValue: "$mem.used/$mem.total ($pressure.value)") } + private var systemWidgetsUpdatesState: Bool { + Store.shared.bool(key: "systemWidgetsUpdates_state", defaultValue: true) + } + public init() { self.settingsView = Settings(.RAM) self.popupView = Popup(.RAM) @@ -232,12 +236,14 @@ public class RAM: Module { } } - if #available(macOS 11.0, *) { - if isWidgetActive(self.userDefaults, [RAM_entry.kind, "UnitedWidget"]), let blobData = try? JSONEncoder().encode(value) { - self.userDefaults?.set(blobData, forKey: "RAM@UsageReader") + if self.systemWidgetsUpdatesState { + if #available(macOS 11.0, *) { + if isWidgetActive(self.userDefaults, [RAM_entry.kind, "UnitedWidget"]), let blobData = try? JSONEncoder().encode(value) { + self.userDefaults?.set(blobData, forKey: "RAM@UsageReader") + } + WidgetCenter.shared.reloadTimelines(ofKind: RAM_entry.kind) + WidgetCenter.shared.reloadTimelines(ofKind: "UnitedWidget") } - WidgetCenter.shared.reloadTimelines(ofKind: RAM_entry.kind) - WidgetCenter.shared.reloadTimelines(ofKind: "UnitedWidget") } } } diff --git a/Stats/Views/AppSettings.swift b/Stats/Views/AppSettings.swift index e5b02110..c0ef77e2 100644 --- a/Stats/Views/AppSettings.swift +++ b/Stats/Views/AppSettings.swift @@ -39,6 +39,11 @@ class ApplicationSettings: NSStackView { set { Store.shared.set(key: "CombinedModules_popup", value: newValue) } } + private var systemWidgetsUpdatesState: Bool { + get { Store.shared.bool(key: "systemWidgetsUpdates_state", defaultValue: true) } + set { Store.shared.set(key: "systemWidgetsUpdates_state", value: newValue) } + } + private var updateSelector: NSPopUpButton? private var startAtLoginBtn: NSSwitch? private var remoteControlBtn: NSSwitch? @@ -97,6 +102,13 @@ class ApplicationSettings: NSStackView { PreferencesRow(localizedString("Start at login"), component: self.startAtLoginBtn!) ])) + scrollView.stackView.addArrangedSubview(PreferencesSection([ + PreferencesRow(localizedString("System widgets updates"), component: switchView( + action: #selector(self.toggleSystemWidgetsUpdatesState), + state: self.systemWidgetsUpdatesState + )) + ])) + self.combinedModulesView = PreferencesSection([ PreferencesRow(localizedString("Combined modules"), component: switchView( action: #selector(self.toggleCombinedModules), @@ -470,6 +482,10 @@ class ApplicationSettings: NSStackView { } } } + + @objc private func toggleSystemWidgetsUpdatesState(_ sender: NSButton) { + self.systemWidgetsUpdatesState = sender.state == NSControl.StateValue.on + } } private class ModuleSelectorView: NSStackView {