Large diffs are not rendered by default.

@@ -106,6 +106,9 @@ class EventViewController: UIViewController, UITableViewDataSource, UITableViewD
eventTableView.reloadData()
}

@IBAction func backToMap(sender: UIBarButtonItem) {
dismissViewControllerAnimated(true, completion: nil)
}


//returns the number of rows that the attendee table will have
@@ -117,7 +120,7 @@ class EventViewController: UIViewController, UITableViewDataSource, UITableViewD
@IBAction func deleteEventPressed(sender: UIButton) {
if data != nil && event != nil{
data?.deleteEvent(event!)
self.dismissViewControllerAnimated(true, completion: nil) //TODO what is this?
self.dismissViewControllerAnimated(true, completion: nil)
}
}

@@ -141,15 +144,9 @@ class EventViewController: UIViewController, UITableViewDataSource, UITableViewD
//pass the appropriate venue here
if let theVenue = event?.venue {
newVC.venue = theVenue
}
if let ppc = newVC.popoverPresentationController {
print("self is a delegate")
ppc.delegate = self
newVC.data = data
}
}
} else{
print("SEGUE WITH IDENTIFIER" + segue.identifier!)
//data?.refreshAnnotations() // TODO put this in the prepare for segue
}
}
}
@@ -41,19 +41,18 @@ class MapViewController: UIViewController, MKMapViewDelegate, UIPopoverPresentat
//refresh right when the view loads
refreshAnnotations()
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
//panAndZoomToUserLocation()
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
refreshAnnotations()
}

//reads in existing user data from nsuserdefaults
func readInDataFromDefaults(){
let defaults = NSUserDefaults.standardUserDefaults()
if let userName = defaults.stringForKey("userName"){
if let userUniqueKey = defaults.stringForKey("userID"){
let existingUser = User(userName: userName, ID: userUniqueKey)
data.currentUser = existingUser
}
let userUniqueKey = defaults.integerForKey("userID")
let existingUser = User(userName: userName, ID: userUniqueKey)
data.currentUser = existingUser
}
}

@@ -85,11 +84,6 @@ class MapViewController: UIViewController, MKMapViewDelegate, UIPopoverPresentat
refreshAnnotations()
}

//add an event to the map (pressing this button should also trigger a popover for adding event info)
@IBAction func addEvent(sender: UIBarButtonItem) {
performSegueWithIdentifier("segueToAddEventView", sender: sender)
}

