mirror of
https://github.com/morgan9e/macos-stats
synced 2026-04-14 00:04:15 +09:00
fix: hidden public IP from combined view if public address disabled in the popup settings (#2330)
This commit is contained in:
@@ -356,7 +356,7 @@ public func popupRow(_ view: NSView, title: String, value: String) -> (LabelFiel
|
||||
return (labelView, valueView, rowView)
|
||||
}
|
||||
|
||||
public func portalRow(_ v: NSStackView, title: String, value: String = "", isSelectable: Bool = false) -> ValueField {
|
||||
public func portalRow(_ v: NSStackView, title: String, value: String = "", isSelectable: Bool = false) -> (LabelField, ValueField, NSStackView) {
|
||||
let view: NSStackView = NSStackView()
|
||||
view.orientation = .horizontal
|
||||
view.distribution = .fillProportionally
|
||||
@@ -377,7 +377,7 @@ public func portalRow(_ v: NSStackView, title: String, value: String = "", isSel
|
||||
|
||||
view.widthAnchor.constraint(equalTo: v.widthAnchor).isActive = true
|
||||
|
||||
return valueView
|
||||
return (labelView, valueView, view)
|
||||
}
|
||||
|
||||
public func popupWithColorRow(_ view: NSView, color: NSColor, title: String, value: String) -> (NSView, LabelField, ValueField) {
|
||||
|
||||
@@ -87,9 +87,9 @@ public class Portal: PortalWrapper {
|
||||
view.distribution = .fillEqually
|
||||
view.spacing = Constants.Popup.spacing*2
|
||||
|
||||
self.nameField = portalRow(view, title: "\(localizedString("Name")):")
|
||||
self.usedField = portalRow(view, title: "\(localizedString("Used")):")
|
||||
self.freeField = portalRow(view, title: "\(localizedString("Free")):")
|
||||
self.nameField = portalRow(view, title: "\(localizedString("Name")):").1
|
||||
self.usedField = portalRow(view, title: "\(localizedString("Used")):").1
|
||||
self.freeField = portalRow(view, title: "\(localizedString("Free")):").1
|
||||
|
||||
let chart = NetworkChartView(frame: NSRect.zero, num: 120, minMax: false, outColor: self.writeColor, inColor: self.readColor)
|
||||
chart.heightAnchor.constraint(equalToConstant: 26).isActive = true
|
||||
|
||||
@@ -70,9 +70,9 @@ public class Portal: PortalWrapper {
|
||||
view.distribution = .fillEqually
|
||||
view.spacing = Constants.Popup.spacing*2
|
||||
|
||||
self.usageField = portalRow(view, title: "\(localizedString("Usage")):")
|
||||
self.renderField = portalRow(view, title: "\(localizedString("Render")):")
|
||||
self.tilerField = portalRow(view, title: "\(localizedString("Tiler")):")
|
||||
self.usageField = portalRow(view, title: "\(localizedString("Usage")):").1
|
||||
self.renderField = portalRow(view, title: "\(localizedString("Render")):").1
|
||||
self.tilerField = portalRow(view, title: "\(localizedString("Tiler")):").1
|
||||
|
||||
return view
|
||||
}
|
||||
|
||||
@@ -16,6 +16,9 @@ public class Portal: PortalWrapper {
|
||||
private var chart: NetworkChartView? = nil
|
||||
|
||||
private var publicIPField: NSTextField? = nil
|
||||
private var publicIPView: NSView? = nil
|
||||
private var localIPField: NSTextField? = nil
|
||||
private var localIPView: NSView? = nil
|
||||
|
||||
private var base: DataSizeBase {
|
||||
DataSizeBase(rawValue: Store.shared.string(key: "\(self.name)_base", defaultValue: "byte")) ?? .byte
|
||||
@@ -32,6 +35,9 @@ public class Portal: PortalWrapper {
|
||||
private var chartFixedScaleSize: SizeUnit {
|
||||
SizeUnit.fromString(Store.shared.string(key: "\(self.name)_chartFixedScaleSize", defaultValue: SizeUnit.MB.key))
|
||||
}
|
||||
private var publicIPState: Bool {
|
||||
Store.shared.bool(key: "\(self.name)_publicIP", defaultValue: true)
|
||||
}
|
||||
|
||||
private var downloadColor: NSColor {
|
||||
let v = SColor.fromString(Store.shared.string(key: "\(self.name)_downloadColor", defaultValue: SColor.secondBlue.key))
|
||||
@@ -82,8 +88,17 @@ public class Portal: PortalWrapper {
|
||||
self.chart = chart
|
||||
view.addArrangedSubview(container)
|
||||
|
||||
self.publicIPField = portalRow(view, title: "\(localizedString("Public IP")):", value: localizedString("Unknown"), isSelectable: true)
|
||||
view.subviews.last?.heightAnchor.constraint(equalToConstant: 16).isActive = true
|
||||
let publicIP = portalRow(view, title: "\(localizedString("Public IP")):", value: localizedString("Unknown"), isSelectable: true)
|
||||
self.publicIPField = publicIP.1
|
||||
self.publicIPView = publicIP.2
|
||||
self.publicIPView?.isHidden = !self.publicIPState
|
||||
self.publicIPView?.heightAnchor.constraint(equalToConstant: 16).isActive = true
|
||||
|
||||
let localIP = portalRow(view, title: "\(localizedString("Local IP")):", value: localizedString("Unknown"), isSelectable: true)
|
||||
self.localIPField = localIP.1
|
||||
self.localIPView = localIP.2
|
||||
self.localIPView?.isHidden = self.publicIPState
|
||||
self.localIPView?.heightAnchor.constraint(equalToConstant: 16).isActive = true
|
||||
|
||||
self.addArrangedSubview(view)
|
||||
}
|
||||
@@ -99,6 +114,14 @@ public class Portal: PortalWrapper {
|
||||
chart.setColors(in: self.downloadColor, out: self.uploadColor)
|
||||
}
|
||||
|
||||
if self.publicIPState, let view = self.publicIPView, view.isHidden {
|
||||
self.publicIPView?.isHidden = false
|
||||
self.localIPView?.isHidden = true
|
||||
} else if !self.publicIPState, let view = self.publicIPView, !view.isHidden {
|
||||
self.publicIPView?.isHidden = true
|
||||
self.localIPView?.isHidden = false
|
||||
}
|
||||
|
||||
if let view = self.publicIPField, view.stringValue != value.raddr.v4 {
|
||||
if let addr = value.raddr.v4 {
|
||||
view.stringValue = (value.wifiDetails.countryCode != nil) ? "\(addr) (\(value.wifiDetails.countryCode!))" : addr
|
||||
@@ -111,6 +134,10 @@ public class Portal: PortalWrapper {
|
||||
view.toolTip = "\("\(localizedString("v6")):") \(localizedString("Unknown"))"
|
||||
}
|
||||
}
|
||||
|
||||
if self.localIPField?.stringValue != value.laddr {
|
||||
self.localIPField?.stringValue = value.laddr ?? localizedString("Unknown")
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,10 +89,10 @@ public class Portal: PortalWrapper {
|
||||
view.distribution = .fillEqually
|
||||
view.spacing = Constants.Popup.spacing*2
|
||||
|
||||
self.usedField = portalRow(view, title: "\(localizedString("Used")):")
|
||||
self.freeField = portalRow(view, title: "\(localizedString("Free")):")
|
||||
self.swapField = portalRow(view, title: "\(localizedString("Swap")):")
|
||||
self.pressureLevelField = portalRow(view, title: "\(localizedString("Memory pressure")):")
|
||||
self.usedField = portalRow(view, title: "\(localizedString("Used")):").1
|
||||
self.freeField = portalRow(view, title: "\(localizedString("Free")):").1
|
||||
self.swapField = portalRow(view, title: "\(localizedString("Swap")):").1
|
||||
self.pressureLevelField = portalRow(view, title: "\(localizedString("Memory pressure")):").1
|
||||
|
||||
return view
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user