summaryrefslogtreecommitdiff
path: root/ZeroTier One/JoinNetworkViewController.swift
diff options
context:
space:
mode:
authorGrant Limberg <glimberg@gmail.com>2016-05-16 17:51:14 -0700
committerGrant Limberg <glimberg@gmail.com>2016-05-16 17:51:14 -0700
commitb4a80579948038989c382fd41101f1f489245124 (patch)
treea933dc27541461d1743d372580d45f9f8633ce00 /ZeroTier One/JoinNetworkViewController.swift
parent225c2b095b03e4b0383a99863349fc28b6a3f893 (diff)
downloadinfinitytier-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.swift72
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
}