summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrant Limberg <glimberg@gmail.com>2016-08-07 18:19:47 -0700
committerGrant Limberg <glimberg@gmail.com>2016-08-07 18:19:47 -0700
commitd965768004d49793f3423714df8063a288fe1346 (patch)
tree39bcdc19af74cb5e487c753bf5fc15f72b9d7e77
parenta91187e60ef1f022b9ed19f85d0650e000de3c7b (diff)
downloadinfinitytier-d965768004d49793f3423714df8063a288fe1346.tar.gz
infinitytier-d965768004d49793f3423714df8063a288fe1346.zip
Replaced the network list with Obj-C
-rw-r--r--ZeroTier One.xcodeproj/project.pbxproj22
-rw-r--r--ZeroTier One/AppDelegate.swift4
-rw-r--r--ZeroTier One/NetworkInfoCell.h40
-rw-r--r--ZeroTier One/NetworkInfoCell.m56
-rw-r--r--ZeroTier One/NetworkInfoCell.swift72
-rw-r--r--ZeroTier One/ShowNetworksViewController.h26
-rw-r--r--ZeroTier One/ShowNetworksViewController.m108
-rw-r--r--ZeroTier One/ShowNetworksViewController.swift132
-rw-r--r--ZeroTier One/ShowNetworksViewController.xib2
-rw-r--r--ZeroTier One/ZeroTier One-Bridging-Header.h2
10 files changed, 248 insertions, 216 deletions
diff --git a/ZeroTier One.xcodeproj/project.pbxproj b/ZeroTier One.xcodeproj/project.pbxproj
index 245996c1..60aa89ce 100644
--- a/ZeroTier One.xcodeproj/project.pbxproj
+++ b/ZeroTier One.xcodeproj/project.pbxproj
@@ -10,13 +10,11 @@
932D472F1D1CD499004BCFE2 /* ZeroTierIcon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 932D472E1D1CD499004BCFE2 /* ZeroTierIcon.icns */; };
932D47331D1CD861004BCFE2 /* PreferencesViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 932D47311D1CD861004BCFE2 /* PreferencesViewController.xib */; };
932D47371D1CDC9B004BCFE2 /* AboutViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 932D47351D1CDC9B004BCFE2 /* AboutViewController.xib */; };
- 9330F13B1CF534E500687EC8 /* NetworkInfoCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9330F13A1CF534E500687EC8 /* NetworkInfoCell.swift */; };
93326BDC1CE7C816005CA2AC /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93326BDB1CE7C816005CA2AC /* AppDelegate.swift */; };
93326BDE1CE7C816005CA2AC /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 93326BDD1CE7C816005CA2AC /* Assets.xcassets */; };
93326BE11CE7C816005CA2AC /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 93326BDF1CE7C816005CA2AC /* MainMenu.xib */; };
93326BEA1CE7D9B9005CA2AC /* JoinNetworkViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93326BE81CE7D9B9005CA2AC /* JoinNetworkViewController.swift */; };
93326BEB1CE7D9B9005CA2AC /* JoinNetworkViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 93326BE91CE7D9B9005CA2AC /* JoinNetworkViewController.xib */; };
- 93326BEE1CE7DA30005CA2AC /* ShowNetworksViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93326BEC1CE7DA30005CA2AC /* ShowNetworksViewController.swift */; };
93326BEF1CE7DA30005CA2AC /* ShowNetworksViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 93326BED1CE7DA30005CA2AC /* ShowNetworksViewController.xib */; };
93D1675F1D54191C00330C99 /* NodeStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 93D1675E1D54191C00330C99 /* NodeStatus.m */; };
93D167621D541BC200330C99 /* ServiceCom.m in Sources */ = {isa = PBXBuildFile; fileRef = 93D167611D541BC200330C99 /* ServiceCom.m */; };
@@ -24,6 +22,8 @@
93D167691D57E7EA00330C99 /* AboutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 93D167681D57E7EA00330C99 /* AboutViewController.m */; };
93D1676D1D57EB8400330C99 /* PreferencesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 93D1676C1D57EB8400330C99 /* PreferencesViewController.m */; };
93D167701D57FD3800330C99 /* NetworkMonitor.m in Sources */ = {isa = PBXBuildFile; fileRef = 93D1676F1D57FD3800330C99 /* NetworkMonitor.m */; };
+ 93D167731D58093C00330C99 /* NetworkInfoCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 93D167721D58093C00330C99 /* NetworkInfoCell.m */; };
+ 93D167761D580C3500330C99 /* ShowNetworksViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 93D167751D580C3500330C99 /* ShowNetworksViewController.m */; };
93DAFB271D3F0BEE004D5417 /* about.html in Resources */ = {isa = PBXBuildFile; fileRef = 93DAFB261D3F0BEE004D5417 /* about.html */; };
93DAFE4B1CFE53CA00547CC4 /* AuthtokenCopy.m in Sources */ = {isa = PBXBuildFile; fileRef = 93DAFE4A1CFE53CA00547CC4 /* AuthtokenCopy.m */; };
/* End PBXBuildFile section */
@@ -32,7 +32,6 @@
932D472E1D1CD499004BCFE2 /* ZeroTierIcon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = ZeroTierIcon.icns; sourceTree = "<group>"; };
932D47311D1CD861004BCFE2 /* PreferencesViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PreferencesViewController.xib; sourceTree = "<group>"; };
932D47351D1CDC9B004BCFE2 /* AboutViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AboutViewController.xib; sourceTree = "<group>"; };
- 9330F13A1CF534E500687EC8 /* NetworkInfoCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetworkInfoCell.swift; sourceTree = "<group>"; };
93326BD81CE7C816005CA2AC /* ZeroTier One.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ZeroTier One.app"; sourceTree = BUILT_PRODUCTS_DIR; };
93326BDB1CE7C816005CA2AC /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
93326BDD1CE7C816005CA2AC /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
@@ -40,7 +39,6 @@
93326BE21CE7C816005CA2AC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
93326BE81CE7D9B9005CA2AC /* JoinNetworkViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = JoinNetworkViewController.swift; sourceTree = "<group>"; };
93326BE91CE7D9B9005CA2AC /* JoinNetworkViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = JoinNetworkViewController.xib; sourceTree = "<group>"; };
- 93326BEC1CE7DA30005CA2AC /* ShowNetworksViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ShowNetworksViewController.swift; sourceTree = "<group>"; };
93326BED1CE7DA30005CA2AC /* ShowNetworksViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ShowNetworksViewController.xib; sourceTree = "<group>"; };
93D1675D1D54191C00330C99 /* NodeStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NodeStatus.h; sourceTree = "<group>"; };
93D1675E1D54191C00330C99 /* NodeStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NodeStatus.m; sourceTree = "<group>"; };
@@ -54,6 +52,10 @@
93D1676C1D57EB8400330C99 /* PreferencesViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PreferencesViewController.m; sourceTree = "<group>"; };
93D1676E1D57FD3800330C99 /* NetworkMonitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkMonitor.h; sourceTree = "<group>"; };
93D1676F1D57FD3800330C99 /* NetworkMonitor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NetworkMonitor.m; sourceTree = "<group>"; };
+ 93D167711D58093C00330C99 /* NetworkInfoCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkInfoCell.h; sourceTree = "<group>"; };
+ 93D167721D58093C00330C99 /* NetworkInfoCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NetworkInfoCell.m; sourceTree = "<group>"; };
+ 93D167741D580C3500330C99 /* ShowNetworksViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShowNetworksViewController.h; sourceTree = "<group>"; };
+ 93D167751D580C3500330C99 /* ShowNetworksViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ShowNetworksViewController.m; sourceTree = "<group>"; };
93DAFB261D3F0BEE004D5417 /* about.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = about.html; sourceTree = "<group>"; };
93DAFE491CFE53C900547CC4 /* ZeroTier One-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ZeroTier One-Bridging-Header.h"; sourceTree = "<group>"; };
93DAFE4A1CFE53CA00547CC4 /* AuthtokenCopy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AuthtokenCopy.m; sourceTree = "<group>"; };
@@ -94,9 +96,6 @@
93326BDB1CE7C816005CA2AC /* AppDelegate.swift */,
93326BE81CE7D9B9005CA2AC /* JoinNetworkViewController.swift */,
93326BE91CE7D9B9005CA2AC /* JoinNetworkViewController.xib */,
- 9330F13A1CF534E500687EC8 /* NetworkInfoCell.swift */,
- 93326BEC1CE7DA30005CA2AC /* ShowNetworksViewController.swift */,
- 93326BED1CE7DA30005CA2AC /* ShowNetworksViewController.xib */,
93326BDD1CE7C816005CA2AC /* Assets.xcassets */,
93326BDF1CE7C816005CA2AC /* MainMenu.xib */,
93326BE21CE7C816005CA2AC /* Info.plist */,
@@ -118,6 +117,11 @@
93D1676B1D57EB8400330C99 /* PreferencesViewController.h */,
93D1676C1D57EB8400330C99 /* PreferencesViewController.m */,
932D47311D1CD861004BCFE2 /* PreferencesViewController.xib */,
+ 93D167711D58093C00330C99 /* NetworkInfoCell.h */,
+ 93D167721D58093C00330C99 /* NetworkInfoCell.m */,
+ 93D167741D580C3500330C99 /* ShowNetworksViewController.h */,
+ 93D167751D580C3500330C99 /* ShowNetworksViewController.m */,
+ 93326BED1CE7DA30005CA2AC /* ShowNetworksViewController.xib */,
);
path = "ZeroTier One";
sourceTree = "<group>";
@@ -199,15 +203,15 @@
buildActionMask = 2147483647;
files = (
93D167621D541BC200330C99 /* ServiceCom.m in Sources */,
+ 93D167761D580C3500330C99 /* ShowNetworksViewController.m in Sources */,
93326BDC1CE7C816005CA2AC /* AppDelegate.swift in Sources */,
93DAFE4B1CFE53CA00547CC4 /* AuthtokenCopy.m in Sources */,
- 9330F13B1CF534E500687EC8 /* NetworkInfoCell.swift in Sources */,
93D167701D57FD3800330C99 /* NetworkMonitor.m in Sources */,
93326BEA1CE7D9B9005CA2AC /* JoinNetworkViewController.swift in Sources */,
- 93326BEE1CE7DA30005CA2AC /* ShowNetworksViewController.swift in Sources */,
93D1675F1D54191C00330C99 /* NodeStatus.m in Sources */,
93D167691D57E7EA00330C99 /* AboutViewController.m in Sources */,
93D1676D1D57EB8400330C99 /* PreferencesViewController.m in Sources */,
+ 93D167731D58093C00330C99 /* NetworkInfoCell.m in Sources */,
93D167661D54308200330C99 /* Network.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
diff --git a/ZeroTier One/AppDelegate.swift b/ZeroTier One/AppDelegate.swift
index f70cfcb3..400b67bf 100644
--- a/ZeroTier One/AppDelegate.swift
+++ b/ZeroTier One/AppDelegate.swift
@@ -42,8 +42,8 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate {
let nc = NSNotificationCenter.defaultCenter()
- nc.addObserver(self, selector: #selector(onNetworkListUpdated(_:)), name: networkUpdateKey, object: nil)
- nc.addObserver(self, selector: #selector(onNodeStatusUpdated(_:)), name: statusUpdateKey, object: nil)
+ nc.addObserver(self, selector: #selector(onNetworkListUpdated(_:)), name: NetworkUpdateKey, object: nil)
+ nc.addObserver(self, selector: #selector(onNodeStatusUpdated(_:)), name: StatusUpdateKey, object: nil)
statusItem.image = NSImage(named: "MenuBarIconMac")
diff --git a/ZeroTier One/NetworkInfoCell.h b/ZeroTier One/NetworkInfoCell.h
new file mode 100644
index 00000000..b687bc4f
--- /dev/null
+++ b/ZeroTier One/NetworkInfoCell.h
@@ -0,0 +1,40 @@
+//
+// NetworkInfoCell.h
+// ZeroTier One
+//
+// Created by Grant Limberg on 8/7/16.
+// Copyright © 2016 ZeroTier, Inc. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+@class ShowNetworksViewController;
+
+@interface NetworkInfoCell : NSTableCellView
+
+@property (weak, nonatomic) ShowNetworksViewController *parent;
+
+@property (weak, nonatomic) IBOutlet NSTextField *networkIdField;
+@property (weak, nonatomic) IBOutlet NSTextField *networkNameField;
+@property (weak, nonatomic) IBOutlet NSTextField *statusField;
+@property (weak, nonatomic) IBOutlet NSTextField *typeField;
+@property (weak, nonatomic) IBOutlet NSTextField *macField;
+@property (weak, nonatomic) IBOutlet NSTextField *mtuField;
+@property (weak, nonatomic) IBOutlet NSTextField *broadcastField;
+@property (weak, nonatomic) IBOutlet NSTextField *bridgingField;
+@property (weak, nonatomic) IBOutlet NSTextField *deviceField;
+@property (weak, nonatomic) IBOutlet NSTextField *addressesField;
+@property (weak, nonatomic) IBOutlet NSButton *allowManaged;
+@property (weak, nonatomic) IBOutlet NSButton *allowGlobal;
+@property (weak, nonatomic) IBOutlet NSButton *allowDefault;
+@property (weak, nonatomic) IBOutlet NSButton *connectedCheckbox;
+@property (weak, nonatomic) IBOutlet NSButton *deleteButton;
+
+- (IBAction)onConnectCheckStateChanged:(NSButton*)sender;
+- (IBAction)deleteNetwork:(NSButton*)sender;
+- (IBAction)onAllowStatusChanged:(NSButton*)sender;
+
+- (void)joinNetwork:(NSString*)nwid;
+- (void)leaveNetwork:(NSString*)nwid;
+
+@end
diff --git a/ZeroTier One/NetworkInfoCell.m b/ZeroTier One/NetworkInfoCell.m
new file mode 100644
index 00000000..606bb849
--- /dev/null
+++ b/ZeroTier One/NetworkInfoCell.m
@@ -0,0 +1,56 @@
+//
+// NetworkInfoCell.m
+// ZeroTier One
+//
+// Created by Grant Limberg on 8/7/16.
+// Copyright © 2016 ZeroTier, Inc. All rights reserved.
+//
+
+#import "NetworkInfoCell.h"
+#import "ServiceCom.h"
+#import "ShowNetworksViewController.h"
+#import "Network.h"
+
+@implementation NetworkInfoCell
+
+- (void)drawRect:(NSRect)dirtyRect {
+ [super drawRect:dirtyRect];
+
+ // Drawing code here.
+}
+
+- (IBAction)onConnectCheckStateChanged:(NSButton*)sender
+{
+ if(sender.state == NSOnState) {
+ [self joinNetwork:self.networkIdField.stringValue];
+ }
+ else {
+ [self leaveNetwork:self.networkIdField.stringValue];
+ }
+}
+
+- (IBAction)deleteNetwork:(NSButton*)sender;
+{
+ [self leaveNetwork:self.networkIdField.stringValue];
+ [self.parent deleteNetworkFromList:self.networkIdField.stringValue];
+}
+
+- (IBAction)onAllowStatusChanged:(NSButton*)sender
+{
+ [self joinNetwork:self.networkIdField.stringValue];
+}
+
+- (void)joinNetwork:(NSString*)nwid
+{
+ [[ServiceCom sharedInstance] joinNetwork:nwid
+ allowManaged:(self.allowManaged.state == NSOnState)
+ allowGlobal:(self.allowGlobal.state == NSOnState)
+ allowDefault:![Network defaultRouteExists:_parent.networkList] && (self.allowDefault.state == NSOnState)];
+}
+
+- (void)leaveNetwork:(NSString*)nwid
+{
+ [[ServiceCom sharedInstance] leaveNetwork:nwid];
+}
+
+@end
diff --git a/ZeroTier One/NetworkInfoCell.swift b/ZeroTier One/NetworkInfoCell.swift
deleted file mode 100644
index 8c9c5459..00000000
--- a/ZeroTier One/NetworkInfoCell.swift
+++ /dev/null
@@ -1,72 +0,0 @@
-//
-// NetworkInfoCell.swift
-// ZeroTier One
-//
-// Created by Grant Limberg on 5/24/16.
-// Copyright © 2016 ZeroTier, Inc. All rights reserved.
-//
-
-import Cocoa
-
-class NetworkInfoCell: NSTableCellView {
-
- weak var parent: ShowNetworksViewController!
-
- @IBOutlet var networkIdField: NSTextField!
- @IBOutlet var networkNameField: NSTextField!
-
- @IBOutlet var statusField: NSTextField!
- @IBOutlet var typeField: NSTextField!
- @IBOutlet var macField: NSTextField!
- @IBOutlet var mtuField: NSTextField!
- @IBOutlet var broadcastField: NSTextField!
- @IBOutlet var bridgingField: NSTextField!
- @IBOutlet var deviceField: NSTextField!
- @IBOutlet var addressesField: NSTextField!
-
- @IBOutlet var allowManaged: NSButton!
- @IBOutlet var allowGlobal: NSButton!
- @IBOutlet var allowDefault: NSButton!
-
- @IBOutlet var connectedCheckbox: NSButton!
- @IBOutlet var deleteButton: NSButton!
-
- override func awakeFromNib() {
- super.awakeFromNib()
-
- }
- override func drawRect(dirtyRect: NSRect) {
- super.drawRect(dirtyRect)
-
- // Drawing code here.
- }
-
- @IBAction func onConnectCheckStateChanged(sender: NSButton) {
- if(sender.state == NSOnState) {
- joinNetwork(networkIdField.stringValue)
- }
- else {
- leaveNetwork(networkIdField.stringValue)
- }
- }
-
- @IBAction func deleteNetwork(sender: NSButton) {
- leaveNetwork(networkIdField.stringValue)
- parent.deleteNetworkFromList(networkIdField.stringValue)
- }
-
- func joinNetwork(nwid: String) {
- ServiceCom.sharedInstance().joinNetwork(nwid,
- allowManaged: allowManaged.state == NSOnState,
- allowGlobal: allowGlobal.state == NSOnState,
- allowDefault: !Network.defaultRouteExists(parent.networkList) && (allowDefault.state == NSOnState))
- }
-
- func leaveNetwork(nwid: String) {
- ServiceCom.sharedInstance().leaveNetwork(nwid)
- }
-
- @IBAction func onAllowStatusChanged(sender: NSButton) {
- joinNetwork(networkIdField.stringValue)
- }
-}
diff --git a/ZeroTier One/ShowNetworksViewController.h b/ZeroTier One/ShowNetworksViewController.h
new file mode 100644
index 00000000..5722d3f4
--- /dev/null
+++ b/ZeroTier One/ShowNetworksViewController.h
@@ -0,0 +1,26 @@
+//
+// ShowNetworksViewController.h
+// ZeroTier One
+//
+// Created by Grant Limberg on 8/7/16.
+// Copyright © 2016 ZeroTier, Inc. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+@class NetworkMonitor;
+@class Network;
+
+@interface ShowNetworksViewController : NSViewController<NSTableViewDelegate, NSTableViewDataSource>
+
+@property (nonatomic) NSArray<Network*> *networkList;
+@property (nonatomic) NetworkMonitor *netMonitor;
+@property (nonatomic) BOOL visible;
+
+@property (weak, nonatomic) IBOutlet NSTableView *tableView;
+
+- (void)deleteNetworkFromList:(NSString*)nwid;
+- (void)setNetworks:(NSArray<Network*>*)list;
+
+
+@end
diff --git a/ZeroTier One/ShowNetworksViewController.m b/ZeroTier One/ShowNetworksViewController.m
new file mode 100644
index 00000000..2031af34
--- /dev/null
+++ b/ZeroTier One/ShowNetworksViewController.m
@@ -0,0 +1,108 @@
+//
+// ShowNetworksViewController.m
+// ZeroTier One
+//
+// Created by Grant Limberg on 8/7/16.
+// Copyright © 2016 ZeroTier, Inc. All rights reserved.
+//
+
+#import "ShowNetworksViewController.h"
+#import "NetworkMonitor.h"
+#import "NetworkInfoCell.h"
+#import "Network.h"
+
+@interface ShowNetworksViewController ()
+
+@end
+
+@implementation ShowNetworksViewController
+
+- (void)viewDidLoad {
+ [super viewDidLoad];
+
+ [self.tableView setDelegate:self];
+ [self.tableView setDataSource:self];
+ [self.tableView setBackgroundColor:[NSColor clearColor]];
+}
+
+- (void)viewWillAppear {
+ [super viewWillAppear];
+ self.visible = YES;
+}
+
+- (void)viewWillDisappear {
+ [super viewWillDisappear];
+ self.visible = NO;
+}
+
+- (void)deleteNetworkFromList:(NSString *)nwid {
+ [self.netMonitor deleteSavedNetwork:nwid];
+}
+
+- (void)setNetworks:(NSArray<Network *> *)list {
+ _networkList = list;
+ if(_visible) {
+ [_tableView reloadData];
+ }
+}
+
+- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
+ return [_networkList count];
+}
+
+- (NSView*)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
+{
+ NetworkInfoCell *cell = (NetworkInfoCell*)[tableView makeViewWithIdentifier:@"NetworkInfoCell"
+ owner:nil];
+ Network *network = [_networkList objectAtIndex:row];
+ cell.parent = self;
+ cell.networkIdField.stringValue = [NSString stringWithFormat:@"%10llx", network.nwid];
+ cell.networkNameField.stringValue = network.name;
+ cell.statusField.stringValue = [network statusString];
+ cell.typeField.stringValue = [network typeString];
+ cell.mtuField.stringValue = [NSString stringWithFormat:@"%d", network.mtu];
+ cell.macField.stringValue = network.mac;
+ cell.broadcastField.stringValue = network.broadcastEnabled ? @"ENABLED" : @"DISABLED";
+ cell.bridgingField.stringValue = network.bridge ? @"ENABLED" : @"DISABLED";
+ cell.deviceField.stringValue = network.portDeviceName;
+
+ if(network.connected) {
+ cell.connectedCheckbox.state = NSOnState;
+
+ if(network.allowDefault) {
+ cell.allowDefault.enabled = YES;
+ cell.allowDefault.state = NSOnState;
+ }
+ else {
+ cell.allowDefault.state = NSOffState;
+
+ if([Network defaultRouteExists:_networkList]) {
+ cell.allowDefault.enabled = NO;
+ }
+ else {
+ cell.allowDefault.enabled = YES;
+ }
+ }
+
+ cell.allowGlobal.enabled = YES;
+ cell.allowManaged.enabled = YES;
+ }
+ else {
+ cell.allowDefault.enabled = NO;
+ cell.allowGlobal.enabled = NO;
+ cell.allowManaged.enabled = NO;
+ }
+
+ cell.allowGlobal.state = network.allowGlobal ? NSOnState : NSOffState;
+ cell.allowManaged.state = network.allowManaged ? NSOnState : NSOffState;
+
+ cell.addressesField.stringValue = @"";
+
+ for(NSString *addr in network.assignedAddresses) {
+ cell.addressesField.stringValue = [[cell.addressesField.stringValue stringByAppendingString:addr] stringByAppendingString:@"\n"];
+ }
+
+ return cell;
+}
+
+@end
diff --git a/ZeroTier One/ShowNetworksViewController.swift b/ZeroTier One/ShowNetworksViewController.swift
deleted file mode 100644
index 82d3359c..00000000
--- a/ZeroTier One/ShowNetworksViewController.swift
+++ /dev/null
@@ -1,132 +0,0 @@
-//
-// ShowNetworksViewController.swift
-// ZeroTier One
-//
-// Created by Grant Limberg on 5/14/16.
-// Copyright © 2016 ZeroTier, Inc. All rights reserved.
-//
-
-import Cocoa
-
-class ShowNetworksViewController: NSViewController, NSTableViewDelegate, NSTableViewDataSource {
-
- @IBOutlet var tableView: NSTableView?
-
- var networkList: [Network] = [Network]()
- var netMonitor: NetworkMonitor!
-
- var visible = false
-
- override func viewDidLoad() {
- super.viewDidLoad()
- // Do view setup here.
-
- tableView?.setDelegate(self)
- tableView?.setDataSource(self)
- tableView?.backgroundColor = NSColor.clearColor()
- }
-
- private func dataFile() -> String {
- var appSupport = NSFileManager.defaultManager().URLsForDirectory(.ApplicationSupportDirectory, inDomains: .UserDomainMask)[0]
- appSupport = appSupport.URLByAppendingPathComponent("ZeroTier").URLByAppendingPathComponent("One").URLByAppendingPathComponent("networks.dat")
- return appSupport.path!
- }
-
- override func viewWillAppear() {
- super.viewWillAppear()
- visible = true
- }
-
- override func viewWillDisappear() {
- super.viewWillDisappear()
-
- let filePath = dataFile()
- NSKeyedArchiver.archiveRootObject(self.networkList, toFile: filePath)
- visible = false
- }
-
- func deleteNetworkFromList(nwid: String) {
- netMonitor.deleteSavedNetwork(nwid)
- }
-
-
- func setNetworks(list: [Network]) {
- networkList = list
- if visible {
- tableView?.reloadData()
- }
- }
-
- // NSTableViewDataSource
-
- func numberOfRowsInTableView(tableView: NSTableView) -> Int {
- return networkList.count
- }
-
- // end NSTableViewDataSource
-
- // NSTableViewDelegate
-
- func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSView? {
- if let cell = tableView.makeViewWithIdentifier("NetworkInfoCell", owner: nil) as? NetworkInfoCell {
- let network = networkList[row]
- cell.parent = self
- cell.networkIdField.stringValue = String(network.nwid, radix: 16)
- cell.networkNameField.stringValue = network.name
-
- cell.statusField.stringValue = network.statusString()
- cell.typeField.stringValue = network.typeString()
- cell.macField.stringValue = network.mac
- cell.mtuField.stringValue = String(network.mtu)
- cell.broadcastField.stringValue = network.broadcastEnabled ? "ENABLED" : "DISABLED"
- cell.bridgingField.stringValue = network.bridge ? "ENABLED" : "DISABLED"
- cell.deviceField.stringValue = network.portDeviceName
-
- if network.connected {
- cell.connectedCheckbox.state = NSOnState
-
- if network.allowDefault {
- cell.allowDefault.enabled = true
- cell.allowDefault.state = NSOnState
- }
- else {
- cell.allowDefault.state = NSOffState
-
- if Network.defaultRouteExists(networkList) {
- cell.allowDefault.enabled = false
- }
- else {
- cell.allowDefault.enabled = true
- }
- }
-
- cell.allowGlobal.enabled = true
- cell.allowManaged.enabled = true
- }
- else {
- cell.connectedCheckbox.state = NSOffState
-
- cell.allowDefault.enabled = false
- cell.allowGlobal.enabled = false
- cell.allowManaged.enabled = false
- }
-
- cell.allowGlobal.state = (network.allowGlobal ? NSOnState : NSOffState)
- cell.allowManaged.state = (network.allowManaged ? NSOnState : NSOffState)
-
- cell.addressesField.stringValue = ""
-
- for nw in network.assignedAddresses {
- cell.addressesField.stringValue += "\(nw)\n"
- }
-
-
-
- return cell
- }
-
- return nil
- }
-
- // end NSTableViewDelegate
-}
diff --git a/ZeroTier One/ShowNetworksViewController.xib b/ZeroTier One/ShowNetworksViewController.xib
index 6a5d7ae3..65692307 100644
--- a/ZeroTier One/ShowNetworksViewController.xib
+++ b/ZeroTier One/ShowNetworksViewController.xib
@@ -43,7 +43,7 @@
</textFieldCell>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews>
- <tableCellView identifier="NetworkInfoCell" focusRingType="none" id="rmb-il-W5I" customClass="NetworkInfoCell" customModule="ZeroTier_One" customModuleProvider="target">
+ <tableCellView identifier="NetworkInfoCell" focusRingType="none" id="rmb-il-W5I" customClass="NetworkInfoCell">
<rect key="frame" x="1" y="1" width="527" height="367"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
diff --git a/ZeroTier One/ZeroTier One-Bridging-Header.h b/ZeroTier One/ZeroTier One-Bridging-Header.h
index 0ce854bc..07da0d00 100644
--- a/ZeroTier One/ZeroTier One-Bridging-Header.h
+++ b/ZeroTier One/ZeroTier One-Bridging-Header.h
@@ -9,3 +9,5 @@
#import "AboutViewController.h"
#import "PreferencesViewController.h"
#import "NetworkMonitor.h"
+#import "NetworkInfoCell.h"
+#import "ShowNetworksViewController.h"