aboutsummaryrefslogtreecommitdiffstats
path: root/WireGuard/WireGuard/UI
diff options
context:
space:
mode:
authorRoopesh Chander <roop@roopc.net>2019-01-04 18:33:46 +0530
committerRoopesh Chander <roop@roopc.net>2019-01-14 14:52:32 +0530
commitdfc4b37518144f711aaab8e92e316e0ba87c6460 (patch)
tree8f9836cd26cae7bc35db0c7e82f692f919496130 /WireGuard/WireGuard/UI
parentmacOS: Manage tunnels: Export log pulldown menu implementation (diff)
downloadwireguard-apple-dfc4b37518144f711aaab8e92e316e0ba87c6460.tar.xz
wireguard-apple-dfc4b37518144f711aaab8e92e316e0ba87c6460.zip
macOS: Manage tunnels: Update tunnels list on changes
Signed-off-by: Roopesh Chander <roop@roopc.net>
Diffstat (limited to '')
-rw-r--r--WireGuard/WireGuard/UI/macOS/StatusMenu.swift9
-rw-r--r--WireGuard/WireGuard/UI/macOS/ViewController/ManageTunnelsRootViewController.swift9
-rw-r--r--WireGuard/WireGuard/UI/macOS/ViewController/TunnelsListTableViewController.swift18
3 files changed, 30 insertions, 6 deletions
diff --git a/WireGuard/WireGuard/UI/macOS/StatusMenu.swift b/WireGuard/WireGuard/UI/macOS/StatusMenu.swift
index 001081d6..388c3cc3 100644
--- a/WireGuard/WireGuard/UI/macOS/StatusMenu.swift
+++ b/WireGuard/WireGuard/UI/macOS/StatusMenu.swift
@@ -13,9 +13,10 @@ class StatusMenu: NSMenu {
var firstTunnelMenuItemIndex: Int = 0
var numberOfTunnelMenuItems: Int = 0
+ var manageTunnelsRootVC: ManageTunnelsRootViewController?
lazy var manageTunnelsWindow: NSWindow = {
- let manageTunnelsRootVC = ManageTunnelsRootViewController(tunnelsManager: tunnelsManager)
- let window = NSWindow(contentViewController: manageTunnelsRootVC)
+ manageTunnelsRootVC = ManageTunnelsRootViewController(tunnelsManager: tunnelsManager)
+ let window = NSWindow(contentViewController: manageTunnelsRootVC!)
window.title = tr("macWindowTitleManageTunnels")
window.setFrameAutosaveName(NSWindow.FrameAutosaveName("ManageTunnelsWindow")) // Auto-save window position and size
return window
@@ -196,19 +197,23 @@ extension StatusMenu: TunnelsManagerListDelegate {
func tunnelAdded(at index: Int) {
let tunnel = tunnelsManager.tunnel(at: index)
insertTunnelMenuItem(for: tunnel, at: index)
+ manageTunnelsRootVC?.tunnelsListVC?.tunnelAdded(at: index)
}
func tunnelModified(at index: Int) {
if let tunnelMenuItem = item(at: firstTunnelMenuItemIndex + index) {
updateTunnelMenuItem(tunnelMenuItem)
}
+ manageTunnelsRootVC?.tunnelsListVC?.tunnelModified(at: index)
}
func tunnelMoved(from oldIndex: Int, to newIndex: Int) {
moveTunnelMenuItem(from: oldIndex, to: newIndex)
+ manageTunnelsRootVC?.tunnelsListVC?.tunnelMoved(from: oldIndex, to: newIndex)
}
func tunnelRemoved(at index: Int) {
removeTunnelMenuItem(at: index)
+ manageTunnelsRootVC?.tunnelsListVC?.tunnelRemoved(at: index)
}
}
diff --git a/WireGuard/WireGuard/UI/macOS/ViewController/ManageTunnelsRootViewController.swift b/WireGuard/WireGuard/UI/macOS/ViewController/ManageTunnelsRootViewController.swift
index 71dc8b82..c951b45b 100644
--- a/WireGuard/WireGuard/UI/macOS/ViewController/ManageTunnelsRootViewController.swift
+++ b/WireGuard/WireGuard/UI/macOS/ViewController/ManageTunnelsRootViewController.swift
@@ -6,6 +6,7 @@ import Cocoa
class ManageTunnelsRootViewController: NSViewController {
let tunnelsManager: TunnelsManager
+ var tunnelsListVC: TunnelsListTableViewController?
let tunnelDetailContainerView = NSView()
var tunnelDetailContentVC: NSViewController?
@@ -34,11 +35,11 @@ class ManageTunnelsRootViewController: NSViewController {
view.trailingAnchor.constraint(equalTo: container.trailingAnchor, constant: horizontalSpacing)
])
- let tunnelsListVC = TunnelsListTableViewController(tunnelsManager: tunnelsManager)
- tunnelsListVC.delegate = self
- let tunnelsListView = tunnelsListVC.view
+ tunnelsListVC = TunnelsListTableViewController(tunnelsManager: tunnelsManager)
+ tunnelsListVC!.delegate = self
+ let tunnelsListView = tunnelsListVC!.view
- addChild(tunnelsListVC)
+ addChild(tunnelsListVC!)
view.addSubview(tunnelsListView)
view.addSubview(tunnelDetailContainerView)
diff --git a/WireGuard/WireGuard/UI/macOS/ViewController/TunnelsListTableViewController.swift b/WireGuard/WireGuard/UI/macOS/ViewController/TunnelsListTableViewController.swift
index 2d0b6fea..c7d691f0 100644
--- a/WireGuard/WireGuard/UI/macOS/ViewController/TunnelsListTableViewController.swift
+++ b/WireGuard/WireGuard/UI/macOS/ViewController/TunnelsListTableViewController.swift
@@ -206,6 +206,24 @@ class TunnelsListTableViewController: NSViewController {
}
}
+extension TunnelsListTableViewController {
+ func tunnelAdded(at index: Int) {
+ tableView.insertRows(at: IndexSet(integer: index), withAnimation: .slideLeft)
+ }
+
+ func tunnelModified(at index: Int) {
+ tableView.reloadData(forRowIndexes: IndexSet(integer: index), columnIndexes: IndexSet(integer: 0))
+ }
+
+ func tunnelMoved(from oldIndex: Int, to newIndex: Int) {
+ tableView.moveRow(at: oldIndex, to: newIndex)
+ }
+
+ func tunnelRemoved(at index: Int) {
+ tableView.removeRows(at: IndexSet(integer: index), withAnimation: .slideLeft)
+ }
+}
+
extension TunnelsListTableViewController: NSTableViewDataSource {
func numberOfRows(in tableView: NSTableView) -> Int {
return tunnelsManager.numberOfTunnels()