|
|
|
|
@ -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 |
|
|
|
|
} |
|
|
|
|
|