Skip to content

Commit

Permalink
feat: added public IP address to the network portal view (#1842)
Browse files Browse the repository at this point in the history
  • Loading branch information
exelban committed Mar 20, 2024
1 parent 3250b9b commit 6482a43
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 34 deletions.
4 changes: 2 additions & 2 deletions Kit/helpers.swift
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,7 @@ public func popupRow(_ view: NSView, n: CGFloat = 0, title: String, value: Strin
return (labelView, valueView)
}

public func portalRow(_ v: NSStackView, title: String) -> ValueField {
public func portalRow(_ v: NSStackView, title: String, value: String = "") -> ValueField {
let view: NSStackView = NSStackView()
view.orientation = .horizontal
view.distribution = .fillProportionally
Expand All @@ -359,7 +359,7 @@ public func portalRow(_ v: NSStackView, title: String) -> ValueField {
let labelView: LabelField = LabelField(title)
labelView.font = NSFont.systemFont(ofSize: 11, weight: .regular)

let valueView: ValueField = ValueField()
let valueView: ValueField = ValueField(value)
valueView.font = NSFont.systemFont(ofSize: 12, weight: .regular)

view.addArrangedSubview(labelView)
Expand Down
4 changes: 2 additions & 2 deletions Modules/Net/popup.swift
Original file line number Diff line number Diff line change
Expand Up @@ -73,15 +73,15 @@ internal class Popup: PopupWrapper {

private var downloadColorState: Color = .secondBlue
private var downloadColor: NSColor {
var value = NSColor.systemRed
var value = NSColor.systemBlue
if let color = self.downloadColorState.additional as? NSColor {
value = color
}
return value
}
private var uploadColorState: Color = .secondRed
private var uploadColor: NSColor {
var value = NSColor.systemBlue
var value = NSColor.systemRed
if let color = self.uploadColorState.additional as? NSColor {
value = color
}
Expand Down
79 changes: 49 additions & 30 deletions Modules/Net/portal.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,67 +12,73 @@
import Cocoa
import Kit

public class Portal: NSStackView, Portal_p {
public var name: String

public class Portal: PortalWrapper {
private var chart: NetworkChartView? = nil

private var publicIPField: NSTextField? = nil

private var base: DataSizeBase {
DataSizeBase(rawValue: Store.shared.string(key: "\(self.name)_base", defaultValue: "byte")) ?? .byte
}

private var downloadColorState: Color = .secondBlue
private var downloadColor: NSColor {
var value = NSColor.systemRed
var value = NSColor.systemBlue
if let color = self.downloadColorState.additional as? NSColor {
value = color
}
return value
}
private var uploadColorState: Color = .secondRed
private var uploadColor: NSColor {
var value = NSColor.systemBlue
var value = NSColor.systemRed
if let color = self.uploadColorState.additional as? NSColor {
value = color
}
return value
}

public init(_ module: ModuleType) {
self.name = module.rawValue

super.init(frame: NSRect.zero)

self.wantsLayer = true
self.layer?.backgroundColor = NSColor.windowBackgroundColor.cgColor
self.layer?.cornerRadius = 3
private var initialized: Bool = false

public override func load() {
self.loadColors()

self.orientation = .vertical
self.distribution = .fillEqually
self.spacing = Constants.Popup.spacing*2
self.edgeInsets = NSEdgeInsets(
top: Constants.Popup.spacing*2,
let view = NSStackView()
view.orientation = .vertical
view.distribution = .fillEqually
view.spacing = Constants.Popup.spacing*2
view.edgeInsets = NSEdgeInsets(
top: 0,
left: Constants.Popup.spacing*2,
bottom: Constants.Popup.spacing*2,
bottom: 0,
right: Constants.Popup.spacing*2
)
self.addArrangedSubview(PortalHeader(name))

let chart = NetworkChartView(frame: NSRect.zero, num: 120, outColor: self.uploadColor, inColor: self.downloadColor)
chart.base = self.base
self.chart = chart
self.chart!.toolTip = localizedString("Network activity")
self.addArrangedSubview(self.chart!)
let chartView = self.chartView()
view.addArrangedSubview(chartView)

self.publicIPField = portalRow(view, title: "\(localizedString("Public IP")):", value: localizedString("Unknown"))
view.subviews.last?.heightAnchor.constraint(equalToConstant: 16).isActive = true

self.heightAnchor.constraint(equalToConstant: Constants.Popup.portalHeight).isActive = true
self.addArrangedSubview(view)
}

required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
public func loadColors() {
self.downloadColorState = Color.fromString(Store.shared.string(key: "\(self.name)_downloadColor", defaultValue: self.downloadColorState.key))
self.uploadColorState = Color.fromString(Store.shared.string(key: "\(self.name)_uploadColor", defaultValue: self.uploadColorState.key))
}

public override func updateLayer() {
self.layer?.backgroundColor = NSColor.windowBackgroundColor.cgColor
private func chartView() -> NSView {
let view = NSStackView()
view.orientation = .vertical
view.distribution = .fill
view.spacing = Constants.Popup.spacing*2
let chart = NetworkChartView(frame: NSRect.zero, num: 120, minMax: true, outColor: self.uploadColor, inColor: self.downloadColor)
self.chart = chart

view.addArrangedSubview(chart)

return view
}

public func usageCallback(_ value: Network_Usage) {
Expand All @@ -83,6 +89,19 @@ public class Portal: NSStackView, Portal_p {
}
chart.addValue(upload: Double(value.bandwidth.upload), download: Double(value.bandwidth.download))
}

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
} else {
view.stringValue = localizedString("Unknown")
}
if let addr = value.raddr.v6 {
view.toolTip = "\("\(localizedString("v6")):") \(addr)"
} else {
view.toolTip = "\("\(localizedString("v6")):") \(localizedString("Unknown"))"
}
}
})
}
}

0 comments on commit 6482a43

Please sign in to comment.