summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrant Limberg <glimberg@gmail.com>2016-05-16 18:26:33 -0700
committerGrant Limberg <glimberg@gmail.com>2016-05-16 18:26:33 -0700
commitacd6978a3094ae7cffdfb5cf79e4c2473ab3bb0f (patch)
tree95bf844ca516278f7d453b33649e3fe84d1f32ce
parentccbd6f97cda44999230222b8b54d077b7a754e0c (diff)
downloadinfinitytier-acd6978a3094ae7cffdfb5cf79e4c2473ab3bb0f.tar.gz
infinitytier-acd6978a3094ae7cffdfb5cf79e4c2473ab3bb0f.zip
set the combo box to use a data source and remember the last 20 networks input
-rw-r--r--ZeroTier One/JoinNetworkViewController.swift71
-rw-r--r--ZeroTier One/JoinNetworkViewController.xib16
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>