diff options
| author | Grant Limberg <glimberg@gmail.com> | 2016-05-16 17:51:14 -0700 |
|---|---|---|
| committer | Grant Limberg <glimberg@gmail.com> | 2016-05-16 17:51:14 -0700 |
| commit | b4a80579948038989c382fd41101f1f489245124 (patch) | |
| tree | a933dc27541461d1743d372580d45f9f8633ce00 /ZeroTier One/JoinNetworkViewController.swift | |
| parent | 225c2b095b03e4b0383a99863349fc28b6a3f893 (diff) | |
| download | infinitytier-b4a80579948038989c382fd41101f1f489245124.tar.gz infinitytier-b4a80579948038989c382fd41101f1f489245124.zip | |
limit the join network combobox to hex characters.
Join only clickable when a valid network is entered
Diffstat (limited to 'ZeroTier One/JoinNetworkViewController.swift')
| -rw-r--r-- | ZeroTier One/JoinNetworkViewController.swift | 72 |
1 files changed, 69 insertions, 3 deletions
diff --git a/ZeroTier One/JoinNetworkViewController.swift b/ZeroTier One/JoinNetworkViewController.swift index d071ce91..0aaaf10f 100644 --- a/ZeroTier One/JoinNetworkViewController.swift +++ b/ZeroTier One/JoinNetworkViewController.swift @@ -8,11 +8,77 @@ import Cocoa -class JoinNetworkViewController: NSViewController { +extension String { + func contains(find: String) -> Bool { + return self.rangeOfString(find) != nil + } + + func trunc(length: Int, trailing: String? = "...") -> String { + if self.characters.count > length { + return self.substringToIndex(self.startIndex.advancedBy(length)) + (trailing ?? "") + } else { + return self + } + } +} + +class JoinNetworkViewController: NSViewController, NSComboBoxDelegate { + + @IBOutlet var network: NSComboBox! + @IBOutlet var joinButton: NSButton! override func viewDidLoad() { super.viewDidLoad() - // Do view setup here. + network.setDelegate(self) + } + + @IBAction func onJoinClicked(sender: AnyObject?) { + let networkId = UInt64(network.stringValue, radix: 16) + + // TODO: Execute join network call + + network.stringValue = "" + } + + + // NSComboBoxDelegate Methods + + override func controlTextDidChange(obj: NSNotification) { + let cb = obj.object as! NSComboBox + let value = cb.stringValue + + + let allowedCharacters = "abcdefABCDEF0123456789" + + var outValue = "" + + for char in value.characters { + if !allowedCharacters.contains(String(char)) { + NSBeep() + } + else { + outValue += String(char) + } + } + + + + if outValue.lengthOfBytesUsingEncoding(NSUTF8StringEncoding) == 16 { + joinButton.enabled = true + } + else { + + if outValue.lengthOfBytesUsingEncoding(NSUTF8StringEncoding) > 16 { + outValue = outValue.trunc(16, trailing: "") + NSBeep() + joinButton.enabled = true + } + else { + joinButton.enabled = false + } + } + + cb.stringValue = outValue } - + // end NSComboBoxDelegate Methods } |
