// // AddPerforceController.swift // DocHub // // Created by Tristan Juricek on 6/17/14. // Copyright (c) 2014 Perforce. All rights reserved. // import AppKit import Foundation // Controller to manage a sheet on top of the window to collect connection // settings to a Perforce instance. This will basically collect the username // and password, then get a token from the Perforce server for storage. class AddPerforceController : NSWindowController { func addServer() { println("AddPerforceController.addServer") } @IBOutlet var cancelButton:NSButton @IBOutlet var addButton:NSButton @IBOutlet var hostname:NSTextField @IBOutlet var login:NSTextField @IBOutlet var password:NSSecureTextField @IBAction override func cancelOperation(sender: AnyObject!) { NSApp.endSheet(window!) } @IBAction func tryAdd(sender: AnyObject!) { var pwd = password.stringValue var host:String var port:Int let scRange = hostname.stringValue.rangeOfString(":") if scRange { let pre = Range(start: hostname.stringValue.startIndex, end: scRange.startIndex) host = hostname.stringValue[pre] let post = Range(start: scRange.endIndex, end: hostname.stringValue.endIndex) port = hostname.stringValue[post].toInt()! } else { host = hostname.stringValue port = 1666 } let settings = P4ConnectionSettings( hostname: host, port: port, login: login.stringValue, token: pwd, charset: nil // TODO we may need to provide a charset ... ugh, along with SSL bah! ) let p4Library = P4Library(settings: settings) let p4Client = p4Library.createConnection() let localHost = NSHost.currentHost().address let (err, token) = p4Client.loginToken(pwd, localHost: localHost) if err { println("TODO show error") } // This is actually what we want to store. We're now done. let newSettings = P4ConnectionSettings( hostname: settings.hostname, port: settings.port, login: settings.login, token: token, charset: settings.charset) println("TODO save newSettings with token \(newSettings.token)") } func done() { window!.orderOut(self) } }