diff options
-rw-r--r-- | ZeroTier One/JoinNetworkViewController.swift | 71 | ||||
-rw-r--r-- | 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 @@ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> </textFieldCell> </textField> - <comboBox verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="BQy-d9-BNg"> - <rect key="frame" x="131" y="57" width="221" height="26"/> - <comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" completes="NO" numberOfVisibleItems="5" id="n71-4S-AaI"> - <font key="font" metaFont="system"/> - <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> - <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> - </comboBoxCell> - </comboBox> <button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="BGy-vd-NQX"> <rect key="frame" x="274" y="13" width="81" height="32"/> <buttonCell key="cell" type="push" title="Join" bezelStyle="rounded" alignment="center" enabled="NO" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="6Rp-TA-XLl"> @@ -44,6 +36,14 @@ <action selector="onJoinClicked:" target="-2" id="kzC-GT-JKb"/> </connections> </button> + <comboBox verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="BQy-d9-BNg"> + <rect key="frame" x="131" y="57" width="221" height="26"/> + <comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" usesDataSource="YES" numberOfVisibleItems="5" id="n71-4S-AaI"> + <font key="font" metaFont="system"/> + <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> + </comboBoxCell> + </comboBox> </subviews> <point key="canvasLocation" x="249.5" y="361.5"/> </customView> |