diff options
| author | Grant Limberg <glimberg@gmail.com> | 2016-06-13 19:46:54 -0700 |
|---|---|---|
| committer | Grant Limberg <glimberg@gmail.com> | 2016-06-13 19:46:54 -0700 |
| commit | b085329bca3e1eb1300045bf2cd2df52039e99d9 (patch) | |
| tree | f07c06414d4b2a8064fe2b1644ac8432bed21d1c /ZeroTier One/ShowNetworksViewController.swift | |
| parent | 188f8021f806ff922924949054b94e53dc0fed30 (diff) | |
| download | infinitytier-b085329bca3e1eb1300045bf2cd2df52039e99d9.tar.gz infinitytier-b085329bca3e1eb1300045bf2cd2df52039e99d9.zip | |
Base functionality complete. Can join/leave/list networks. Can disconnect from networks without removing them from the network list.
Diffstat (limited to 'ZeroTier One/ShowNetworksViewController.swift')
| -rw-r--r-- | ZeroTier One/ShowNetworksViewController.swift | 89 |
1 files changed, 84 insertions, 5 deletions
diff --git a/ZeroTier One/ShowNetworksViewController.swift b/ZeroTier One/ShowNetworksViewController.swift index 33148f83..ed2479d1 100644 --- a/ZeroTier One/ShowNetworksViewController.swift +++ b/ZeroTier One/ShowNetworksViewController.swift @@ -23,19 +23,92 @@ class ShowNetworksViewController: NSViewController, NSTableViewDelegate, NSTable 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! + } + + + private func findNetworkWithID(id: UInt64) -> Int { + + for (index, element) in networkList.enumerate() { + + if element.nwid == id { + return index + } + } + + return NSNotFound + } + override func viewWillAppear() { super.viewWillAppear() - ServiceCom.getNetworkList() { (networkList) -> Void in - NSOperationQueue.mainQueue().addOperationWithBlock() { () -> Void in - self.networkList = networkList - self.tableView.reloadData() + let filePath = dataFile() + + if NSFileManager.defaultManager().fileExistsAtPath(filePath) { + networkList = NSKeyedUnarchiver.unarchiveObjectWithFile(filePath) as! [Network] + + ServiceCom.getNetworkList() { (networkList) -> Void in + + for nw in networkList { + let index = self.findNetworkWithID(nw.nwid) + + if index != NSNotFound { + self.networkList[index] = nw + } + else { + self.networkList.append(nw) + } + } + + NSOperationQueue.mainQueue().addOperationWithBlock() { () -> Void in + self.networkList.sortInPlace({ (left, right) -> Bool in + if left.nwid < right.nwid { + return true + } + + return false + }) + self.tableView.reloadData() + } + } + } + else { + ServiceCom.getNetworkList() { (networkList) -> Void in + NSOperationQueue.mainQueue().addOperationWithBlock() { () -> Void in + self.networkList.sortInPlace({ (left, right) -> Bool in + if left.nwid < right.nwid { + return true + } + + return false + }) + + self.networkList = networkList + self.tableView.reloadData() + } } } } + override func viewWillDisappear() { + super.viewWillDisappear() + + let filePath = dataFile() + NSKeyedArchiver.archiveRootObject(self.networkList, toFile: filePath) + } + func deleteNetworkFromList(nwid: String) { - + if let nwid = UInt64(nwid, radix: 16) { + let index = findNetworkWithID(nwid) + + if index != NSNotFound { + networkList.removeAtIndex(index) + tableView.reloadData() + } + } } // NSTableViewDataSource @@ -71,6 +144,12 @@ class ShowNetworksViewController: NSViewController, NSTableViewDelegate, NSTable cell.addressesField.stringValue += "\n" } + if network.connected { + cell.connectedCheckbox.state = NSOnState + } + else { + cell.connectedCheckbox.state = NSOffState + } return cell } |
