diff --git a/Modules/Disk/notifications.swift b/Modules/Disk/notifications.swift
index 12884062..90b235b9 100644
--- a/Modules/Disk/notifications.swift
+++ b/Modules/Disk/notifications.swift
@@ -14,24 +14,28 @@ import Kit
class Notifications: NotificationsWrapper {
private let utilizationID: String = "usage"
- private var utilizationLevel: String = ""
+
+ private var utilizationState: Bool = false
+ private var utilization: Int = 80
public init(_ module: ModuleType) {
super.init(module, [self.utilizationID])
if Store.shared.exist(key: "\(self.module)_notificationLevel") {
- let value = Store.shared.string(key: "\(self.module)_notificationLevel", defaultValue: self.utilizationLevel)
- Store.shared.set(key: "\(self.module)_notifications_utilization", value: value)
- Store.shared.remove("\(self.module)_notificationLevel")
+ let value = Store.shared.string(key: "\(self.module)_notifications_free", defaultValue: "")
+ if let v = Double(value) {
+ Store.shared.set(key: "\(self.module)_notifications_utilization_state", value: true)
+ Store.shared.set(key: "\(self.module)_notifications_utilization_value", value: Int(v*100))
+ Store.shared.remove("\(self.module)_notificationLevel")
+ }
}
- self.utilizationLevel = Store.shared.string(key: "\(self.module)_notifications_utilization", defaultValue: self.utilizationLevel)
+ self.utilizationState = Store.shared.bool(key: "\(self.module)_notifications_utilization_state", defaultValue: self.utilizationState)
+ self.utilization = Store.shared.int(key: "\(self.module)_notifications_utilization_value", defaultValue: self.utilization)
self.addArrangedSubview(PreferencesSection([
- PreferencesRow(localizedString("Usage"), component: selectView(
- action: #selector(self.changeUsage),
- items: notificationLevels,
- selected: self.utilizationLevel
+ PreferencesRow(localizedString("Usage"), component: PreferencesSwitch(
+ action: self.toggleUtilization, state: self.utilizationState, with: StepperInput(self.utilization, callback: self.changeUtilization)
))
]))
}
@@ -43,15 +47,18 @@ class Notifications: NotificationsWrapper {
internal func utilizationCallback(_ value: Double) {
let title = localizedString("Disk utilization threshold")
- if let threshold = Double(self.utilizationLevel) {
+ if self.utilizationState {
let subtitle = localizedString("Disk utilization is", "\(Int((value)*100))%")
- self.checkDouble(id: self.utilizationID, value: value, threshold: threshold, title: title, subtitle: subtitle)
+ self.checkDouble(id: self.utilizationID, value: value, threshold: Double(self.utilization)/100, title: title, subtitle: subtitle)
}
}
- @objc private func changeUsage(_ sender: NSMenuItem) {
- guard let key = sender.representedObject as? String else { return }
- self.utilizationLevel = key.isEmpty ? "" : "\(Double(key) ?? 0)"
- Store.shared.set(key: "\(self.module)_notifications_utilization", value: self.utilizationLevel)
+ @objc private func toggleUtilization(_ sender: NSControl) {
+ self.utilizationState = controlState(sender)
+ Store.shared.set(key: "\(self.module)_notifications_utilization_state", value: self.utilizationState)
+ }
+ @objc private func changeUtilization(_ newValue: Int) {
+ self.utilization = newValue
+ Store.shared.set(key: "\(self.module)_notifications_utilization_value", value: self.utilization)
}
}
diff --git a/Modules/Net/popup.swift b/Modules/Net/popup.swift
index 1489f348..327e544c 100644
--- a/Modules/Net/popup.swift
+++ b/Modules/Net/popup.swift
@@ -543,22 +543,11 @@ internal class Popup: PopupWrapper {
items: Scale.allCases,
selected: self.chartScale.key
)),
- PreferencesRow(localizedString("Scale value"), component: {
- let view: NSStackView = NSStackView()
- view.orientation = .horizontal
- view.spacing = 2
- let valueField = StepperInput(self.chartFixedScale, range: NSRange(location: 1, length: 1023))
- valueField.callback = self.toggleFixedScale
- valueField.widthAnchor.constraint(equalToConstant: 80).isActive = true
- view.addArrangedSubview(NSView())
- view.addArrangedSubview(valueField)
- view.addArrangedSubview(selectView(
- action: #selector(self.toggleUploadScaleSize),
- items: SizeUnit.allCases,
- selected: self.chartFixedScaleSize.key
- ))
- return view
- }())
+ PreferencesRow(localizedString("Scale value"), component: StepperInput(
+ self.chartFixedScale, range: NSRange(location: 1, length: 1023),
+ unit: self.chartFixedScaleSize.key, units: SizeUnit.allCases,
+ callback: self.toggleFixedScale, unitCallback: self.toggleFixedScaleSize
+ ))
])
view.addArrangedSubview(self.chartPrefSection!)
self.chartPrefSection?.toggleVisibility(2, newState: self.chartScale == .fixed)
@@ -639,12 +628,10 @@ internal class Popup: PopupWrapper {
self.chart?.setScale(self.chartScale, Double(self.chartFixedScaleSize.toBytes(newValue)))
Store.shared.set(key: "\(self.title)_chartFixedScale", value: newValue)
}
- @objc private func toggleUploadScaleSize(_ sender: NSMenuItem) {
- guard let key = sender.representedObject as? String,
- let value = SizeUnit.allCases.first(where: { $0.key == key }) else { return }
- self.chartFixedScaleSize = value
- self.chart?.setScale(self.chartScale, Double(self.chartFixedScaleSize.toBytes(self.chartFixedScale)))
- Store.shared.set(key: "\(self.title)_chartFixedScaleSize", value: key)
+ private func toggleFixedScaleSize(_ newValue: KeyValue_p) {
+ guard let newUnit = newValue as? SizeUnit else { return }
+ self.chartFixedScaleSize = newUnit
+ Store.shared.set(key: "\(self.title)_chartFixedScaleSize", value: self.chartFixedScaleSize.key)
self.display()
}
diff --git a/Modules/Net/settings.swift b/Modules/Net/settings.swift
index 27af1ac4..7a636d4b 100644
--- a/Modules/Net/settings.swift
+++ b/Modules/Net/settings.swift
@@ -146,26 +146,13 @@ internal class Settings: NSStackView, Settings_v, NSTextFieldDelegate {
self.section = section
self.widgetThresholdSection = PreferencesSection([
- PreferencesRow(localizedString("Widget activation threshold"), component: switchView(
- action: #selector(self.toggleWidgetActivationThreshold),
- state: self.widgetActivationThresholdState
- )),
- PreferencesRow(localizedString("Value"), component: {
- let view: NSStackView = NSStackView()
- view.orientation = .horizontal
- view.spacing = 2
- let valueField = StepperInput(self.widgetActivationThreshold, range: NSRange(location: 1, length: 1023))
- valueField.callback = self.changeWidgetActivationThreshold
- valueField.widthAnchor.constraint(equalToConstant: 80).isActive = true
- view.addArrangedSubview(NSView())
- view.addArrangedSubview(valueField)
- view.addArrangedSubview(selectView(
- action: #selector(self.toggleWidgetActivationThresholdSize),
- items: SizeUnit.allCases,
- selected: self.widgetActivationThresholdSize.key
- ))
- return view
- }())
+ PreferencesRow(localizedString("Widget activation threshold"), component: PreferencesSwitch(
+ action: self.toggleWidgetActivationThreshold, state: self.widgetActivationThresholdState, with: StepperInput(
+ self.widgetActivationThreshold, range: NSRange(location: 1, length: 1023),
+ unit: self.widgetActivationThresholdSize.key, units: SizeUnit.allCases,
+ callback: self.changeWidgetActivationThreshold, unitCallback: self.toggleWidgetActivationThresholdSize
+ )
+ ))
])
self.addArrangedSubview(self.widgetThresholdSection!)
self.widgetThresholdSection?.toggleVisibility(1, newState: self.widgetActivationThresholdState)
@@ -234,11 +221,10 @@ internal class Settings: NSStackView, Settings_v, NSTextFieldDelegate {
self.widgetActivationThreshold = newValue
Store.shared.set(key: "\(self.title)_widgetActivationThreshold", value: newValue)
}
- @objc private func toggleWidgetActivationThresholdSize(_ sender: NSMenuItem) {
- guard let key = sender.representedObject as? String,
- let value = SizeUnit.allCases.first(where: { $0.key == key }) else { return }
- self.widgetActivationThresholdSize = value
- Store.shared.set(key: "\(self.title)_widgetActivationThresholdSize", value: key)
+ private func toggleWidgetActivationThresholdSize(_ newValue: KeyValue_p) {
+ guard let newUnit = newValue as? SizeUnit else { return }
+ self.widgetActivationThresholdSize = newUnit
+ Store.shared.set(key: "\(self.title)_widgetActivationThresholdSize", value: self.widgetActivationThresholdSize.key)
self.display()
}
diff --git a/Stats/Supporting Files/Info.plist b/Stats/Supporting Files/Info.plist
index f6bb1730..e03ad877 100755
--- a/Stats/Supporting Files/Info.plist
+++ b/Stats/Supporting Files/Info.plist
@@ -17,7 +17,7 @@
CFBundleShortVersionString
$(MARKETING_VERSION)
CFBundleVersion
- 554
+ 555
Description
Simple macOS system monitor in your menu bar
LSApplicationCategoryType