fix: hidden public IP from combined view if public address disabled in the popup settings (#2330)

This commit is contained in:
Serhiy Mytrovtsiy
2025-01-14 16:54:31 +01:00
parent a07ee94110
commit 687df76aeb
5 changed files with 41 additions and 14 deletions

View File

@@ -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")
}
})
}
}