diff --git a/Classes/Common/AppDelegate.m b/Classes/Common/AppDelegate.m index cb74d60..1d84156 100644 --- a/Classes/Common/AppDelegate.m +++ b/Classes/Common/AppDelegate.m @@ -45,8 +45,8 @@ @implementation AppDelegate @synthesize window; @synthesize navigationController; @synthesize deploymentTableViewController; -@synthesize incidentTabViewController; -@synthesize incidentDetailsViewController; +@synthesize incidentTabViewController; +@synthesize incidentDetailsViewController; @synthesize checkinTabViewController; @synthesize splitViewController; @synthesize categorySelectViewController; @@ -64,7 +64,7 @@ - (void)pushDetailsViewController:(BaseViewController *)viewController animated: [detailNavigationController pushViewController:viewController animated:animated]; } else { - [self.navigationController pushViewController:viewController animated:animated]; + [self.navigationController pushViewController:viewController animated:animated]; } } @@ -97,7 +97,7 @@ - (void)setDetailsViewController:(BaseViewController *)viewController animated:( [detailNavigationController pushViewController:viewController animated:animated]; self.splitViewController.viewControllers = [NSArray arrayWithObjects:masterNavigationController, detailNavigationController, nil]; [viewController viewWasPushed]; - } + } } else { [self.navigationController pushViewController:viewController animated:animated]; @@ -130,6 +130,7 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; NSString *mapURL = [[Settings sharedSettings] mapURL]; + //NSString *mapURL = @"http://uh.kunjan.net"; //[[Settings sharedSettings] mapURL]; DLog(@"MapURL: %@", mapURL); NSString *mapName = [[Settings sharedSettings] mapName]; @@ -140,7 +141,7 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( NavigationController *masterNavigationController = [[[NavigationController alloc] init] autorelease]; masterNavigationController.navigationBar.barStyle = UIBarStyleBlackOpaque; - masterNavigationController.navigationBar.tintColor = [[Settings sharedSettings] navBarTintColor]; + masterNavigationController.navigationBar.tintColor = [[Settings sharedSettings] navBarTintColor]; NavigationController *detailNavigationController = [[[NavigationController alloc] init] autorelease]; detailNavigationController.navigationBar.barStyle = UIBarStyleBlackOpaque; @@ -149,7 +150,7 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( if ([Device isIPad]) { self.splitViewController.viewControllers = [NSArray arrayWithObjects:masterNavigationController, detailNavigationController, nil]; self.navigationController = detailNavigationController; - } + } else { self.navigationController = masterNavigationController; } @@ -165,10 +166,13 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( [[Ushahidi sharedUshahidi] addDeployment:deployment]; [[Ushahidi sharedUshahidi] loadDeployment:deployment]; [[Ushahidi sharedUshahidi] getVersionOfDeployment:deployment forDelegate:self]; + + } else { self.splashViewController.shouldDismissOnAppear = YES; - [[Ushahidi sharedUshahidi] loadDeployment:deployment]; + [[Ushahidi sharedUshahidi] loadDeployment:deployment]; + if (deployment.supportsCheckins) { self.checkinTabViewController.deployment = deployment; if ([Device isIPad]) { @@ -198,6 +202,8 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( Deployment *deployment = [[Ushahidi sharedUshahidi] getDeploymentWithUrl:lastDeployment]; if (deployment != nil) { [[Ushahidi sharedUshahidi] loadDeployment:deployment]; + + if (deployment.supportsCheckins) { [masterNavigationController pushViewController:self.deploymentTableViewController animated:NO]; self.checkinTabViewController.deployment = deployment; @@ -225,6 +231,7 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( } } else { + [masterNavigationController pushViewController:self.deploymentTableViewController animated:NO]; if ([Device isIPad]) { [self setDetailsViewController:self.incidentTabViewController animated:NO]; @@ -236,14 +243,14 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( [masterNavigationController pushViewController:self.deploymentTableViewController animated:NO]; if ([Device isIPad]) { [self setDetailsViewController:self.incidentTabViewController animated:NO]; - } + } } self.splashViewController.modalPresentationStyle = UIModalPresentationFullScreen; self.splashViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; if ([Device isIPad]) { [self.window addSubview:self.splitViewController.view]; [self.splitViewController presentModalViewController:self.splashViewController animated:NO]; - } + } else { [self.window addSubview:self.navigationController.view]; [self.navigationController presentModalViewController:self.splashViewController animated:NO]; diff --git a/Classes/Common/Settings.h b/Classes/Common/Settings.h index 73f145d..a9578c6 100644 --- a/Classes/Common/Settings.h +++ b/Classes/Common/Settings.h @@ -72,6 +72,9 @@ BOOL showReportNewsURL; BOOL isWhiteLabel; + + NSArray *incidentCustomFieldsArray; + BOOL hasIncidentCustomFields; } @property(nonatomic, retain) NSString *email; @@ -132,6 +135,8 @@ @property(nonatomic, assign) BOOL showReportVideosURL; @property(nonatomic, readonly) BOOL isWhiteLabel; +@property(nonatomic,retain) NSArray *incidentCustomFieldsArray; + + (Settings *) sharedSettings; - (void) save; diff --git a/Classes/Common/Settings.m b/Classes/Common/Settings.m index 7e43bdc..0d979bf 100644 --- a/Classes/Common/Settings.m +++ b/Classes/Common/Settings.m @@ -39,7 +39,7 @@ @implementation Settings @synthesize firstName; @synthesize lastName; @synthesize lastDeployment; -@synthesize lastIncident; +@synthesize lastIncident; @synthesize downloadMaps; @synthesize becomeDiscrete; @synthesize resizePhotos; @@ -83,6 +83,7 @@ @implementation Settings @synthesize youtubeDeveloperKey; @synthesize youtubeLogin; @synthesize youtubePassword; +@synthesize incidentCustomFieldsArray; - (id) init { if ((self = [super init])) { @@ -121,8 +122,19 @@ - (void) loadUserDefaults { self.twitterUserSecret = [userDefaults stringForKey:@"twitterUserSecret"]; self.youtubeDeveloperKey = [userDefaults stringForKey:@"USHYoutubeDeveloperKey"]; - self.youtubeLogin = [userDefaults stringForKey:@"USHYoutubeUsername"]; + self.youtubeLogin = [userDefaults stringForKey:@"USHYoutubeUsername"]; self.youtubePassword = [userDefaults stringForKey:@"USHYoutubePassword"]; + + + if ([userDefaults objectForKey:@"incidentCustomFields"] != nil) { + + NSData *data = [userDefaults objectForKey:@"incidentCustomFields"]; + self.incidentCustomFieldsArray = [[NSArray alloc] initWithArray:[NSKeyedUnarchiver unarchiveObjectWithData:data]]; + } + else { + self.incidentCustomFieldsArray = nil; + } + } - (void) loadInfoDictionary { @@ -152,12 +164,12 @@ - (void) loadInfoDictionary { self.twitterApiKey = [infoDictionary stringForKey:@"USHTwitterApiKey"]; self.twitterApiSecret = [infoDictionary stringForKey:@"USHTwitterApiSecret"]; - + self.bitlyApiLogin = [infoDictionary stringForKey:@"USHBitlyApiLogin"]; self.bitlyApiKey = [infoDictionary stringForKey:@"USHBitlyApiKey"]; self.youtubeDeveloperKey = [infoDictionary stringForKey:@"USHYoutubeDeveloperKey"]; - self.youtubeLogin = [infoDictionary stringForKey:@"USHYoutubeUsername"]; + self.youtubeLogin = [infoDictionary stringForKey:@"USHYoutubeUsername"]; self.youtubePassword = [infoDictionary stringForKey:@"USHYoutubePassword"]; if ([infoDictionary objectForKey:@"USHReportNewsURL"] != nil) { @@ -209,6 +221,8 @@ - (void)dealloc { [bitlyApiLogin release]; [bitlyApiKey release]; + + [incidentCustomFieldsArray release]; [super dealloc]; } @@ -231,7 +245,15 @@ - (void) save { [[NSUserDefaults standardUserDefaults] setObject:self.twitterPassword forKey:@"twitterPassword"]; [[NSUserDefaults standardUserDefaults] setObject:self.twitterUserKey forKey:@"twitterUserKey"]; [[NSUserDefaults standardUserDefaults] setObject:self.twitterUserSecret forKey:@"twitterUserSecret"]; - + + + NSArray* tmpCustomFieldArray = [[NSArray alloc] initWithArray:self.incidentCustomFieldsArray]; + + NSArray *arr = tmpCustomFieldArray; + NSData *data = [NSKeyedArchiver archivedDataWithRootObject:arr]; + + [[NSUserDefaults standardUserDefaults] setObject:data forKey:@"incidentCustomFields"]; + [[NSUserDefaults standardUserDefaults] synchronize]; } @@ -253,11 +275,18 @@ - (BOOL) hasMapURL { - (BOOL) isWhiteLabel { return [NSString isNilOrEmpty:self.mapName] == NO || - [NSString isNilOrEmpty:self.mapURL] == NO; + [NSString isNilOrEmpty:self.mapURL] == NO; } - (BOOL) hasYoutubeCredentials { return self.youtubeDeveloperKey && self.youtubeLogin && self.youtubePassword; } +- (BOOL) hasIncidentCustomFields { + if((self.incidentCustomFieldsArray != nil) && ([self.incidentCustomFieldsArray count]>0)){ + return YES; + } + return NO; +} + @end diff --git a/Classes/Common/Ushahidi.h b/Classes/Common/Ushahidi.h index 417f3e6..17510eb 100644 --- a/Classes/Common/Ushahidi.h +++ b/Classes/Common/Ushahidi.h @@ -99,6 +99,8 @@ - (NSArray *) getIncidentsPending; - (NSArray *) getIncidentsForDelegate:(id)delegate; +- (NSArray *) getIncidentCustomFieldsForDelegate:(id)delegate; + - (NSURL *) getUrlForIncident:(Incident *)incident; - (void) downloadPhoto:(Photo *)photo forIncident:(Incident *)incident forDelegate:(id)delegate; diff --git a/Classes/Common/Ushahidi.m b/Classes/Common/Ushahidi.m index 1abe4de..31be5d3 100644 --- a/Classes/Common/Ushahidi.m +++ b/Classes/Common/Ushahidi.m @@ -39,11 +39,11 @@ #import "Sound.h" #import "Video.h" #import "Settings.h" -#import "Incident.h" #import "Checkin.h" #import "Internet.h" #import "Device.h" #import "User.h" +#import "IncidentCustomField.h" @interface Ushahidi () @@ -82,6 +82,10 @@ - (void) getIncidentsStarted:(ASIHTTPRequest *)request; - (void) getIncidentsFinished:(ASIHTTPRequest *)request; - (void) getIncidentsFailed:(ASIHTTPRequest *)request; +- (void) getIncidentCustomFieldsStarted:(ASIHTTPRequest *)request; +- (void) getIncidentCustomFieldsFinished:(ASIHTTPRequest *)request; +- (void) getIncidentCustomFieldsFailed:(ASIHTTPRequest *)request; + - (void) getCategoriesStarted:(ASIHTTPRequest *)request; - (void) getCategoriesFinished:(ASIHTTPRequest *)request; - (void) getCategoriesFailed:(ASIHTTPRequest *)request; @@ -195,8 +199,19 @@ - (void) archive { - (void) loadDeploymentForDelegate:(id)delegate { if ([self hasDeployment]) { DLog(@"%@", self.deployment.name); - NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:self.deployment, @"deployment", delegate, @"delegate", nil]; + NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:self.deployment, @"deployment", delegate, @"delegate", nil]; + + NSArray* tmpCustomFieldArray = [[NSArray alloc] initWithArray:[[Ushahidi sharedUshahidi] getIncidentCustomFieldsForDelegate:delegate]]; + + if((tmpCustomFieldArray != nil) && ([tmpCustomFieldArray count] > 0)){ + [[Settings sharedSettings] setIncidentCustomFieldsArray:tmpCustomFieldArray]; + [[Settings sharedSettings] save]; + + } [self performSelectorInBackground:@selector(loadDeploymentWithDictionary:) withObject:dictionary]; + + + } else { DLog(@"NULL"); @@ -231,6 +246,8 @@ - (void) loadDeployment:(Deployment *)theDeployment { [self.mapQueue cancelAllOperations]; [self.photoQueue cancelAllOperations]; [self.mainQueue cancelAllOperations]; + + [[Settings sharedSettings] save]; } @@ -244,6 +261,10 @@ - (void) loadDeploymentWithDictionary:(NSDictionary *)dictionary { NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; Deployment *theDeployment = [dictionary objectForKey:@"deployment"]; [self loadDeployment:theDeployment]; + + + + [self dispatchSelector:@selector(loadedFromUshahidi:deployment:) target:[dictionary objectForKey:@"delegate"] objects:self, theDeployment, nil]; @@ -884,6 +905,14 @@ - (BOOL) uploadIncident:(Incident *)incident forDelegate:(id)d } } } + + if ([incident.customFormEntries count] > 0){ + NSArray *keys = [incident.customFormEntries allKeys]; + for (NSString *key in keys){ + [post addPostValue:[incident.customFormEntries objectForKey:key] forKey:key]; + } + } + DLog(@"POST: %@", [post stringValues]); [self.uploadQueue addOperation:post]; return YES; @@ -1183,9 +1212,7 @@ - (NSArray *) getIncidentsForDelegate:(id)delegate { [self downloadMapForIncident:incident forDelegate:delegate]; } } - NSString *url = (self.deployment.lastIncidentId != nil) - ? [self.deployment getUrlForIncidentsBySinceID:self.deployment.lastIncidentId] - : [self.deployment getUrlForIncidents]; + NSString *url = [self.deployment getUrlForIncidents]; ASIHTTPRequest *request = [self getHTTPRequest:url startSelector:@selector(getIncidentsStarted:) finishSelector:@selector(getIncidentsFinished:) @@ -1247,7 +1274,8 @@ - (void) getIncidentsFinished:(ASIHTTPRequest *)request { if (media != nil && [media isKindOfClass:[NSArray class]]) { for (NSDictionary *item in media) { DLog(@"INCIDENT MEDIA: %@", item); - NSInteger mediatype = [item intForKey:@"type"]; + NSNumber *mediatypeNum = [item objectForKey:@"type"]; + NSInteger mediatype = [mediatypeNum integerValue]; if (mediatype == MediaTypePhoto) { Photo *photo = [[[Photo alloc] initWithDictionary:item] autorelease]; [incident addPhoto:photo]; @@ -1282,6 +1310,38 @@ - (void) getIncidentsFinished:(ASIHTTPRequest *)request { [category release]; } } + + NSDictionary * customFieldsDict = [dictionary objectForKey:@"customfields"]; + if(customFieldsDict != nil && [customFieldsDict isKindOfClass:[NSDictionary class]]){ + NSArray *keys = [customFieldsDict allKeys]; + for(NSString *key in keys){ + NSDictionary * customFieldDetailDict = [customFieldsDict objectForKey:key]; + IncidentCustomField *customField = [[IncidentCustomField alloc]init]; + customField.fieldID = [[customFieldDetailDict objectForKey:@"field_id"]intValue]; + customField.fieldName = [[NSString alloc] initWithString:[customFieldDetailDict stringForKey:@"field_name"]]; + customField.fieldType = [[customFieldDetailDict objectForKey:@"field_type"]intValue]; + if([customFieldDetailDict objectForKey:@"field_default"] != nil){ + NSString *tmpDefault = [customFieldDetailDict stringForKey:@"field_default"]; + customField.defaultValues = [tmpDefault componentsSeparatedByString:@","]; + }else { + customField.defaultValues = [[NSArray alloc] init]; + } + + NSInteger requiredInt = [[customFieldDetailDict objectForKey:@"field_required"]intValue]; + if(requiredInt == 0){ + customField.isRequired = NO; + }else { + customField.isRequired = YES ; + } + + if([customFieldDetailDict objectForKey:@"field_response"] != nil){ + customField.fieldResponse = [[NSString alloc]initWithString:[customFieldDetailDict objectForKey:@"field_response"]]; + }else{ + customField.fieldResponse = [[NSString alloc]initWithString:@""]; + } + [incident.customFields addObject:customField]; + } + } if ([[Settings sharedSettings] downloadMaps] && incident.map == nil) { [self downloadMapForIncident:incident forDelegate:[request getDelegate]]; @@ -1321,6 +1381,89 @@ - (void) getIncidentsFailed:(ASIHTTPRequest *)request { objects:self, nil, nil, [request error], NO, nil]; } +#pragma mark - +#pragma mark Incident Custom Fields + +- (NSArray *) getIncidentCustomFieldsForDelegate:(id)delegate { + + ASIHTTPRequest *request = [self getHTTPRequest:self.deployment.getURlForIncidentCustomFields + startSelector:@selector(getIncidentCustomFieldsStarted:) + finishSelector:@selector(getIncidentCustomFieldsFinished:) + failSelector:@selector(getIncidentCustomFieldsFailed:)]; + [request attachDelegate:delegate]; + [request startSynchronous]; + return self.deployment.incidentCustomFields; +} + +- (void) getIncidentCustomFieldsStarted:(ASIHTTPRequest *)request { + DLog(@"REQUEST: %@", [request.originalURL absoluteString]); +} + +- (void) getIncidentCustomFieldsFinished:(ASIHTTPRequest *)request { + DLog(@"REQUEST: %@", [request.originalURL absoluteString]); + DLog(@"STATUS: %@", [request responseStatusMessage]); + + NSError *error = nil; + if ([request responseStatusCode] != HttpStatusOK) { + error = [NSError errorWithDomain:self.deployment.domain + code:[request responseStatusCode] + message:[request responseStatusMessage]]; + } + else { + NSDictionary *json = [[request responseString] JSONValue]; + if (json == nil) { + DLog(@"RESPONSE: %@", [request responseString]); + error = [NSError errorWithDomain:self.deployment.domain + code:HttpStatusInternalServerError + message:NSLocalizedString(@"Unable To Download Checkins", nil)]; + self.deployment.incidentCustomFields = [[NSArray alloc] init]; + } + else { + NSMutableArray *incidentCustomFields = [[NSMutableArray alloc]init]; + NSDictionary *payload = [json objectForKey:@"payload"]; + if (payload != nil) { + NSDictionary *customForms = [payload objectForKey:@"customforms"]; + if (customForms != nil) { + NSArray *Fields = [customForms objectForKey:@"fields"]; + if(Fields != nil){ + for (NSDictionary *dictionary in Fields) { + [incidentCustomFields addObject:[dictionary objectForKey:@"meta"]]; + } + self.deployment.incidentCustomFields = [[NSArray alloc] initWithArray:incidentCustomFields]; + } + else{ + DLog(@"FIELDS:NULL"); + self.deployment.incidentCustomFields = [[NSArray alloc] init]; + } + } + else { + DLog(@"CUSTOMFORMS:NULL"); + self.deployment.incidentCustomFields = [[NSArray alloc] init]; + } + } + else { + error = [NSError errorWithDomain:self.deployment.domain + code:HttpStatusInternalServerError + message:NSLocalizedString(@"Unable To Download Fields", nil)]; + self.deployment.incidentCustomFields = [[NSArray alloc] init]; + } + } + } + +} + +- (void) getIncidentCustomFieldsFailed:(ASIHTTPRequest *)request { + DLog(@"REQUEST: %@", [request.originalURL absoluteString]); + DLog(@"STATUS: %@", [request responseStatusMessage]); + DLog(@"RESPONSE: %@", [request responseString]); + NSArray *checkins = [[self.deployment.checkins allValues] sortedArrayUsingSelector:@selector(compareByDate:)]; + self.deployment.incidentCustomFields = nil; + [self dispatchSelector:@selector(downloadedFromUshahidi:checkins:error:hasChanges:) + target:[request getDelegate] + objects:self, checkins, [request error], NO, nil]; +} + + #pragma mark - #pragma mark Photo diff --git a/Classes/Controllers/CustomFieldTableViewController.h b/Classes/Controllers/CustomFieldTableViewController.h new file mode 100644 index 0000000..017be5a --- /dev/null +++ b/Classes/Controllers/CustomFieldTableViewController.h @@ -0,0 +1,41 @@ +// +// CustomFieldTableViewController.h +// Ushahidi_iOS +// +// Created by Bhadrik Patel on 9/18/12. +// Copyright (c) 2012 Ushahidi. All rights reserved. +// + +#import +#import "BaseTableViewController.h" +#import "Ushahidi.h" +#import "CheckBoxTableCell.h" +#import "IncidentCustomField.h" +#import "BaseAddViewController.h" + +@class Incident; + +@interface CustomFieldTableViewController : BaseTableViewController{ + +@public + UIBarButtonItem *cancelButton; + UIBarButtonItem *doneButton; + Incident *incident; + IncidentCustomField *customField; +} + +@property(nonatomic, retain) IBOutlet UIBarButtonItem *cancelButton; +@property(nonatomic, retain) IBOutlet UIBarButtonItem *doneButton; +@property(nonatomic, retain) Incident *incident; +@property(nonatomic, retain) IncidentCustomField *customField; + +- (IBAction) cancel:(id)sender; +- (IBAction) done:(id)sender; + +@end + + + + + + diff --git a/Classes/Controllers/CustomFieldTableViewController.m b/Classes/Controllers/CustomFieldTableViewController.m new file mode 100644 index 0000000..1ee6d78 --- /dev/null +++ b/Classes/Controllers/CustomFieldTableViewController.m @@ -0,0 +1,202 @@ +// +// CustomFieldTableViewController.m +// Ushahidi_iOS +// +// Created by Bhadrik Patel on 9/18/12. +// Copyright (c) 2012 Ushahidi. All rights reserved. +// + +#import "CustomFieldTableViewController.h" +#import "TableCellFactory.h" +#import "LoadingViewController.h" +#import "Settings.h" +#import "Incident.h" + +@interface CustomFieldTableViewController () + +@end + +@implementation CustomFieldTableViewController +@synthesize incident, customField; +@synthesize cancelButton,doneButton; + +#pragma mark - +#pragma mark Handlers + +- (IBAction) cancel:(id)sender { + [self dismissModalViewControllerAnimated:YES]; +} + +- (IBAction) done:(id)sender { + [self dismissModalViewControllerAnimated:YES]; +} + +#pragma mark - +#pragma mark UIViewController +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil +{ + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if (self) { + // Custom initialization + } + return self; +} + +- (void)viewDidLoad{ + [super viewDidLoad]; + [self.tableView setDelegate:self]; + [self.tableView setDataSource:self]; + self.navigationBar.topItem.title = self.customField.fieldName; + self.doneButton.title = NSLocalizedString(@"Done", nil); + if ([self.doneButton respondsToSelector:@selector(setTintColor:)]) { + self.doneButton.tintColor = [[Settings sharedSettings] doneButtonColor]; + } +} + +- (void)viewDidUnload{ + [super viewDidUnload]; +} + +- (void)viewWillAppear:(BOOL)animated { + [self.allRows removeAllObjects]; + [self.filteredRows removeAllObjects]; + [self.allRows addObjectsFromArray:[self.customField defaultValues]]; + [self.filteredRows addObjectsFromArray:self.allRows]; + [self.tableView reloadData]; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation +{ + return YES; +} + +- (void)dealloc { + [cancelButton release]; + [doneButton release]; + [incident release]; + [customField release]; + [super dealloc]; +} + + +#pragma mark - +#pragma mark UITableView + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)theTableView { + return 1; +} + +- (NSInteger)tableView:(UITableView *)theTableView numberOfRowsInSection:(NSInteger)section { + return self.filteredRows.count; +} + +- (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + CheckBoxTableCell *cell = [TableCellFactory getCheckBoxTableCellForDelegate:self table:theTableView indexPath:indexPath]; + if (([customField defaultValues] != nil) && ([[customField defaultValues] count ] > 0)){ + [cell setTitle:(NSString *)[self.customField.defaultValues objectAtIndex:indexPath.row]]; + if(customField.fieldType == CheckBoxFieldType){ + if([incident getCustomFieldCheckBoxValue:customField.fieldID choiceNum:indexPath.row] != nil){ + [cell setChecked:YES]; + }else { + [cell setChecked:NO]; + } + + }else if((customField.fieldType == RadioFieldType)||(customField.fieldType == DropDownFieldType)){ + if([incident getCustomFieldValue:customField.fieldID] == nil){ + if(indexPath.row == 0){ + [cell setChecked:YES]; + [incident addUpdateCustomFieldValue:[self.customField.defaultValues objectAtIndex:0] forFieldID:[self.customField fieldID]]; + }else { + [cell setChecked:NO]; + } + }else { + if([cell.textLabel.text isEqualToString:[incident getCustomFieldValue:customField.fieldID]]){ + [cell setChecked:YES]; + }else { + [cell setChecked:NO]; + } + } + } + } + else { + [cell setTitle:nil]; + [cell setDescription:nil]; + [cell setChecked:NO]; + } + return cell; +} + + +- (void)tableView:(UITableView *)theTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [theTableView deselectRowAtIndexPath:indexPath animated:YES]; + CheckBoxTableCell *cell = (CheckBoxTableCell *)[theTableView cellForRowAtIndexPath:indexPath]; + if (cell.checked) { + if(customField.fieldType == CheckBoxFieldType){ + [cell setChecked:NO]; + [self.incident removeCustomFieldCheckBoxChoice:customField.fieldID choiceNum:indexPath.row]; + } + } + else { + + if((customField.fieldType == RadioFieldType)||(customField.fieldType == DropDownFieldType)){ + [cell setChecked:YES]; + [self.incident addUpdateCustomFieldValue:[cell.textLabel text] forFieldID:customField.fieldID]; + [self.tableView reloadData]; + }if(customField.fieldType == CheckBoxFieldType){ + [cell setChecked:YES]; + [self.incident addCustomFieldCheckBoxChoice:[cell.textLabel text] forFieldID:customField.fieldID choiceNum:indexPath.row]; + } + } +} + +#pragma mark - +#pragma mark CheckBoxTableCellDelegate + +- (void) checkBoxTableCellChanged:(CheckBoxTableCell *)cell index:(NSIndexPath *)indexPath checked:(BOOL)checked { + + DLog(@"customCheckBoxTableCellChanged:%@ index:[%d, %d] checked:%d", cell.textLabel.text, indexPath.section, indexPath.row, checked) + if (cell.checked) { + + if((customField.fieldType == RadioFieldType)||(customField.fieldType == DropDownFieldType)){ + [self.incident addUpdateCustomFieldValue:[cell.textLabel text] forFieldID:customField.fieldID]; + [self.tableView reloadData]; + [cell setChecked:YES]; + } + if(customField.fieldType == CheckBoxFieldType){ + [self.incident addCustomFieldCheckBoxChoice:[cell.textLabel text] forFieldID:customField.fieldID choiceNum:indexPath.row]; + [cell setChecked:YES]; + } + + } + else { + if(customField.fieldType == CheckBoxFieldType){ + [self.incident removeCustomFieldCheckBoxChoice:customField.fieldID choiceNum:indexPath.row]; + [cell setChecked:NO]; + } + + if((customField.fieldType == RadioFieldType)||(customField.fieldType == DropDownFieldType)){ + [self.tableView reloadData]; + } + } +} + +#pragma mark - +#pragma mark UISearchBarDelegate + +- (void) filterRows:(BOOL)reloadTable { + [self.filteredRows removeAllObjects]; + NSString *searchText = [self getSearchText]; + for (Category *category in self.allRows) { + if ([category matchesString:searchText]) { + [self.filteredRows addObject:category]; + } + } + DLog(@"Re-Adding Rows"); + if (reloadTable) { + [self.tableView reloadData]; + [self.tableView flashScrollIndicators]; + } +} + +@end + diff --git a/Classes/Controllers/CustomFieldTableViewController_iPad.xib b/Classes/Controllers/CustomFieldTableViewController_iPad.xib new file mode 100644 index 0000000..3c4724e --- /dev/null +++ b/Classes/Controllers/CustomFieldTableViewController_iPad.xib @@ -0,0 +1,361 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBUINavigationItem + IBUITableView + IBUIBarButtonItem + IBUIView + IBUINavigationBar + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + + 292 + + + + 274 + {{0, 44}, {768, 960}} + + + + 3 + MQA + + YES + IBIPadFramework + YES + 1 + 0 + YES + 44 + 22 + 22 + + + + 290 + {768, 44} + + + IBIPadFramework + 1 + + + + + + Done + IBIPadFramework + 1 + + + IBIPadFramework + + + + + {{0, 20}, {768, 1004}} + + + + 3 + MQA + + 2 + + + NO + + 2 + + IBIPadFramework + + + + + + + view + + + + 3 + + + + doneButton + + + + 9 + + + + navigationBar + + + + 10 + + + + tableView + + + + 11 + + + + done: + + + + 8 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + + + + + + + 4 + + + + + 5 + + + + + + + + 6 + + + + + + + + 7 + + + + + + + CustomFieldTableViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 11 + + + + + BaseTableViewController + BaseViewController + + tableView + UITableView + + + tableView + + tableView + UITableView + + + + IBProjectSource + ./Classes/BaseTableViewController.h + + + + BaseViewController + UIViewController + + UINavigationBar + UIToolbar + WebViewController + + + + navigationBar + UINavigationBar + + + toolBar + UIToolbar + + + webViewController + WebViewController + + + + IBProjectSource + ./Classes/BaseViewController.h + + + + CustomFieldTableViewController + BaseTableViewController + + id + id + + + + cancel: + id + + + done: + id + + + + UIBarButtonItem + UIBarButtonItem + + + + cancelButton + UIBarButtonItem + + + doneButton + UIBarButtonItem + + + + IBProjectSource + ./Classes/CustomFieldTableViewController.h + + + + WebViewController + BaseViewController + + backForward: + id + + + backForward: + + backForward: + id + + + + UIActivityIndicatorView + UISegmentedControl + UIBarButtonItem + UISearchBar + UIWebView + + + + activityIndicator + UIActivityIndicatorView + + + backForwardButton + UISegmentedControl + + + refreshButton + UIBarButtonItem + + + searchBar + UISearchBar + + + webView + UIWebView + + + + IBProjectSource + ./Classes/WebViewController.h + + + + + 0 + IBIPadFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + 1181 + + diff --git a/Classes/Controllers/IncidentAddViewController.h b/Classes/Controllers/IncidentAddViewController.h index 8519501..66ead26 100644 --- a/Classes/Controllers/IncidentAddViewController.h +++ b/Classes/Controllers/IncidentAddViewController.h @@ -28,9 +28,12 @@ #import "DatePicker.h" #import "Locator.h" #import "VideoPickerController.h" +#import "CheckBoxTableCell.h" +#import "CustomFieldTableViewController.h" @class CategoryTableViewController; @class LocationSelectViewController; +@class CustomFieldTableViewController; @class Incident; @interface IncidentAddViewController : BaseAddViewController { @public @@ -48,16 +52,19 @@ LocationSelectViewController *locationSelectViewController; ImagePickerController *imagePickerController; VideoPickerController *videoPickerController; + CustomFieldTableViewController *customFieldTableViewController; @private DatePicker *datePicker; NSString *news; Incident *incident; + NSMutableDictionary *customFields; } @property(nonatomic, retain) IBOutlet CategoryTableViewController *categoryTableViewController; @property(nonatomic, retain) IBOutlet LocationSelectViewController *locationSelectViewController; @property(nonatomic, retain) ImagePickerController *imagePickerController; @property(nonatomic, retain) VideoPickerController *videoPickerController; +@property(nonatomic, retain) CustomFieldTableViewController *customFieldTableViewController; @end diff --git a/Classes/Controllers/IncidentAddViewController.m b/Classes/Controllers/IncidentAddViewController.m index 11a6906..40e70f1 100644 --- a/Classes/Controllers/IncidentAddViewController.m +++ b/Classes/Controllers/IncidentAddViewController.m @@ -25,6 +25,7 @@ #import "Device.h" #import "LoadingViewController.h" #import "CategoryTableViewController.h" +#import "CustomFieldTableViewController.h" #import "LocationSelectViewController.h" #import "LoadingViewController.h" #import "TextTableCell.h" @@ -42,6 +43,7 @@ #import "TableHeaderView.h" #import "NSString+Extension.h" #import "Video.h" +#import "IncidentCustomField.h" @interface IncidentAddViewController () @@ -49,6 +51,7 @@ @interface IncidentAddViewController () @property(nonatomic, retain) NSString *news; @property(nonatomic, retain) NSString *videos; @property(nonatomic, retain) Incident *incident; +@property(nonatomic, retain) NSMutableDictionary *customFields; @end @@ -56,12 +59,14 @@ @implementation IncidentAddViewController @synthesize datePicker; @synthesize categoryTableViewController; +@synthesize customFieldTableViewController; @synthesize locationSelectViewController; @synthesize imagePickerController; @synthesize videoPickerController; @synthesize news; @synthesize videos; @synthesize incident; +@synthesize customFields; #pragma mark - #pragma mark Enums @@ -74,8 +79,7 @@ @implementation IncidentAddViewController TableSectionLocation, TableSectionPhotos, TableSectionVideos, - TableSectionNews, - TableSectionDelete + TableSectionNews } TableSection; typedef enum { @@ -102,31 +106,42 @@ - (void) load:(NSObject*)item { - (IBAction) cancel:(id)sender { DLog(@"cancel"); - [self.alertView showYesNoWithTitle:NSLocalizedString(@"Unsaved Changes", nil) - andMessage:NSLocalizedString(@"Are you sure you want to cancel?", nil) + [self.alertView showYesNoWithTitle:NSLocalizedString(@"Unsaved Changes", nil) + andMessage:NSLocalizedString(@"Are you sure you want to cancel?", nil) forTag:AlertViewUnsaved]; } - (IBAction) done:(id)sender { DLog(@"done"); - NSMutableArray *missingFields = [NSMutableArray array]; + self.incident.description = @"."; + + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; + [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss z"]; + NSDate *date = [[NSDate alloc]init]; + NSString *formattedDateString = [dateFormatter stringFromDate:date]; + NSLog(@"Incident Title: %@", formattedDateString); + self.incident.title = formattedDateString; + + + NSMutableArray *missingFields = [NSMutableArray array]; + if (self.incident.hasTitle == NO) { - [missingFields addObject:NSLocalizedString(@"Title", nil)]; + [missingFields addObject:NSLocalizedString(@"Title", nil)]; } if (self.incident.hasDescription == NO) { - [missingFields addObject:NSLocalizedString(@"Description", nil)]; + [missingFields addObject:NSLocalizedString(@"Description", nil)]; } if (self.incident.hasCategory == NO) { - [missingFields addObject:NSLocalizedString(@"Category", nil)]; + [missingFields addObject:NSLocalizedString(@"Category", nil)]; } if (self.incident.hasDate == NO) { - [missingFields addObject:NSLocalizedString(@"Date", nil)]; + [missingFields addObject:NSLocalizedString(@"Date", nil)]; } if (self.incident.hasLocation == NO) { - [missingFields addObject:NSLocalizedString(@"Location", nil)]; + [missingFields addObject:NSLocalizedString(@"Location", nil)]; } if (missingFields.count > 0) { - [self.alertView showOkWithTitle:NSLocalizedString(@"Required Fields", nil) + [self.alertView showOkWithTitle:NSLocalizedString(@"Required Fields", nil) andMessage:[missingFields componentsJoinedByString:@", "]]; } else { @@ -155,7 +170,7 @@ - (IBAction) done:(id)sender { } else { [self.loadingView hide]; - [self.alertView showOkWithTitle:NSLocalizedString(@"Error", nil) + [self.alertView showOkWithTitle:NSLocalizedString(@"Error", nil) andMessage:NSLocalizedString(@"Unable to add incident", nil)]; } } @@ -193,7 +208,8 @@ - (void)viewDidLoad { else { //DO NOT SHOW 'News' HEADING } - UITapGestureRecognizer *gestureRecognizer = [[[UITapGestureRecognizer alloc] initWithTarget:self + + UITapGestureRecognizer *gestureRecognizer = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)] autorelease]; gestureRecognizer.cancelsTouchesInView = NO; [self.tableView addGestureRecognizer:gestureRecognizer]; @@ -220,17 +236,17 @@ - (void) viewWillAppear:(BOOL)animated { self.incident.latitude = [Locator sharedLocator].latitude; self.incident.longitude = [Locator sharedLocator].longitude; self.incident.location = [Locator sharedLocator].address; - [self setFooter:[Locator sharedLocator].address + [self setFooter:[Locator sharedLocator].address atSection:TableSectionLocation]; } else if ([[Locator sharedLocator] hasLocation]) { self.incident.latitude = [Locator sharedLocator].latitude; self.incident.longitude = [Locator sharedLocator].longitude; - [self setFooter:[NSString stringWithFormat:@"%@, %@", self.incident.latitude, self.incident.longitude] + [self setFooter:[NSString stringWithFormat:@"%@, %@", self.incident.latitude, self.incident.longitude] atSection:TableSectionLocation]; } else { - [self setFooter:NSLocalizedString(@"Locating...", nil) + [self setFooter:NSLocalizedString(@"Locating...", nil) atSection:TableSectionLocation]; } [[Locator sharedLocator] detectLocationForDelegate:self]; @@ -239,6 +255,15 @@ - (void) viewWillAppear:(BOOL)animated { self.doneButton.title = NSLocalizedString(@"Update", nil); self.cancelButton.enabled = NO; } + //Load Custom Fields + [self initCustomFieldsDictionary]; + if([self.customFields count] > 0){ + NSArray * keys = [self.customFields allKeys]; + for(NSNumber * num in keys){ + IncidentCustomField * customField = [self.customFields objectForKey:num]; + [self setHeader:[customField fieldName] atSection:[num intValue]]; + } + } [self.tableView setContentOffset:CGPointMake(0, 0) animated:NO]; } [self.tableView reloadData]; @@ -254,9 +279,11 @@ - (void)dealloc { [imagePickerController release]; [videoPickerController release]; [categoryTableViewController release]; + [customFieldTableViewController release]; [locationSelectViewController release]; [incident release]; [news release]; + [customFields release]; [super dealloc]; } @@ -264,7 +291,12 @@ - (void)dealloc { #pragma mark UITableView - (NSInteger)numberOfSectionsInTableView:(UITableView *)theTableView { - return 8; + + if(self.customFields != nil){ + return [self.customFields count] + 7; + }else { + return 7; + } } - (NSInteger)tableView:(UITableView *)theTableView numberOfRowsInSection:(NSInteger)section { @@ -282,7 +314,7 @@ - (NSInteger)tableView:(UITableView *)theTableView numberOfRowsInSection:(NSInte } if (section == TableSectionVideos) { if ([[Settings sharedSettings] showReportVideosURL]) { - if ([NSString isNilOrEmpty:[Settings sharedSettings].youtubeLogin] == NO && + if ([NSString isNilOrEmpty:[Settings sharedSettings].youtubeLogin] == NO && [NSString isNilOrEmpty:[Settings sharedSettings].youtubePassword] == NO && [NSString isNilOrEmpty:[Settings sharedSettings].youtubeDeveloperKey] == NO) { return [self.incident.videos count] + 1; @@ -291,16 +323,37 @@ - (NSInteger)tableView:(UITableView *)theTableView numberOfRowsInSection:(NSInte } return 0; } + + if (section == TableSectionNews) { + return [[Settings sharedSettings] showReportNewsURL] ? 1 : 0; + } + + NSInteger TableSectionDelete = TableSectionNews + 1; + if(self.customFields != nil){ + TableSectionDelete = TableSectionNews + [self.customFields count] + 1; + NSArray * customKeySections = [self.customFields allKeys]; + for(NSNumber * num in customKeySections){ + if(section == [num intValue]){ + return 1; + } + } + } if (section == TableSectionDelete) { return self.incident.pending ? 1 : 0; } - if (section == TableSectionNews) { - return [[Settings sharedSettings] showReportNewsURL] ? 1 : 0; - } + return 1; } - (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + + NSInteger TableSectionDelete = TableSectionNews + 1; + NSArray * customKeySections = [[NSArray alloc] init]; + if(self.customFields != nil){ + TableSectionDelete = TableSectionNews + [self.customFields count] + 1; + customKeySections = [self.customFields allKeys]; + } + if (indexPath.section == TableSectionDescription) { TextViewTableCell *cell = [TableCellFactory getTextViewTableCellForDelegate:self table:theTableView indexPath:indexPath]; [cell setPlaceholder:NSLocalizedString(@"Enter description", nil)]; @@ -321,7 +374,7 @@ - (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath else { [cell setImage:nil]; } - return cell; + return cell; } else { TextTableCell *cell = [TableCellFactory getTextTableCellForTable:theTableView indexPath:indexPath]; @@ -345,7 +398,7 @@ - (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath else { [cell setText:video.title]; } - return cell; + return cell; } else { TextTableCell *cell = [TableCellFactory getTextTableCellForTable:theTableView indexPath:indexPath]; @@ -354,7 +407,7 @@ - (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath [cell setText:NSLocalizedString(@"Add Video", nil)]; [cell setTextColor:[UIColor lightGrayColor]]; return cell; - } + } } else { TextFieldTableCell *cell = [TableCellFactory getTextFieldTableCellForDelegate:self table:theTableView indexPath:indexPath]; @@ -401,7 +454,7 @@ - (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath [cell setText:NSLocalizedString(@"Select location", nil)]; [cell setTextColor:[UIColor lightGrayColor]]; } - return cell; + return cell; } } else if (indexPath.section == TableSectionDate) { @@ -449,7 +502,63 @@ - (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath [cell setText:NSLocalizedString(@"Delete Report", nil)]; return cell; } - else { + else if (([customKeySections count] > 0) && ([customKeySections containsObject:[NSNumber numberWithInteger:indexPath.section]])){ + IncidentCustomField *customField = [self.customFields objectForKey:[NSNumber numberWithInteger:indexPath.section]]; + if(customField.fieldType == TextFieldType){ + TextFieldTableCell *cell = [TableCellFactory getTextFieldTableCellForDelegate:self table:theTableView indexPath:indexPath]; + [cell setPlaceholder:NSLocalizedString(@"Enter Information", nil)]; + [cell setText:[self.incident getCustomFieldValue:[customField fieldID]]]; + [cell setReturnKeyType:UIReturnKeyDefault]; + [cell setKeyboardType:UIKeyboardTypeDefault]; + [cell setAutocorrectionType:UITextAutocorrectionTypeYes]; + [cell setAutocapitalizationType:UITextAutocapitalizationTypeSentences]; + return cell; + }else if(customField.fieldType == TextAreaFieldType){ + TextViewTableCell *cell = [TableCellFactory getTextViewTableCellForDelegate:self table:theTableView indexPath:indexPath]; + [cell setPlaceholder:NSLocalizedString(@"Enter Information", nil)]; + [cell setText:[self.incident getCustomFieldValue:[customField fieldID]]]; + [cell setReturnKeyType:UIReturnKeyDefault]; + [cell setKeyboardType:UIKeyboardTypeDefault]; + [cell setAutocorrectionType:UITextAutocorrectionTypeYes]; + [cell setAutocapitalizationType:UITextAutocapitalizationTypeSentences]; + return cell; + }else { + + TextTableCell *cell = [TableCellFactory getTextTableCellForTable:theTableView indexPath:indexPath]; + cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; + cell.selectionStyle = UITableViewCellSelectionStyleGray; + NSString *selectedValue = [[NSString alloc] init]; + if(customField.fieldType == CheckBoxFieldType){ + NSMutableString *tempSelectedValue = [[NSMutableString alloc] init]; + for (int i = 0; i < [customField.defaultValues count] ; i++){ + NSString *tempValue = [self.incident getCustomFieldCheckBoxValue:customField.fieldID choiceNum:i]; + if([tempValue length] > 0){ + [tempSelectedValue appendString:tempValue]; + [tempSelectedValue appendString:@", "]; + } + } + if([tempSelectedValue length] > 0){ + selectedValue = [tempSelectedValue substringToIndex:[tempSelectedValue length] - 2]; + } + }else{ + selectedValue = [self.incident getCustomFieldValue:customField.fieldID]; + } + + if([selectedValue length] > 0){ + [cell setText:selectedValue]; + [cell setTextColor:[UIColor blackColor]]; + }else { + [cell setText:NSLocalizedString(@"Select", nil)]; + [cell setTextColor:[UIColor lightGrayColor]]; + + } + + return cell; + + } + + } + else{ TextFieldTableCell *cell = [TableCellFactory getTextFieldTableCellForDelegate:self table:theTableView indexPath:indexPath]; if (indexPath.section == TableSectionTitle) { [cell setText:self.incident.title]; @@ -459,7 +568,7 @@ - (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath [cell setAutocorrectionType:UITextAutocorrectionTypeYes]; [cell setAutocapitalizationType:UITextAutocapitalizationTypeSentences]; } - return cell; + return cell; } } @@ -470,14 +579,15 @@ - (CGFloat)tableView:(UITableView *)theTableView heightForRowAtIndexPath:(NSInde } return [TextTableCell getCellSizeForText:NSLocalizedString(@"Add Photo", nil) forWidth:theTableView.contentSize.width].height; } - if (indexPath.section == TableSectionDescription) { + + if (indexPath.section == TableSectionDescription ) { if ([Device isIPad]) { return [Device isPortraitMode] ? 250 : 60; } return 120; } if (indexPath.section == TableSectionVideos) { - if ([NSString isNilOrEmpty:[Settings sharedSettings].youtubeLogin] == NO && + if ([NSString isNilOrEmpty:[Settings sharedSettings].youtubeLogin] == NO && [NSString isNilOrEmpty:[Settings sharedSettings].youtubePassword] == NO && [NSString isNilOrEmpty:[Settings sharedSettings].youtubeDeveloperKey] == NO) { return 44; @@ -496,6 +606,22 @@ - (CGFloat)tableView:(UITableView *)theTableView heightForRowAtIndexPath:(NSInde if (indexPath.section == TableSectionNews) { return [[Settings sharedSettings] showReportNewsURL] ? 44 : 0; } + + if(self.customFields != nil){ + NSArray * customKeySections = [self.customFields allKeys]; + if (([customKeySections count] > 0) && ([customKeySections containsObject:[NSNumber numberWithInteger:indexPath.section]])){ + IncidentCustomField *customField = [self.customFields objectForKey:[NSNumber numberWithInteger:indexPath.section]]; + if(customField.fieldType == TextAreaFieldType){ + if ([Device isIPad]) { + return [Device isPortraitMode] ? 250 : 60; + } + return 120; + } + if(customField.fieldType == TextFieldType){ + return 44; + } + } + } return 44; } @@ -516,9 +642,9 @@ - (void)tableView:(UITableView *)theTableView didSelectRowAtIndexPath:(NSIndexPa } } else if (indexPath.section == TableSectionVideos && indexPath.row > 0) { - UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil - delegate:self - cancelButtonTitle:NSLocalizedString(@"Cancel", nil) + UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil + delegate:self + cancelButtonTitle:NSLocalizedString(@"Cancel", nil) destructiveButtonTitle:NSLocalizedString(@"Remove Video", nil) otherButtonTitles:nil]; [actionSheet setTag:indexPath.row - 1]; @@ -529,15 +655,15 @@ - (void)tableView:(UITableView *)theTableView didSelectRowAtIndexPath:(NSIndexPa if (indexPath.section == TableSectionPhotos && indexPath.row == 0) { UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; - [self.imagePickerController showImagePickerForDelegate:self + [self.imagePickerController showImagePickerForDelegate:self resize:[[Settings sharedSettings] resizePhotos] - width:[[Settings sharedSettings] imageWidth] + width:[[Settings sharedSettings] imageWidth] forRect:cell.frame]; } else if (indexPath.section == TableSectionPhotos && indexPath.row > 0) { - UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil - delegate:self - cancelButtonTitle:NSLocalizedString(@"Cancel", nil) + UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil + delegate:self + cancelButtonTitle:NSLocalizedString(@"Cancel", nil) destructiveButtonTitle:NSLocalizedString(@"Remove Photo", nil) otherButtonTitles:nil]; [actionSheet setTag:indexPath.row - 1]; @@ -553,11 +679,13 @@ - (void)tableView:(UITableView *)theTableView didSelectRowAtIndexPath:(NSIndexPa [self presentModalViewController:self.categoryTableViewController animated:YES]; } else if (indexPath.section == TableSectionLocation) { - [self.view setUserInteractionEnabled:NO]; - self.locationSelectViewController.incident = self.incident; - self.locationSelectViewController.modalPresentationStyle = UIModalPresentationFormSheet; - self.locationSelectViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; - [self presentModalViewController:self.locationSelectViewController animated:YES]; + if(indexPath.row == TableSectionLocationCoordinates){ + [self.view setUserInteractionEnabled:NO]; + self.locationSelectViewController.incident = self.incident; + self.locationSelectViewController.modalPresentationStyle = UIModalPresentationFormSheet; + self.locationSelectViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; + [self presentModalViewController:self.locationSelectViewController animated:YES]; + } } else if (indexPath.section == TableSectionDate){ UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; @@ -569,6 +697,24 @@ - (void)tableView:(UITableView *)theTableView didSelectRowAtIndexPath:(NSIndexPa [self.datePicker showWithDate:self.incident.date mode:datePickerMode indexPath:indexPath forRect:rect]; [self.tableView deselectRowAtIndexPath:indexPath animated:YES]; } + else if ((self.customFields != nil) && ([self.customFields count] > 0) && (indexPath.section > TableSectionNews)){ + + if(([[self.customFields objectForKey:[NSNumber numberWithInteger:indexPath.section]] fieldType] != TextFieldType) && + ([[self.customFields objectForKey:[NSNumber numberWithInteger:indexPath.section]] fieldType] != TextAreaFieldType)){ + [self.view setUserInteractionEnabled:NO]; + if ([Device isIPad]) { + self.customFieldTableViewController = [[CustomFieldTableViewController alloc] initWithNibName:@"CustomFieldTableViewController_iPad" bundle:nil]; + }else { + self.customFieldTableViewController = [[CustomFieldTableViewController alloc] initWithNibName:@"CustomFieldTableViewController_iPhone" bundle:nil]; + } + + self.customFieldTableViewController.incident = self.incident; + self.customFieldTableViewController.customField = [self.customFields objectForKey:[NSNumber numberWithInteger:indexPath.section]]; + self.customFieldTableViewController.modalPresentationStyle = UIModalPresentationFormSheet; + self.customFieldTableViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; + [self presentModalViewController:self.customFieldTableViewController animated:YES]; + } + } } #pragma mark - @@ -602,7 +748,16 @@ - (void) textFieldChanged:(TextFieldTableCell *)cell indexPath:(NSIndexPath *)in else { [self setFooter:NSLocalizedString(@"Invalid Video URL", nil) atSection:TableSectionVideos color:[UIColor redColor]]; } - } + }else if ((self.customFields != nil) && ([self.customFields count] > 0)){ + IncidentCustomField *customField = [self.customFields objectForKey:[NSNumber numberWithInteger:indexPath.section]]; + if(customField.fieldType == TextFieldType){ + if([text length] > 0){ + [self.incident addUpdateCustomFieldValue:text forFieldID:customField.fieldID]; + }else { + [self.incident removeCustomField:customField.fieldID]; + } + } + } } - (void) textFieldReturned:(TextFieldTableCell *)cell indexPath:(NSIndexPath *)indexPath text:(NSString *)text { @@ -631,7 +786,16 @@ - (void) textFieldReturned:(TextFieldTableCell *)cell indexPath:(NSIndexPath *)i [self setFooter:NSLocalizedString(@"Invalid Video URL", nil) atSection:TableSectionVideos color:[UIColor redColor]]; } [self.tableView reloadData]; - } + }else if ((self.customFields != nil) && ([self.customFields count] > 0)){ + IncidentCustomField *customField = [self.customFields objectForKey:[NSNumber numberWithInteger:indexPath.section]]; + if(customField.fieldType == TextFieldType){ + if([text length] > 0){ + [self.incident addUpdateCustomFieldValue:text forFieldID:customField.fieldID]; + }else { + [self.incident removeCustomField:customField.fieldID]; + } + } + } [cell hideKeyboard]; } @@ -646,20 +810,38 @@ - (void) textViewFocussed:(TextViewTableCell *)cell indexPath:(NSIndexPath *)ind - (void) textViewChanged:(TextViewTableCell *)cell indexPath:(NSIndexPath *)indexPath text:(NSString *)text { if (indexPath.section == TableSectionDescription) { self.incident.description = text; - } + }else if ((self.customFields != nil) && ([self.customFields count] > 0)){ + IncidentCustomField *customField = [self.customFields objectForKey:[NSNumber numberWithInteger:indexPath.section]]; + if(customField.fieldType == TextAreaFieldType){ + if([text length] > 0){ + [self.incident addUpdateCustomFieldValue:text forFieldID:customField.fieldID]; + }else { + [self.incident removeCustomField:customField.fieldID]; + } + } + } } - (void) textViewReturned:(TextViewTableCell *)cell indexPath:(NSIndexPath *)indexPath text:(NSString *)text { if (indexPath.section == TableSectionDescription) { self.incident.description = text; - } + }else if ((self.customFields != nil) && ([self.customFields count] > 0)){ + IncidentCustomField *customField = [self.customFields objectForKey:[NSNumber numberWithInteger:indexPath.section]]; + if(customField.fieldType == TextAreaFieldType){ + if([text length] > 0){ + [self.incident addUpdateCustomFieldValue:text forFieldID:customField.fieldID]; + }else { + [self.incident removeCustomField:customField.fieldID]; + } + } + } } #pragma mark - #pragma mark DatePickerDelegate - (void) datePickerReturned:(DatePicker *)theDatePicker date:(NSDate *)date indexPath:(NSIndexPath *)indexPath { - self.incident.date = date; + self.incident.date = [self dateWithZeroSeconds:date]; [self.tableView reloadData]; } @@ -687,12 +869,12 @@ - (void) imagePickerDidFinish:(ImagePickerController *)imagePicker image:(UIImag } [self.loadingView hideAfterDelay:1.0]; [self.incident addPhoto:[Photo photoWithImage:image]]; - [self.tableView reloadData]; + [self.tableView reloadData]; } else { [self.loadingView hide]; [self.tableView reloadData]; - [self.alertView showOkWithTitle:NSLocalizedString(@"Photo Error", nil) + [self.alertView showOkWithTitle:NSLocalizedString(@"Photo Error", nil) andMessage:NSLocalizedString(@"There was a problem adding the photo.", nil)]; } } @@ -715,7 +897,7 @@ - (void) actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSIntege else if ([NSLocalizedString(@"Remove Photo", nil) isEqualToString:destructiveButtonTitle]) { [self.incident removePhotoAtIndex:actionSheet.tag]; } - [self.tableView reloadData]; + [self.tableView reloadData]; } } @@ -729,7 +911,7 @@ - (void) locatorFinished:(Locator *)locator latitude:(NSString *)userLatitude lo self.incident.longitude = userLongitude; } [[Locator sharedLocator] lookupAddressForDelegate:self]; - [self setFooter:[NSString stringWithFormat:@"%@, %@", userLatitude, userLongitude] + [self setFooter:[NSString stringWithFormat:@"%@, %@", userLatitude, userLongitude] atSection:TableSectionLocation]; if (self.editing == NO) { [self.tableView reloadData]; @@ -764,7 +946,7 @@ - (void) lookupFailed:(Locator *)locator error:(NSError *)error { - (void) buttonCellClicked:(ButtonTableCell *)cell { DLog(@""); - [self.alertView showYesNoWithTitle:NSLocalizedString(@"Delete Report", nil) + [self.alertView showYesNoWithTitle:NSLocalizedString(@"Delete Report", nil) andMessage:NSLocalizedString(@"Are you sure you want to delete?", nil) forTag:AlertViewDelete]; } @@ -778,11 +960,11 @@ - (void)alertView:(UIAlertView *)theAlertView clickedButtonAtIndex:(NSInteger)bu self.incident = nil; if (self.editing) { [self.view endEditing:YES]; - [self performSelector:@selector(dismissModalViewController) withObject:nil afterDelay:0.3]; + [self performSelector:@selector(dismissModalViewController) withObject:nil afterDelay:0.3]; } else { [self dismissModalViewControllerAnimated:YES]; - } + } } else if (theAlertView.tag == AlertViewDelete){ DLog(@"DELETE"); @@ -790,11 +972,11 @@ - (void)alertView:(UIAlertView *)theAlertView clickedButtonAtIndex:(NSInteger)bu self.incident = nil; if (self.editing) { [self.view endEditing:YES]; - [self performSelector:@selector(dismissModalViewController) withObject:nil afterDelay:0.3]; + [self performSelector:@selector(dismissModalViewController) withObject:nil afterDelay:0.3]; } else { [self dismissModalViewControllerAnimated:YES]; - } + } } } [self.loadingView hide]; @@ -832,4 +1014,30 @@ - (void) videoPickerDidFail:(VideoPickerController *)videoPicker withError:(NSSt - (NSString *)titleForVideo { return self.incident.title; } - (NSString *)descriptionForVideo { return self.incident.description; } +#pragma mark - +#pragma mark Custom Fields + +- (void) initCustomFieldsDictionary{ + self.customFields = [[NSMutableDictionary alloc] init]; + self.incident.customFields = [[NSMutableArray alloc]init]; + NSInteger currentSection = TableSectionNews + 1; + + NSArray * customFieldsArray = [[Settings sharedSettings] incidentCustomFieldsArray]; + if((customFieldsArray != nil) && ([customFieldsArray count] > 0)){ + for(NSDictionary *dictionary in customFieldsArray){ + IncidentCustomField * customField = [[IncidentCustomField alloc] initWithDictionary:dictionary]; + [self.customFields setObject:customField forKey:[NSNumber numberWithInteger:currentSection]]; + [self.incident.customFields addObject:customField]; + currentSection++; + } + } + +} + +- (NSDate *)dateWithZeroSeconds:(NSDate *)date +{ + NSTimeInterval time = floor([date timeIntervalSinceReferenceDate] / 60.0) * 60.0; + return [NSDate dateWithTimeIntervalSinceReferenceDate:time]; +} + @end diff --git a/Classes/Controllers/IncidentDetailsViewController.h b/Classes/Controllers/IncidentDetailsViewController.h index 97336c0..cd9b970 100644 --- a/Classes/Controllers/IncidentDetailsViewController.h +++ b/Classes/Controllers/IncidentDetailsViewController.h @@ -39,10 +39,12 @@ @public Incident *incident; NSArray *incidents; + NSDictionary *customFields; } @property(nonatomic,retain) Incident *incident; @property(nonatomic,retain) NSArray *incidents; +@property(nonatomic,retain) NSDictionary *customFields; - (IBAction) nextPrevious:(id)sender; - (IBAction) sendEmail:(id)sender; diff --git a/Classes/Controllers/IncidentDetailsViewController.m b/Classes/Controllers/IncidentDetailsViewController.m index a71692e..5f3126d 100644 --- a/Classes/Controllers/IncidentDetailsViewController.m +++ b/Classes/Controllers/IncidentDetailsViewController.m @@ -47,6 +47,7 @@ #import "Settings.h" #import "Ushahidi.h" #import "Device.h" +#import "incidentCustomField.h" @interface IncidentDetailsViewController () @@ -58,6 +59,7 @@ @implementation IncidentDetailsViewController #define kBitlyApiKey @"BitlyApiKey" @synthesize incident, incidents; +@synthesize customFields; #pragma mark - #pragma mark Enums @@ -116,57 +118,71 @@ - (IBAction) sendTweet:(id)sender { - (IBAction) sendSMS:(id)sender { DLog(@""); - NSMutableString *message = [NSMutableString string]; - if ([self.incident hasURL]) { - NSURL *link = [[Ushahidi sharedUshahidi] getUrlForIncident:self.incident]; - [message appendFormat:@"%@, %@ %@", [[Ushahidi sharedUshahidi] deploymentName], self.incident.title, [link absoluteString]]; - } - else { - [message appendFormat:@"%@, %@", [[Ushahidi sharedUshahidi] deploymentName], self.incident.title]; - } - [self.sms sendToRecipients:nil + if ([MFMessageComposeViewController canSendText]){ + NSMutableString *message = [NSMutableString string]; + if ([self.incident hasURL]) { + NSURL *link = [[Ushahidi sharedUshahidi] getUrlForIncident:self.incident]; + [message appendFormat:@"%@, %@ %@", [[Ushahidi sharedUshahidi] deploymentName], self.incident.title, [link absoluteString]]; + } + else { + [message appendFormat:@"%@, %@", [[Ushahidi sharedUshahidi] deploymentName], self.incident.title]; + } + [self.sms sendToRecipients:nil withMessage:message]; + }else{ + UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil message:@"This device is not configured to send SMS" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; + [alertView show]; + [alertView release]; + } } - (IBAction) sendEmail:(id)sender { DLog(@""); - NSMutableString *message = [NSMutableString string]; - if ([self.incident hasURL]) { - NSURL *link = [[Ushahidi sharedUshahidi] getUrlForIncident:self.incident]; - [message appendFormat:@"%@: %@
", NSLocalizedString(@"Title", nil), [link absoluteString], self.incident.title]; - } - else { - [message appendFormat:@"%@: %@
", NSLocalizedString(@"Title", nil), self.incident.title]; - } - [message appendFormat:@"%@: %@
", NSLocalizedString(@"Date", nil), self.incident.dateTimeString]; - if ([NSString isNilOrEmpty:self.incident.latitude] == NO && [NSString isNilOrEmpty:self.incident.longitude] == NO) { - DLog(@"http://maps.google.com/maps?q=%@,%@(%@)", self.incident.latitude, self.incident.longitude, self.incident.location); - NSString *locationURL = [NSString stringWithFormat:@"http://maps.google.com/maps?q=%@,%@(%@)", self.incident.latitude, self.incident.longitude, self.incident.location]; - [message appendFormat:@"%@: %@
", NSLocalizedString(@"Location", nil), locationURL, self.incident.location]; - } - else { - [message appendFormat:@"%@: %@
", NSLocalizedString(@"Location", nil), self.incident.location]; - } - [message appendFormat:@"%@: %@
", NSLocalizedString(@"Category", nil), self.incident.categoryNames]; - [message appendFormat:@"%@: %@
", NSLocalizedString(@"Description", nil), self.incident.description]; - if (self.incident.news != nil && [self.incident.news count] > 0) { - [message appendFormat:@"%@:
    ", NSLocalizedString(@"News", nil)]; - for (News *news in self.incident.news) { - [message appendFormat:@"
  • %@
  • ", news.url, news.url]; - } - [message appendFormat:@"
"]; - } - NSMutableArray *photos = [NSMutableArray array]; - if (self.incident.map != nil) { - [photos addObject:self.incident.map]; - } - if ([self.incident.photos count] > 0) { - [photos addObjectsFromArray:self.incident.photoImages]; - } - [self.email sendToRecipients:nil + if ([MFMailComposeViewController canSendMail]){ + NSMutableString *message = [NSMutableString string]; + if ([self.incident hasURL]) { + NSURL *link = [[Ushahidi sharedUshahidi] getUrlForIncident:self.incident]; + [message appendFormat:@"%@: %@
", NSLocalizedString(@"Title", nil), [link absoluteString], self.incident.title]; + } + else { + [message appendFormat:@"%@: %@
", NSLocalizedString(@"Title", nil), self.incident.title]; + } + [message appendFormat:@"%@: %@
", NSLocalizedString(@"Date", nil), self.incident.dateTimeString]; + if ([NSString isNilOrEmpty:self.incident.latitude] == NO && [NSString isNilOrEmpty:self.incident.longitude] == NO) { + DLog(@"http://maps.google.com/maps?q=%@,%@(%@)", self.incident.latitude, self.incident.longitude, self.incident.location); + NSString *locationURL = [NSString stringWithFormat:@"http://maps.google.com/maps?q=%@,%@(%@)", self.incident.latitude, self.incident.longitude, self.incident.location]; + [message appendFormat:@"%@: %@
", NSLocalizedString(@"Location", nil), locationURL, self.incident.location]; + } + else { + [message appendFormat:@"%@: %@
", NSLocalizedString(@"Location", nil), self.incident.location]; + } + [message appendFormat:@"%@: %@
", NSLocalizedString(@"Category", nil), self.incident.categoryNames]; + [message appendFormat:@"%@: %@
", NSLocalizedString(@"Description", nil), self.incident.description]; + if (self.incident.news != nil && [self.incident.news count] > 0) { + [message appendFormat:@"%@:
    ", NSLocalizedString(@"News", nil)]; + for (News *news in self.incident.news) { + [message appendFormat:@"
  • %@
  • ", news.url, news.url]; + } + [message appendFormat:@"
"]; + } + NSMutableArray *photos = [NSMutableArray array]; + if (self.incident.map != nil) { + [photos addObject:self.incident.map]; + } + if ([self.incident.photos count] > 0) { + [photos addObjectsFromArray:self.incident.photoImages]; + } + [self.email sendToRecipients:nil withMessage:message withSubject:self.incident.title withPhotos:photos]; + } + else { + + UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil message:@"This device is not configured to send an email" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; + [alertView show]; + [alertView release]; + } } #pragma mark - @@ -205,6 +221,18 @@ - (void) viewWillAppear:(BOOL)animated { if (self.willBePushed) { [self.tableView setContentOffset:CGPointMake(0, 0) animated:NO]; } + NSMutableDictionary *tmpCustomField = [[NSMutableDictionary alloc]init]; + NSInteger currentSectionIndex = TableSectionVideo+1; + for(IncidentCustomField *custField in self.incident.customFields){ + [self setHeader:custField.fieldName atSection:currentSectionIndex]; + [tmpCustomField setObject:custField forKey:[NSNumber numberWithInteger:currentSectionIndex]]; + currentSectionIndex++; + } + if(tmpCustomField.count > 0){ + self.customFields = [[NSDictionary alloc]initWithDictionary:tmpCustomField]; + }else{ + self.customFields = nil; + } [self.tableView reloadData]; [[Settings sharedSettings] setLastIncident:self.incident.identifier]; } @@ -216,6 +244,7 @@ - (void) viewDidAppear:(BOOL)animated { - (void)dealloc { [incident release]; [incidents release]; + [customFields release]; [super dealloc]; } @@ -223,7 +252,7 @@ - (void)dealloc { #pragma mark UITableView - (NSInteger)numberOfSectionsInTableView:(UITableView *)theTableView { - return 10; + return 10+ [self.incident.customFields count]; } - (CGFloat)tableView:(UITableView *)theTableView heightForHeaderInSection:(NSInteger)section { @@ -259,6 +288,13 @@ - (NSInteger)tableView:(UITableView *)theTableView numberOfRowsInSection:(NSInte } - (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + + NSInteger TableSectionDelete = TableSectionNews + 1; + NSArray * customKeySections = [[NSArray alloc] init]; + if(self.customFields != nil){ + TableSectionDelete = TableSectionVideo + [self.customFields count] + 1; + customKeySections = [self.customFields allKeys]; + } if (indexPath.section == TableSectionLocation && indexPath.row == 1) { if (self.incident.map != nil) { ImageTableCell *cell = [TableCellFactory getImageTableCellWithImage:nil table:theTableView indexPath:indexPath]; @@ -349,7 +385,19 @@ - (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath cell.selectionStyle = UITableViewCellSelectionStyleNone; } return cell; - } + }else if (([customKeySections count] > 0) && ([customKeySections containsObject:[NSNumber numberWithInteger:indexPath.section]]) && (indexPath.section > TableSectionVideo )){ + IncidentCustomField *customField = [self.customFields objectForKey:[NSNumber numberWithInteger:indexPath.section]]; + TextTableCell *cell = [TableCellFactory getTextTableCellForTable:theTableView indexPath:indexPath]; + cell.accessoryType = UITableViewCellAccessoryNone; + cell.selectionStyle = UITableViewCellSelectionStyleNone; + if((customField.fieldResponse != nil) && (customField.fieldResponse.length > 0)){ + cell.textLabel.text = customField.fieldResponse; + }else{ + cell.textLabel.text = @"No Information Available"; + } + return cell; + + } else { TextTableCell *cell = [TableCellFactory getTextTableCellForTable:theTableView indexPath:indexPath]; cell.accessoryType = UITableViewCellAccessoryNone; diff --git a/Classes/Controllers/LocationSelectViewController.m b/Classes/Controllers/LocationSelectViewController.m index 8ab6e14..122d6dd 100644 --- a/Classes/Controllers/LocationSelectViewController.m +++ b/Classes/Controllers/LocationSelectViewController.m @@ -85,10 +85,14 @@ - (void) populateMapPins:(BOOL)centerMap { longitude:loc.longitude object:loc pinColor:MKPinAnnotationColorRed]; - if (self.incident.userLocation == NO && + NSString *selfLat = [NSString stringWithFormat:@"%@ %@",self.latitude,@"." ]; + NSString *selfLon = [NSString stringWithFormat:@"%@ %@",self.longitude,@"." ]; + NSString *incidentLat = [NSString stringWithFormat:@"%@ %@",loc.latitude,@"." ]; + NSString *incidentLon = [NSString stringWithFormat:@"%@ %@",loc.longitude,@"." ]; + if (self.incident.userLocation == NO && [loc.name isEqualToString:self.location] && - [loc.latitude isEqualToString:self.latitude] && - [loc.longitude isEqualToString:self.longitude]) { + [selfLat isEqualToString:incidentLat] && + [selfLon isEqualToString:incidentLon]) { selected = mapAnnotation; } } @@ -227,10 +231,14 @@ - (void)mapViewDidFinishLoadingMap:(MKMapView *)theMapView { if ([annotation isKindOfClass:[MapAnnotation class]]) { MapAnnotation *mapAnnotation = (MapAnnotation *)annotation; Location *theLocation = (Location *)mapAnnotation.object; + NSString *selfLat = [NSString stringWithFormat:@"%@ %@",self.latitude,@"." ]; + NSString *selfLon = [NSString stringWithFormat:@"%@ %@",self.longitude,@"." ]; + NSString *incidentLat = [NSString stringWithFormat:@"%@ %@",theLocation.latitude,@"." ]; + NSString *incidentLon = [NSString stringWithFormat:@"%@ %@",theLocation.longitude,@"." ]; if (theLocation != nil && [theLocation.name isEqualToString:self.location] && - [theLocation.latitude isEqualToString:self.latitude] && - [theLocation.longitude isEqualToString:self.longitude]) { + [selfLat isEqualToString:incidentLat] && + [selfLon isEqualToString:incidentLon]) { [self.mapView selectAnnotation:annotation animated:NO]; break; } diff --git a/Classes/Models/Deployment.h b/Classes/Models/Deployment.h index 5e7f576..a7df30d 100644 --- a/Classes/Models/Deployment.h +++ b/Classes/Models/Deployment.h @@ -45,6 +45,7 @@ NSMutableDictionary *checkins; NSMutableDictionary *users; NSMutableArray *pending; + NSMutableArray *incidentCustomFields; } @property(nonatomic, retain) NSString *identifier; @@ -65,6 +66,7 @@ @property(nonatomic, retain) NSMutableDictionary *checkins; @property(nonatomic, retain) NSMutableDictionary *users; @property(nonatomic, retain) NSMutableArray *pending; +@property(nonatomic, retain) NSMutableArray *incidentCustomFields; @property(nonatomic, assign) BOOL supportsCheckins; @@ -95,11 +97,14 @@ - (NSString *) getUrlForIncidentsByLocationID:(NSString *)locationID; - (NSString *) getUrlForIncidentsByLocationName:(NSString *)locationName; - (NSString *) getUrlForIncidentsBySinceID:(NSString *)sinceID; +- (NSString *) getURlForIncidentCustomFields; +- (NSString *) getUrlforIncidentByID: (NSString *)ID; - (NSString *) getUrlForIncidentCount; - (NSString *) getUrlForGeoGraphicMidPoint; - (NSString *) getUrlForDeploymentVersion; + - (NSString *) getUrlForPostReport; - (NSString *) getUrlForPostNews; - (NSString *) getUrlForPostVideo; diff --git a/Classes/Models/Deployment.m b/Classes/Models/Deployment.m index 47c97d7..dfb01f6 100644 --- a/Classes/Models/Deployment.m +++ b/Classes/Models/Deployment.m @@ -35,7 +35,7 @@ @implementation Deployment @synthesize identifier, name, description, url, domain, version; @synthesize categories, locations, incidents, checkins, users; @synthesize discovered, synced, added, lastIncidentId, lastCheckinId, pending; -@synthesize supportsCheckins; +@synthesize supportsCheckins, incidentCustomFields; - (id)initWithName:(NSString *)theName url:(NSString *)theUrl { if (self = [super init]){ @@ -133,6 +133,9 @@ - (void) archive { [NSKeyedArchiver archiveObject:self.pending forPath:path andKey:@"pending"]; DLog(@"pending: %d", [self.pending count]); + + [NSKeyedArchiver archiveObject:self.incidentCustomFields forPath:path andKey:@"incidentCustomFields"]; + DLog(@"incidentCustomFields: %d", [self.incidentCustomFields count]); } - (void) purge { @@ -143,6 +146,7 @@ - (void) purge { [self.checkins removeAllObjects]; [self.users removeAllObjects]; [self.pending removeAllObjects]; + [self.incidentCustomFields removeAllObjects]; } - (void) unarchive { @@ -172,6 +176,10 @@ - (void) unarchive { self.pending = [NSKeyedUnarchiver unarchiveObjectWithPath:path andKey:@"pending"]; if (self.pending == nil) self.pending = [[NSMutableArray alloc] init]; DLog(@"pending: %d", [self.pending count]); + + self.incidentCustomFields = [NSKeyedUnarchiver unarchiveObjectWithPath:path andKey:@"incidentCustomFields"]; + if (self.incidentCustomFields == nil) self.incidentCustomFields = [[NSMutableArray alloc] init]; + DLog(@"incidentCustomFields: %d", [self.incidentCustomFields count]); } - (NSString *) archiveFolder { @@ -222,6 +230,7 @@ - (void)dealloc { [added release]; [discovered release]; [version release]; + [incidentCustomFields release]; [super dealloc]; } @@ -316,6 +325,18 @@ - (NSString *) getUrlForGeoGraphicMidPoint { return [self.url appendUrlStringWithFormat:@"api?task=geographicmidpoint&resp=json"]; } +- (NSString *) getURlForIncidentCustomFields{ + NSString *selfURL = [[NSString alloc] initWithString:self.url]; + [selfURL appendUrlStringWithFormat:@"api?task=customforms&by=fields&id=2&resp=json"]; + NSLog(@"self.url append: %@", selfURL); + + return [self.url appendUrlStringWithFormat:@"api?task=customforms&by=fields&id=2&resp=json"]; +} + +- (NSString *) getUrlforIncidentByID:(NSString *)ID { + return [self.url appendUrlStringWithFormat:@"api?task=incidents&by=incidentid&id=%@&resp=json", ID]; +} + #pragma mark - #pragma mark System diff --git a/Classes/Models/Incident.h b/Classes/Models/Incident.h index 8a63cba..0134482 100644 --- a/Classes/Models/Incident.h +++ b/Classes/Models/Incident.h @@ -26,6 +26,18 @@ @class Video; @class Category; +#define customFieldUploadText @"custom_field" + +typedef enum { + TextFieldType = 1, + TextAreaFieldType = 2, + DateFieldType = 3, + PasswordFieldType = 4, + RadioFieldType = 5, + CheckBoxFieldType = 6, + DropDownFieldType = 7 +} CustomFieldType; + @interface Incident : NSObject { @public @@ -75,7 +87,8 @@ @property(nonatomic,retain) NSMutableArray *sounds; @property(nonatomic,retain) NSMutableArray *videos; @property(nonatomic,retain) NSMutableArray *categories; -@property(nonatomic,retain) NSMutableArray *customFormEntries; +@property(nonatomic,retain) NSMutableDictionary *customFormEntries; +@property(nonatomic,retain) NSMutableArray *customFields; @property(nonatomic,retain) NSString *errors; @@ -101,6 +114,7 @@ @property(nonatomic,readonly) BOOL hasDate; @property(nonatomic,readonly) BOOL hasPhotos; + - (void) addPhoto:(Photo *)photo; - (void) addNews:(News *)news; - (void) addSound:(Sound *)sound; @@ -123,4 +137,11 @@ - (NSComparisonResult)compareByDate:(Incident *)incident; - (NSComparisonResult)compareByVerified:(Incident *)incident; +- (void)addCustomFieldCheckBoxChoice:(NSString *)value forFieldID:(NSInteger) customFieldId choiceNum:(NSInteger)choiceNum; +- (void)removeCustomFieldCheckBoxChoice:(NSInteger) customFieldId choiceNum:(NSInteger)choiceNum; +- (NSString *)getCustomFieldCheckBoxValue:(NSInteger) customFieldId choiceNum:(NSInteger)choiceNum; +- (void)addUpdateCustomFieldValue:(NSString *)value forFieldID:(NSInteger) customFieldID; +- (void)removeCustomField:(NSInteger) customFieldID; +- (NSString *)getCustomFieldValue:(NSInteger) customFieldID; + @end diff --git a/Classes/Models/Incident.m b/Classes/Models/Incident.m index c7527a2..4b81a8d 100644 --- a/Classes/Models/Incident.m +++ b/Classes/Models/Incident.m @@ -28,6 +28,7 @@ #import "NSDate+Extension.h" #import "NSDictionary+Extension.h" #import "NSString+Extension.h" +#import "IncidentCustomField.h" @interface Incident () @@ -40,7 +41,7 @@ @implementation Incident @synthesize identifier, title, description, date; @synthesize map; @synthesize active, verified, uploading, pending, userLocation; -@synthesize news, photos, sounds, videos, categories, customFormEntries; +@synthesize news, photos, sounds, videos, categories, customFormEntries,customFields; @synthesize location, latitude, longitude; @synthesize errors; @@ -53,9 +54,10 @@ - (id)initWithDefaultValues { self.categories = [[NSMutableArray alloc] initWithCapacity:0]; self.latitude = nil; self.longitude = nil; - self.date = [NSDate date]; + self.date = [self dateWithZeroSeconds:[NSDate date]]; self.userLocation = YES; - self.customFormEntries = [[NSMutableArray alloc] initWithCapacity:0]; + self.customFormEntries = [[NSMutableDictionary alloc] initWithCapacity:0]; + self.customFields = [[NSMutableArray alloc] initWithCapacity:0]; } return self; } @@ -71,7 +73,7 @@ - (id)initWithDictionary:(NSDictionary *)dictionary { self.verified = [dictionary boolForKey:@"incidentverified"]; NSString *dateString = [dictionary objectForKey:@"incidentdate"]; if (dateString != nil) { - self.date = [NSDate dateFromString:dateString]; + self.date = [self dateWithZeroSeconds:[NSDate dateFromString:dateString]]; } self.location = [dictionary stringForKey:@"locationname"]; self.latitude = [dictionary stringForKey:@"locationlatitude"]; @@ -104,6 +106,18 @@ - (void)encodeWithCoder:(NSCoder *)encoder { else { [encoder encodeObject:nil forKey:@"map"]; } + if(self.customFormEntries != nil){ + [encoder encodeObject:self.customFormEntries forKey:@"customFormEntries"]; + }else{ + [encoder encodeObject:nil forKey:@"customFormEntries"]; + } + + if(self.customFormEntries != nil){ + [encoder encodeObject:self.customFields forKey:@"customFields"]; + }else{ + [encoder encodeObject:nil forKey:@"customFields"]; + } + } - (id)initWithCoder:(NSCoder *)decoder { @@ -137,6 +151,12 @@ - (id)initWithCoder:(NSCoder *)decoder { self.categories = [decoder decodeObjectForKey:@"categories"]; if (self.categories == nil) self.categories = [NSMutableArray array]; + + self.customFormEntries = [decoder decodeObjectForKey:@"customFormEntries"]; + if (self.customFormEntries == nil) self.customFormEntries = [NSMutableDictionary dictionary]; + + self.customFields = [decoder decodeObjectForKey:@"customFields"]; + if (self.customFields == nil) self.customFields = [NSMutableArray array]; } return self; } @@ -161,12 +181,17 @@ - (BOOL) matchesString:(NSString *)string { } - (BOOL) isDuplicate:(Incident *)incident { - return [self.title isEqualToString:incident.title] && + NSString *selfLat = [NSString stringWithFormat:@"%@ %@",self.latitude,@"." ]; + NSString *selfLon = [NSString stringWithFormat:@"%@ %@",self.longitude,@"." ]; + NSString *incidentLat = [NSString stringWithFormat:@"%@ %@",incident.latitude,@"." ]; + NSString *incidentLon = [NSString stringWithFormat:@"%@ %@",incident.longitude,@"." ]; + + return [self.title isEqualToString:incident.title] && [self.description isEqualToString:incident.description] && [self.date isEqualToDate:incident.date] && [self.location isEqualToString:incident.location] && - [self.latitude isEqualToString:incident.latitude] && - [self.longitude isEqualToString:incident.longitude]; + [selfLat isEqualToString:incidentLat] && + [selfLon isEqualToString:incidentLon]; } - (NSString *) dateTimeString { @@ -267,7 +292,9 @@ - (void) removeCategory:(Category *)category { - (BOOL) hasCategory:(Category *)category { for (Category *current in self.categories) { - if ([current.identifier isEqualToString:category.identifier]) { + NSString *currentIdentifier = [NSString stringWithFormat:@"%@%@",current.identifier,@"."]; + NSString *categoryIdentifier = [NSString stringWithFormat:@"%@%@",category.identifier,@"."]; + if ([currentIdentifier isEqualToString:categoryIdentifier]) { return YES; } } @@ -372,6 +399,140 @@ - (NSComparisonResult)compareByVerified:(Incident *)incident { return incident.verified > self.verified; } +- (void)addCustomFieldCheckBoxChoice:(NSString *)value forFieldID:(NSInteger) customFieldId choiceNum:(NSInteger)choiceNum{ + + if(customFormEntries == nil){ + customFormEntries = [[NSMutableDictionary alloc] init]; + } + + [customFormEntries setObject:value forKey:[NSString stringWithFormat:@"%@[%d-%d]",customFieldUploadText,customFieldId,choiceNum]]; + + IncidentCustomField *currentCustomField = nil; + for(IncidentCustomField *custField in customFields){ + if(custField.fieldID == customFieldId){ + currentCustomField = custField; + } + } + if(currentCustomField != nil){ + NSMutableString *tempSelectedValue = [[NSMutableString alloc] init]; + for (int i = 0; i < [currentCustomField.defaultValues count] ; i++){ + NSString *tempValue = [self getCustomFieldCheckBoxValue:customFieldId choiceNum:i]; + if([tempValue length] > 0){ + [tempSelectedValue appendString:tempValue]; + [tempSelectedValue appendString:@", "]; + } + } + if([tempSelectedValue length] > 0){ + currentCustomField.fieldResponse = [tempSelectedValue substringToIndex:[tempSelectedValue length] - 2]; + }else{ + currentCustomField.fieldResponse = [[NSString alloc]initWithString:@""]; + } + } + + + +} + +- (void)removeCustomFieldCheckBoxChoice:(NSInteger) customFieldId choiceNum:(NSInteger)choiceNum{ + + if((customFormEntries != nil)&&([customFormEntries count] > 0)){ + NSArray *keys = [customFormEntries allKeys]; + if([keys containsObject:[NSString stringWithFormat:@"%@[%d-%d]",customFieldUploadText,customFieldId,choiceNum]]){ + [customFormEntries removeObjectForKey:[NSString stringWithFormat:@"%@[%d-%d]",customFieldUploadText,customFieldId,choiceNum]]; + } + } + + IncidentCustomField *currentCustomField = nil; + for(IncidentCustomField *custField in customFields){ + if(custField.fieldID == customFieldId){ + currentCustomField = custField; + } + } + if(currentCustomField != nil){ + NSMutableString *tempSelectedValue = [[NSMutableString alloc] init]; + for (int i = 0; i < [currentCustomField.defaultValues count] ; i++){ + NSString *tempValue = [self getCustomFieldCheckBoxValue:customFieldId choiceNum:i]; + if([tempValue length] > 0){ + [tempSelectedValue appendString:tempValue]; + [tempSelectedValue appendString:@", "]; + } + } + if([tempSelectedValue length] > 0){ + currentCustomField.fieldResponse = [tempSelectedValue substringToIndex:[tempSelectedValue length] - 2]; + }else{ + currentCustomField.fieldResponse = [[NSString alloc]initWithString:@""]; + } + } + +} + +- (NSString *)getCustomFieldCheckBoxValue:(NSInteger) customFieldId choiceNum:(NSInteger)choiceNum{ + if((customFormEntries != nil)&&([customFormEntries count] > 0)){ + return [customFormEntries objectForKey:[NSString stringWithFormat:@"%@[%d-%d]",customFieldUploadText,customFieldId,choiceNum]]; + } + return nil; +} + +- (void)addUpdateCustomFieldValue:(NSDictionary *)value forFieldID:(NSInteger) customFieldID{ + + + if(customFormEntries == nil){ + customFormEntries = [[NSMutableDictionary alloc] init]; + } + + [customFormEntries setObject:value forKey:[NSString stringWithFormat:@"%@[%d]",customFieldUploadText,customFieldID]]; + + IncidentCustomField *currentCustomField = [[IncidentCustomField alloc]init]; + for(IncidentCustomField *custField in customFields){ + if(custField.fieldID == customFieldID){ + currentCustomField = custField; + } + } + if(currentCustomField != nil){ + if([self getCustomFieldValue:customFieldID] != nil){ + currentCustomField.fieldResponse = [[NSString alloc]initWithString:[self getCustomFieldValue:customFieldID]]; + }else{ + currentCustomField.fieldResponse = [[NSString alloc]initWithString:@""]; + } + } +} + +- (void)removeCustomField:(NSInteger) customFieldID{ + if((customFormEntries != nil)&&([customFormEntries count] > 0)){ + NSArray *keys = [customFormEntries allKeys]; + if([keys containsObject:[NSString stringWithFormat:@"%@[%d]",customFieldUploadText,customFieldID]]){ + [customFormEntries removeObjectForKey:[NSString stringWithFormat:@"%@[%d]",customFieldUploadText,customFieldID]]; + } + } + IncidentCustomField *currentCustomField = nil; + for(IncidentCustomField *custField in customFields){ + if(custField.fieldID == customFieldID){ + currentCustomField = custField; + } + } + if(currentCustomField != nil){ + if([self getCustomFieldValue:customFieldID] != nil){ + currentCustomField.fieldResponse = [[NSString alloc]initWithString:[self getCustomFieldValue:customFieldID]]; + }else{ + currentCustomField.fieldResponse = [[NSString alloc]initWithString:@""]; + } + } +} + +- (NSString *)getCustomFieldValue:(NSInteger) customFieldID{ + + if((customFormEntries != nil)&&([customFormEntries count] > 0)){ + return [customFormEntries objectForKey:[NSString stringWithFormat:@"%@[%d]",customFieldUploadText,customFieldID]]; + } + return nil; +} + +- (NSDate *)dateWithZeroSeconds:(NSDate *)dateTmp +{ + NSTimeInterval time = floor([dateTmp timeIntervalSinceReferenceDate] / 60.0) * 60.0; + return [NSDate dateWithTimeIntervalSinceReferenceDate:time]; +} + - (void)dealloc { [identifier release]; [title release]; @@ -387,6 +548,8 @@ - (void)dealloc { [categories release]; [errors release]; [map release]; + [customFormEntries release]; + [customFields release]; [super dealloc]; } diff --git a/Classes/Models/IncidentCustomField.h b/Classes/Models/IncidentCustomField.h new file mode 100644 index 0000000..cb992d1 --- /dev/null +++ b/Classes/Models/IncidentCustomField.h @@ -0,0 +1,34 @@ +// +// IncidentCustomField.h +// Ushahidi_iOS +// +// Created by Bhadrik Patel on 9/15/12. +// Copyright (c) 2012 Ushahidi. All rights reserved. +// + +#import + +@interface IncidentCustomField : NSObject{ + + +@public + NSInteger fieldID; + NSInteger fieldType; + NSArray * defaultValues; + NSString * fieldName; + NSString * fieldResponse; + BOOL isRequired; + +} + +@property(nonatomic,assign) NSInteger fieldID; +@property(nonatomic,assign) NSInteger fieldType; +@property(nonatomic,retain) NSArray * defaultValues; +@property(nonatomic,retain) NSString * fieldName; +@property(nonatomic,retain) NSString * fieldResponse; +@property(nonatomic,assign) BOOL isRequired; + + + +- (id)initWithDictionary:(NSDictionary *)dictionary; +@end diff --git a/Classes/Models/IncidentCustomField.m b/Classes/Models/IncidentCustomField.m new file mode 100644 index 0000000..0e522fa --- /dev/null +++ b/Classes/Models/IncidentCustomField.m @@ -0,0 +1,69 @@ +// +// IncidentCustomField.m +// Ushahidi_iOS +// +// Created by Bhadrik Patel on 9/15/12. +// Copyright (c) 2012 Ushahidi. All rights reserved. +// + +#import "IncidentCustomField.h" +#import "NSDictionary+Extension.h" +#import "NSString+Extension.h" +#import "NSDate+Extension.h" + +@implementation IncidentCustomField +@synthesize fieldID,fieldType; +@synthesize fieldName,defaultValues; +@synthesize isRequired; +@synthesize fieldResponse; + + +- (id)initWithDictionary:(NSDictionary *)dictionary { + if (self = [super init]) { + DLog(@"dictionary: %@", dictionary); + if (dictionary != nil) { + self.fieldID = [[dictionary objectForKey:@"id"] intValue]; + self.fieldType = [[dictionary objectForKey:@"type"]intValue]; + self.fieldName = [[NSString alloc] initWithString:[dictionary stringForKey:@"name"]]; + if([dictionary objectForKey:@"default"] != nil){ + NSString *tmpDefault = [dictionary stringForKey:@"default"]; + self.defaultValues = [tmpDefault componentsSeparatedByString:@","]; + }else { + self.defaultValues = [[NSArray alloc] init]; + } + NSInteger requiredInt = [[dictionary objectForKey:@"required"]intValue]; + if(requiredInt == 0){ + self.isRequired = NO; + }else { + self.isRequired = YES ; + } + } + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeObject:[NSNumber numberWithInt:self.fieldID] forKey:@"fieldID"]; + [encoder encodeObject:[NSNumber numberWithInt:self.fieldType] forKey:@"fieldType"]; + [encoder encodeObject:self.fieldName forKey:@"fieldName"]; + [encoder encodeObject:self.defaultValues forKey:@"defaultValues"]; + [encoder encodeObject:self.fieldResponse forKey:@"fieldResponse"]; + [encoder encodeBool:self.isRequired forKey:@"isRequired"]; +} + +- (id)initWithCoder:(NSCoder *)aDecoder +{ + if(self = [super init]) + { + self.fieldID = [[aDecoder decodeObjectForKey:@"fieldID"] intValue]; + self.fieldType = [[aDecoder decodeObjectForKey:@"fieldType"] intValue]; + self.fieldName = [aDecoder decodeObjectForKey:@"fieldName"]; + self.defaultValues = [aDecoder decodeObjectForKey:@"defaultValues"]; + self.fieldResponse = [aDecoder decodeObjectForKey:@"fieldResponse"]; + self.isRequired = [aDecoder decodeBoolForKey:@"isRequired"]; + + } +return self; +} +@end diff --git a/Classes/Models/Location.m b/Classes/Models/Location.m index 20c1395..5df2614 100644 --- a/Classes/Models/Location.m +++ b/Classes/Models/Location.m @@ -68,9 +68,14 @@ - (NSComparisonResult)compareByName:(Location *)location { } - (BOOL) equals:(NSString *)theName latitude:(NSString *)theLatitude longitude:(NSString *)theLongitude { - return [self.name isEqualToString:theName] && - [self.latitude isEqualToString:theLatitude] && - [self.longitude isEqualToString:theLongitude]; + NSString *selfLat = [NSString stringWithFormat:@"%@ %@",self.latitude,@"." ]; + NSString *selfLon = [NSString stringWithFormat:@"%@ %@",self.longitude,@"." ]; + NSString *incidentLat = [NSString stringWithFormat:@"%@ %@",theLatitude,@"." ]; + NSString *incidentLon = [NSString stringWithFormat:@"%@ %@",theLongitude,@"." ]; + + return [self.name isEqualToString:theName] && + [selfLat isEqualToString:incidentLat] && + [selfLon isEqualToString:incidentLon]; } - (void)dealloc { diff --git a/Resources/NIBs/CustomFieldTableViewController_iPhone.xib b/Resources/NIBs/CustomFieldTableViewController_iPhone.xib new file mode 100644 index 0000000..e006534 --- /dev/null +++ b/Resources/NIBs/CustomFieldTableViewController_iPhone.xib @@ -0,0 +1,361 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBUINavigationItem + IBUIBarButtonItem + IBUITableView + IBUIView + IBUINavigationBar + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + + + 274 + {{0, 44}, {320, 416}} + + + + + 3 + MQA + + YES + IBCocoaTouchFramework + YES + 1 + 0 + YES + 44 + 22 + 22 + + + + 290 + {320, 44} + + + + IBCocoaTouchFramework + 1 + + + + + + Done + IBCocoaTouchFramework + 1 + + + IBCocoaTouchFramework + + + + + {{0, 20}, {320, 460}} + + + + + 3 + MQA + + 2 + + + + IBCocoaTouchFramework + + + + + + + doneButton + + + + 7 + + + + navigationBar + + + + 9 + + + + tableView + + + + 10 + + + + view + + + + 11 + + + + done: + + + + 8 + + + + + + 0 + + + + + + 1 + + + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 3 + + + + + + + + 4 + + + + + + + + 5 + + + + + 6 + + + + + + + CustomFieldTableViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 11 + + + + + BaseTableViewController + BaseViewController + + tableView + UITableView + + + tableView + + tableView + UITableView + + + + IBProjectSource + ./Classes/BaseTableViewController.h + + + + BaseViewController + UIViewController + + UINavigationBar + UIToolbar + WebViewController + + + + navigationBar + UINavigationBar + + + toolBar + UIToolbar + + + webViewController + WebViewController + + + + IBProjectSource + ./Classes/BaseViewController.h + + + + CustomFieldTableViewController + BaseTableViewController + + id + id + + + + cancel: + id + + + done: + id + + + + UIBarButtonItem + UIBarButtonItem + + + + cancelButton + UIBarButtonItem + + + doneButton + UIBarButtonItem + + + + IBProjectSource + ./Classes/CustomFieldTableViewController.h + + + + WebViewController + BaseViewController + + backForward: + id + + + backForward: + + backForward: + id + + + + UIActivityIndicatorView + UISegmentedControl + UIBarButtonItem + UISearchBar + UIWebView + + + + activityIndicator + UIActivityIndicatorView + + + backForwardButton + UISegmentedControl + + + refreshButton + UIBarButtonItem + + + searchBar + UISearchBar + + + webView + UIWebView + + + + IBProjectSource + ./Classes/WebViewController.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + 1181 + + diff --git a/Ushahidi_iOS.xcodeproj/project.pbxproj b/Ushahidi_iOS.xcodeproj/project.pbxproj index 3c1cd4c..18fc0c8 100755 --- a/Ushahidi_iOS.xcodeproj/project.pbxproj +++ b/Ushahidi_iOS.xcodeproj/project.pbxproj @@ -2722,6 +2722,346 @@ 6096190915532E6400FD97F8 /* Logo_iPhone.png in Resources */ = {isa = PBXBuildFile; fileRef = 609618F315532E6400FD97F8 /* Logo_iPhone.png */; }; 6096190A15532E6400FD97F8 /* Logo_iPhone@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 609618F415532E6400FD97F8 /* Logo_iPhone@2x.png */; }; 6096190B15532E6400FD97F8 /* placeholder.png in Resources */ = {isa = PBXBuildFile; fileRef = 609618F515532E6400FD97F8 /* placeholder.png */; }; + E34C4DC8160587E5009680F7 /* IncidentCustomField.m in Sources */ = {isa = PBXBuildFile; fileRef = E34C4DC7160587E5009680F7 /* IncidentCustomField.m */; }; + E34C4DC9160587E5009680F7 /* IncidentCustomField.m in Sources */ = {isa = PBXBuildFile; fileRef = E34C4DC7160587E5009680F7 /* IncidentCustomField.m */; }; + E34C4DCA160587E5009680F7 /* IncidentCustomField.m in Sources */ = {isa = PBXBuildFile; fileRef = E34C4DC7160587E5009680F7 /* IncidentCustomField.m */; }; + E34C4DCB160587E5009680F7 /* IncidentCustomField.m in Sources */ = {isa = PBXBuildFile; fileRef = E34C4DC7160587E5009680F7 /* IncidentCustomField.m */; }; + E34C4DCC160587E5009680F7 /* IncidentCustomField.m in Sources */ = {isa = PBXBuildFile; fileRef = E34C4DC7160587E5009680F7 /* IncidentCustomField.m */; }; + E34C4DCD160587E5009680F7 /* IncidentCustomField.m in Sources */ = {isa = PBXBuildFile; fileRef = E34C4DC7160587E5009680F7 /* IncidentCustomField.m */; }; + E34C4DCE160587E5009680F7 /* IncidentCustomField.m in Sources */ = {isa = PBXBuildFile; fileRef = E34C4DC7160587E5009680F7 /* IncidentCustomField.m */; }; + E34C4DCF160587E5009680F7 /* IncidentCustomField.m in Sources */ = {isa = PBXBuildFile; fileRef = E34C4DC7160587E5009680F7 /* IncidentCustomField.m */; }; + E34C4DD0160587E5009680F7 /* IncidentCustomField.m in Sources */ = {isa = PBXBuildFile; fileRef = E34C4DC7160587E5009680F7 /* IncidentCustomField.m */; }; + E34C4DD1160587E5009680F7 /* IncidentCustomField.m in Sources */ = {isa = PBXBuildFile; fileRef = E34C4DC7160587E5009680F7 /* IncidentCustomField.m */; }; + E35F8ACF1608CD8E009C36FC /* CustomFieldTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E35F8ACD1608CD8E009C36FC /* CustomFieldTableViewController.m */; }; + E35F8AD01608CD8E009C36FC /* CustomFieldTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E35F8ACD1608CD8E009C36FC /* CustomFieldTableViewController.m */; }; + E35F8AD11608CD8E009C36FC /* CustomFieldTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E35F8ACD1608CD8E009C36FC /* CustomFieldTableViewController.m */; }; + E35F8AD21608CD8E009C36FC /* CustomFieldTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E35F8ACD1608CD8E009C36FC /* CustomFieldTableViewController.m */; }; + E35F8AD31608CD8E009C36FC /* CustomFieldTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E35F8ACD1608CD8E009C36FC /* CustomFieldTableViewController.m */; }; + E35F8AD41608CD8E009C36FC /* CustomFieldTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E35F8ACD1608CD8E009C36FC /* CustomFieldTableViewController.m */; }; + E35F8AD51608CD8E009C36FC /* CustomFieldTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E35F8ACD1608CD8E009C36FC /* CustomFieldTableViewController.m */; }; + E35F8AD61608CD8E009C36FC /* CustomFieldTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E35F8ACD1608CD8E009C36FC /* CustomFieldTableViewController.m */; }; + E35F8AD71608CD8E009C36FC /* CustomFieldTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E35F8ACD1608CD8E009C36FC /* CustomFieldTableViewController.m */; }; + E35F8AD81608CD8E009C36FC /* CustomFieldTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E35F8ACD1608CD8E009C36FC /* CustomFieldTableViewController.m */; }; + E35F8AD91608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = E35F8ACE1608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib */; }; + E35F8ADA1608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = E35F8ACE1608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib */; }; + E35F8ADB1608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = E35F8ACE1608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib */; }; + E35F8ADC1608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = E35F8ACE1608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib */; }; + E35F8ADD1608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = E35F8ACE1608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib */; }; + E35F8ADE1608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = E35F8ACE1608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib */; }; + E35F8ADF1608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = E35F8ACE1608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib */; }; + E35F8AE01608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = E35F8ACE1608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib */; }; + E35F8AE11608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = E35F8ACE1608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib */; }; + E35F8AE21608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = E35F8ACE1608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib */; }; + E35F8AE41608CE7E009C36FC /* CustomFieldTableViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = E35F8AE31608CE7D009C36FC /* CustomFieldTableViewController_iPhone.xib */; }; + E35F8AE51608CE7E009C36FC /* CustomFieldTableViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = E35F8AE31608CE7D009C36FC /* CustomFieldTableViewController_iPhone.xib */; }; + E35F8AE61608CE7E009C36FC /* CustomFieldTableViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = E35F8AE31608CE7D009C36FC /* CustomFieldTableViewController_iPhone.xib */; }; + E35F8AE71608CE7E009C36FC /* CustomFieldTableViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = E35F8AE31608CE7D009C36FC /* CustomFieldTableViewController_iPhone.xib */; }; + E35F8AE81608CE7E009C36FC /* CustomFieldTableViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = E35F8AE31608CE7D009C36FC /* CustomFieldTableViewController_iPhone.xib */; }; + E35F8AE91608CE7E009C36FC /* CustomFieldTableViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = E35F8AE31608CE7D009C36FC /* CustomFieldTableViewController_iPhone.xib */; }; + E35F8AEA1608CE7E009C36FC /* CustomFieldTableViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = E35F8AE31608CE7D009C36FC /* CustomFieldTableViewController_iPhone.xib */; }; + E35F8AEB1608CE7E009C36FC /* CustomFieldTableViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = E35F8AE31608CE7D009C36FC /* CustomFieldTableViewController_iPhone.xib */; }; + E35F8AEC1608CE7E009C36FC /* CustomFieldTableViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = E35F8AE31608CE7D009C36FC /* CustomFieldTableViewController_iPhone.xib */; }; + E35F8AED1608CE7E009C36FC /* CustomFieldTableViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = E35F8AE31608CE7D009C36FC /* CustomFieldTableViewController_iPhone.xib */; }; + E3E311BA15F1459600A8C1E7 /* blank.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E862A421222BD09001DE141 /* blank.png */; }; + E3E311BB15F1459600A8C1E7 /* location.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E862A461222BD09001DE141 /* location.png */; }; + E3E311BC15F1459600A8C1E7 /* arrow_down.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E862A491222BD09001DE141 /* arrow_down.png */; }; + E3E311BD15F1459600A8C1E7 /* arrow_up.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E862A4A1222BD09001DE141 /* arrow_up.png */; }; + E3E311BE15F1459600A8C1E7 /* selected.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E862A4C1222BD09001DE141 /* selected.png */; }; + E3E311BF15F1459600A8C1E7 /* arrow_next.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E862A4D1222BD09001DE141 /* arrow_next.png */; }; + E3E311C015F1459600A8C1E7 /* arrow_previous.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E862A4E1222BD09001DE141 /* arrow_previous.png */; }; + E3E311C115F1459600A8C1E7 /* unselected.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E862A4F1222BD09001DE141 /* unselected.png */; }; + E3E311C215F1459600A8C1E7 /* map.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E4A006C1271F26C0017AED4 /* map.png */; }; + E3E311C315F1459600A8C1E7 /* reports.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E4A006E1271F26C0017AED4 /* reports.png */; }; + E3E311C415F1459600A8C1E7 /* empty.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E15006E1278C37A00036A0F /* empty.png */; }; + E3E311C515F1459600A8C1E7 /* refresh.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E15006F1278C37A00036A0F /* refresh.png */; }; + E3E311C615F1459600A8C1E7 /* sort_alphabetical.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E84E6FF1282931400A55292 /* sort_alphabetical.png */; }; + E3E311C715F1459600A8C1E7 /* sort_date.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E84E7001282931400A55292 /* sort_date.png */; }; + E3E311C815F1459600A8C1E7 /* sort_verified.png in Resources */ = {isa = PBXBuildFile; fileRef = 3ED45094128B475100578DB4 /* sort_verified.png */; }; + E3E311C915F1459600A8C1E7 /* email.png in Resources */ = {isa = PBXBuildFile; fileRef = 3EFC1C1B1295D81C00163B36 /* email.png */; }; + E3E311CA15F1459600A8C1E7 /* photo_save.png in Resources */ = {isa = PBXBuildFile; fileRef = 3EFC1C3A1295D92A00163B36 /* photo_save.png */; }; + E3E311CB15F1459600A8C1E7 /* filter.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E809135129B2F8E00CF273F /* filter.png */; }; + E3E311CC15F1459600A8C1E7 /* radar.png in Resources */ = {isa = PBXBuildFile; fileRef = 3ECFF35C12AFE9AD00DE75D7 /* radar.png */; }; + E3E311CD15F1459600A8C1E7 /* satellite.png in Resources */ = {isa = PBXBuildFile; fileRef = 3ECFF3D212AFF33F00DE75D7 /* satellite.png */; }; + E3E311CE15F1459600A8C1E7 /* hybrid.png in Resources */ = {isa = PBXBuildFile; fileRef = 3ECFF3DC12AFF52400DE75D7 /* hybrid.png */; }; + E3E311CF15F1459600A8C1E7 /* sms.png in Resources */ = {isa = PBXBuildFile; fileRef = 3EE3EDDC12B7EDF600782581 /* sms.png */; }; + E3E311D015F1459600A8C1E7 /* twitter.png in Resources */ = {isa = PBXBuildFile; fileRef = 3EEFE1B912DB89D50076ABA1 /* twitter.png */; }; + E3E311D115F1459600A8C1E7 /* shorten.png in Resources */ = {isa = PBXBuildFile; fileRef = 3EEFE35C12DBA32C0076ABA1 /* shorten.png */; }; + E3E311D215F1459600A8C1E7 /* logout.png in Resources */ = {isa = PBXBuildFile; fileRef = 3EEFE3E212DBAFC40076ABA1 /* logout.png */; }; + E3E311D315F1459600A8C1E7 /* jQueryInject.txt in Resources */ = {isa = PBXBuildFile; fileRef = 3EBBD62C12DCA73E007ECE4B /* jQueryInject.txt */; }; + E3E311D415F1459600A8C1E7 /* jQueryInjectLandscape.txt in Resources */ = {isa = PBXBuildFile; fileRef = 3EBBD62D12DCA73E007ECE4B /* jQueryInjectLandscape.txt */; }; + E3E311D515F1459600A8C1E7 /* arrow_next@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E72983912EE4F9D00FDED00 /* arrow_next@2x.png */; }; + E3E311D615F1459600A8C1E7 /* arrow_previous@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E72983A12EE4F9D00FDED00 /* arrow_previous@2x.png */; }; + E3E311D715F1459600A8C1E7 /* email@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E72983D12EE4F9D00FDED00 /* email@2x.png */; }; + E3E311D815F1459600A8C1E7 /* filter@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E72983E12EE4F9D00FDED00 /* filter@2x.png */; }; + E3E311D915F1459600A8C1E7 /* location@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E72984112EE4F9D00FDED00 /* location@2x.png */; }; + E3E311DA15F1459600A8C1E7 /* logout@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E72984212EE4F9D00FDED00 /* logout@2x.png */; }; + E3E311DB15F1459600A8C1E7 /* map@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E72984312EE4F9D00FDED00 /* map@2x.png */; }; + E3E311DC15F1459600A8C1E7 /* photo_save@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E72984412EE4F9D00FDED00 /* photo_save@2x.png */; }; + E3E311DD15F1459600A8C1E7 /* radar@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E72984512EE4F9D00FDED00 /* radar@2x.png */; }; + E3E311DE15F1459600A8C1E7 /* refresh@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E72984612EE4F9D00FDED00 /* refresh@2x.png */; }; + E3E311DF15F1459600A8C1E7 /* reports@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E72984712EE4F9D00FDED00 /* reports@2x.png */; }; + E3E311E015F1459600A8C1E7 /* shorten@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E72984812EE4F9D00FDED00 /* shorten@2x.png */; }; + E3E311E115F1459600A8C1E7 /* sms@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E72984912EE4F9D00FDED00 /* sms@2x.png */; }; + E3E311E215F1459600A8C1E7 /* sort_alphabetical@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E72984A12EE4F9D00FDED00 /* sort_alphabetical@2x.png */; }; + E3E311E315F1459600A8C1E7 /* sort_date@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E72984B12EE4F9D00FDED00 /* sort_date@2x.png */; }; + E3E311E415F1459600A8C1E7 /* sort_verified@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E72984C12EE4F9D00FDED00 /* sort_verified@2x.png */; }; + E3E311E515F1459600A8C1E7 /* twitter@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E72984E12EE4F9D00FDED00 /* twitter@2x.png */; }; + E3E311E615F1459600A8C1E7 /* satellite@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E72990212EE5A2D00FDED00 /* satellite@2x.png */; }; + E3E311E715F1459600A8C1E7 /* hybrid@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E72990B12EE5CCD00FDED00 /* hybrid@2x.png */; }; + E3E311E815F1459600A8C1E7 /* arrow_up@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E72992B12EF261D00FDED00 /* arrow_up@2x.png */; }; + E3E311E915F1459600A8C1E7 /* arrow_down@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E72992D12EF262A00FDED00 /* arrow_down@2x.png */; }; + E3E311EA15F1459600A8C1E7 /* selected@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E72996B12EF30C500FDED00 /* selected@2x.png */; }; + E3E311EB15F1459600A8C1E7 /* unselected@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E72996D12EF30D100FDED00 /* unselected@2x.png */; }; + E3E311EC15F1459600A8C1E7 /* checkin.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E466F59130C62BF00EE685B /* checkin.png */; }; + E3E311ED15F1459600A8C1E7 /* checkin@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E466F5A130C62BF00EE685B /* checkin@2x.png */; }; + E3E311EE15F1459600A8C1E7 /* button_red.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E8F03BA131566140011E423 /* button_red.png */; }; + E3E311EF15F1459600A8C1E7 /* button_red@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E8F03BB131566140011E423 /* button_red@2x.png */; }; + E3E311F015F1459600A8C1E7 /* button_red_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E8F03EA131568AE0011E423 /* button_red_selected.png */; }; + E3E311F115F1459600A8C1E7 /* button_red_selected@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E8F03EB131568AE0011E423 /* button_red_selected@2x.png */; }; + E3E311F215F1459600A8C1E7 /* CategoryTableViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A93913950A3C00914628 /* CategoryTableViewController_iPad.xib */; }; + E3E311F315F1459600A8C1E7 /* CategoryTableViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A93A13950A3C00914628 /* CategoryTableViewController_iPhone.xib */; }; + E3E311F415F1459600A8C1E7 /* CheckinAddViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A93B13950A3C00914628 /* CheckinAddViewController_iPad.xib */; }; + E3E311F515F1459600A8C1E7 /* CheckinAddViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A93C13950A3C00914628 /* CheckinAddViewController_iPhone.xib */; }; + E3E311F615F1459600A8C1E7 /* CheckinDetailsViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A93D13950A3C00914628 /* CheckinDetailsViewController_iPad.xib */; }; + E3E311F715F1459600A8C1E7 /* CheckinDetailsViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A93E13950A3C00914628 /* CheckinDetailsViewController_iPhone.xib */; }; + E3E311F815F1459600A8C1E7 /* CheckinMapViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A93F13950A3C00914628 /* CheckinMapViewController_iPad.xib */; }; + E3E311F915F1459600A8C1E7 /* CheckinMapViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A94013950A3C00914628 /* CheckinMapViewController_iPhone.xib */; }; + E3E311FA15F1459600A8C1E7 /* DeploymentAddViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A94113950A3C00914628 /* DeploymentAddViewController_iPad.xib */; }; + E3E311FB15F1459600A8C1E7 /* DeploymentAddViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A94213950A3C00914628 /* DeploymentAddViewController_iPhone.xib */; }; + E3E311FC15F1459600A8C1E7 /* DeploymentTableCell_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A94313950A3C00914628 /* DeploymentTableCell_iPad.xib */; }; + E3E311FD15F1459600A8C1E7 /* DeploymentTableCell_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A94413950A3C00914628 /* DeploymentTableCell_iPhone.xib */; }; + E3E311FE15F1459600A8C1E7 /* DeploymentTableViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A94513950A3C00914628 /* DeploymentTableViewController_iPad.xib */; }; + E3E311FF15F1459600A8C1E7 /* DeploymentTableViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A94613950A3C00914628 /* DeploymentTableViewController_iPhone.xib */; }; + E3E3120015F1459600A8C1E7 /* ImageViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A94713950A3C00914628 /* ImageViewController_iPad.xib */; }; + E3E3120115F1459600A8C1E7 /* ImageViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A94813950A3C00914628 /* ImageViewController_iPhone.xib */; }; + E3E3120215F1459600A8C1E7 /* IncidentAddViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A94913950A3C00914628 /* IncidentAddViewController_iPad.xib */; }; + E3E3120315F1459600A8C1E7 /* IncidentAddViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A94A13950A3C00914628 /* IncidentAddViewController_iPhone.xib */; }; + E3E3120415F1459600A8C1E7 /* IncidentDetailsViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A94B13950A3C00914628 /* IncidentDetailsViewController_iPad.xib */; }; + E3E3120515F1459600A8C1E7 /* IncidentDetailsViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A94C13950A3C00914628 /* IncidentDetailsViewController_iPhone.xib */; }; + E3E3120615F1459600A8C1E7 /* IncidentMapViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A94D13950A3C00914628 /* IncidentMapViewController_iPad.xib */; }; + E3E3120715F1459600A8C1E7 /* IncidentMapViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A94E13950A3C00914628 /* IncidentMapViewController_iPhone.xib */; }; + E3E3120815F1459600A8C1E7 /* IncidentTableCell_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A94F13950A3C00914628 /* IncidentTableCell_iPad.xib */; }; + E3E3120915F1459600A8C1E7 /* IncidentTableCell_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A95013950A3C00914628 /* IncidentTableCell_iPhone.xib */; }; + E3E3120A15F1459600A8C1E7 /* IncidentTableViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A95113950A3C00914628 /* IncidentTableViewController_iPad.xib */; }; + E3E3120B15F1459600A8C1E7 /* IncidentTableViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A95213950A3C00914628 /* IncidentTableViewController_iPhone.xib */; }; + E3E3120C15F1459600A8C1E7 /* IncidentTabViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A95313950A3C00914628 /* IncidentTabViewController_iPad.xib */; }; + E3E3120D15F1459600A8C1E7 /* IncidentTabViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A95413950A3C00914628 /* IncidentTabViewController_iPhone.xib */; }; + E3E3120E15F1459600A8C1E7 /* LoadingViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A95513950A3C00914628 /* LoadingViewController_iPad.xib */; }; + E3E3120F15F1459600A8C1E7 /* LoadingViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A95613950A3C00914628 /* LoadingViewController_iPhone.xib */; }; + E3E3121015F1459600A8C1E7 /* LocationSelectViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A95713950A3C00914628 /* LocationSelectViewController_iPad.xib */; }; + E3E3121115F1459600A8C1E7 /* LocationSelectViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A95813950A3C00914628 /* LocationSelectViewController_iPhone.xib */; }; + E3E3121215F1459600A8C1E7 /* MainWindow_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A95913950A3C00914628 /* MainWindow_iPad.xib */; }; + E3E3121315F1459600A8C1E7 /* MainWindow_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A95A13950A3C00914628 /* MainWindow_iPhone.xib */; }; + E3E3121415F1459600A8C1E7 /* MapViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A95B13950A3C00914628 /* MapViewController_iPad.xib */; }; + E3E3121515F1459600A8C1E7 /* MapViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A95C13950A3C00914628 /* MapViewController_iPhone.xib */; }; + E3E3121615F1459600A8C1E7 /* NewsViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A95D13950A3C00914628 /* NewsViewController_iPad.xib */; }; + E3E3121715F1459600A8C1E7 /* NewsViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A95E13950A3C00914628 /* NewsViewController_iPhone.xib */; }; + E3E3121815F1459600A8C1E7 /* SettingsViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A95F13950A3C00914628 /* SettingsViewController_iPad.xib */; }; + E3E3121915F1459600A8C1E7 /* SettingsViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A96013950A3C00914628 /* SettingsViewController_iPhone.xib */; }; + E3E3121A15F1459600A8C1E7 /* SliderTableCell_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A96113950A3C00914628 /* SliderTableCell_iPad.xib */; }; + E3E3121B15F1459600A8C1E7 /* SliderTableCell_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A96213950A3C00914628 /* SliderTableCell_iPhone.xib */; }; + E3E3121C15F1459600A8C1E7 /* TwitterViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A96513950A3C00914628 /* TwitterViewController_iPad.xib */; }; + E3E3121D15F1459600A8C1E7 /* TwitterViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A96613950A3C00914628 /* TwitterViewController_iPhone.xib */; }; + E3E3121E15F1459600A8C1E7 /* WebViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A96713950A3C00914628 /* WebViewController_iPad.xib */; }; + E3E3121F15F1459600A8C1E7 /* WebViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E79A96813950A3C00914628 /* WebViewController_iPhone.xib */; }; + E3E3122015F1459600A8C1E7 /* CheckinTabViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3EFC3D8D13A627EB00CCA185 /* CheckinTabViewController_iPhone.xib */; }; + E3E3122115F1459600A8C1E7 /* CheckinTabViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3EFC3D9013A627F900CCA185 /* CheckinTabViewController_iPad.xib */; }; + E3E3122215F1459600A8C1E7 /* CheckinTableViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3EFC3D9313A6282100CCA185 /* CheckinTableViewController_iPhone.xib */; }; + E3E3122315F1459600A8C1E7 /* CheckinTableViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3EFC3D9613A6283300CCA185 /* CheckinTableViewController_iPad.xib */; }; + E3E3122415F1459600A8C1E7 /* CheckinTableCell_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3EBBE2EB13A6552A0019BDED /* CheckinTableCell_iPhone.xib */; }; + E3E3122515F1459600A8C1E7 /* CheckinTableCell_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3EBBE2EE13A655370019BDED /* CheckinTableCell_iPad.xib */; }; + E3E3122615F1459600A8C1E7 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3E030A2013AC9D1300DCC48C /* Localizable.strings */; }; + E3E3122715F1459600A8C1E7 /* Default-Portrait.png in Resources */ = {isa = PBXBuildFile; fileRef = 3ED871851379CB51004E8714 /* Default-Portrait.png */; }; + E3E3122815F1459600A8C1E7 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 3ED871871379CB51004E8714 /* Default.png */; }; + E3E3122915F1459600A8C1E7 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3ED871891379CB51004E8714 /* Default@2x.png */; }; + E3E3122A15F1459600A8C1E7 /* Icon-57.png in Resources */ = {isa = PBXBuildFile; fileRef = 3ED8718A1379CB51004E8714 /* Icon-57.png */; }; + E3E3122B15F1459600A8C1E7 /* Icon-72.png in Resources */ = {isa = PBXBuildFile; fileRef = 3ED8718B1379CB51004E8714 /* Icon-72.png */; }; + E3E3122C15F1459600A8C1E7 /* Icon-Small-50.png in Resources */ = {isa = PBXBuildFile; fileRef = 3ED8718C1379CB51004E8714 /* Icon-Small-50.png */; }; + E3E3122D15F1459600A8C1E7 /* Icon-Small.png in Resources */ = {isa = PBXBuildFile; fileRef = 3ED8718D1379CB51004E8714 /* Icon-Small.png */; }; + E3E3122E15F1459600A8C1E7 /* Icon-Small@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3ED8718E1379CB51004E8714 /* Icon-Small@2x.png */; }; + E3E3122F15F1459600A8C1E7 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 3ED8718F1379CB51004E8714 /* Icon.png */; }; + E3E3123015F1459600A8C1E7 /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3ED871901379CB51004E8714 /* Icon@2x.png */; }; + E3E3123115F1459600A8C1E7 /* iTunesArtwork in Resources */ = {isa = PBXBuildFile; fileRef = 3ED871911379CB51004E8714 /* iTunesArtwork */; }; + E3E3123215F1459600A8C1E7 /* iTunesArtwork.png in Resources */ = {isa = PBXBuildFile; fileRef = 3ED871921379CB51004E8714 /* iTunesArtwork.png */; }; + E3E3123315F1459600A8C1E7 /* placeholder.png in Resources */ = {isa = PBXBuildFile; fileRef = 3ED871931379CB51004E8714 /* placeholder.png */; }; + E3E3123415F1459600A8C1E7 /* Logo_iPad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3ED873021379F1CB004E8714 /* Logo_iPad.png */; }; + E3E3123515F1459600A8C1E7 /* Logo_iPad@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3ED873031379F1CB004E8714 /* Logo_iPad@2x.png */; }; + E3E3123615F1459600A8C1E7 /* Logo_iPhone.png in Resources */ = {isa = PBXBuildFile; fileRef = 3ED873041379F1CB004E8714 /* Logo_iPhone.png */; }; + E3E3123715F1459600A8C1E7 /* Logo_iPhone@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3ED873051379F1CB004E8714 /* Logo_iPhone@2x.png */; }; + E3E3123815F1459600A8C1E7 /* CategorySelectViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3EA9BD7714ED852F00167351 /* CategorySelectViewController_iPhone.xib */; }; + E3E3123915F1459600A8C1E7 /* CategorySelectViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3EA9BD8114ED854700167351 /* CategorySelectViewController_iPad.xib */; }; + E3E3123A15F1459600A8C1E7 /* UserSelectViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3EA9BD8B14ED856000167351 /* UserSelectViewController_iPhone.xib */; }; + E3E3123B15F1459600A8C1E7 /* UserSelectViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3EA9BD9514ED857300167351 /* UserSelectViewController_iPad.xib */; }; + E3E3123C15F1459600A8C1E7 /* pattern.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E50FFD614F459440054CD41 /* pattern.png */; }; + E3E3123D15F1459600A8C1E7 /* SplashViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E4432C514FBE77700BFECD8 /* SplashViewController_iPad.xib */; }; + E3E3123E15F1459600A8C1E7 /* SplashViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E4432D014FBE78D00BFECD8 /* SplashViewController_iPhone.xib */; }; + E3E3123F15F1459600A8C1E7 /* Entitlements.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3E73874D151A843A00692956 /* Entitlements.plist */; }; + E3E3124115F1459600A8C1E7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E8629F71222BCC4001DE141 /* AppDelegate.m */; }; + E3E3124215F1459600A8C1E7 /* Device.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E8629F91222BCC4001DE141 /* Device.m */; }; + E3E3124315F1459600A8C1E7 /* IncidentAddViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E8629FD1222BCD0001DE141 /* IncidentAddViewController.m */; }; + E3E3124415F1459600A8C1E7 /* DeploymentAddViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E8629FF1222BCD0001DE141 /* DeploymentAddViewController.m */; }; + E3E3124515F1459600A8C1E7 /* ImagePickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862A011222BCD0001DE141 /* ImagePickerController.m */; }; + E3E3124615F1459600A8C1E7 /* ImageViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862A031222BCD0001DE141 /* ImageViewController.m */; }; + E3E3124715F1459600A8C1E7 /* DeploymentTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862A071222BCD0001DE141 /* DeploymentTableViewController.m */; }; + E3E3124815F1459600A8C1E7 /* MapViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862A091222BCD0001DE141 /* MapViewController.m */; }; + E3E3124915F1459600A8C1E7 /* BaseTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862A0B1222BCD0001DE141 /* BaseTableViewController.m */; }; + E3E3124A15F1459600A8C1E7 /* IncidentDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862A0D1222BCD0001DE141 /* IncidentDetailsViewController.m */; }; + E3E3124B15F1459600A8C1E7 /* WebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862A0F1222BCD0001DE141 /* WebViewController.m */; }; + E3E3124C15F1459600A8C1E7 /* BooleanTableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862A1F1222BCE5001DE141 /* BooleanTableCell.m */; }; + E3E3124D15F1459600A8C1E7 /* CheckBoxTableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862A211222BCE5001DE141 /* CheckBoxTableCell.m */; }; + E3E3124E15F1459600A8C1E7 /* ImageTableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862A231222BCE5001DE141 /* ImageTableCell.m */; }; + E3E3124F15F1459600A8C1E7 /* MapTableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862A251222BCE5001DE141 /* MapTableCell.m */; }; + E3E3125015F1459600A8C1E7 /* SubtitleTableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862A291222BCE5001DE141 /* SubtitleTableCell.m */; }; + E3E3125115F1459600A8C1E7 /* TableCellFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862A2B1222BCE5001DE141 /* TableCellFactory.m */; }; + E3E3125215F1459600A8C1E7 /* TextFieldTableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862A2D1222BCE5001DE141 /* TextFieldTableCell.m */; }; + E3E3125315F1459600A8C1E7 /* TextTableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862A2F1222BCE5001DE141 /* TextTableCell.m */; }; + E3E3125415F1459600A8C1E7 /* TextViewTableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862A311222BCE5001DE141 /* TextViewTableCell.m */; }; + E3E3125515F1459600A8C1E7 /* AppDelegate_iPad.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862A931222BD57001DE141 /* AppDelegate_iPad.m */; }; + E3E3125615F1459600A8C1E7 /* AppDelegate_iPhone.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862A961222BD61001DE141 /* AppDelegate_iPhone.m */; }; + E3E3125715F1459600A8C1E7 /* NSObject+SBJSON.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862AB91222C019001DE141 /* NSObject+SBJSON.m */; }; + E3E3125815F1459600A8C1E7 /* NSString+SBJSON.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862ABB1222C019001DE141 /* NSString+SBJSON.m */; }; + E3E3125915F1459600A8C1E7 /* SBJsonBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862ABD1222C019001DE141 /* SBJsonBase.m */; }; + E3E3125A15F1459600A8C1E7 /* SBJsonParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862ABF1222C019001DE141 /* SBJsonParser.m */; }; + E3E3125B15F1459600A8C1E7 /* SBJsonWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862AC11222C019001DE141 /* SBJsonWriter.m */; }; + E3E3125C15F1459600A8C1E7 /* ASIAuthenticationDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862ACB1222C0DA001DE141 /* ASIAuthenticationDialog.m */; }; + E3E3125D15F1459600A8C1E7 /* ASIDownloadCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862ACE1222C0DA001DE141 /* ASIDownloadCache.m */; }; + E3E3125E15F1459600A8C1E7 /* ASIFormDataRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862AD01222C0DA001DE141 /* ASIFormDataRequest.m */; }; + E3E3125F15F1459600A8C1E7 /* ASIHTTPRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862AD21222C0DA001DE141 /* ASIHTTPRequest.m */; }; + E3E3126015F1459600A8C1E7 /* ASIInputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862AD61222C0DA001DE141 /* ASIInputStream.m */; }; + E3E3126115F1459600A8C1E7 /* ASINetworkQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862AD81222C0DA001DE141 /* ASINetworkQueue.m */; }; + E3E3126215F1459600A8C1E7 /* Reachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862AFB1222C154001DE141 /* Reachability.m */; }; + E3E3126315F1459600A8C1E7 /* Category.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862B281222C66E001DE141 /* Category.m */; }; + E3E3126415F1459600A8C1E7 /* Settings.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862BC21222CFE0001DE141 /* Settings.m */; }; + E3E3126515F1459600A8C1E7 /* LoadingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862BDD1222D081001DE141 /* LoadingViewController.m */; }; + E3E3126615F1459600A8C1E7 /* BaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862C221222D288001DE141 /* BaseViewController.m */; }; + E3E3126715F1459600A8C1E7 /* AlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862CA41222D604001DE141 /* AlertView.m */; }; + E3E3126815F1459600A8C1E7 /* InputView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862CA91222D60F001DE141 /* InputView.m */; }; + E3E3126915F1459600A8C1E7 /* UIColor+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862DCD1222E1A1001DE141 /* UIColor+Extension.m */; }; + E3E3126A15F1459600A8C1E7 /* Ushahidi.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862E771222F178001DE141 /* Ushahidi.m */; }; + E3E3126B15F1459600A8C1E7 /* NSKeyedArchiver+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862E7E1222F2D1001DE141 /* NSKeyedArchiver+Extension.m */; }; + E3E3126C15F1459600A8C1E7 /* NSKeyedUnarchiver+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862E801222F2D1001DE141 /* NSKeyedUnarchiver+Extension.m */; }; + E3E3126D15F1459600A8C1E7 /* NSDate+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E862E821222F2D1001DE141 /* NSDate+Extension.m */; }; + E3E3126E15F1459600A8C1E7 /* Deployment.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E86305E12231498001DE141 /* Deployment.m */; }; + E3E3126F15F1459600A8C1E7 /* Country.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E86337C12243205001DE141 /* Country.m */; }; + E3E3127015F1459600A8C1E7 /* Location.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E86338312243248001DE141 /* Location.m */; }; + E3E3127115F1459600A8C1E7 /* Incident.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E86338612243255001DE141 /* Incident.m */; }; + E3E3127215F1459600A8C1E7 /* News.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E8633D71224362A001DE141 /* News.m */; }; + E3E3127315F1459600A8C1E7 /* Photo.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E8633DC12243647001DE141 /* Photo.m */; }; + E3E3127415F1459600A8C1E7 /* UIImage+Alpha.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E86344812243A0C001DE141 /* UIImage+Alpha.m */; }; + E3E3127515F1459600A8C1E7 /* UIImage+Resize.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E86344A12243A0C001DE141 /* UIImage+Resize.m */; }; + E3E3127615F1459600A8C1E7 /* MapAnnotation.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E8635E012244A54001DE141 /* MapAnnotation.m */; }; + E3E3127715F1459600A8C1E7 /* NSDictionary+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E8637E512246A64001DE141 /* NSDictionary+Extension.m */; }; + E3E3127815F1459600A8C1E7 /* MKMapView+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E8638C312247BAC001DE141 /* MKMapView+Extension.m */; }; + E3E3127915F1459600A8C1E7 /* NavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3ECB541D122F3F53000AAC56 /* NavigationController.m */; }; + E3E3127A15F1459600A8C1E7 /* DateTableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3ECB55D1122F5BEE000AAC56 /* DateTableCell.m */; }; + E3E3127B15F1459600A8C1E7 /* DatePicker.m in Sources */ = {isa = PBXBuildFile; fileRef = 3ECB55EC122F5E33000AAC56 /* DatePicker.m */; }; + E3E3127C15F1459600A8C1E7 /* UIView+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 3ECB579E122F809C000AAC56 /* UIView+Extension.m */; }; + E3E3127D15F1459600A8C1E7 /* DeploymentTableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E119AD8126F7E6200C3DCBB /* DeploymentTableCell.m */; }; + E3E3127E15F1459600A8C1E7 /* IncidentTableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E119ADD126F7E7600C3DCBB /* IncidentTableCell.m */; }; + E3E3127F15F1459600A8C1E7 /* Media.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E119D55126FAE5800C3DCBB /* Media.m */; }; + E3E3128015F1459600A8C1E7 /* Sound.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E119D6F126FAF0B00C3DCBB /* Sound.m */; }; + E3E3128115F1459600A8C1E7 /* Video.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E119D72126FAF1300C3DCBB /* Video.m */; }; + E3E3128215F1459600A8C1E7 /* TableHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E4AF91C1270AA370017AED4 /* TableHeaderView.m */; }; + E3E3128315F1459600A8C1E7 /* SettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E4AFF5E1271E21E0017AED4 /* SettingsViewController.m */; }; + E3E3128415F1459600A8C1E7 /* NSString+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E4A022612720E280017AED4 /* NSString+Extension.m */; }; + E3E3128515F1459600A8C1E7 /* CategoryTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBB0EFF12767882007D7930 /* CategoryTableViewController.m */; }; + E3E3128615F1459600A8C1E7 /* LocationSelectViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBB10F512768DAA007D7930 /* LocationSelectViewController.m */; }; + E3E3128715F1459600A8C1E7 /* UIImage+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EC94CBB12773CDD00411AE0 /* UIImage+Extension.m */; }; + E3E3128815F1459600A8C1E7 /* MotionWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E2E853712787E7F00ADA49B /* MotionWindow.m */; }; + E3E3128915F1459600A8C1E7 /* SliderTableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E1501161278D82500036A0F /* SliderTableCell.m */; }; + E3E3128A15F1459600A8C1E7 /* NSObject+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E30492812874F3600E3C942 /* NSObject+Extension.m */; }; + E3E3128B15F1459600A8C1E7 /* NSError+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 3ECD0A4612889A9A0006AF7C /* NSError+Extension.m */; }; + E3E3128C15F1459600A8C1E7 /* IndexedTableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E236396128C7DB400CF804A /* IndexedTableCell.m */; }; + E3E3128D15F1459600A8C1E7 /* NSURL+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E244E71128DFDE400B36DB6 /* NSURL+Extension.m */; }; + E3E3128E15F1459600A8C1E7 /* Locator.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E9198591293A81F005AC005 /* Locator.m */; }; + E3E3128F15F1459600A8C1E7 /* Email.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EFC1C851295DC9F00163B36 /* Email.m */; }; + E3E3129015F1459600A8C1E7 /* ItemPicker.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E8090EB129B2B8500CF273F /* ItemPicker.m */; }; + E3E3129115F1459600A8C1E7 /* NewsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E4C630912AD4D05001ED08A /* NewsViewController.m */; }; + E3E3129215F1459600A8C1E7 /* MoviePlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E4C659A12AD774F001ED08A /* MoviePlayer.m */; }; + E3E3129315F1459600A8C1E7 /* SMS.m in Sources */ = {isa = PBXBuildFile; fileRef = 3ECFF2C412AFDB4F00DE75D7 /* SMS.m */; }; + E3E3129415F1459600A8C1E7 /* Internet.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EF8731612B136EF00E9D799 /* Internet.m */; }; + E3E3129515F1459600A8C1E7 /* MKPinAnnotationView+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EF8785E12B29C1500E9D799 /* MKPinAnnotationView+Extension.m */; }; + E3E3129615F1459600A8C1E7 /* Bitly.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EEFE0EF12DB81530076ABA1 /* Bitly.m */; }; + E3E3129715F1459600A8C1E7 /* TwitterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EEFE0F412DB81600076ABA1 /* TwitterViewController.m */; }; + E3E3129815F1459600A8C1E7 /* NSData+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EEFE11D12DB81B40076ABA1 /* NSData+Extension.m */; }; + E3E3129915F1459600A8C1E7 /* MGTwitterEngine.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD5F912DCA73E007ECE4B /* MGTwitterEngine.m */; }; + E3E3129A15F1459600A8C1E7 /* MGTwitterHTTPURLConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD5FD12DCA73E007ECE4B /* MGTwitterHTTPURLConnection.m */; }; + E3E3129B15F1459600A8C1E7 /* MGTwitterLibXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD5FF12DCA73E007ECE4B /* MGTwitterLibXMLParser.m */; }; + E3E3129C15F1459600A8C1E7 /* MGTwitterMessagesLibXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD60112DCA73E007ECE4B /* MGTwitterMessagesLibXMLParser.m */; }; + E3E3129D15F1459600A8C1E7 /* MGTwitterMessagesParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD60312DCA73E007ECE4B /* MGTwitterMessagesParser.m */; }; + E3E3129E15F1459600A8C1E7 /* MGTwitterMiscLibXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD60712DCA73E007ECE4B /* MGTwitterMiscLibXMLParser.m */; }; + E3E3129F15F1459600A8C1E7 /* MGTwitterMiscParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD60912DCA73E007ECE4B /* MGTwitterMiscParser.m */; }; + E3E312A015F1459600A8C1E7 /* MGTwitterSocialGraphLibXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD61112DCA73E007ECE4B /* MGTwitterSocialGraphLibXMLParser.m */; }; + E3E312A115F1459600A8C1E7 /* MGTwitterSocialGraphParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD61312DCA73E007ECE4B /* MGTwitterSocialGraphParser.m */; }; + E3E312A215F1459600A8C1E7 /* MGTwitterStatusesLibXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD61512DCA73E007ECE4B /* MGTwitterStatusesLibXMLParser.m */; }; + E3E312A315F1459600A8C1E7 /* MGTwitterStatusesParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD61712DCA73E007ECE4B /* MGTwitterStatusesParser.m */; }; + E3E312A415F1459600A8C1E7 /* MGTwitterTouchJSONParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD61B12DCA73E007ECE4B /* MGTwitterTouchJSONParser.m */; }; + E3E312A515F1459600A8C1E7 /* MGTwitterUserListsParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD61D12DCA73E007ECE4B /* MGTwitterUserListsParser.m */; }; + E3E312A615F1459600A8C1E7 /* MGTwitterUsersLibXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD61F12DCA73E007ECE4B /* MGTwitterUsersLibXMLParser.m */; }; + E3E312A715F1459600A8C1E7 /* MGTwitterUsersParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD62112DCA73E007ECE4B /* MGTwitterUsersParser.m */; }; + E3E312A815F1459600A8C1E7 /* MGTwitterXMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD62512DCA73E007ECE4B /* MGTwitterXMLParser.m */; }; + E3E312A915F1459600A8C1E7 /* NSData+Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD62912DCA73E007ECE4B /* NSData+Base64.m */; }; + E3E312AA15F1459600A8C1E7 /* NSString+UUID.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD62B12DCA73E007ECE4B /* NSString+UUID.m */; }; + E3E312AB15F1459600A8C1E7 /* CDataScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD6D112DCA9D4007ECE4B /* CDataScanner.m */; }; + E3E312AC15F1459600A8C1E7 /* CFilteringJSONSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD6D412DCA9D4007ECE4B /* CFilteringJSONSerializer.m */; }; + E3E312AD15F1459600A8C1E7 /* CJSONDeserializer_BlocksExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD6D612DCA9D4007ECE4B /* CJSONDeserializer_BlocksExtensions.m */; }; + E3E312AE15F1459600A8C1E7 /* CJSONSerializedData.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD6D812DCA9D4007ECE4B /* CJSONSerializedData.m */; }; + E3E312AF15F1459600A8C1E7 /* CDataScanner_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD6DB12DCA9D4007ECE4B /* CDataScanner_Extensions.m */; }; + E3E312B015F1459600A8C1E7 /* NSCharacterSet_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD6DD12DCA9D4007ECE4B /* NSCharacterSet_Extensions.m */; }; + E3E312B115F1459600A8C1E7 /* NSDictionary_JSONExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD6DF12DCA9D4007ECE4B /* NSDictionary_JSONExtensions.m */; }; + E3E312B215F1459600A8C1E7 /* NSScanner_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD6E112DCA9D4007ECE4B /* NSScanner_Extensions.m */; }; + E3E312B315F1459600A8C1E7 /* CJSONDeserializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD6E412DCA9D4007ECE4B /* CJSONDeserializer.m */; }; + E3E312B415F1459600A8C1E7 /* CJSONScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD6E612DCA9D4007ECE4B /* CJSONScanner.m */; }; + E3E312B515F1459600A8C1E7 /* CJSONSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD6E812DCA9D4007ECE4B /* CJSONSerializer.m */; }; + E3E312B615F1459600A8C1E7 /* SFHFKeychainUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBD75E12DCAC48007ECE4B /* SFHFKeychainUtils.m */; }; + E3E312B715F1459600A8C1E7 /* ASIHTTPRequest+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 3ED9827112ECD7DC0065A324 /* ASIHTTPRequest+Extension.m */; }; + E3E312B815F1459600A8C1E7 /* MapDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E72978412EDEBD500FDED00 /* MapDialog.m */; }; + E3E312B915F1459600A8C1E7 /* Checkin.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E466FAC130C686A00EE685B /* Checkin.m */; }; + E3E312BA15F1459600A8C1E7 /* CheckinAddViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E5BB9EF131056C90073E4F8 /* CheckinAddViewController.m */; }; + E3E312BB15F1459600A8C1E7 /* User.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E5BBBB51310A6150073E4F8 /* User.m */; }; + E3E312BC15F1459600A8C1E7 /* IncidentTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EEE8E271311888B0096CBEA /* IncidentTableViewController.m */; }; + E3E312BD15F1459600A8C1E7 /* IncidentMapViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EEE8E2A131188970096CBEA /* IncidentMapViewController.m */; }; + E3E312BE15F1459600A8C1E7 /* CheckinMapViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EEE8E2D131188AF0096CBEA /* CheckinMapViewController.m */; }; + E3E312BF15F1459600A8C1E7 /* IncidentTabViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E6E2B451312B38E00B9E331 /* IncidentTabViewController.m */; }; + E3E312C015F1459600A8C1E7 /* CheckinDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E1A733513143F4E00F3FAC8 /* CheckinDetailsViewController.m */; }; + E3E312C115F1459600A8C1E7 /* ButtonTableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E8F02F01315565F0011E423 /* ButtonTableCell.m */; }; + E3E312C215F1459600A8C1E7 /* UIImage+RoundedCorner.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EC194C2131C62AF00BF073D /* UIImage+RoundedCorner.m */; }; + E3E312C315F1459600A8C1E7 /* CheckinTabViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EFC3D0F13A60A5000CCA185 /* CheckinTabViewController.m */; }; + E3E312C415F1459600A8C1E7 /* CheckinTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EFC3D1313A60A8E00CCA185 /* CheckinTableViewController.m */; }; + E3E312C515F1459600A8C1E7 /* BaseTabViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EFC3D1713A60C9900CCA185 /* BaseTabViewController.m */; }; + E3E312C615F1459600A8C1E7 /* BaseSortTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EFC3DD813A6333900CCA185 /* BaseSortTableViewController.m */; }; + E3E312C715F1459600A8C1E7 /* BaseMapViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EFC3DDC13A6334400CCA185 /* BaseMapViewController.m */; }; + E3E312C815F1459600A8C1E7 /* CheckinTableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBBE2F613A657720019BDED /* CheckinTableCell.m */; }; + E3E312C915F1459600A8C1E7 /* BaseDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EA4FCA213A7863500DBF3DA /* BaseDetailsViewController.m */; }; + E3E312CA15F1459600A8C1E7 /* UserDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E78472E1410F23600C5F5A6 /* UserDialog.m */; }; + E3E312CB15F1459600A8C1E7 /* UIDevice+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EB89E80145F1AE30038594C /* UIDevice+Extension.m */; }; + E3E312CC15F1459600A8C1E7 /* UIEvent+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E3F142514EC748700B18BF9 /* UIEvent+Extension.m */; }; + E3E312CD15F1459600A8C1E7 /* UserSelectViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EA9BD6214ED83E300167351 /* UserSelectViewController.m */; }; + E3E312CE15F1459600A8C1E7 /* CategorySelectViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EA9BD6D14ED83FF00167351 /* CategorySelectViewController.m */; }; + E3E312CF15F1459600A8C1E7 /* BaseAddViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E65A81814EEC9D600635E71 /* BaseAddViewController.m */; }; + E3E312D015F1459600A8C1E7 /* SplashViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E4432DC14FBE83100BFECD8 /* SplashViewController.m */; }; + E3E312D115F1459600A8C1E7 /* YouTubeTableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E4432EA14FC2C8800BFECD8 /* YouTubeTableCell.m */; }; + E3E312D215F1459600A8C1E7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E73874E151A843A00692956 /* main.m */; }; + E3E312D315F1459600A8C1E7 /* UIViewController+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EA7DEAD1549AD8B004566B0 /* UIViewController+Extension.m */; }; + E3E312D415F1459600A8C1E7 /* YouTubeUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EA1A4ED15CAF2780096E93A /* YouTubeUploader.m */; }; + E3E312D515F1459600A8C1E7 /* VideoPickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EA1A4F715CAF2D50096E93A /* VideoPickerController.m */; }; + E3E312D715F1459600A8C1E7 /* libz.1.2.5.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E024A0E14EAC9D10027D707 /* libz.1.2.5.dylib */; }; + E3E312D815F1459600A8C1E7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; + E3E312D915F1459600A8C1E7 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; + E3E312DA15F1459600A8C1E7 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; }; + E3E312DB15F1459600A8C1E7 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 28EEBFDC1118E19E00187D67 /* CoreData.framework */; }; + E3E312DC15F1459600A8C1E7 /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E98F3A41211EC6300C35F36 /* MapKit.framework */; }; + E3E312DD15F1459600A8C1E7 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E862AE21222C101001DE141 /* CoreFoundation.framework */; }; + E3E312DE15F1459600A8C1E7 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E862AE81222C111001DE141 /* SystemConfiguration.framework */; }; + E3E312DF15F1459600A8C1E7 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E862AEE1222C120001DE141 /* MobileCoreServices.framework */; }; + E3E312E015F1459600A8C1E7 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E862B091222C177001DE141 /* CFNetwork.framework */; }; + E3E312E115F1459600A8C1E7 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E9198A51293AD09005AC005 /* CoreLocation.framework */; }; + E3E312E215F1459600A8C1E7 /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3EFC1CA21295DD2900163B36 /* MessageUI.framework */; }; + E3E312E315F1459600A8C1E7 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E4C65BE12AD77DA001ED08A /* MediaPlayer.framework */; }; + E3E312E415F1459600A8C1E7 /* libxml2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 3EEFE19612DB87890076ABA1 /* libxml2.dylib */; }; + E3E312E515F1459600A8C1E7 /* libOAuth.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3EBBD62F12DCA73E007ECE4B /* libOAuth.a */; }; + E3E312E615F1459600A8C1E7 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3EBBD76B12DCAC73007ECE4B /* Security.framework */; }; + E3E312E715F1459600A8C1E7 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E7298B612EE524700FDED00 /* QuartzCore.framework */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -3383,6 +3723,13 @@ 609618F315532E6400FD97F8 /* Logo_iPhone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Logo_iPhone.png; sourceTree = ""; }; 609618F415532E6400FD97F8 /* Logo_iPhone@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Logo_iPhone@2x.png"; sourceTree = ""; }; 609618F515532E6400FD97F8 /* placeholder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = placeholder.png; sourceTree = ""; }; + E34C4DC6160587E5009680F7 /* IncidentCustomField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IncidentCustomField.h; sourceTree = ""; }; + E34C4DC7160587E5009680F7 /* IncidentCustomField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IncidentCustomField.m; sourceTree = ""; }; + E35F8ACC1608CD8E009C36FC /* CustomFieldTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomFieldTableViewController.h; sourceTree = ""; }; + E35F8ACD1608CD8E009C36FC /* CustomFieldTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomFieldTableViewController.m; sourceTree = ""; }; + E35F8ACE1608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = CustomFieldTableViewController_iPad.xib; path = ../../Classes/Controllers/CustomFieldTableViewController_iPad.xib; sourceTree = ""; }; + E35F8AE31608CE7D009C36FC /* CustomFieldTableViewController_iPhone.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CustomFieldTableViewController_iPhone.xib; sourceTree = ""; }; + E3E312ED15F1459600A8C1E7 /* USDA.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = USDA.app; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -3602,6 +3949,30 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + E3E312D615F1459600A8C1E7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + E3E312D715F1459600A8C1E7 /* libz.1.2.5.dylib in Frameworks */, + E3E312D815F1459600A8C1E7 /* Foundation.framework in Frameworks */, + E3E312D915F1459600A8C1E7 /* UIKit.framework in Frameworks */, + E3E312DA15F1459600A8C1E7 /* CoreGraphics.framework in Frameworks */, + E3E312DB15F1459600A8C1E7 /* CoreData.framework in Frameworks */, + E3E312DC15F1459600A8C1E7 /* MapKit.framework in Frameworks */, + E3E312DD15F1459600A8C1E7 /* CoreFoundation.framework in Frameworks */, + E3E312DE15F1459600A8C1E7 /* SystemConfiguration.framework in Frameworks */, + E3E312DF15F1459600A8C1E7 /* MobileCoreServices.framework in Frameworks */, + E3E312E015F1459600A8C1E7 /* CFNetwork.framework in Frameworks */, + E3E312E115F1459600A8C1E7 /* CoreLocation.framework in Frameworks */, + E3E312E215F1459600A8C1E7 /* MessageUI.framework in Frameworks */, + E3E312E315F1459600A8C1E7 /* MediaPlayer.framework in Frameworks */, + E3E312E415F1459600A8C1E7 /* libxml2.dylib in Frameworks */, + E3E312E515F1459600A8C1E7 /* libOAuth.a in Frameworks */, + E3E312E615F1459600A8C1E7 /* Security.framework in Frameworks */, + E3E312E715F1459600A8C1E7 /* QuartzCore.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -3617,6 +3988,7 @@ 3EB1F816146D6E4F009C62AB /* ICCM 2011.app */, 609618DB15532DB100FD97F8 /* MangrovesMap.app */, 3EF0C32815CB2B1800B44EA4 /* OffTheBus.app */, + E3E312ED15F1459600A8C1E7 /* USDA.app */, ); name = Products; sourceTree = ""; @@ -3803,6 +4175,8 @@ 3E79A95013950A3C00914628 /* IncidentTableCell_iPhone.xib */, 3EBBE2EB13A6552A0019BDED /* CheckinTableCell_iPhone.xib */, 3EBBE2EE13A655370019BDED /* CheckinTableCell_iPad.xib */, + E35F8ACE1608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib */, + E35F8AE31608CE7D009C36FC /* CustomFieldTableViewController_iPhone.xib */, ); path = NIBs; sourceTree = ""; @@ -3908,6 +4282,8 @@ 3E5BBBB51310A6150073E4F8 /* User.m */, 3E466FAB130C686A00EE685B /* Checkin.h */, 3E466FAC130C686A00EE685B /* Checkin.m */, + E34C4DC6160587E5009680F7 /* IncidentCustomField.h */, + E34C4DC7160587E5009680F7 /* IncidentCustomField.m */, ); path = Models; sourceTree = ""; @@ -4044,6 +4420,8 @@ 3EEFE0F412DB81600076ABA1 /* TwitterViewController.m */, 3EA1A4F615CAF2D50096E93A /* VideoPickerController.h */, 3EA1A4F715CAF2D50096E93A /* VideoPickerController.m */, + E35F8ACC1608CD8E009C36FC /* CustomFieldTableViewController.h */, + E35F8ACD1608CD8E009C36FC /* CustomFieldTableViewController.m */, ); path = Controllers; sourceTree = ""; @@ -4704,13 +5082,30 @@ productReference = 609618DB15532DB100FD97F8 /* MangrovesMap.app */; productType = "com.apple.product-type.application"; }; + E3E311B815F1459600A8C1E7 /* USDA */ = { + isa = PBXNativeTarget; + buildConfigurationList = E3E312E815F1459600A8C1E7 /* Build configuration list for PBXNativeTarget "USDA" */; + buildPhases = ( + E3E311B915F1459600A8C1E7 /* Resources */, + E3E3124015F1459600A8C1E7 /* Sources */, + E3E312D615F1459600A8C1E7 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = USDA; + productName = Ushahidi_iPhone; + productReference = E3E312ED15F1459600A8C1E7 /* USDA.app */; + productType = "com.apple.product-type.application"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0420; + LastUpgradeCheck = 0440; ORGANIZATIONNAME = Ushahidi; }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Ushahidi_iOS" */; @@ -4757,6 +5152,7 @@ 3EB1F6EE146D6E4F009C62AB /* ICCM2011 */, 609617A815532DB100FD97F8 /* MangrovesMap */, 3EF0C1F315CB2B1800B44EA4 /* OffTheBus */, + E3E311B815F1459600A8C1E7 /* USDA */, ); }; /* End PBXProject section */ @@ -4900,6 +5296,8 @@ 3E4432C614FBE77700BFECD8 /* SplashViewController_iPad.xib in Resources */, 3E4432D114FBE78D00BFECD8 /* SplashViewController_iPhone.xib in Resources */, 3E738750151A843A00692956 /* Entitlements.plist in Resources */, + E35F8AD91608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib in Resources */, + E35F8AE41608CE7E009C36FC /* CustomFieldTableViewController_iPhone.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5040,6 +5438,8 @@ 3E4432C814FBE77700BFECD8 /* SplashViewController_iPad.xib in Resources */, 3E4432D314FBE78D00BFECD8 /* SplashViewController_iPhone.xib in Resources */, 3E738752151A843A00692956 /* Entitlements.plist in Resources */, + E35F8ADB1608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib in Resources */, + E35F8AE61608CE7E009C36FC /* CustomFieldTableViewController_iPhone.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5181,6 +5581,8 @@ 3E4432CB14FBE77700BFECD8 /* SplashViewController_iPad.xib in Resources */, 3E4432D614FBE78D00BFECD8 /* SplashViewController_iPhone.xib in Resources */, 3E738755151A843A00692956 /* Entitlements.plist in Resources */, + E35F8ADC1608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib in Resources */, + E35F8AE71608CE7E009C36FC /* CustomFieldTableViewController_iPhone.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5322,6 +5724,8 @@ 3E4432CA14FBE77700BFECD8 /* SplashViewController_iPad.xib in Resources */, 3E4432D514FBE78D00BFECD8 /* SplashViewController_iPhone.xib in Resources */, 3E738754151A843A00692956 /* Entitlements.plist in Resources */, + E35F8ADE1608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib in Resources */, + E35F8AE91608CE7E009C36FC /* CustomFieldTableViewController_iPhone.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5462,6 +5866,8 @@ 3E4432CE14FBE77700BFECD8 /* SplashViewController_iPad.xib in Resources */, 3E4432D914FBE78D00BFECD8 /* SplashViewController_iPhone.xib in Resources */, 3E738756151A843A00692956 /* Entitlements.plist in Resources */, + E35F8ADF1608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib in Resources */, + E35F8AEA1608CE7E009C36FC /* CustomFieldTableViewController_iPhone.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5603,6 +6009,8 @@ 3E4432C914FBE77700BFECD8 /* SplashViewController_iPad.xib in Resources */, 3E4432D414FBE78D00BFECD8 /* SplashViewController_iPhone.xib in Resources */, 3E738753151A843A00692956 /* Entitlements.plist in Resources */, + E35F8ADD1608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib in Resources */, + E35F8AE81608CE7E009C36FC /* CustomFieldTableViewController_iPhone.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5744,6 +6152,8 @@ 3E4432C714FBE77700BFECD8 /* SplashViewController_iPad.xib in Resources */, 3E4432D214FBE78D00BFECD8 /* SplashViewController_iPhone.xib in Resources */, 3E738751151A843A00692956 /* Entitlements.plist in Resources */, + E35F8ADA1608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib in Resources */, + E35F8AE51608CE7E009C36FC /* CustomFieldTableViewController_iPhone.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5902,6 +6312,8 @@ 3EF0C34E15CB2B8300B44EA4 /* Logo_iPhone.png in Resources */, 3EF0C34F15CB2B8300B44EA4 /* Logo_iPhone@2x.png in Resources */, 3EF0C35015CB2B8300B44EA4 /* placeholder.png in Resources */, + E35F8AE11608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib in Resources */, + E35F8AEC1608CE7E009C36FC /* CustomFieldTableViewController_iPhone.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -6043,6 +6455,151 @@ 6096190B15532E6400FD97F8 /* placeholder.png in Resources */, 608FBDC01555592A00813B62 /* mangroves57.png in Resources */, 608FBDC21555592E00813B62 /* mangroves114.png in Resources */, + E35F8AE01608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib in Resources */, + E35F8AEB1608CE7E009C36FC /* CustomFieldTableViewController_iPhone.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E3E311B915F1459600A8C1E7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E3E311BA15F1459600A8C1E7 /* blank.png in Resources */, + E3E311BB15F1459600A8C1E7 /* location.png in Resources */, + E3E311BC15F1459600A8C1E7 /* arrow_down.png in Resources */, + E3E311BD15F1459600A8C1E7 /* arrow_up.png in Resources */, + E3E311BE15F1459600A8C1E7 /* selected.png in Resources */, + E3E311BF15F1459600A8C1E7 /* arrow_next.png in Resources */, + E3E311C015F1459600A8C1E7 /* arrow_previous.png in Resources */, + E3E311C115F1459600A8C1E7 /* unselected.png in Resources */, + E3E311C215F1459600A8C1E7 /* map.png in Resources */, + E3E311C315F1459600A8C1E7 /* reports.png in Resources */, + E3E311C415F1459600A8C1E7 /* empty.png in Resources */, + E3E311C515F1459600A8C1E7 /* refresh.png in Resources */, + E3E311C615F1459600A8C1E7 /* sort_alphabetical.png in Resources */, + E3E311C715F1459600A8C1E7 /* sort_date.png in Resources */, + E3E311C815F1459600A8C1E7 /* sort_verified.png in Resources */, + E3E311C915F1459600A8C1E7 /* email.png in Resources */, + E3E311CA15F1459600A8C1E7 /* photo_save.png in Resources */, + E3E311CB15F1459600A8C1E7 /* filter.png in Resources */, + E3E311CC15F1459600A8C1E7 /* radar.png in Resources */, + E3E311CD15F1459600A8C1E7 /* satellite.png in Resources */, + E3E311CE15F1459600A8C1E7 /* hybrid.png in Resources */, + E3E311CF15F1459600A8C1E7 /* sms.png in Resources */, + E3E311D015F1459600A8C1E7 /* twitter.png in Resources */, + E3E311D115F1459600A8C1E7 /* shorten.png in Resources */, + E3E311D215F1459600A8C1E7 /* logout.png in Resources */, + E3E311D315F1459600A8C1E7 /* jQueryInject.txt in Resources */, + E3E311D415F1459600A8C1E7 /* jQueryInjectLandscape.txt in Resources */, + E3E311D515F1459600A8C1E7 /* arrow_next@2x.png in Resources */, + E3E311D615F1459600A8C1E7 /* arrow_previous@2x.png in Resources */, + E3E311D715F1459600A8C1E7 /* email@2x.png in Resources */, + E3E311D815F1459600A8C1E7 /* filter@2x.png in Resources */, + E3E311D915F1459600A8C1E7 /* location@2x.png in Resources */, + E3E311DA15F1459600A8C1E7 /* logout@2x.png in Resources */, + E3E311DB15F1459600A8C1E7 /* map@2x.png in Resources */, + E3E311DC15F1459600A8C1E7 /* photo_save@2x.png in Resources */, + E3E311DD15F1459600A8C1E7 /* radar@2x.png in Resources */, + E3E311DE15F1459600A8C1E7 /* refresh@2x.png in Resources */, + E3E311DF15F1459600A8C1E7 /* reports@2x.png in Resources */, + E3E311E015F1459600A8C1E7 /* shorten@2x.png in Resources */, + E3E311E115F1459600A8C1E7 /* sms@2x.png in Resources */, + E3E311E215F1459600A8C1E7 /* sort_alphabetical@2x.png in Resources */, + E3E311E315F1459600A8C1E7 /* sort_date@2x.png in Resources */, + E3E311E415F1459600A8C1E7 /* sort_verified@2x.png in Resources */, + E3E311E515F1459600A8C1E7 /* twitter@2x.png in Resources */, + E3E311E615F1459600A8C1E7 /* satellite@2x.png in Resources */, + E3E311E715F1459600A8C1E7 /* hybrid@2x.png in Resources */, + E3E311E815F1459600A8C1E7 /* arrow_up@2x.png in Resources */, + E3E311E915F1459600A8C1E7 /* arrow_down@2x.png in Resources */, + E3E311EA15F1459600A8C1E7 /* selected@2x.png in Resources */, + E3E311EB15F1459600A8C1E7 /* unselected@2x.png in Resources */, + E3E311EC15F1459600A8C1E7 /* checkin.png in Resources */, + E3E311ED15F1459600A8C1E7 /* checkin@2x.png in Resources */, + E3E311EE15F1459600A8C1E7 /* button_red.png in Resources */, + E3E311EF15F1459600A8C1E7 /* button_red@2x.png in Resources */, + E3E311F015F1459600A8C1E7 /* button_red_selected.png in Resources */, + E3E311F115F1459600A8C1E7 /* button_red_selected@2x.png in Resources */, + E3E311F215F1459600A8C1E7 /* CategoryTableViewController_iPad.xib in Resources */, + E3E311F315F1459600A8C1E7 /* CategoryTableViewController_iPhone.xib in Resources */, + E3E311F415F1459600A8C1E7 /* CheckinAddViewController_iPad.xib in Resources */, + E3E311F515F1459600A8C1E7 /* CheckinAddViewController_iPhone.xib in Resources */, + E3E311F615F1459600A8C1E7 /* CheckinDetailsViewController_iPad.xib in Resources */, + E3E311F715F1459600A8C1E7 /* CheckinDetailsViewController_iPhone.xib in Resources */, + E3E311F815F1459600A8C1E7 /* CheckinMapViewController_iPad.xib in Resources */, + E3E311F915F1459600A8C1E7 /* CheckinMapViewController_iPhone.xib in Resources */, + E3E311FA15F1459600A8C1E7 /* DeploymentAddViewController_iPad.xib in Resources */, + E3E311FB15F1459600A8C1E7 /* DeploymentAddViewController_iPhone.xib in Resources */, + E3E311FC15F1459600A8C1E7 /* DeploymentTableCell_iPad.xib in Resources */, + E3E311FD15F1459600A8C1E7 /* DeploymentTableCell_iPhone.xib in Resources */, + E3E311FE15F1459600A8C1E7 /* DeploymentTableViewController_iPad.xib in Resources */, + E3E311FF15F1459600A8C1E7 /* DeploymentTableViewController_iPhone.xib in Resources */, + E3E3120015F1459600A8C1E7 /* ImageViewController_iPad.xib in Resources */, + E3E3120115F1459600A8C1E7 /* ImageViewController_iPhone.xib in Resources */, + E3E3120215F1459600A8C1E7 /* IncidentAddViewController_iPad.xib in Resources */, + E3E3120315F1459600A8C1E7 /* IncidentAddViewController_iPhone.xib in Resources */, + E3E3120415F1459600A8C1E7 /* IncidentDetailsViewController_iPad.xib in Resources */, + E3E3120515F1459600A8C1E7 /* IncidentDetailsViewController_iPhone.xib in Resources */, + E3E3120615F1459600A8C1E7 /* IncidentMapViewController_iPad.xib in Resources */, + E3E3120715F1459600A8C1E7 /* IncidentMapViewController_iPhone.xib in Resources */, + E3E3120815F1459600A8C1E7 /* IncidentTableCell_iPad.xib in Resources */, + E3E3120915F1459600A8C1E7 /* IncidentTableCell_iPhone.xib in Resources */, + E3E3120A15F1459600A8C1E7 /* IncidentTableViewController_iPad.xib in Resources */, + E3E3120B15F1459600A8C1E7 /* IncidentTableViewController_iPhone.xib in Resources */, + E3E3120C15F1459600A8C1E7 /* IncidentTabViewController_iPad.xib in Resources */, + E3E3120D15F1459600A8C1E7 /* IncidentTabViewController_iPhone.xib in Resources */, + E3E3120E15F1459600A8C1E7 /* LoadingViewController_iPad.xib in Resources */, + E3E3120F15F1459600A8C1E7 /* LoadingViewController_iPhone.xib in Resources */, + E3E3121015F1459600A8C1E7 /* LocationSelectViewController_iPad.xib in Resources */, + E3E3121115F1459600A8C1E7 /* LocationSelectViewController_iPhone.xib in Resources */, + E3E3121215F1459600A8C1E7 /* MainWindow_iPad.xib in Resources */, + E3E3121315F1459600A8C1E7 /* MainWindow_iPhone.xib in Resources */, + E3E3121415F1459600A8C1E7 /* MapViewController_iPad.xib in Resources */, + E3E3121515F1459600A8C1E7 /* MapViewController_iPhone.xib in Resources */, + E3E3121615F1459600A8C1E7 /* NewsViewController_iPad.xib in Resources */, + E3E3121715F1459600A8C1E7 /* NewsViewController_iPhone.xib in Resources */, + E3E3121815F1459600A8C1E7 /* SettingsViewController_iPad.xib in Resources */, + E3E3121915F1459600A8C1E7 /* SettingsViewController_iPhone.xib in Resources */, + E3E3121A15F1459600A8C1E7 /* SliderTableCell_iPad.xib in Resources */, + E3E3121B15F1459600A8C1E7 /* SliderTableCell_iPhone.xib in Resources */, + E3E3121C15F1459600A8C1E7 /* TwitterViewController_iPad.xib in Resources */, + E3E3121D15F1459600A8C1E7 /* TwitterViewController_iPhone.xib in Resources */, + E3E3121E15F1459600A8C1E7 /* WebViewController_iPad.xib in Resources */, + E3E3121F15F1459600A8C1E7 /* WebViewController_iPhone.xib in Resources */, + E3E3122015F1459600A8C1E7 /* CheckinTabViewController_iPhone.xib in Resources */, + E3E3122115F1459600A8C1E7 /* CheckinTabViewController_iPad.xib in Resources */, + E3E3122215F1459600A8C1E7 /* CheckinTableViewController_iPhone.xib in Resources */, + E3E3122315F1459600A8C1E7 /* CheckinTableViewController_iPad.xib in Resources */, + E3E3122415F1459600A8C1E7 /* CheckinTableCell_iPhone.xib in Resources */, + E3E3122515F1459600A8C1E7 /* CheckinTableCell_iPad.xib in Resources */, + E3E3122615F1459600A8C1E7 /* Localizable.strings in Resources */, + E3E3122715F1459600A8C1E7 /* Default-Portrait.png in Resources */, + E3E3122815F1459600A8C1E7 /* Default.png in Resources */, + E3E3122915F1459600A8C1E7 /* Default@2x.png in Resources */, + E3E3122A15F1459600A8C1E7 /* Icon-57.png in Resources */, + E3E3122B15F1459600A8C1E7 /* Icon-72.png in Resources */, + E3E3122C15F1459600A8C1E7 /* Icon-Small-50.png in Resources */, + E3E3122D15F1459600A8C1E7 /* Icon-Small.png in Resources */, + E3E3122E15F1459600A8C1E7 /* Icon-Small@2x.png in Resources */, + E3E3122F15F1459600A8C1E7 /* Icon.png in Resources */, + E3E3123015F1459600A8C1E7 /* Icon@2x.png in Resources */, + E3E3123115F1459600A8C1E7 /* iTunesArtwork in Resources */, + E3E3123215F1459600A8C1E7 /* iTunesArtwork.png in Resources */, + E3E3123315F1459600A8C1E7 /* placeholder.png in Resources */, + E3E3123415F1459600A8C1E7 /* Logo_iPad.png in Resources */, + E3E3123515F1459600A8C1E7 /* Logo_iPad@2x.png in Resources */, + E3E3123615F1459600A8C1E7 /* Logo_iPhone.png in Resources */, + E3E3123715F1459600A8C1E7 /* Logo_iPhone@2x.png in Resources */, + E3E3123815F1459600A8C1E7 /* CategorySelectViewController_iPhone.xib in Resources */, + E3E3123915F1459600A8C1E7 /* CategorySelectViewController_iPad.xib in Resources */, + E3E3123A15F1459600A8C1E7 /* UserSelectViewController_iPhone.xib in Resources */, + E3E3123B15F1459600A8C1E7 /* UserSelectViewController_iPad.xib in Resources */, + E3E3123C15F1459600A8C1E7 /* pattern.png in Resources */, + E3E3123D15F1459600A8C1E7 /* SplashViewController_iPad.xib in Resources */, + E3E3123E15F1459600A8C1E7 /* SplashViewController_iPhone.xib in Resources */, + E3E3123F15F1459600A8C1E7 /* Entitlements.plist in Resources */, + E35F8AE21608CD8E009C36FC /* CustomFieldTableViewController_iPad.xib in Resources */, + E35F8AED1608CE7E009C36FC /* CustomFieldTableViewController_iPhone.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -6202,6 +6759,8 @@ 3EA7DEAE1549AD8B004566B0 /* UIViewController+Extension.m in Sources */, 3EA1A4EE15CAF2780096E93A /* YouTubeUploader.m in Sources */, 3EA1A4F815CAF2D50096E93A /* VideoPickerController.m in Sources */, + E34C4DC8160587E5009680F7 /* IncidentCustomField.m in Sources */, + E35F8ACF1608CD8E009C36FC /* CustomFieldTableViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -6358,6 +6917,8 @@ 3EA7DEB01549AD8B004566B0 /* UIViewController+Extension.m in Sources */, 3EA1A4F015CAF2780096E93A /* YouTubeUploader.m in Sources */, 3EA1A4FA15CAF2D50096E93A /* VideoPickerController.m in Sources */, + E34C4DCA160587E5009680F7 /* IncidentCustomField.m in Sources */, + E35F8AD11608CD8E009C36FC /* CustomFieldTableViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -6514,6 +7075,8 @@ 3EA7DEB31549AD8B004566B0 /* UIViewController+Extension.m in Sources */, 3EA1A4F115CAF2780096E93A /* YouTubeUploader.m in Sources */, 3EA1A4FB15CAF2D50096E93A /* VideoPickerController.m in Sources */, + E34C4DCB160587E5009680F7 /* IncidentCustomField.m in Sources */, + E35F8AD21608CD8E009C36FC /* CustomFieldTableViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -6670,6 +7233,8 @@ 3EA7DEB21549AD8B004566B0 /* UIViewController+Extension.m in Sources */, 3EA1A4F315CAF2780096E93A /* YouTubeUploader.m in Sources */, 3EA1A4FD15CAF2D50096E93A /* VideoPickerController.m in Sources */, + E34C4DCD160587E5009680F7 /* IncidentCustomField.m in Sources */, + E35F8AD41608CD8E009C36FC /* CustomFieldTableViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -6826,6 +7391,8 @@ 3EA7DEB41549AD8B004566B0 /* UIViewController+Extension.m in Sources */, 3EA1A4F415CAF2780096E93A /* YouTubeUploader.m in Sources */, 3EA1A4FE15CAF2D50096E93A /* VideoPickerController.m in Sources */, + E34C4DCE160587E5009680F7 /* IncidentCustomField.m in Sources */, + E35F8AD51608CD8E009C36FC /* CustomFieldTableViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -6982,6 +7549,8 @@ 3EA7DEB11549AD8B004566B0 /* UIViewController+Extension.m in Sources */, 3EA1A4F215CAF2780096E93A /* YouTubeUploader.m in Sources */, 3EA1A4FC15CAF2D50096E93A /* VideoPickerController.m in Sources */, + E34C4DCC160587E5009680F7 /* IncidentCustomField.m in Sources */, + E35F8AD31608CD8E009C36FC /* CustomFieldTableViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -7138,6 +7707,8 @@ 3EA7DEAF1549AD8B004566B0 /* UIViewController+Extension.m in Sources */, 3EA1A4EF15CAF2780096E93A /* YouTubeUploader.m in Sources */, 3EA1A4F915CAF2D50096E93A /* VideoPickerController.m in Sources */, + E34C4DC9160587E5009680F7 /* IncidentCustomField.m in Sources */, + E35F8AD01608CD8E009C36FC /* CustomFieldTableViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -7294,6 +7865,8 @@ 3EF0C30E15CB2B1800B44EA4 /* UIViewController+Extension.m in Sources */, 3EF0C30F15CB2B1800B44EA4 /* YouTubeUploader.m in Sources */, 3EF0C31015CB2B1800B44EA4 /* VideoPickerController.m in Sources */, + E34C4DD0160587E5009680F7 /* IncidentCustomField.m in Sources */, + E35F8AD71608CD8E009C36FC /* CustomFieldTableViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -7450,6 +8023,166 @@ 609618C315532DB100FD97F8 /* UIViewController+Extension.m in Sources */, 3EA1A4F515CAF2780096E93A /* YouTubeUploader.m in Sources */, 3EA1A4FF15CAF2D50096E93A /* VideoPickerController.m in Sources */, + E34C4DCF160587E5009680F7 /* IncidentCustomField.m in Sources */, + E35F8AD61608CD8E009C36FC /* CustomFieldTableViewController.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E3E3124015F1459600A8C1E7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E3E3124115F1459600A8C1E7 /* AppDelegate.m in Sources */, + E3E3124215F1459600A8C1E7 /* Device.m in Sources */, + E3E3124315F1459600A8C1E7 /* IncidentAddViewController.m in Sources */, + E3E3124415F1459600A8C1E7 /* DeploymentAddViewController.m in Sources */, + E3E3124515F1459600A8C1E7 /* ImagePickerController.m in Sources */, + E3E3124615F1459600A8C1E7 /* ImageViewController.m in Sources */, + E3E3124715F1459600A8C1E7 /* DeploymentTableViewController.m in Sources */, + E3E3124815F1459600A8C1E7 /* MapViewController.m in Sources */, + E3E3124915F1459600A8C1E7 /* BaseTableViewController.m in Sources */, + E3E3124A15F1459600A8C1E7 /* IncidentDetailsViewController.m in Sources */, + E3E3124B15F1459600A8C1E7 /* WebViewController.m in Sources */, + E3E3124C15F1459600A8C1E7 /* BooleanTableCell.m in Sources */, + E3E3124D15F1459600A8C1E7 /* CheckBoxTableCell.m in Sources */, + E3E3124E15F1459600A8C1E7 /* ImageTableCell.m in Sources */, + E3E3124F15F1459600A8C1E7 /* MapTableCell.m in Sources */, + E3E3125015F1459600A8C1E7 /* SubtitleTableCell.m in Sources */, + E3E3125115F1459600A8C1E7 /* TableCellFactory.m in Sources */, + E3E3125215F1459600A8C1E7 /* TextFieldTableCell.m in Sources */, + E3E3125315F1459600A8C1E7 /* TextTableCell.m in Sources */, + E3E3125415F1459600A8C1E7 /* TextViewTableCell.m in Sources */, + E3E3125515F1459600A8C1E7 /* AppDelegate_iPad.m in Sources */, + E3E3125615F1459600A8C1E7 /* AppDelegate_iPhone.m in Sources */, + E3E3125715F1459600A8C1E7 /* NSObject+SBJSON.m in Sources */, + E3E3125815F1459600A8C1E7 /* NSString+SBJSON.m in Sources */, + E3E3125915F1459600A8C1E7 /* SBJsonBase.m in Sources */, + E3E3125A15F1459600A8C1E7 /* SBJsonParser.m in Sources */, + E3E3125B15F1459600A8C1E7 /* SBJsonWriter.m in Sources */, + E3E3125C15F1459600A8C1E7 /* ASIAuthenticationDialog.m in Sources */, + E3E3125D15F1459600A8C1E7 /* ASIDownloadCache.m in Sources */, + E3E3125E15F1459600A8C1E7 /* ASIFormDataRequest.m in Sources */, + E3E3125F15F1459600A8C1E7 /* ASIHTTPRequest.m in Sources */, + E3E3126015F1459600A8C1E7 /* ASIInputStream.m in Sources */, + E3E3126115F1459600A8C1E7 /* ASINetworkQueue.m in Sources */, + E3E3126215F1459600A8C1E7 /* Reachability.m in Sources */, + E3E3126315F1459600A8C1E7 /* Category.m in Sources */, + E3E3126415F1459600A8C1E7 /* Settings.m in Sources */, + E3E3126515F1459600A8C1E7 /* LoadingViewController.m in Sources */, + E3E3126615F1459600A8C1E7 /* BaseViewController.m in Sources */, + E3E3126715F1459600A8C1E7 /* AlertView.m in Sources */, + E3E3126815F1459600A8C1E7 /* InputView.m in Sources */, + E3E3126915F1459600A8C1E7 /* UIColor+Extension.m in Sources */, + E3E3126A15F1459600A8C1E7 /* Ushahidi.m in Sources */, + E3E3126B15F1459600A8C1E7 /* NSKeyedArchiver+Extension.m in Sources */, + E3E3126C15F1459600A8C1E7 /* NSKeyedUnarchiver+Extension.m in Sources */, + E3E3126D15F1459600A8C1E7 /* NSDate+Extension.m in Sources */, + E3E3126E15F1459600A8C1E7 /* Deployment.m in Sources */, + E3E3126F15F1459600A8C1E7 /* Country.m in Sources */, + E3E3127015F1459600A8C1E7 /* Location.m in Sources */, + E3E3127115F1459600A8C1E7 /* Incident.m in Sources */, + E3E3127215F1459600A8C1E7 /* News.m in Sources */, + E3E3127315F1459600A8C1E7 /* Photo.m in Sources */, + E3E3127415F1459600A8C1E7 /* UIImage+Alpha.m in Sources */, + E3E3127515F1459600A8C1E7 /* UIImage+Resize.m in Sources */, + E3E3127615F1459600A8C1E7 /* MapAnnotation.m in Sources */, + E3E3127715F1459600A8C1E7 /* NSDictionary+Extension.m in Sources */, + E3E3127815F1459600A8C1E7 /* MKMapView+Extension.m in Sources */, + E3E3127915F1459600A8C1E7 /* NavigationController.m in Sources */, + E3E3127A15F1459600A8C1E7 /* DateTableCell.m in Sources */, + E3E3127B15F1459600A8C1E7 /* DatePicker.m in Sources */, + E3E3127C15F1459600A8C1E7 /* UIView+Extension.m in Sources */, + E3E3127D15F1459600A8C1E7 /* DeploymentTableCell.m in Sources */, + E3E3127E15F1459600A8C1E7 /* IncidentTableCell.m in Sources */, + E3E3127F15F1459600A8C1E7 /* Media.m in Sources */, + E3E3128015F1459600A8C1E7 /* Sound.m in Sources */, + E3E3128115F1459600A8C1E7 /* Video.m in Sources */, + E3E3128215F1459600A8C1E7 /* TableHeaderView.m in Sources */, + E3E3128315F1459600A8C1E7 /* SettingsViewController.m in Sources */, + E3E3128415F1459600A8C1E7 /* NSString+Extension.m in Sources */, + E3E3128515F1459600A8C1E7 /* CategoryTableViewController.m in Sources */, + E3E3128615F1459600A8C1E7 /* LocationSelectViewController.m in Sources */, + E3E3128715F1459600A8C1E7 /* UIImage+Extension.m in Sources */, + E3E3128815F1459600A8C1E7 /* MotionWindow.m in Sources */, + E3E3128915F1459600A8C1E7 /* SliderTableCell.m in Sources */, + E3E3128A15F1459600A8C1E7 /* NSObject+Extension.m in Sources */, + E3E3128B15F1459600A8C1E7 /* NSError+Extension.m in Sources */, + E3E3128C15F1459600A8C1E7 /* IndexedTableCell.m in Sources */, + E3E3128D15F1459600A8C1E7 /* NSURL+Extension.m in Sources */, + E3E3128E15F1459600A8C1E7 /* Locator.m in Sources */, + E3E3128F15F1459600A8C1E7 /* Email.m in Sources */, + E3E3129015F1459600A8C1E7 /* ItemPicker.m in Sources */, + E3E3129115F1459600A8C1E7 /* NewsViewController.m in Sources */, + E3E3129215F1459600A8C1E7 /* MoviePlayer.m in Sources */, + E3E3129315F1459600A8C1E7 /* SMS.m in Sources */, + E3E3129415F1459600A8C1E7 /* Internet.m in Sources */, + E3E3129515F1459600A8C1E7 /* MKPinAnnotationView+Extension.m in Sources */, + E3E3129615F1459600A8C1E7 /* Bitly.m in Sources */, + E3E3129715F1459600A8C1E7 /* TwitterViewController.m in Sources */, + E3E3129815F1459600A8C1E7 /* NSData+Extension.m in Sources */, + E3E3129915F1459600A8C1E7 /* MGTwitterEngine.m in Sources */, + E3E3129A15F1459600A8C1E7 /* MGTwitterHTTPURLConnection.m in Sources */, + E3E3129B15F1459600A8C1E7 /* MGTwitterLibXMLParser.m in Sources */, + E3E3129C15F1459600A8C1E7 /* MGTwitterMessagesLibXMLParser.m in Sources */, + E3E3129D15F1459600A8C1E7 /* MGTwitterMessagesParser.m in Sources */, + E3E3129E15F1459600A8C1E7 /* MGTwitterMiscLibXMLParser.m in Sources */, + E3E3129F15F1459600A8C1E7 /* MGTwitterMiscParser.m in Sources */, + E3E312A015F1459600A8C1E7 /* MGTwitterSocialGraphLibXMLParser.m in Sources */, + E3E312A115F1459600A8C1E7 /* MGTwitterSocialGraphParser.m in Sources */, + E3E312A215F1459600A8C1E7 /* MGTwitterStatusesLibXMLParser.m in Sources */, + E3E312A315F1459600A8C1E7 /* MGTwitterStatusesParser.m in Sources */, + E3E312A415F1459600A8C1E7 /* MGTwitterTouchJSONParser.m in Sources */, + E3E312A515F1459600A8C1E7 /* MGTwitterUserListsParser.m in Sources */, + E3E312A615F1459600A8C1E7 /* MGTwitterUsersLibXMLParser.m in Sources */, + E3E312A715F1459600A8C1E7 /* MGTwitterUsersParser.m in Sources */, + E3E312A815F1459600A8C1E7 /* MGTwitterXMLParser.m in Sources */, + E3E312A915F1459600A8C1E7 /* NSData+Base64.m in Sources */, + E3E312AA15F1459600A8C1E7 /* NSString+UUID.m in Sources */, + E3E312AB15F1459600A8C1E7 /* CDataScanner.m in Sources */, + E3E312AC15F1459600A8C1E7 /* CFilteringJSONSerializer.m in Sources */, + E3E312AD15F1459600A8C1E7 /* CJSONDeserializer_BlocksExtensions.m in Sources */, + E3E312AE15F1459600A8C1E7 /* CJSONSerializedData.m in Sources */, + E3E312AF15F1459600A8C1E7 /* CDataScanner_Extensions.m in Sources */, + E3E312B015F1459600A8C1E7 /* NSCharacterSet_Extensions.m in Sources */, + E3E312B115F1459600A8C1E7 /* NSDictionary_JSONExtensions.m in Sources */, + E3E312B215F1459600A8C1E7 /* NSScanner_Extensions.m in Sources */, + E3E312B315F1459600A8C1E7 /* CJSONDeserializer.m in Sources */, + E3E312B415F1459600A8C1E7 /* CJSONScanner.m in Sources */, + E3E312B515F1459600A8C1E7 /* CJSONSerializer.m in Sources */, + E3E312B615F1459600A8C1E7 /* SFHFKeychainUtils.m in Sources */, + E3E312B715F1459600A8C1E7 /* ASIHTTPRequest+Extension.m in Sources */, + E3E312B815F1459600A8C1E7 /* MapDialog.m in Sources */, + E3E312B915F1459600A8C1E7 /* Checkin.m in Sources */, + E3E312BA15F1459600A8C1E7 /* CheckinAddViewController.m in Sources */, + E3E312BB15F1459600A8C1E7 /* User.m in Sources */, + E3E312BC15F1459600A8C1E7 /* IncidentTableViewController.m in Sources */, + E3E312BD15F1459600A8C1E7 /* IncidentMapViewController.m in Sources */, + E3E312BE15F1459600A8C1E7 /* CheckinMapViewController.m in Sources */, + E3E312BF15F1459600A8C1E7 /* IncidentTabViewController.m in Sources */, + E3E312C015F1459600A8C1E7 /* CheckinDetailsViewController.m in Sources */, + E3E312C115F1459600A8C1E7 /* ButtonTableCell.m in Sources */, + E3E312C215F1459600A8C1E7 /* UIImage+RoundedCorner.m in Sources */, + E3E312C315F1459600A8C1E7 /* CheckinTabViewController.m in Sources */, + E3E312C415F1459600A8C1E7 /* CheckinTableViewController.m in Sources */, + E3E312C515F1459600A8C1E7 /* BaseTabViewController.m in Sources */, + E3E312C615F1459600A8C1E7 /* BaseSortTableViewController.m in Sources */, + E3E312C715F1459600A8C1E7 /* BaseMapViewController.m in Sources */, + E3E312C815F1459600A8C1E7 /* CheckinTableCell.m in Sources */, + E3E312C915F1459600A8C1E7 /* BaseDetailsViewController.m in Sources */, + E3E312CA15F1459600A8C1E7 /* UserDialog.m in Sources */, + E3E312CB15F1459600A8C1E7 /* UIDevice+Extension.m in Sources */, + E3E312CC15F1459600A8C1E7 /* UIEvent+Extension.m in Sources */, + E3E312CD15F1459600A8C1E7 /* UserSelectViewController.m in Sources */, + E3E312CE15F1459600A8C1E7 /* CategorySelectViewController.m in Sources */, + E3E312CF15F1459600A8C1E7 /* BaseAddViewController.m in Sources */, + E3E312D015F1459600A8C1E7 /* SplashViewController.m in Sources */, + E3E312D115F1459600A8C1E7 /* YouTubeTableCell.m in Sources */, + E3E312D215F1459600A8C1E7 /* main.m in Sources */, + E3E312D315F1459600A8C1E7 /* UIViewController+Extension.m in Sources */, + E3E312D415F1459600A8C1E7 /* YouTubeUploader.m in Sources */, + E3E312D515F1459600A8C1E7 /* VideoPickerController.m in Sources */, + E34C4DD1160587E5009680F7 /* IncidentCustomField.m in Sources */, + E35F8AD81608CD8E009C36FC /* CustomFieldTableViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -7490,13 +8223,14 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CODE_SIGN_ENTITLEMENTS = ""; - CODE_SIGN_IDENTITY = "iPhone Developer: Dale Zak (8QRQR3SCMG)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: Dale Zak (8QRQR3SCMG)"; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/Ushahidi/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -7504,8 +8238,8 @@ "\"$(SRCROOT)/Libraries/Twitter/OAuthConsumer\"", ); PRODUCT_NAME = Ushahidi; - PROVISIONING_PROFILE = "43910EA6-560C-4AD0-ADEB-86C64D02BB80"; - "PROVISIONING_PROFILE[sdk=iphoneos*]" = "43910EA6-560C-4AD0-ADEB-86C64D02BB80"; + PROVISIONING_PROFILE = ""; + "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; }; name = Debug; }; @@ -7514,11 +8248,12 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CODE_SIGN_ENTITLEMENTS = ""; - CODE_SIGN_IDENTITY = "iPhone Developer: Dale Zak (8QRQR3SCMG)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: Dale Zak (8QRQR3SCMG)"; + CODE_SIGN_IDENTITY = "iPhone Distribution"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/Ushahidi/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -7526,8 +8261,8 @@ "\"$(SRCROOT)/Libraries/Twitter/OAuthConsumer\"", ); PRODUCT_NAME = Ushahidi; - PROVISIONING_PROFILE = "43910EA6-560C-4AD0-ADEB-86C64D02BB80"; - "PROVISIONING_PROFILE[sdk=iphoneos*]" = "43910EA6-560C-4AD0-ADEB-86C64D02BB80"; + PROVISIONING_PROFILE = ""; + "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; VALIDATE_PRODUCT = YES; }; name = Release; @@ -7544,6 +8279,7 @@ GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/BeijingTransport/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -7566,6 +8302,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/BeijingTransport/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -7589,6 +8326,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/BeijingTransport/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -7612,6 +8350,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/BeijingTransport/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -7637,6 +8376,7 @@ GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/Inherity/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -7659,6 +8399,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/Inherity/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -7682,6 +8423,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/Inherity/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -7705,6 +8447,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/Inherity/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -7729,6 +8472,7 @@ GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/TEDFellows/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -7749,6 +8493,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/TEDFellows/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -7770,6 +8515,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/TEDFellows/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -7791,6 +8537,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/TEDFellows/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -7814,6 +8561,7 @@ GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/ICCM2011/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -7834,6 +8582,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/ICCM2011/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -7855,6 +8604,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/ICCM2011/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -7876,6 +8626,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/ICCM2011/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -7900,6 +8651,7 @@ GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/TeamCheckins/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -7922,6 +8674,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/TeamCheckins/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -7945,6 +8698,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/TeamCheckins/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -7968,6 +8722,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/TeamCheckins/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -7984,23 +8739,24 @@ 3ED0518E121348D6000CFFA6 /* Ad Hoc */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = ( - armv6, - armv7, - ); - CODE_SIGN_IDENTITY = "iPhone Distribution"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CODE_SIGN_IDENTITY = "iPhone Distribution: Quark Studios LLC"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Quark Studios LLC"; GCC_C_LANGUAGE_STANDARD = c99; GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_THUMB_SUPPORT = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = "$(SDKROOT)/usr/include/libxml2"; - INFOPLIST_FILE = Themes/Ushahidi/Info.plist; + HEADER_SEARCH_PATHS = ( + "$(SDKROOT)/usr/include/libxml2", + /usr/include/libxml2, + ); + INFOPLIST_FILE = Themes/USDA/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 3.2; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; - PROVISIONING_PROFILE = ""; - "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; + PROVISIONING_PROFILE = "B84FB89F-5817-4EE8-8D1E-620018905CAD"; + "PROVISIONING_PROFILE[sdk=iphoneos*]" = "B84FB89F-5817-4EE8-8D1E-620018905CAD"; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALID_ARCHS = "armv6 armv7 i386"; @@ -8012,11 +8768,12 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CODE_SIGN_ENTITLEMENTS = Other/Entitlements.plist; - CODE_SIGN_IDENTITY = "iPhone Distribution: Ushahidi Inc."; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Ushahidi Inc."; + CODE_SIGN_IDENTITY = "iPhone Distribution"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/Ushahidi/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -8024,8 +8781,8 @@ "\"$(SRCROOT)/Libraries/Twitter/OAuthConsumer\"", ); PRODUCT_NAME = Ushahidi; - PROVISIONING_PROFILE = "DF9A930B-FCF7-4F40-8353-07C7D3AA6037"; - "PROVISIONING_PROFILE[sdk=iphoneos*]" = "DF9A930B-FCF7-4F40-8353-07C7D3AA6037"; + PROVISIONING_PROFILE = ""; + "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; VALIDATE_PRODUCT = YES; }; name = "Ad Hoc"; @@ -8033,23 +8790,22 @@ 3ED05190121348DB000CFFA6 /* App Store */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = ( - armv6, - armv7, - ); - CODE_SIGN_IDENTITY = "iPhone Distribution"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; GCC_C_LANGUAGE_STANDARD = c99; GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_THUMB_SUPPORT = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = "$(SDKROOT)/usr/include/libxml2"; - INFOPLIST_FILE = Themes/Ushahidi/Info.plist; + HEADER_SEARCH_PATHS = ( + "$(SDKROOT)/usr/include/libxml2", + /usr/include/libxml2, + ); + INFOPLIST_FILE = Themes/USDA/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 3.2; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; - PROVISIONING_PROFILE = ""; - "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALID_ARCHS = "armv6 armv7 i386"; @@ -8061,11 +8817,12 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CODE_SIGN_ENTITLEMENTS = Other/Entitlements.plist; - CODE_SIGN_IDENTITY = "iPhone Distribution: Ushahidi Inc."; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Ushahidi Inc."; + CODE_SIGN_IDENTITY = "iPhone Distribution"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/Ushahidi/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -8073,8 +8830,8 @@ "\"$(SRCROOT)/Libraries/Twitter/OAuthConsumer\"", ); PRODUCT_NAME = Ushahidi; - PROVISIONING_PROFILE = "DF9A930B-FCF7-4F40-8353-07C7D3AA6037"; - "PROVISIONING_PROFILE[sdk=iphoneos*]" = "DF9A930B-FCF7-4F40-8353-07C7D3AA6037"; + PROVISIONING_PROFILE = ""; + "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; VALIDATE_PRODUCT = YES; }; name = "App Store"; @@ -8091,6 +8848,7 @@ GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/MapATL/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -8113,6 +8871,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/MapATL/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -8136,6 +8895,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/MapATL/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -8159,6 +8919,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/MapATL/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -8184,6 +8945,7 @@ GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/OffTheBus/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -8206,6 +8968,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/OffTheBus/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -8229,6 +8992,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/OffTheBus/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -8252,6 +9016,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/OffTheBus/Info.plist; LIBRARY_SEARCH_PATHS = ( @@ -8277,6 +9042,7 @@ GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/MangrovesMap/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 5.0; @@ -8301,6 +9067,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/MangrovesMap/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 5.0; @@ -8326,6 +9093,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/MangrovesMap/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 5.0; @@ -8351,6 +9119,7 @@ COPY_PHASE_STRIP = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = Themes/MangrovesMap/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 5.0; @@ -8369,22 +9138,25 @@ C01FCF4F08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = ( - armv6, - armv7, - ); - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CODE_SIGN_IDENTITY = "iPhone Developer: Kurt Tometich (825Q2M7GF5)"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: Kurt Tometich (825Q2M7GF5)"; GCC_C_LANGUAGE_STANDARD = c99; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREPROCESSOR_DEFINITIONS = "DEBUG_LOG=1"; GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = ""; + GCC_THUMB_SUPPORT = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = "$(SDKROOT)/usr/include/libxml2"; - INFOPLIST_FILE = Themes/Ushahidi/Info.plist; + HEADER_SEARCH_PATHS = ( + "$(SDKROOT)/usr/include/libxml2", + /usr/include/libxml2, + ); + INFOPLIST_FILE = Themes/USDA/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 3.2; ONLY_ACTIVE_ARCH = NO; - "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; + PROVISIONING_PROFILE = "76BAFFC1-064A-4B49-8F97-B049477769E0"; + "PROVISIONING_PROFILE[sdk=iphoneos*]" = "76BAFFC1-064A-4B49-8F97-B049477769E0"; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALID_ARCHS = "armv6 armv7 i386"; @@ -8394,27 +9166,143 @@ C01FCF5008A954540054247B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = ( - armv6, - armv7, - ); - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CODE_SIGN_IDENTITY = "iPhone Distribution: Quark Studios LLC"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Quark Studios LLC"; GCC_C_LANGUAGE_STANDARD = c99; GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_THUMB_SUPPORT = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = "$(SDKROOT)/usr/include/libxml2"; - INFOPLIST_FILE = Themes/Ushahidi/Info.plist; + HEADER_SEARCH_PATHS = ( + "$(SDKROOT)/usr/include/libxml2", + /usr/include/libxml2, + ); + INFOPLIST_FILE = Themes/USDA/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 3.2; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; - "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; + PROVISIONING_PROFILE = "B84FB89F-5817-4EE8-8D1E-620018905CAD"; + "PROVISIONING_PROFILE[sdk=iphoneos*]" = "B84FB89F-5817-4EE8-8D1E-620018905CAD"; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALID_ARCHS = "armv6 armv7 i386"; }; name = Release; }; + E3E312E915F1459600A8C1E7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CODE_SIGN_ENTITLEMENTS = ""; + CODE_SIGN_IDENTITY = "iPhone Developer: Kunjan Shah (79Q5CFAME4)"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: Kunjan Shah (79Q5CFAME4)"; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ( + "$(SDKROOT)/usr/include/libxml2", + /usr/include/libxml2, + ); + INFOPLIST_FILE = Themes/Ushahidi/info.plist; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/Libraries/Twitter/OAuthConsumer\"", + ); + PRODUCT_NAME = USDA; + PROVISIONING_PROFILE = "22E2152A-6978-4D15-8F6F-8FC44DAE1FF7"; + "PROVISIONING_PROFILE[sdk=iphoneos*]" = "22E2152A-6978-4D15-8F6F-8FC44DAE1FF7"; + }; + name = Debug; + }; + E3E312EA15F1459600A8C1E7 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CODE_SIGN_ENTITLEMENTS = ""; + CODE_SIGN_IDENTITY = "iPhone Distribution: Quark Studios LLC"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Quark Studios LLC"; + COPY_PHASE_STRIP = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ( + "$(SDKROOT)/usr/include/libxml2", + /usr/include/libxml2, + ); + INFOPLIST_FILE = Themes/Ushahidi/info.plist; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/Libraries/Twitter/OAuthConsumer\"", + ); + PRODUCT_NAME = USDA; + PROVISIONING_PROFILE = "B84FB89F-5817-4EE8-8D1E-620018905CAD"; + "PROVISIONING_PROFILE[sdk=iphoneos*]" = "B84FB89F-5817-4EE8-8D1E-620018905CAD"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + E3E312EB15F1459600A8C1E7 /* Ad Hoc */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CODE_SIGN_ENTITLEMENTS = Other/Entitlements.plist; + CODE_SIGN_IDENTITY = "iPhone Distribution: Quark Studios LLC"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Quark Studios LLC"; + COPY_PHASE_STRIP = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ( + "$(SDKROOT)/usr/include/libxml2", + /usr/include/libxml2, + ); + INFOPLIST_FILE = Themes/Ushahidi/info.plist; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/Libraries/Twitter/OAuthConsumer\"", + ); + PRODUCT_NAME = USDA; + PROVISIONING_PROFILE = "B84FB89F-5817-4EE8-8D1E-620018905CAD"; + "PROVISIONING_PROFILE[sdk=iphoneos*]" = "B84FB89F-5817-4EE8-8D1E-620018905CAD"; + VALIDATE_PRODUCT = YES; + }; + name = "Ad Hoc"; + }; + E3E312EC15F1459600A8C1E7 /* App Store */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CODE_SIGN_ENTITLEMENTS = Other/Entitlements.plist; + CODE_SIGN_IDENTITY = "iPhone Distribution: Quark Studios LLC"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Quark Studios LLC"; + COPY_PHASE_STRIP = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = Other/Prefix.pch; + GCC_THUMB_SUPPORT = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ( + "$(SDKROOT)/usr/include/libxml2", + /usr/include/libxml2, + ); + INFOPLIST_FILE = Themes/Ushahidi/info.plist; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/Libraries/Twitter/OAuthConsumer\"", + ); + PRODUCT_NAME = USDA; + PROVISIONING_PROFILE = "AA444596-A3B9-4454-8DDB-91D372EBCD38"; + "PROVISIONING_PROFILE[sdk=iphoneos*]" = "AA444596-A3B9-4454-8DDB-91D372EBCD38"; + VALIDATE_PRODUCT = YES; + }; + name = "App Store"; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -8528,6 +9416,17 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + E3E312E815F1459600A8C1E7 /* Build configuration list for PBXNativeTarget "USDA" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E3E312E915F1459600A8C1E7 /* Debug */, + E3E312EA15F1459600A8C1E7 /* Release */, + E3E312EB15F1459600A8C1E7 /* Ad Hoc */, + E3E312EC15F1459600A8C1E7 /* App Store */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;