diff --git a/SAPTracker.xcodeproj/project.pbxproj b/SAPTracker.xcodeproj/project.pbxproj index ec17d9053da..4ef155a3966 100644 --- a/SAPTracker.xcodeproj/project.pbxproj +++ b/SAPTracker.xcodeproj/project.pbxproj @@ -98,6 +98,36 @@ name = Frameworks; sourceTree = ""; }; + 7F06590019F7FE750077FF95 /* Model */ = { + isa = PBXGroup; + children = ( + 7FA6551919F6661900A1B92D /* DataManager.swift */, + 7FA6551719F65FBD00A1B92D /* GPSFix.swift */, + 7F44095919F65B5B0021BF22 /* CoreData.xcdatamodeld */, + ); + name = Model; + sourceTree = ""; + }; + 7F06590119F7FE920077FF95 /* View */ = { + isa = PBXGroup; + children = ( + 7F83F15719F154F000C53328 /* HomeViewController.swift */, + 7F0658FC19F7D6700077FF95 /* QRCodeViewController.swift */, + 7F83F15919F154F000C53328 /* Main.storyboard */, + 7F83F15E19F154F000C53328 /* LaunchScreen.xib */, + ); + name = View; + sourceTree = ""; + }; + 7F06590219F7FEA40077FF95 /* Controller */ = { + isa = PBXGroup; + children = ( + 7F2C605919F160E400C32D93 /* LocationManager.swift */, + 7F0658FE19F7EE910077FF95 /* QRCodeManager.swift */, + ); + name = Controller; + sourceTree = ""; + }; 7F83F14719F154F000C53328 = { isa = PBXGroup; children = ( @@ -122,15 +152,9 @@ isa = PBXGroup; children = ( 7F83F15519F154F000C53328 /* AppDelegate.swift */, - 7F83F15719F154F000C53328 /* HomeViewController.swift */, - 7F0658FC19F7D6700077FF95 /* QRCodeViewController.swift */, - 7F83F15919F154F000C53328 /* Main.storyboard */, - 7F83F15E19F154F000C53328 /* LaunchScreen.xib */, - 7F2C605919F160E400C32D93 /* LocationManager.swift */, - 7FA6551919F6661900A1B92D /* DataManager.swift */, - 7F0658FE19F7EE910077FF95 /* QRCodeManager.swift */, - 7FA6551719F65FBD00A1B92D /* GPSFix.swift */, - 7F44095919F65B5B0021BF22 /* CoreData.xcdatamodeld */, + 7F06590119F7FE920077FF95 /* View */, + 7F06590219F7FEA40077FF95 /* Controller */, + 7F06590019F7FE750077FF95 /* Model */, 7F83F15C19F154F000C53328 /* Images.xcassets */, 7F83F15319F154F000C53328 /* Supporting Files */, ); diff --git a/SAPTracker/QRCodeManager.swift b/SAPTracker/QRCodeManager.swift index 58ee3c25e0d..80d89b9de88 100644 --- a/SAPTracker/QRCodeManager.swift +++ b/SAPTracker/QRCodeManager.swift @@ -8,7 +8,7 @@ import Foundation -class QRCodeManager: NSObject { +class QRCodeManager { struct Keys { static let leaderBoard = "leaderboard" @@ -36,26 +36,24 @@ class QRCodeManager: NSObject { return Singleton.sharedQRCodeManager } - - override init() { - super.init() - NSNotificationCenter.defaultCenter().addObserver(self, selector: "qrcodeScanned:", name: QRCodeViewController.NotificationType.qrcodeScannedNotificationKey, object: nil) - } - - // MARK: - notification callbacks - - func qrcodeScanned(notification: NSNotification) { - parseString(notification.userInfo!["value"] as String) - } - // MARK: - methods - func parseString(urlString: String) { + func parseString(urlString: String) -> Bool { let url = NSURL(string: urlString) - server = url!.scheme! + "://" + url!.host! + ":" + url!.port!.stringValue - + if (url == nil || url!.scheme == nil || url!.host == nil) { + return false + } + + server = url!.scheme! + "://" + url!.host! + if ((url!.port) != nil) { + server! += ":" + url!.port!.stringValue + } + let queryString = url!.query + if (queryString == nil) { + return false + } let urlComponents = queryString!.componentsSeparatedByString("&") var queryStringDictionary = [String:String]() for keyValuePair in urlComponents @@ -73,5 +71,9 @@ class QRCodeManager: NSObject { mark = queryStringDictionary[QRCodeManager.Keys.mark] from = queryStringDictionary[QRCodeManager.Keys.from]?.toInt() to = queryStringDictionary[QRCodeManager.Keys.to]?.toInt() + + // TODO: make sure minimum values set + + return true } } diff --git a/SAPTracker/QRCodeViewController.swift b/SAPTracker/QRCodeViewController.swift index 223f32d3710..55d3a1cfe1f 100644 --- a/SAPTracker/QRCodeViewController.swift +++ b/SAPTracker/QRCodeViewController.swift @@ -60,9 +60,13 @@ class QRCodeViewController: UIViewController, AVCaptureMetadataOutputObjectsDele let metadataObject: AVMetadataMachineReadableCodeObject = metadataObjects[0] as AVMetadataMachineReadableCodeObject println(metadataObject.stringValue) - let notification = NSNotification(name: NotificationType.qrcodeScannedNotificationKey, object: self, userInfo:["value": metadataObject.stringValue]) - NSNotificationQueue.defaultQueue().enqueueNotification(notification, postingStyle: NSPostingStyle.PostASAP) - + if (!QRCodeManager.sharedManager.parseString(metadataObject.stringValue)) { + var alert = UIAlertController(title: "SAP Tracker", message: "Incorrect QR Code", preferredStyle: UIAlertControllerStyle.Alert) + alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil)) + self.presentViewController(alert, animated: true, completion: nil) + return + } + session.stopRunning() previewLayer.removeFromSuperlayer() self.dismissViewControllerAnimated(true, completion: nil)