From acd6978a3094ae7cffdfb5cf79e4c2473ab3bb0f Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Mon, 16 May 2016 18:26:33 -0700 Subject: set the combo box to use a data source and remember the last 20 networks input --- ZeroTier One/JoinNetworkViewController.swift | 71 +++++++++++++++++++++++++++- ZeroTier One/JoinNetworkViewController.xib | 16 +++---- 2 files changed, 77 insertions(+), 10 deletions(-) diff --git a/ZeroTier One/JoinNetworkViewController.swift b/ZeroTier One/JoinNetworkViewController.swift index 0aaaf10f..c9fdcebe 100644 --- a/ZeroTier One/JoinNetworkViewController.swift +++ b/ZeroTier One/JoinNetworkViewController.swift @@ -22,22 +22,54 @@ extension String { } } -class JoinNetworkViewController: NSViewController, NSComboBoxDelegate { +let joinedNetworksKey = "com.zerotier.one.joined-networks" + + +class JoinNetworkViewController: NSViewController, NSComboBoxDelegate, NSComboBoxDataSource { @IBOutlet var network: NSComboBox! @IBOutlet var joinButton: NSButton! + var values: [String] = [String]() + override func viewDidLoad() { super.viewDidLoad() network.setDelegate(self) + network.dataSource = self + } + + override func viewWillAppear() { + let defaults = NSUserDefaults.standardUserDefaults() + + let vals = defaults.stringArrayForKey(joinedNetworksKey) + + if let v = vals { + values = v + } + } + + override func viewDidDisappear() { + let defaults = NSUserDefaults.standardUserDefaults() + + defaults.setObject(values, forKey: joinedNetworksKey) } @IBAction func onJoinClicked(sender: AnyObject?) { - let networkId = UInt64(network.stringValue, radix: 16) + let networkString = network.stringValue + let networkId = UInt64(networkString, radix: 16) // TODO: Execute join network call network.stringValue = "" + + + if !values.contains(networkString) { + values.insert(networkString, atIndex: 0) + + while values.count > 20 { + values.removeLast() + } + } } @@ -81,4 +113,39 @@ class JoinNetworkViewController: NSViewController, NSComboBoxDelegate { cb.stringValue = outValue } // end NSComboBoxDelegate Methods + + + // NSComboBoxDataSource methods + + func numberOfItemsInComboBox(aComboBox: NSComboBox) -> Int { + return values.count + } + + func comboBox(aComboBox: NSComboBox, objectValueForItemAtIndex index: Int) -> AnyObject { + return values[index] + } + + func comboBox(aComboBox: NSComboBox, indexOfItemWithStringValue string: String) -> Int { + + var counter = 0 + for val in values { + if val == string { + return counter + } + counter += 1 + } + return NSNotFound + } + + func comboBox(aComboBox: NSComboBox, completedString string: String) -> String? { + for val in values { + if val.hasPrefix(string) { + return val + } + } + + return nil + } + + // end NSComboBoxDataSorce methods } diff --git a/ZeroTier One/JoinNetworkViewController.xib b/ZeroTier One/JoinNetworkViewController.xib index 2de44c9d..7a2ffe70 100644 --- a/ZeroTier One/JoinNetworkViewController.xib +++ b/ZeroTier One/JoinNetworkViewController.xib @@ -26,14 +26,6 @@ - - - - - - - - + + + + + + + + -- cgit v1.2.3