mirror of
https://github.com/morgan9e/macos-stats
synced 2026-04-14 00:04:15 +09:00
feat: added an option to set a spacing between modules in the combined view (#1084)
This commit is contained in:
@@ -34,6 +34,7 @@ identifier_name:
|
|||||||
- _uuidAddress
|
- _uuidAddress
|
||||||
- AppleSiliconSensorsList
|
- AppleSiliconSensorsList
|
||||||
- FanValues
|
- FanValues
|
||||||
|
- CombinedModulesSpacings
|
||||||
|
|
||||||
line_length: 200
|
line_length: 200
|
||||||
|
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ open class Module: Module_p {
|
|||||||
public var name: String {
|
public var name: String {
|
||||||
config.name
|
config.name
|
||||||
}
|
}
|
||||||
public var oneViewPosition: Int {
|
public var combinedPosition: Int {
|
||||||
get {
|
get {
|
||||||
Store.shared.int(key: "\(self.name)_position", defaultValue: 0)
|
Store.shared.int(key: "\(self.name)_position", defaultValue: 0)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,6 +54,18 @@ public let TemperatureUnits: [KeyValue_t] = [
|
|||||||
KeyValue_t(key: "fahrenheit", value: "Fahrenheit", additional: UnitTemperature.fahrenheit)
|
KeyValue_t(key: "fahrenheit", value: "Fahrenheit", additional: UnitTemperature.fahrenheit)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
public let CombinedModulesSpacings: [KeyValue_t] = [
|
||||||
|
KeyValue_t(key: "none", value: "None"),
|
||||||
|
KeyValue_t(key: "1", value: "1", additional: 1),
|
||||||
|
KeyValue_t(key: "2", value: "2", additional: 2),
|
||||||
|
KeyValue_t(key: "3", value: "3", additional: 3),
|
||||||
|
KeyValue_t(key: "4", value: "4", additional: 4),
|
||||||
|
KeyValue_t(key: "5", value: "5", additional: 5),
|
||||||
|
KeyValue_t(key: "6", value: "6", additional: 6),
|
||||||
|
KeyValue_t(key: "7", value: "7", additional: 7),
|
||||||
|
KeyValue_t(key: "8", value: "8", additional: 8)
|
||||||
|
]
|
||||||
|
|
||||||
public enum DataSizeBase: String {
|
public enum DataSizeBase: String {
|
||||||
case bit
|
case bit
|
||||||
case byte
|
case byte
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ class ApplicationSettings: NSStackView {
|
|||||||
|
|
||||||
private var temperatureUnitsValue: String {
|
private var temperatureUnitsValue: String {
|
||||||
get {
|
get {
|
||||||
return Store.shared.string(key: "temperature_units", defaultValue: "system")
|
Store.shared.string(key: "temperature_units", defaultValue: "system")
|
||||||
}
|
}
|
||||||
set {
|
set {
|
||||||
Store.shared.set(key: "temperature_units", value: newValue)
|
Store.shared.set(key: "temperature_units", value: newValue)
|
||||||
@@ -34,6 +34,14 @@ class ApplicationSettings: NSStackView {
|
|||||||
Store.shared.set(key: "CombinedModules", value: newValue)
|
Store.shared.set(key: "CombinedModules", value: newValue)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private var combinedModulesSpacing: String {
|
||||||
|
get {
|
||||||
|
Store.shared.string(key: "CombinedModules_spacing", defaultValue: "none")
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
Store.shared.set(key: "CombinedModules_spacing", value: newValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private let updateWindow: UpdateWindow = UpdateWindow()
|
private let updateWindow: UpdateWindow = UpdateWindow()
|
||||||
private let moduleSelector: ModuleSelectorView = ModuleSelectorView()
|
private let moduleSelector: ModuleSelectorView = ModuleSelectorView()
|
||||||
@@ -190,6 +198,14 @@ class ApplicationSettings: NSStackView {
|
|||||||
state: self.combinedModulesState,
|
state: self.combinedModulesState,
|
||||||
text: localizedString("Combined modules")
|
text: localizedString("Combined modules")
|
||||||
)])
|
)])
|
||||||
|
grid.addRow(with: [
|
||||||
|
self.titleView(localizedString("Combined module spacing")),
|
||||||
|
selectView(
|
||||||
|
action: #selector(self.toggleCombinedModulesSpacing),
|
||||||
|
items: CombinedModulesSpacings,
|
||||||
|
selected: self.combinedModulesSpacing
|
||||||
|
)
|
||||||
|
])
|
||||||
|
|
||||||
view.addArrangedSubview(self.moduleSelector)
|
view.addArrangedSubview(self.moduleSelector)
|
||||||
view.addArrangedSubview(grid)
|
view.addArrangedSubview(grid)
|
||||||
@@ -270,7 +286,7 @@ class ApplicationSettings: NSStackView {
|
|||||||
|
|
||||||
// MARK: - actions
|
// MARK: - actions
|
||||||
|
|
||||||
@objc func updateAction(_ sender: NSObject) {
|
@objc private func updateAction(_ sender: NSObject) {
|
||||||
updater.check(force: true, completion: { result, error in
|
updater.check(force: true, completion: { result, error in
|
||||||
if error != nil {
|
if error != nil {
|
||||||
debug("error updater.check(): \(error!.localizedDescription)")
|
debug("error updater.check(): \(error!.localizedDescription)")
|
||||||
@@ -290,21 +306,16 @@ class ApplicationSettings: NSStackView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@objc private func toggleUpdateInterval(_ sender: NSMenuItem) {
|
@objc private func toggleUpdateInterval(_ sender: NSMenuItem) {
|
||||||
guard let key = sender.representedObject as? String else {
|
guard let key = sender.representedObject as? String else { return }
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
Store.shared.set(key: "update-interval", value: key)
|
Store.shared.set(key: "update-interval", value: key)
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc private func toggleTemperatureUnits(_ sender: NSMenuItem) {
|
@objc private func toggleTemperatureUnits(_ sender: NSMenuItem) {
|
||||||
guard let key = sender.representedObject as? String else {
|
guard let key = sender.representedObject as? String else { return }
|
||||||
return
|
|
||||||
}
|
|
||||||
self.temperatureUnitsValue = key
|
self.temperatureUnitsValue = key
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc func toggleDock(_ sender: NSButton) {
|
@objc private func toggleDock(_ sender: NSButton) {
|
||||||
let state = sender.state
|
let state = sender.state
|
||||||
|
|
||||||
Store.shared.set(key: "dockIcon", value: state == NSControl.StateValue.on)
|
Store.shared.set(key: "dockIcon", value: state == NSControl.StateValue.on)
|
||||||
@@ -315,14 +326,14 @@ class ApplicationSettings: NSStackView {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc func toggleLaunchAtLogin(_ sender: NSButton) {
|
@objc private func toggleLaunchAtLogin(_ sender: NSButton) {
|
||||||
LaunchAtLogin.isEnabled = sender.state == NSControl.StateValue.on
|
LaunchAtLogin.isEnabled = sender.state == NSControl.StateValue.on
|
||||||
if !Store.shared.exist(key: "runAtLoginInitialized") {
|
if !Store.shared.exist(key: "runAtLoginInitialized") {
|
||||||
Store.shared.set(key: "runAtLoginInitialized", value: true)
|
Store.shared.set(key: "runAtLoginInitialized", value: true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc func resetSettings(_ sender: NSObject) {
|
@objc private func resetSettings(_ sender: NSObject) {
|
||||||
let alert = NSAlert()
|
let alert = NSAlert()
|
||||||
alert.messageText = localizedString("Reset settings")
|
alert.messageText = localizedString("Reset settings")
|
||||||
alert.informativeText = localizedString("Reset settings text")
|
alert.informativeText = localizedString("Reset settings text")
|
||||||
@@ -359,6 +370,12 @@ class ApplicationSettings: NSStackView {
|
|||||||
self.moduleSelector.isHidden = !self.combinedModulesState
|
self.moduleSelector.isHidden = !self.combinedModulesState
|
||||||
NotificationCenter.default.post(name: .toggleOneView, object: nil, userInfo: nil)
|
NotificationCenter.default.post(name: .toggleOneView, object: nil, userInfo: nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@objc private func toggleCombinedModulesSpacing(_ sender: NSMenuItem) {
|
||||||
|
guard let key = sender.representedObject as? String else { return }
|
||||||
|
self.combinedModulesSpacing = key
|
||||||
|
NotificationCenter.default.post(name: .moduleRearrange, object: nil, userInfo: nil)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class ModuleSelectorView: NSStackView {
|
private class ModuleSelectorView: NSStackView {
|
||||||
@@ -385,7 +402,7 @@ private class ModuleSelectorView: NSStackView {
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
var w = self.spacing
|
var w = self.spacing
|
||||||
modules.filter({ $0.available }).sorted(by: { $0.oneViewPosition < $1.oneViewPosition }).forEach { (m: Module) in
|
modules.filter({ $0.available }).sorted(by: { $0.combinedPosition < $1.combinedPosition }).forEach { (m: Module) in
|
||||||
let v = ModulePreview(id: m.name, icon: m.config.icon)
|
let v = ModulePreview(id: m.name, icon: m.config.icon)
|
||||||
self.addArrangedSubview(v)
|
self.addArrangedSubview(v)
|
||||||
w += v.frame.width + self.spacing
|
w += v.frame.width + self.spacing
|
||||||
@@ -464,7 +481,7 @@ private class ModuleSelectorView: NSStackView {
|
|||||||
|
|
||||||
for (i, v) in self.views(in: .leading).compactMap({$0 as? ModulePreview}).enumerated() {
|
for (i, v) in self.views(in: .leading).compactMap({$0 as? ModulePreview}).enumerated() {
|
||||||
if let m = modules.first(where: { $0.name == v.identifier?.rawValue }) {
|
if let m = modules.first(where: { $0.name == v.identifier?.rawValue }) {
|
||||||
m.oneViewPosition = i
|
m.combinedPosition = i
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,9 @@ class CombinedView {
|
|||||||
private var status: Bool {
|
private var status: Bool {
|
||||||
Store.shared.bool(key: "CombinedModules", defaultValue: false)
|
Store.shared.bool(key: "CombinedModules", defaultValue: false)
|
||||||
}
|
}
|
||||||
|
private var spacing: CGFloat {
|
||||||
|
CGFloat(Int(Store.shared.string(key: "CombinedModules_spacing", defaultValue: "")) ?? 0)
|
||||||
|
}
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
modules.forEach { (m: Module) in
|
modules.forEach { (m: Module) in
|
||||||
@@ -69,10 +72,10 @@ class CombinedView {
|
|||||||
|
|
||||||
var w: CGFloat = 0
|
var w: CGFloat = 0
|
||||||
var i: Int = 0
|
var i: Int = 0
|
||||||
modules.filter({ $0.enabled }).sorted(by: { $0.oneViewPosition < $1.oneViewPosition }).forEach { (m: Module) in
|
modules.filter({ $0.enabled }).sorted(by: { $0.combinedPosition < $1.combinedPosition }).forEach { (m: Module) in
|
||||||
self.view.addSubview(m.menuBar.view)
|
self.view.addSubview(m.menuBar.view)
|
||||||
self.view.subviews[i].setFrameOrigin(NSPoint(x: w, y: 0))
|
self.view.subviews[i].setFrameOrigin(NSPoint(x: w, y: 0))
|
||||||
w += m.menuBar.view.frame.width
|
w += m.menuBar.view.frame.width + self.spacing
|
||||||
i += 1
|
i += 1
|
||||||
}
|
}
|
||||||
self.view.setFrameSize(NSSize(width: w, height: self.view.frame.height))
|
self.view.setFrameSize(NSSize(width: w, height: self.view.frame.height))
|
||||||
|
|||||||
Reference in New Issue
Block a user