summaryrefslogtreecommitdiff
path: root/ZeroTier One
diff options
context:
space:
mode:
authorGrant Limberg <glimberg@gmail.com>2016-08-07 19:13:12 -0700
committerGrant Limberg <glimberg@gmail.com>2016-08-07 19:13:12 -0700
commit5b13b282ede30b8cfb2f5ff1875b96f3b277acd9 (patch)
tree49f847db739bcdeafefd47b5ecc55ebc47eac9e7 /ZeroTier One
parentd965768004d49793f3423714df8063a288fe1346 (diff)
downloadinfinitytier-5b13b282ede30b8cfb2f5ff1875b96f3b277acd9.tar.gz
infinitytier-5b13b282ede30b8cfb2f5ff1875b96f3b277acd9.zip
Replace JoinNetworkViewController with obj-c
Diffstat (limited to 'ZeroTier One')
-rw-r--r--ZeroTier One/JoinNetworkViewController.h27
-rw-r--r--ZeroTier One/JoinNetworkViewController.m166
-rw-r--r--ZeroTier One/JoinNetworkViewController.swift164
-rw-r--r--ZeroTier One/ZeroTier One-Bridging-Header.h1
4 files changed, 194 insertions, 164 deletions
diff --git a/ZeroTier One/JoinNetworkViewController.h b/ZeroTier One/JoinNetworkViewController.h
new file mode 100644
index 00000000..894b4ec2
--- /dev/null
+++ b/ZeroTier One/JoinNetworkViewController.h
@@ -0,0 +1,27 @@
+//
+// JoinNetworkViewController.h
+// ZeroTier One
+//
+// Created by Grant Limberg on 8/7/16.
+// Copyright © 2016 ZeroTier, Inc. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+
+extern NSString * const JoinedNetworksKey;
+
+@interface JoinNetworkViewController : NSViewController <NSComboBoxDelegate, NSComboBoxDataSource>
+
+@property (nonatomic, weak) IBOutlet NSComboBox *network;
+@property (nonatomic, weak) IBOutlet NSButton *joinButton;
+@property (nonatomic, weak) IBOutlet NSButton *allowManagedCheckBox;
+@property (nonatomic, weak) IBOutlet NSButton *allowGlobalCheckBox;
+@property (nonatomic, weak) IBOutlet NSButton *allowDefaultCheckBox;
+
+@property (nonatomic) NSMutableArray<NSString*> *values;
+
+- (IBAction)onJoinClicked:(id)sender;
+
+
+@end
diff --git a/ZeroTier One/JoinNetworkViewController.m b/ZeroTier One/JoinNetworkViewController.m
new file mode 100644
index 00000000..60e8e1cc
--- /dev/null
+++ b/ZeroTier One/JoinNetworkViewController.m
@@ -0,0 +1,166 @@
+//
+// JoinNetworkViewController.m
+// ZeroTier One
+//
+// Created by Grant Limberg on 8/7/16.
+// Copyright © 2016 ZeroTier, Inc. All rights reserved.
+//
+
+#import "JoinNetworkViewController.h"
+#import "ServiceCom.h"
+
+
+
+NSString * const JoinedNetworksKey = @"com.zerotier.one.joined-networks";
+
+@interface NSString (extra)
+
+- (BOOL)contains:(NSString*)find;
+//- (NSString*)trunc:(NSInteger)length trailing:(NSString*)trailing;
+
+@end
+
+@implementation NSString (extra)
+
+- (BOOL)contains:(NSString*)find {
+ NSRange range = [self rangeOfString:find];
+ return range.location != NSNotFound;
+}
+//
+//- (NSString*)trunc:(NSInteger)length trailing:(NSString*)trailing {
+//
+//}
+
+@end
+
+
+@implementation JoinNetworkViewController
+
+- (void)viewDidLoad {
+ [super viewDidLoad];
+ // Do view setup here.
+ [self.network setDelegate:self];
+ [self.network setDataSource:self];
+}
+
+- (void)viewWillAppear {
+ [super viewWillAppear];
+
+ self.allowManagedCheckBox.state = NSOnState;
+ self.allowGlobalCheckBox.state = NSOffState;
+ self.allowDefaultCheckBox.state = NSOffState;
+
+ self.network.stringValue = @"";
+
+ NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
+
+ NSMutableArray<NSString*> *vals = [[defaults stringArrayForKey:JoinedNetworksKey] mutableCopy];
+
+ if(vals) {
+ self.values = vals;
+ }
+}
+
+- (void)viewWillDisappear {
+ [super viewWillDisappear];
+
+ NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
+
+ [defaults setObject:self.values forKey:JoinedNetworksKey];
+}
+
+- (IBAction)onJoinClicked:(id)sender {
+ NSString *networkId = self.network.stringValue;
+
+ [[ServiceCom sharedInstance] joinNetwork:networkId
+ allowManaged:(self.allowManagedCheckBox.state == NSOnState)
+ allowGlobal:(self.allowGlobalCheckBox.state == NSOnState)
+ allowDefault:(self.allowDefaultCheckBox.state == NSOnState)];
+
+ self.network.stringValue = @"";
+
+ if(![self.values containsObject:networkId]) {
+ [self.values insertObject:networkId atIndex:0];
+
+ while([self.values count] > 20) {
+ [self.values removeLastObject];
+ }
+ }
+}
+
+// NSComboBoxDelegate methods
+
+- (void)controlTextDidChange:(NSNotification *)obj {
+ NSComboBox *cb = (NSComboBox*)obj.object;
+ NSString *value = cb.stringValue;
+
+ NSString *allowedCharacters = @"abcdefABCDEF0123456789";
+
+ NSString *outValue = @"";
+
+ for(int i = 0; i < [value length]; ++i) {
+ if(![allowedCharacters contains:[NSString stringWithFormat:@"%C", [value characterAtIndex:i]]]) {
+ NSBeep();
+ }
+ else {
+ outValue = [outValue stringByAppendingString:[NSString stringWithFormat:@"%C", [value characterAtIndex:i]]];
+ }
+ }
+
+ if([outValue lengthOfBytesUsingEncoding:NSUTF8StringEncoding] == 16) {
+ self.joinButton.enabled = YES;
+ }
+ else {
+ if([outValue lengthOfBytesUsingEncoding:NSUTF8StringEncoding] > 16) {
+ NSRange range = {0, 16};
+ range = [outValue rangeOfComposedCharacterSequencesForRange:range];
+ outValue = [outValue substringWithRange:range];
+ NSBeep();
+ self.joinButton.enabled = YES;
+ }
+ else {
+ self.joinButton.enabled = NO;
+ }
+ }
+
+ cb.stringValue = outValue;
+}
+
+// end NSComboBoxDelegate methods
+
+// NSComboBoxDataSource methods
+
+- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox {
+ return [self.values count];
+}
+
+- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index {
+ return [self.values objectAtIndex:index];
+}
+
+- (NSUInteger)comboBox:(NSComboBox *)aComboBox indexOfItemWithStringValue:(NSString *)string {
+ NSUInteger counter = 0;
+
+ for(NSString *val in self.values) {
+ if([val isEqualToString:string]) {
+ return counter;
+ }
+
+ counter += 1;
+ }
+
+ return NSNotFound;
+}
+
+- (NSString*)comboBox:(NSComboBox *)aComboBox completedString:(NSString *)string {
+ for(NSString *val in self.values) {
+ if([val hasPrefix:string]) {
+ return val;
+ }
+ }
+ return nil;
+}
+
+// end NSComboBoxDataSource methods
+
+@end
diff --git a/ZeroTier One/JoinNetworkViewController.swift b/ZeroTier One/JoinNetworkViewController.swift
deleted file mode 100644
index 0effda59..00000000
--- a/ZeroTier One/JoinNetworkViewController.swift
+++ /dev/null
@@ -1,164 +0,0 @@
-//
-// JoinNetworkViewController.swift
-// ZeroTier One
-//
-// Created by Grant Limberg on 5/14/16.
-// Copyright © 2016 ZeroTier, Inc. All rights reserved.
-//
-
-import Cocoa
-
-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
- }
- }
-}
-
-let joinedNetworksKey = "com.zerotier.one.joined-networks"
-
-
-class JoinNetworkViewController: NSViewController, NSComboBoxDelegate, NSComboBoxDataSource {
-
- @IBOutlet var network: NSComboBox!
- @IBOutlet var joinButton: NSButton!
-
- @IBOutlet var allowManagedCheckBox: NSButton!
- @IBOutlet var allowGlobalCheckBox: NSButton!
- @IBOutlet var allowDefaultCheckBox:NSButton!
-
- var values: [String] = [String]()
-
- override func viewDidLoad() {
- super.viewDidLoad()
- network.setDelegate(self)
- network.dataSource = self
- }
-
- override func viewWillAppear() {
- super.viewWillAppear()
-
- allowManagedCheckBox.state = NSOnState
- allowGlobalCheckBox.state = NSOffState
- allowDefaultCheckBox.state = NSOffState
-
- let defaults = NSUserDefaults.standardUserDefaults()
-
- let vals = defaults.stringArrayForKey(joinedNetworksKey)
-
- if let v = vals {
- values = v
- }
- }
-
- override func viewDidDisappear() {
- super.viewWillDisappear()
-
- let defaults = NSUserDefaults.standardUserDefaults()
-
- defaults.setObject(values, forKey: joinedNetworksKey)
- }
-
- @IBAction func onJoinClicked(sender: AnyObject?) {
- let networkString = network.stringValue
-
- ServiceCom.sharedInstance().joinNetwork(networkString,
- allowManaged: allowManagedCheckBox.state == NSOnState,
- allowGlobal: allowGlobalCheckBox.state == NSOnState,
- allowDefault: allowDefaultCheckBox.state == NSOnState)
- network.stringValue = ""
-
-
- if !values.contains(networkString) {
- values.insert(networkString, atIndex: 0)
-
- while values.count > 20 {
- values.removeLast()
- }
- }
- }
-
-
- // 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
-
-
- // 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/ZeroTier One-Bridging-Header.h b/ZeroTier One/ZeroTier One-Bridging-Header.h
index 07da0d00..60700eeb 100644
--- a/ZeroTier One/ZeroTier One-Bridging-Header.h
+++ b/ZeroTier One/ZeroTier One-Bridging-Header.h
@@ -11,3 +11,4 @@
#import "NetworkMonitor.h"
#import "NetworkInfoCell.h"
#import "ShowNetworksViewController.h"
+#import "JoinNetworkViewController.h"