//removes an event from the array
func deleteEvent(anEvent: Event){
for var i=0; i<data.eventsList.count; ++i{
@@ -120,9 +114,9 @@ class MapViewController: UIViewController, MKMapViewDelegate, UIPopoverPresentat

//Passes any objects the new view might need
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
print("Segueing from map with segue: \(segue.identifier)")
if segue.identifier == "segueToEventPopover" {
let newVC = segue.destinationViewController as! EventViewController
let destination = segue.destinationViewController as! UINavigationController
let newVC = destination.topViewController as! EventViewController

if let theSender = sender?.annotation as? MapPin{
newVC.event = theSender.event
@@ -132,6 +126,12 @@ class MapViewController: UIViewController, MKMapViewDelegate, UIPopoverPresentat
if let ppc = newVC.popoverPresentationController { //TODO what is this?
ppc.delegate = self
}
} else if segue.identifier == "showOptions" {
if let destination = segue.destinationViewController as? UINavigationController{
if let newVC = destination.topViewController as? SidePaneViewController{
newVC.data = data
}
}
}
}

@@ -21,8 +21,9 @@ class Server {
//repopulate the added events array with events from the server
mapData?.eventsList.removeAll()
for i in 0 ..< valuesFromDatabase.count{
printData()
//get all vars
let hostidstr = String(valuesFromDatabase[i]["HostID"])
//let hostID = valuesFromDatabase[i]["HostID"] as? Int //TODO: typecast?
let venueidstr = String(valuesFromDatabase[i]["VenueID"])

//convert to an nsdate object from datetime
@@ -40,7 +41,7 @@ class Server {
print(starttimedate)

//make a sample host TODO: should look up in a host database
let aHost = User(userName: "Unknown", ID: hostidstr)
let aHost = User(userName: "Unknown", ID: Int(rand()))

//make a sample venue TODO: should look up in a venue database
let aVenue = Venue()
@@ -61,7 +62,7 @@ class Server {

func postToServer(anEvent: Event){

let hostidstr = anEvent.host.uniqueID
let hostID = anEvent.host.uniqueID
let venueidstr = anEvent.venue.name //TODO: give venues unique IDs
//convert to a datetime object from mysql
@@ -74,7 +75,7 @@ class Server {

let request = NSMutableURLRequest(URL: NSURL(string:"http://52.201.225.102/addevent.php")!)
request.HTTPMethod = "POST"
let postString = "a=\(hostidstr)&b=\(venueidstr)&c=\(starttimestr)&d=\(endtimestr)&e=\(titlestr)&f=\(descriptionstr)"
let postString = "a=\(hostID)&b=\(venueidstr)&c=\(starttimestr)&d=\(endtimestr)&e=\(titlestr)&f=\(descriptionstr)"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)

let task = NSURLSession.sharedSession().dataTaskWithRequest(request){
@@ -15,27 +15,12 @@ class SettingsViewController: UIViewController, UINavigationControllerDelegate,
//profile fields
@IBOutlet weak var profileImage: UIImageView!
@IBOutlet weak var profileName: UITextField!
@IBOutlet weak var userID: UITextField!

@IBOutlet weak var backToMapButton: UIButton!


@IBAction func `return`(sender: UIButton) { //TODO make this unnecissary
//dont perform segue if its an ipad
let deviceIdiom = UIScreen.mainScreen().traitCollection.userInterfaceIdiom
if deviceIdiom == .Phone{
performSegueWithIdentifier("returnToMap", sender: nil)
}else{
if let split = self.splitViewController {
let controllers = split.viewControllers
if let _ = controllers[1] as? MapViewController {
assignUser()
}

}
}

@IBAction func save(sender: UIButton) {
assignUser()
//dismissViewControllerAnimated(true, completion: nil)
navigationController?.popViewControllerAnimated(true)
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
@@ -57,13 +42,8 @@ class SettingsViewController: UIViewController, UINavigationControllerDelegate,
theUser.picture = profileImage.image
}else{

var newID = ""
if userID.text != nil{
newID = userID.text!
}else{
newID = "ad24rew"
}
let theUser = User(userName: profileName.text!, ID: newID)
let newID = rand()
let theUser = User(userName: profileName.text!, ID: Int(newID))

let defaults = NSUserDefaults.standardUserDefaults()
defaults.setValue(theUser.uniqueID, forKey: "userID")
@@ -74,6 +54,7 @@ class SettingsViewController: UIViewController, UINavigationControllerDelegate,
}else{
data!.currentUser = nil
}
// reload
}
// if data is nill, there's a problem
}
@@ -88,25 +69,25 @@ class SettingsViewController: UIViewController, UINavigationControllerDelegate,
profileImage.userInteractionEnabled = true
profileImage.addGestureRecognizer(tapGestureRecognizer)

//update profile picture
if let theUser = data?.currentUser {
profileImage.image = theUser.picture
}else{
profileImage.image = UIImage(named: "useravatar")
}

self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "Settings", style: UIBarButtonItemStyle.Plain, target: nil, action: nil)

setupView()

//fill in the name field if user defaults exist
let defaults = NSUserDefaults.standardUserDefaults()
if let userName = defaults.stringForKey("userName"){
profileName.text = userName
}
if let id = defaults.stringForKey("userID"){
userID.text = id
}

func setupView(){
//update profile picture
if let theUser = data?.currentUser {
profileImage.image = theUser.picture
profileName.text = theUser.name
}else{
profileImage.image = UIImage(named: "useravatar")
}


}

func imageTapped(image: AnyObject){
@@ -26,13 +26,34 @@ class SidePaneViewController: UIViewController {
userName.text = ""
profilePicture.image = UIImage(named: "useravatar")
}

}

override func viewWillAppear(animated: Bool) {
if let user = data?.currentUser{
userName.text = user.name
if user.picture != nil{
profilePicture.image = user.picture
}
} else{
userName.text = ""
profilePicture.image = UIImage(named: "useravatar")
}
}


@IBAction func back(sender: UIBarButtonItem) {
dismissViewControllerAnimated(true, completion: nil)
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "EmbedSegue" {
if let destination = segue.destinationViewController as? OptionsViewController {
destination.data = data
}
} else if segue.identifier == "editUser" {
if let destination = segue.destinationViewController as? SettingsViewController {
destination.data = data
}
}
}
}
@@ -12,9 +12,9 @@ class User: CustomStringConvertible{
var name: String = ""
var picture : UIImage?
var passwordHash = 0
var uniqueID = ""
var uniqueID = 0

init(userName: String, ID: String){
init(userName: String, ID: Int){
name = userName
uniqueID = ID
}
@@ -10,10 +10,10 @@ import UIKit

class VenueViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var venue: Venue?
var data: LitData?

@IBOutlet weak var venueName: UILabel!
@IBOutlet weak var venueAddress: UILabel!
@IBOutlet weak var venueManager: UILabel!
@IBOutlet weak var eventsTableView: UITableView!

override func viewDidLoad() {
@@ -52,5 +52,19 @@ class VenueViewController: UIViewController, UITableViewDataSource, UITableViewD
return cell
}

override func viewWillAppear(animated: Bool) {
eventsTableView.reloadData()
}
// TODO add event scheduling from venue (ommitted for now for simplicity)
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "addEventFromVenue" {
let destination = segue.destinationViewController as! UINavigationController
let newVC = destination.topViewController as! AddEventViewController

newVC.selectedVenue = venue
newVC.data = data

}
}
}