diff --git a/.swiftlint.yml b/.swiftlint.yml index e5f8f929..cbc29974 100644 --- a/.swiftlint.yml +++ b/.swiftlint.yml @@ -40,6 +40,7 @@ identifier_name: - PublicIPAddressRefreshIntervals - _values - _writeTS + - LineChartHistory line_length: 200 diff --git a/Kit/types.swift b/Kit/types.swift index 31cb5717..553ec928 100644 --- a/Kit/types.swift +++ b/Kit/types.swift @@ -20,7 +20,7 @@ public struct DoubleValue { } } extension [DoubleValue] { - public func max() -> Double? { self.max { $0.value < $1.value }?.value } + public func max() -> Double? { self.max(by: { $0.value < $1.value })?.value } } public struct ColorValue: Equatable { @@ -326,3 +326,11 @@ public let FanValues: [KeyValue_t] = [ KeyValue_t(key: "rpm", value: "RPM", additional: FanValue.rpm), KeyValue_t(key: "percentage", value: "Percentage", additional: FanValue.percentage) ] + +public var LineChartHistory: [KeyValue_p] = [ + KeyValue_t(key: "60", value: "1 minute"), + KeyValue_t(key: "120", value: "2 minutes"), + KeyValue_t(key: "180", value: "3 minutes"), + KeyValue_t(key: "300", value: "5 minutes"), + KeyValue_t(key: "600", value: "10 minutes") +] diff --git a/Modules/CPU/popup.swift b/Modules/CPU/popup.swift index ca0ff20b..9cdb8e2c 100644 --- a/Modules/CPU/popup.swift +++ b/Modules/CPU/popup.swift @@ -68,6 +68,7 @@ internal class Popup: PopupWrapper { private var processes: ProcessesView? = nil private var maxFreq: Double = 0 + private var lineChartHistory: Int = 180 private var systemColorState: Color = .secondRed private var systemColor: NSColor { self.systemColorState.additional as? NSColor ?? NSColor.systemRed } @@ -106,6 +107,7 @@ internal class Popup: PopupWrapper { self.chartColorState = Color.fromString(Store.shared.string(key: "\(self.title)_chartColor", defaultValue: self.chartColorState.key)) self.eCoresColorState = Color.fromString(Store.shared.string(key: "\(self.title)_eCoresColor", defaultValue: self.eCoresColorState.key)) self.pCoresColorState = Color.fromString(Store.shared.string(key: "\(self.title)_pCoresColor", defaultValue: self.pCoresColorState.key)) + self.lineChartHistory = Store.shared.int(key: "\(self.title)_lineChartHistory", defaultValue: self.lineChartHistory) let gridView: NSGridView = NSGridView(frame: NSRect(x: 0, y: 0, width: self.frame.width, height: self.frame.height)) gridView.rowSpacing = 0 @@ -202,7 +204,7 @@ internal class Popup: PopupWrapper { box.layer?.backgroundColor = NSColor.lightGray.withAlphaComponent(0.1).cgColor box.layer?.cornerRadius = 3 - self.lineChart = LineChartView(frame: NSRect(x: 1, y: 0, width: box.frame.width, height: box.frame.height), num: 120) + self.lineChart = LineChartView(frame: NSRect(x: 1, y: 0, width: box.frame.width, height: box.frame.height), num: self.lineChartHistory) self.lineChart?.color = self.chartColor box.addSubview(self.lineChart!) @@ -446,46 +448,53 @@ internal class Popup: PopupWrapper { view.addArrangedSubview(selectSettingsRow( title: localizedString("System color"), - action: #selector(toggleSystemColor), + action: #selector(self.toggleSystemColor), items: Color.allColors, selected: self.systemColorState.key )) view.addArrangedSubview(selectSettingsRow( title: localizedString("User color"), - action: #selector(toggleUserColor), + action: #selector(self.toggleUserColor), items: Color.allColors, selected: self.userColorState.key )) view.addArrangedSubview(selectSettingsRow( title: localizedString("Idle color"), - action: #selector(toggleIdleColor), + action: #selector(self.toggleIdleColor), items: Color.allColors, selected: self.idleColorState.key )) view.addArrangedSubview(selectSettingsRow( title: localizedString("Chart color"), - action: #selector(toggleChartColor), + action: #selector(self.toggleChartColor), items: Color.allColors, selected: self.chartColorState.key )) view.addArrangedSubview(selectSettingsRow( title: localizedString("Efficiency cores color"), - action: #selector(toggleeCoresColor), + action: #selector(self.toggleeCoresColor), items: Color.allColors, selected: self.eCoresColorState.key )) view.addArrangedSubview(selectSettingsRow( title: localizedString("Performance cores color"), - action: #selector(togglepCoresColor), + action: #selector(self.togglepCoresColor), items: Color.allColors, selected: self.pCoresColorState.key )) + view.addArrangedSubview(selectSettingsRow( + title: localizedString("Chart history"), + action: #selector(self.toggleLineChartHistory), + items: LineChartHistory, + selected: "\(self.lineChartHistory)" + )) + return view } @@ -542,4 +551,10 @@ internal class Popup: PopupWrapper { Store.shared.set(key: "\(self.title)_pCoresColor", value: key) self.pCoresColorView?.layer?.backgroundColor = (newValue.additional as? NSColor)?.cgColor } + @objc private func toggleLineChartHistory(_ sender: NSMenuItem) { + guard let key = sender.representedObject as? String, let value = Int(key) else { return } + self.lineChartHistory = value + Store.shared.set(key: "\(self.title)_lineChartHistory", value: value) + self.lineChart?.reinit(self.lineChartHistory) + } }