├── .gitignore ├── EKEventToiCal ├── en.lproj │ └── InfoPlist.strings ├── Classes │ ├── EKEvent+iCalRepresentation.h │ └── EKEvent+iCalRepresentation.m ├── EKEventToiCal-Prefix.pch ├── iPad │ ├── EKEventToiCalAppDelegate_iPad.h │ ├── EKEventToiCalAppDelegate_iPad.m │ └── en.lproj │ │ └── MainWindow_iPad.xib ├── iPhone │ ├── EKEventToiCalAppDelegate_iPhone.h │ ├── EKEventToiCalAppDelegate_iPhone.m │ └── en.lproj │ │ └── MainWindow_iPhone.xib ├── EKEventToiCalAppDelegate.h ├── main.m ├── EKEventToiCal-Info.plist └── EKEventToiCalAppDelegate.m ├── EKEventToiCalTests ├── en.lproj │ └── InfoPlist.strings ├── EKEventToiCalTests-Prefix.pch ├── EKEventToiCalTests.h ├── EKEventToiCalTests.m └── EKEventToiCalTests-Info.plist ├── EKEventToiCal.xcodeproj ├── project.xcworkspace │ └── contents.xcworkspacedata ├── xcuserdata │ └── lukewar.xcuserdatad │ │ └── xcschemes │ │ ├── xcschememanagement.plist │ │ └── EKEventToiCal.xcscheme └── project.pbxproj └── EKEventToiCal.podspec /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | EKEventToiCal.xcodeproj/project.xcworkspace/xcuserdata 3 | -------------------------------------------------------------------------------- /EKEventToiCal/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /EKEventToiCalTests/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /EKEventToiCalTests/EKEventToiCalTests-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'EKEventToiCalTests' target in the 'EKEventToiCalTests' project 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #endif 8 | -------------------------------------------------------------------------------- /EKEventToiCal.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /EKEventToiCalTests/EKEventToiCalTests.h: -------------------------------------------------------------------------------- 1 | // 2 | // EKEventToiCalTests.h 3 | // EKEventToiCalTests 4 | // 5 | // Created by Dan Willoughby on 6/7/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface EKEventToiCalTests : SenTestCase { 13 | @private 14 | 15 | } 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /EKEventToiCal/Classes/EKEvent+iCalRepresentation.h: -------------------------------------------------------------------------------- 1 | // 2 | // Category.h 3 | // EKEventToiCal 4 | // 5 | // Created by Dan Willoughby on 6/7/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface EKEvent (iCalRepresentation) 13 | 14 | -(NSString*)iCalRepresentation; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /EKEventToiCal/EKEventToiCal-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'EKEventToiCal' target in the 'EKEventToiCal' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_3_0 8 | #warning "This project uses features only available in iPhone SDK 3.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /EKEventToiCal/iPad/EKEventToiCalAppDelegate_iPad.h: -------------------------------------------------------------------------------- 1 | // 2 | // EKEventToiCalAppDelegate_iPad.h 3 | // EKEventToiCal 4 | // 5 | // Created by Dan Willoughby on 6/7/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "EKEventToiCalAppDelegate.h" 11 | 12 | @interface EKEventToiCalAppDelegate_iPad : EKEventToiCalAppDelegate { 13 | 14 | } 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /EKEventToiCal/iPad/EKEventToiCalAppDelegate_iPad.m: -------------------------------------------------------------------------------- 1 | // 2 | // EKEventToiCalAppDelegate_iPad.m 3 | // EKEventToiCal 4 | // 5 | // Created by Dan Willoughby on 6/7/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "EKEventToiCalAppDelegate_iPad.h" 10 | 11 | @implementation EKEventToiCalAppDelegate_iPad 12 | 13 | - (void)dealloc 14 | { 15 | [super dealloc]; 16 | } 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /EKEventToiCal/iPhone/EKEventToiCalAppDelegate_iPhone.h: -------------------------------------------------------------------------------- 1 | // 2 | // EKEventToiCalAppDelegate_iPhone.h 3 | // EKEventToiCal 4 | // 5 | // Created by Dan Willoughby on 6/7/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "EKEventToiCalAppDelegate.h" 11 | 12 | @interface EKEventToiCalAppDelegate_iPhone : EKEventToiCalAppDelegate { 13 | 14 | } 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /EKEventToiCal/EKEventToiCalAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // EKEventToiCalAppDelegate.h 3 | // EKEventToiCal 4 | // 5 | // Created by Dan Willoughby on 6/7/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface EKEventToiCalAppDelegate : NSObject { 12 | 13 | } 14 | 15 | @property (nonatomic, retain) IBOutlet UIWindow *window; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /EKEventToiCal/iPhone/EKEventToiCalAppDelegate_iPhone.m: -------------------------------------------------------------------------------- 1 | // 2 | // EKEventToiCalAppDelegate_iPhone.m 3 | // EKEventToiCal 4 | // 5 | // Created by Dan Willoughby on 6/7/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "EKEventToiCalAppDelegate_iPhone.h" 10 | 11 | @implementation EKEventToiCalAppDelegate_iPhone 12 | 13 | 14 | 15 | - (void)dealloc 16 | { 17 | [super dealloc]; 18 | } 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /EKEventToiCal/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // EKEventToiCal 4 | // 5 | // Created by Dan Willoughby on 6/7/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, char *argv[]) 12 | { 13 | 14 | 15 | NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 16 | int retVal = UIApplicationMain(argc, argv, nil, nil); 17 | [pool release]; 18 | return retVal; 19 | } 20 | -------------------------------------------------------------------------------- /EKEventToiCal.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = "EKEventToiCal" 3 | s.version = "1.0.3" 4 | s.summary = "Category on EKEvent return a string in iCal format." 5 | s.homepage = "https://github.com/Taptera/EKEventToiCal.git" 6 | s.license = "Taptera" 7 | s.author = { "Taptera" => "ios-devs@taptera.com" } 8 | s.source = { :git => "git@github.com:Taptera/EKEventToiCal.git", :tag => "v#{s.version}" } 9 | s.platform = :ios, '5.0' 10 | s.requires_arc = false 11 | 12 | s.source_files = 'EKEventToiCal/Classes/**/*.{h,m}' 13 | s.frameworks = 'EventKit' 14 | 15 | end 16 | -------------------------------------------------------------------------------- /EKEventToiCalTests/EKEventToiCalTests.m: -------------------------------------------------------------------------------- 1 | // 2 | // EKEventToiCalTests.m 3 | // EKEventToiCalTests 4 | // 5 | // Created by Dan Willoughby on 6/7/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "EKEventToiCalTests.h" 10 | 11 | 12 | @implementation EKEventToiCalTests 13 | 14 | - (void)setUp 15 | { 16 | [super setUp]; 17 | 18 | // Set-up code here. 19 | } 20 | 21 | - (void)tearDown 22 | { 23 | // Tear-down code here. 24 | 25 | [super tearDown]; 26 | } 27 | 28 | - (void)testExample 29 | { 30 | STFail(@"Unit tests are not implemented yet in EKEventToiCalTests"); 31 | } 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /EKEventToiCal.xcodeproj/xcuserdata/lukewar.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | EKEventToiCal.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 37CB95A3139E8FEA0053AE30 16 | 17 | primary 18 | 19 | 20 | 37CB95CC139E8FEB0053AE30 21 | 22 | primary 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /EKEventToiCalTests/EKEventToiCalTests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | MyteriousTrousers.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /EKEventToiCal/EKEventToiCal-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIconFile 12 | 13 | CFBundleIdentifier 14 | MyteriousTrousers.${PRODUCT_NAME:rfc1034identifier} 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | ${PRODUCT_NAME} 19 | CFBundlePackageType 20 | APPL 21 | CFBundleShortVersionString 22 | 1.0 23 | CFBundleSignature 24 | ???? 25 | CFBundleVersion 26 | 1.0 27 | LSRequiresIPhoneOS 28 | 29 | NSMainNibFile 30 | MainWindow_iPhone 31 | NSMainNibFile~ipad 32 | MainWindow_iPad 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | UISupportedInterfaceOrientations~ipad 40 | 41 | UIInterfaceOrientationPortrait 42 | UIInterfaceOrientationPortraitUpsideDown 43 | UIInterfaceOrientationLandscapeLeft 44 | UIInterfaceOrientationLandscapeRight 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /EKEventToiCal.xcodeproj/xcuserdata/lukewar.xcuserdatad/xcschemes/EKEventToiCal.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 49 | 50 | 51 | 52 | 61 | 62 | 68 | 69 | 70 | 71 | 72 | 73 | 79 | 80 | 86 | 87 | 88 | 89 | 91 | 92 | 95 | 96 | 97 | -------------------------------------------------------------------------------- /EKEventToiCal/EKEventToiCalAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // EKEventToiCalAppDelegate.m 3 | // EKEventToiCal 4 | // 5 | // Created by Dan Willoughby on 6/7/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "EKEventToiCalAppDelegate.h" 10 | #import "EKEvent+iCalRepresentation.h" 11 | #import 12 | 13 | @implementation EKEventToiCalAppDelegate 14 | 15 | 16 | @synthesize window=_window; 17 | 18 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 19 | { 20 | // Override point for customization after application launch. 21 | [self.window makeKeyAndVisible]; 22 | EKEventStore *store = [[EKEventStore alloc] init]; 23 | //EKEvent+iCalRepresentation *newEvent = [EKEvent+iCalRepresentation eventWithEventStore:store]; 24 | // Create the predicate's start and end dates. 25 | CFGregorianDate gregorianStartDate, gregorianEndDate; 26 | CFGregorianUnits startUnits = {0, 0, -365, 0, 0, 0}; 27 | CFGregorianUnits endUnits = {0, 0, 365, 0, 0, 0}; 28 | CFTimeZoneRef timeZone = CFTimeZoneCopySystem(); 29 | 30 | gregorianStartDate = CFAbsoluteTimeGetGregorianDate( 31 | CFAbsoluteTimeAddGregorianUnits(CFAbsoluteTimeGetCurrent(), timeZone, startUnits), 32 | timeZone); 33 | gregorianStartDate.hour = 0; 34 | gregorianStartDate.minute = 0; 35 | gregorianStartDate.second = 0; 36 | 37 | gregorianEndDate = CFAbsoluteTimeGetGregorianDate( 38 | CFAbsoluteTimeAddGregorianUnits(CFAbsoluteTimeGetCurrent(), timeZone, endUnits), 39 | timeZone); 40 | gregorianEndDate.hour = 0; 41 | gregorianEndDate.minute = 0; 42 | gregorianEndDate.second = 0; 43 | 44 | NSDate* startDate = 45 | [NSDate dateWithTimeIntervalSinceReferenceDate:CFGregorianDateGetAbsoluteTime(gregorianStartDate, timeZone)]; 46 | NSDate* endDate = 47 | [NSDate dateWithTimeIntervalSinceReferenceDate:CFGregorianDateGetAbsoluteTime(gregorianEndDate, timeZone)]; 48 | 49 | CFRelease(timeZone); 50 | 51 | // Create the predicate. 52 | NSPredicate *predicate = [store predicateForEventsWithStartDate:startDate endDate:endDate calendars:nil]; // eventStore is an instance variable. 53 | 54 | // Fetch all events that match the predicate. 55 | NSArray *events = [store eventsMatchingPredicate:predicate]; 56 | NSLog(@"%@",events); 57 | 58 | 59 | /* 60 | newEvent.title = @"A new event"; 61 | newEvent.startDate = [NSDate date]; 62 | newEvent.endDate = [[NSDate alloc] initWithTimeInterval:40000000 sinceDate:newEvent.startDate]; 63 | */ 64 | 65 | NSString *icalRepresentation = [NSString string]; 66 | 67 | NSMutableString *ical = [NSMutableString string]; 68 | for (EKEvent *event in events) { 69 | icalRepresentation = [event iCalRepresentation]; 70 | 71 | [ical appendString:icalRepresentation]; 72 | 73 | } 74 | NSLog(ical); 75 | [ical writeToFile:@"myfile.ics" atomically:NO encoding:NSUTF8StringEncoding error: nil]; 76 | return YES; 77 | } 78 | 79 | - (void)applicationWillResignActive:(UIApplication *)application 80 | { 81 | /* 82 | Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 83 | Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 84 | */ 85 | } 86 | 87 | - (void)applicationDidEnterBackground:(UIApplication *)application 88 | { 89 | /* 90 | Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 91 | If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 92 | */ 93 | } 94 | 95 | - (void)applicationWillEnterForeground:(UIApplication *)application 96 | { 97 | /* 98 | Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. 99 | */ 100 | } 101 | 102 | - (void)applicationDidBecomeActive:(UIApplication *)application 103 | { 104 | /* 105 | Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 106 | */ 107 | } 108 | 109 | - (void)applicationWillTerminate:(UIApplication *)application 110 | { 111 | /* 112 | Called when the application is about to terminate. 113 | Save data if appropriate. 114 | See also applicationDidEnterBackground:. 115 | */ 116 | } 117 | 118 | - (void)dealloc 119 | { 120 | [_window release]; 121 | [super dealloc]; 122 | } 123 | 124 | @end 125 | -------------------------------------------------------------------------------- /EKEventToiCal/Classes/EKEvent+iCalRepresentation.m: -------------------------------------------------------------------------------- 1 | // 2 | // Category.m 3 | // EKEventToiCal 4 | // 5 | // Created by Dan Willoughby on 6/7/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "EKEvent+iCalRepresentation.h" 10 | 11 | NSString *partstatParamForEKParticipantStatus(EKParticipantStatus status); 12 | 13 | NSString *cutypeParamForEKParticipantType(EKParticipantType type); 14 | 15 | NSString *roleParamForEKParticipantRole(EKParticipantRole role); 16 | 17 | @implementation EKEvent (iCalRepresentation) 18 | 19 | - (NSString *)genRandStringLength { 20 | NSString *letters = @"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; 21 | int len = 36; 22 | NSMutableString *randomString = [NSMutableString stringWithCapacity:len]; 23 | 24 | for (int i = 0; i < len; i++) { 25 | [randomString appendFormat:@"%c", [letters characterAtIndex:(rand() % [letters length])]]; 26 | 27 | } 28 | 29 | NSString *c = [randomString substringWithRange:NSMakeRange(0, 8)]; 30 | NSString *d = [randomString substringWithRange:NSMakeRange(8, 4)]; 31 | NSString *e = [randomString substringWithRange:NSMakeRange(12, 4)]; 32 | NSString *f = [randomString substringWithRange:NSMakeRange(16, 4)]; 33 | NSString *g = [randomString substringWithRange:NSMakeRange(20, 12)]; 34 | 35 | NSMutableString *stringWithDashes = [NSMutableString string]; 36 | 37 | [stringWithDashes appendFormat:@"%@-%@-%@-%@-%@", c, d, e, f, g]; 38 | 39 | return stringWithDashes; 40 | } 41 | 42 | - (NSMutableString *)iCalRepresentation { 43 | 44 | 45 | NSMutableString *iCalRepresentationString = [NSMutableString string]; 46 | 47 | 48 | //The first line must be "BEGIN:VCALENDAR" 49 | [iCalRepresentationString appendString:@"BEGIN:VCALENDAR"]; 50 | [iCalRepresentationString appendString:@"\r\nVERSION:2.0"]; 51 | 52 | 53 | 54 | //calendar 55 | 56 | if (self.calendar.title) { 57 | //[iCalRepresentationString appendFormat:@"\r\nX-WR-CALNAME:%@",self.calendar.title]; 58 | } 59 | 60 | 61 | // CGColorRef blah = self.calendar.CGColor; 62 | // NSLog(@"********************* = %@",blah); 63 | 64 | 65 | //X-WR-CALNAME:Untitled 2 -----calendar's Title ical 66 | //X-APPLE-CALENDAR-COLOR:#F57802 -----calendar color ical 67 | 68 | 69 | 70 | 71 | 72 | //Event Start Date 73 | [iCalRepresentationString appendString:@"\r\nBEGIN:VEVENT"]; 74 | 75 | //allDay 76 | if (self.allDay) { 77 | 78 | NSDateFormatter *format1 = [[NSDateFormatter alloc] init]; 79 | [format1 setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]]; 80 | [format1 setDateFormat:@"yyyyMMdd"]; 81 | NSString *allDayDate = [format1 stringFromDate:self.startDate]; 82 | 83 | [iCalRepresentationString appendFormat:@"\r\nDTSTART;VALUE=DATE:%@", allDayDate]; 84 | 85 | //get startdate and add 1 day for the end date. 86 | NSDate *addDay = [self.startDate dateByAddingTimeInterval:86400]; 87 | NSString *allDayEnd = [format1 stringFromDate:addDay]; 88 | 89 | [iCalRepresentationString appendFormat:@"\r\nDTEND;VALUE=DATE:%@", allDayEnd]; 90 | [format1 release]; 91 | 92 | 93 | } 94 | 95 | else { 96 | 97 | if (self.startDate && self.endDate) { 98 | [iCalRepresentationString appendString:@"\r\nDTSTART;TZID=Etc/UTC:"]; 99 | 100 | NSDateFormatter *format2 = [[NSDateFormatter alloc] init]; 101 | [format2 setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]]; 102 | [format2 setDateFormat:@"yyyyMMdd'T'HHmmss"]; 103 | 104 | NSString *dateAsString = [format2 stringFromDate:self.startDate]; 105 | [iCalRepresentationString appendString:dateAsString]; 106 | //end date 107 | 108 | [iCalRepresentationString appendString:@"\r\nDTEND;TZID=Etc/UTC:"]; 109 | 110 | NSString *dateAsString1 = [format2 stringFromDate:self.endDate]; 111 | 112 | [iCalRepresentationString appendString:dateAsString1]; 113 | 114 | [format2 release]; 115 | 116 | } 117 | else { 118 | NSLog(@"****Error****Missing one of needed values: startDate or endDate"); 119 | } 120 | } 121 | 122 | NSDateFormatter *format3 = [[NSDateFormatter alloc] init]; 123 | [format3 setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]]; 124 | [format3 setDateFormat:@"yyyyMMdd'T'HHmmss'Z'"]; 125 | 126 | if (self.creationDate) { 127 | [iCalRepresentationString appendString:@"\r\nDTSTAMP:"]; //date the event was created 128 | 129 | NSString *dateAsString2 = [format3 stringFromDate:self.creationDate]; 130 | [iCalRepresentationString appendString:dateAsString2]; 131 | } 132 | 133 | //lastModifiedDate 134 | if (self.lastModifiedDate) { 135 | 136 | [iCalRepresentationString appendString:@"\r\nLAST-MODIFIED:"]; 137 | 138 | NSString *dateAsString2 = [format3 stringFromDate:self.lastModifiedDate]; 139 | [iCalRepresentationString appendString:dateAsString2]; 140 | 141 | } 142 | [format3 release]; 143 | //UID is generated randomly 144 | NSString *a = [self genRandStringLength]; 145 | [iCalRepresentationString appendFormat:@"\r\nUID:%@0000000000000000000", a]; 146 | 147 | 148 | 149 | //attendees @TODO: The property is read-only and cannot be modified so this is not complete or tested 150 | 151 | for (EKParticipant *attend in self.attendees) { 152 | [iCalRepresentationString appendString:@"\r\nATTENDEE"]; 153 | [self appendParticipant:attend toICalString:iCalRepresentationString]; 154 | } 155 | 156 | //availability @TODO: The property is read-only and cannot be modified so this is not complete or tested 157 | if (self.availability == EKEventAvailabilityFree) { 158 | [iCalRepresentationString appendString:@"\r\nTRANSP:TRANSPARENT"]; 159 | } 160 | else { 161 | [iCalRepresentationString appendString:@"\r\nTRANSP:OPAQUE"]; 162 | } 163 | 164 | //eventIdentifier @TODO: The property is read-only and cannot be modified so this is not complete or tested 165 | 166 | //isDetached @TODO: The property is read-only and cannot be modified so this is not complete or tested 167 | 168 | //location 169 | if (self.location) { 170 | [iCalRepresentationString appendFormat:@"\r\nLOCATION:%@", self.location]; 171 | } 172 | 173 | //organizer @TODO: The property is read-only and cannot be modified so this is not complete or tested 174 | if (self.organizer != nil) { 175 | [iCalRepresentationString appendString:@"\r\nORGANIZER"]; 176 | [self appendParticipant:self.organizer toICalString:iCalRepresentationString]; 177 | } 178 | 179 | //recurrenceRule 180 | if ([self respondsToSelector:@selector(recurrenceRules)]) { 181 | for (EKRecurrenceRule *rule in self.recurrenceRules) { 182 | NSString *recurrenceString = [rule description]; 183 | NSArray *partsArray = [recurrenceString componentsSeparatedByString:@"RRULE "]; 184 | 185 | if ([partsArray count] > 1) { 186 | NSString *secondHalf = [partsArray objectAtIndex:1]; 187 | // int loc = [secondHalf rangeOfString:@"Z"].location; 188 | //if (loc > 0) { 189 | // return [secondHalf substringToIndex:loc]; 190 | [iCalRepresentationString appendFormat:@"\r\nRRULE:%@", secondHalf]; 191 | } 192 | } 193 | } 194 | 195 | //When a calendar component is created, its sequence number is zero 196 | [iCalRepresentationString appendString:@"\r\nSEQUENCE:0"]; 197 | 198 | //status 199 | if (self.status == 1) { 200 | [iCalRepresentationString appendString:@"\r\nSTATUS:CONFIRMED"]; 201 | } 202 | if (self.status == 2) { 203 | [iCalRepresentationString appendString:@"\r\nSTATUS:TENTATIVE"]; 204 | } 205 | if (self.status == 3) { 206 | [iCalRepresentationString appendString:@"\r\nSTATUS:CANCELLED"]; 207 | } 208 | 209 | //Event Title 210 | if (self.title) { 211 | [iCalRepresentationString appendFormat:@"\r\nSUMMARY:%@", self.title]; 212 | } 213 | 214 | //Notes 215 | if (self.notes) { 216 | [iCalRepresentationString appendFormat:@"\r\nDESCRIPTION:%@", self.notes]; 217 | } 218 | 219 | //Alarm 220 | for (EKAlarm *alarm in self.alarms) { 221 | [iCalRepresentationString appendString:@"\r\nBEGIN:VALARM"]; 222 | [iCalRepresentationString appendString:@"\r\nACTION:DISPLAY"];//a message(usually the title of the event) will be displayed 223 | // [iCalRepresentationString appendString:@"\r\nDESCRIPTION:event reminder"]; //notes with the alarm--not the message. 224 | 225 | if (alarm.absoluteDate) { 226 | 227 | NSDateFormatter *format3 = [[NSDateFormatter alloc] init]; 228 | [format3 setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]]; 229 | [format3 setDateFormat:@"yyyyMMdd'T'HHmmss"]; 230 | 231 | NSString *dateAsString3 = [format3 stringFromDate:alarm.absoluteDate]; 232 | [format3 release]; 233 | 234 | [iCalRepresentationString appendFormat:@"\r\nTRIGGER;VALUE=DATE-TIME:%@", dateAsString3]; 235 | 236 | } 237 | if (alarm.relativeOffset) { 238 | 239 | //converts offset to D H M S then appends it to iCalRepresentationString 240 | NSInteger offset = alarm.relativeOffset; 241 | int i = offset * -1; 242 | 243 | int day = i / (24 * 60 * 60); 244 | i = i % (24 * 60 * 60); 245 | 246 | int hour = i / (60 * 60); 247 | i = i % (60 * 60); 248 | 249 | int minute = i / 60; 250 | i = i % 60; 251 | 252 | int second = i; 253 | 254 | [iCalRepresentationString appendFormat:@"\r\nTRIGGER:-P"]; 255 | 256 | if (day != 0) { 257 | 258 | [iCalRepresentationString appendFormat:@"%dD", day]; 259 | 260 | } 261 | if (hour || minute || second != 0) { 262 | [iCalRepresentationString appendString:@"T"]; 263 | 264 | if (hour != 0) { 265 | 266 | [iCalRepresentationString appendFormat:@"%dH", hour]; 267 | 268 | } 269 | if (minute != 0) { 270 | 271 | [iCalRepresentationString appendFormat:@"%dM", minute]; 272 | 273 | } 274 | if (second != 0) { 275 | 276 | [iCalRepresentationString appendFormat:@"%dS", second]; 277 | 278 | } 279 | } 280 | } 281 | NSString *b = [self genRandStringLength]; 282 | 283 | [iCalRepresentationString appendFormat:@"\r\nX-WR-ALARMUID:%@", b]; 284 | 285 | [iCalRepresentationString appendString:@"\r\nEND:VALARM"]; 286 | 287 | } 288 | 289 | [iCalRepresentationString appendString:@"\r\nEND:VEVENT"]; 290 | 291 | //The last line must be "END:VCALENDAR" 292 | [iCalRepresentationString appendString:@"\r\nEND:VCALENDAR"]; 293 | 294 | return [[iCalRepresentationString copy] autorelease]; 295 | } 296 | 297 | - (void)appendParticipant:(EKParticipant *)participant toICalString:(NSMutableString *)iCalString { 298 | if (participant.name) { 299 | [iCalString appendFormat:@";CN=%@", participant.name]; 300 | } 301 | 302 | //@TODO:this is not complete 303 | NSString *participantStatus = partstatParamForEKParticipantStatus(self.organizer.participantStatus); 304 | if (participantStatus) { 305 | [iCalString appendFormat:@";PARTSTAT=%@", participantStatus]; 306 | } 307 | 308 | //@TODO:this is not complete 309 | NSString *participantType = cutypeParamForEKParticipantType(self.organizer.participantType); 310 | if (participantType) { 311 | [iCalString appendFormat:@";CUTYPE=%@", participantType]; 312 | } 313 | 314 | //@TODO:this is not complete 315 | NSString *participantRole = roleParamForEKParticipantRole(self.organizer.participantRole); 316 | if (participantRole) { 317 | [iCalString appendFormat:@";ROLE=%@", participantRole]; 318 | } 319 | 320 | if (participant.URL) { 321 | NSString *participantURL = [participant.URL absoluteString]; 322 | if ([participantURL hasPrefix:@"mailto:"]) { 323 | NSString *emailString = [participantURL stringByReplacingOccurrencesOfString:@"mailto:" 324 | withString:@""]; 325 | [iCalString appendFormat:@";MAILTO=%@", emailString]; 326 | } 327 | } 328 | } 329 | 330 | #pragma mark - Helpers 331 | 332 | NSString *partstatParamForEKParticipantStatus(EKParticipantStatus status) { 333 | NSString *partstatParam = nil; 334 | switch (status) { 335 | case EKParticipantStatusUnknown: 336 | partstatParam = nil; 337 | break; 338 | case EKParticipantStatusPending: 339 | partstatParam = @"NEEDS-ACTION"; 340 | break; 341 | case EKParticipantStatusAccepted: 342 | partstatParam = @"ACCEPTED"; 343 | break; 344 | case EKParticipantStatusDeclined: 345 | partstatParam = @"DECLINED"; 346 | break; 347 | case EKParticipantStatusTentative: 348 | partstatParam = @"TENTATIVE"; 349 | break; 350 | case EKParticipantStatusDelegated: 351 | partstatParam = @"DELEGATED"; 352 | break; 353 | case EKParticipantStatusCompleted: 354 | partstatParam = @"COMPLETED"; 355 | break; 356 | case EKParticipantStatusInProcess: 357 | partstatParam = @"IN-PROCESS"; 358 | break; 359 | } 360 | return partstatParam; 361 | } 362 | 363 | NSString *cutypeParamForEKParticipantType(EKParticipantType type) { 364 | NSString *cutypeParam = nil; 365 | switch (type) { 366 | case EKParticipantTypeUnknown: 367 | cutypeParam = @"UNKNOWN"; 368 | break; 369 | case EKParticipantTypePerson: 370 | cutypeParam = @"INDIVIDUAL"; 371 | break; 372 | case EKParticipantTypeRoom: 373 | cutypeParam = @"ROOM"; 374 | break; 375 | case EKParticipantTypeResource: 376 | cutypeParam = @"RESOURCE"; 377 | break; 378 | case EKParticipantTypeGroup: 379 | cutypeParam = @"GROUP"; 380 | break; 381 | } 382 | return cutypeParam; 383 | } 384 | 385 | NSString *roleParamForEKParticipantRole(EKParticipantRole role) { 386 | NSString *roleParam = nil; 387 | switch (role) { 388 | case EKParticipantRoleUnknown: 389 | roleParam = nil; 390 | break; 391 | case EKParticipantRoleRequired: 392 | roleParam = @"REQ-PARTICIPANT"; 393 | break; 394 | case EKParticipantRoleOptional: 395 | roleParam = @"OPT-PARTICIPANT"; 396 | break; 397 | case EKParticipantRoleChair: 398 | roleParam = @"CHAIR"; 399 | break; 400 | case EKParticipantRoleNonParticipant: 401 | roleParam = @"NON-PARTICIPANT"; 402 | break; 403 | } 404 | return roleParam; 405 | } 406 | 407 | @end 408 | -------------------------------------------------------------------------------- /EKEventToiCal/iPad/en.lproj/MainWindow_iPad.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1024 5 | 10D573 6 | 786 7 | 1038.29 8 | 460.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 112 12 | 13 | 14 | YES 15 | 16 | 17 | 18 | YES 19 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 20 | 21 | 22 | YES 23 | 24 | YES 25 | 26 | 27 | YES 28 | 29 | 30 | 31 | YES 32 | 33 | IBFilesOwner 34 | IBIPadFramework 35 | 36 | 37 | IBFirstResponder 38 | IBIPadFramework 39 | 40 | 41 | 42 | 292 43 | 44 | YES 45 | 46 | 47 | 301 48 | {{284, 501}, {200, 22}} 49 | 50 | NO 51 | YES 52 | 7 53 | NO 54 | IBIPadFramework 55 | My Universal App on iPad 56 | 57 | 1 58 | MCAwIDAAA 59 | 60 | 61 | 1 62 | 10 63 | 64 | 65 | {768, 1024} 66 | 67 | 68 | 1 69 | MSAxIDEAA 70 | 71 | NO 72 | NO 73 | 74 | 2 75 | 76 | IBIPadFramework 77 | YES 78 | 79 | 80 | IBIPadFramework 81 | 82 | 83 | 84 | 85 | YES 86 | 87 | 88 | window 89 | 90 | 91 | 92 | 7 93 | 94 | 95 | 96 | delegate 97 | 98 | 99 | 100 | 8 101 | 102 | 103 | 104 | 105 | YES 106 | 107 | 0 108 | 109 | 110 | 111 | 112 | 113 | -1 114 | 115 | 116 | File's Owner 117 | 118 | 119 | -2 120 | 121 | 122 | 123 | 124 | 2 125 | 126 | 127 | YES 128 | 129 | 130 | 131 | 132 | 133 | 6 134 | 135 | 136 | 137 | 138 | 11 139 | 140 | 141 | 142 | 143 | 144 | 145 | YES 146 | 147 | YES 148 | -1.CustomClassName 149 | -2.CustomClassName 150 | 11.IBPluginDependency 151 | 2.IBEditorWindowLastContentRect 152 | 2.IBPluginDependency 153 | 6.CustomClassName 154 | 6.IBPluginDependency 155 | 156 | 157 | YES 158 | UIApplication 159 | UIResponder 160 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 161 | {{202, 84}, {783, 772}} 162 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 163 | EKEventToiCalAppDelegate_iPad 164 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 165 | 166 | 167 | 168 | YES 169 | 170 | 171 | YES 172 | 173 | 174 | 175 | 176 | YES 177 | 178 | 179 | YES 180 | 181 | 182 | 183 | 11 184 | 185 | 186 | 187 | YES 188 | 189 | EKEventToiCalAppDelegate 190 | NSObject 191 | 192 | window 193 | UIWindow 194 | 195 | 196 | window 197 | 198 | window 199 | UIWindow 200 | 201 | 202 | 203 | IBProjectSource 204 | Shared/EKEventToiCalAppDelegate.h 205 | 206 | 207 | 208 | EKEventToiCalAppDelegate_iPad 209 | EKEventToiCalAppDelegate 210 | 211 | IBProjectSource 212 | iPad/EKEventToiCalAppDelegate_iPad.h 213 | 214 | 215 | 216 | 217 | YES 218 | 219 | NSObject 220 | 221 | IBFrameworkSource 222 | Foundation.framework/Headers/NSError.h 223 | 224 | 225 | 226 | NSObject 227 | 228 | IBFrameworkSource 229 | Foundation.framework/Headers/NSFileManager.h 230 | 231 | 232 | 233 | NSObject 234 | 235 | IBFrameworkSource 236 | Foundation.framework/Headers/NSKeyValueCoding.h 237 | 238 | 239 | 240 | NSObject 241 | 242 | IBFrameworkSource 243 | Foundation.framework/Headers/NSKeyValueObserving.h 244 | 245 | 246 | 247 | NSObject 248 | 249 | IBFrameworkSource 250 | Foundation.framework/Headers/NSKeyedArchiver.h 251 | 252 | 253 | 254 | NSObject 255 | 256 | IBFrameworkSource 257 | Foundation.framework/Headers/NSObject.h 258 | 259 | 260 | 261 | NSObject 262 | 263 | IBFrameworkSource 264 | Foundation.framework/Headers/NSRunLoop.h 265 | 266 | 267 | 268 | NSObject 269 | 270 | IBFrameworkSource 271 | Foundation.framework/Headers/NSThread.h 272 | 273 | 274 | 275 | NSObject 276 | 277 | IBFrameworkSource 278 | Foundation.framework/Headers/NSURL.h 279 | 280 | 281 | 282 | NSObject 283 | 284 | IBFrameworkSource 285 | Foundation.framework/Headers/NSURLConnection.h 286 | 287 | 288 | 289 | NSObject 290 | 291 | IBFrameworkSource 292 | UIKit.framework/Headers/UIAccessibility.h 293 | 294 | 295 | 296 | NSObject 297 | 298 | IBFrameworkSource 299 | UIKit.framework/Headers/UINibLoading.h 300 | 301 | 302 | 303 | NSObject 304 | 305 | IBFrameworkSource 306 | UIKit.framework/Headers/UIResponder.h 307 | 308 | 309 | 310 | UIApplication 311 | UIResponder 312 | 313 | IBFrameworkSource 314 | UIKit.framework/Headers/UIApplication.h 315 | 316 | 317 | 318 | UIResponder 319 | NSObject 320 | 321 | 322 | 323 | UIView 324 | 325 | IBFrameworkSource 326 | UIKit.framework/Headers/UITextField.h 327 | 328 | 329 | 330 | UIView 331 | UIResponder 332 | 333 | IBFrameworkSource 334 | UIKit.framework/Headers/UIView.h 335 | 336 | 337 | 338 | UIWindow 339 | UIView 340 | 341 | IBFrameworkSource 342 | UIKit.framework/Headers/UIWindow.h 343 | 344 | 345 | 346 | 347 | 0 348 | IBIPadFramework 349 | 350 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS 351 | 352 | 353 | 354 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 355 | 356 | 357 | YES 358 | ../EKEventToiCal.xcodeproj 359 | 3 360 | 112 361 | 362 | 363 | -------------------------------------------------------------------------------- /EKEventToiCal/iPhone/en.lproj/MainWindow_iPhone.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1024 5 | 10D573 6 | 786 7 | 1038.29 8 | 460.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 112 12 | 13 | 14 | YES 15 | 16 | 17 | 18 | YES 19 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 20 | 21 | 22 | YES 23 | 24 | YES 25 | 26 | 27 | YES 28 | 29 | 30 | 31 | YES 32 | 33 | IBFilesOwner 34 | IBCocoaTouchFramework 35 | 36 | 37 | IBFirstResponder 38 | IBCocoaTouchFramework 39 | 40 | 41 | IBCocoaTouchFramework 42 | 43 | 44 | 45 | 1316 46 | 47 | YES 48 | 49 | 50 | 1325 51 | {{51, 229}, {218, 22}} 52 | 53 | NO 54 | YES 55 | 7 56 | NO 57 | IBCocoaTouchFramework 58 | My Universal App on iPhone 59 | 60 | 1 61 | MCAwIDAAA 62 | 63 | 64 | 1 65 | 10 66 | 67 | 68 | 69 | {320, 480} 70 | 71 | 72 | 1 73 | MSAxIDEAA 74 | 75 | NO 76 | NO 77 | 78 | IBCocoaTouchFramework 79 | YES 80 | 81 | 82 | 83 | 84 | YES 85 | 86 | 87 | delegate 88 | 89 | 90 | 91 | 5 92 | 93 | 94 | 95 | window 96 | 97 | 98 | 99 | 6 100 | 101 | 102 | 103 | 104 | YES 105 | 106 | 0 107 | 108 | 109 | 110 | 111 | 112 | 2 113 | 114 | 115 | YES 116 | 117 | 118 | 119 | 120 | 121 | -1 122 | 123 | 124 | File's Owner 125 | 126 | 127 | 4 128 | 129 | 130 | App Delegate 131 | 132 | 133 | -2 134 | 135 | 136 | 137 | 138 | 8 139 | 140 | 141 | 142 | 143 | 144 | 145 | YES 146 | 147 | YES 148 | -1.CustomClassName 149 | -2.CustomClassName 150 | 2.IBAttributePlaceholdersKey 151 | 2.IBEditorWindowLastContentRect 152 | 2.IBPluginDependency 153 | 2.UIWindow.visibleAtLaunch 154 | 4.CustomClassName 155 | 4.IBPluginDependency 156 | 8.IBPluginDependency 157 | 158 | 159 | YES 160 | UIApplication 161 | UIResponder 162 | 163 | YES 164 | 165 | 166 | YES 167 | 168 | 169 | {{520, 376}, {320, 480}} 170 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 171 | 172 | EKEventToiCalAppDelegate_iPhone 173 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 174 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 175 | 176 | 177 | 178 | YES 179 | 180 | 181 | YES 182 | 183 | 184 | 185 | 186 | YES 187 | 188 | 189 | YES 190 | 191 | 192 | 193 | 8 194 | 195 | 196 | 197 | YES 198 | 199 | EKEventToiCalAppDelegate 200 | NSObject 201 | 202 | window 203 | UIWindow 204 | 205 | 206 | window 207 | 208 | window 209 | UIWindow 210 | 211 | 212 | 213 | IBProjectSource 214 | Shared/EKEventToiCalAppDelegate.h 215 | 216 | 217 | 218 | EKEventToiCalAppDelegate_iPhone 219 | EKEventToiCalAppDelegate 220 | 221 | IBProjectSource 222 | iPhone/EKEventToiCalAppDelegate_iPhone.h 223 | 224 | 225 | 226 | 227 | YES 228 | 229 | NSObject 230 | 231 | IBFrameworkSource 232 | Foundation.framework/Headers/NSError.h 233 | 234 | 235 | 236 | NSObject 237 | 238 | IBFrameworkSource 239 | Foundation.framework/Headers/NSFileManager.h 240 | 241 | 242 | 243 | NSObject 244 | 245 | IBFrameworkSource 246 | Foundation.framework/Headers/NSKeyValueCoding.h 247 | 248 | 249 | 250 | NSObject 251 | 252 | IBFrameworkSource 253 | Foundation.framework/Headers/NSKeyValueObserving.h 254 | 255 | 256 | 257 | NSObject 258 | 259 | IBFrameworkSource 260 | Foundation.framework/Headers/NSKeyedArchiver.h 261 | 262 | 263 | 264 | NSObject 265 | 266 | IBFrameworkSource 267 | Foundation.framework/Headers/NSObject.h 268 | 269 | 270 | 271 | NSObject 272 | 273 | IBFrameworkSource 274 | Foundation.framework/Headers/NSRunLoop.h 275 | 276 | 277 | 278 | NSObject 279 | 280 | IBFrameworkSource 281 | Foundation.framework/Headers/NSThread.h 282 | 283 | 284 | 285 | NSObject 286 | 287 | IBFrameworkSource 288 | Foundation.framework/Headers/NSURL.h 289 | 290 | 291 | 292 | NSObject 293 | 294 | IBFrameworkSource 295 | Foundation.framework/Headers/NSURLConnection.h 296 | 297 | 298 | 299 | NSObject 300 | 301 | IBFrameworkSource 302 | UIKit.framework/Headers/UIAccessibility.h 303 | 304 | 305 | 306 | NSObject 307 | 308 | IBFrameworkSource 309 | UIKit.framework/Headers/UINibLoading.h 310 | 311 | 312 | 313 | NSObject 314 | 315 | IBFrameworkSource 316 | UIKit.framework/Headers/UIResponder.h 317 | 318 | 319 | 320 | UIApplication 321 | UIResponder 322 | 323 | IBFrameworkSource 324 | UIKit.framework/Headers/UIApplication.h 325 | 326 | 327 | 328 | UIResponder 329 | NSObject 330 | 331 | 332 | 333 | UIView 334 | 335 | IBFrameworkSource 336 | UIKit.framework/Headers/UITextField.h 337 | 338 | 339 | 340 | UIView 341 | UIResponder 342 | 343 | IBFrameworkSource 344 | UIKit.framework/Headers/UIView.h 345 | 346 | 347 | 348 | UIWindow 349 | UIView 350 | 351 | IBFrameworkSource 352 | UIKit.framework/Headers/UIWindow.h 353 | 354 | 355 | 356 | 357 | 0 358 | IBCocoaTouchFramework 359 | 360 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS 361 | 362 | 363 | 364 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 365 | 366 | 367 | YES 368 | ../EKEventToiCal.xcodeproj 369 | 3 370 | 112 371 | 372 | 373 | -------------------------------------------------------------------------------- /EKEventToiCal.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 37CB95A9139E8FEA0053AE30 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37CB95A8139E8FEA0053AE30 /* UIKit.framework */; }; 11 | 37CB95AB139E8FEA0053AE30 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37CB95AA139E8FEA0053AE30 /* Foundation.framework */; }; 12 | 37CB95AD139E8FEA0053AE30 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37CB95AC139E8FEA0053AE30 /* CoreGraphics.framework */; }; 13 | 37CB95B3139E8FEA0053AE30 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 37CB95B1139E8FEA0053AE30 /* InfoPlist.strings */; }; 14 | 37CB95B6139E8FEA0053AE30 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 37CB95B5139E8FEA0053AE30 /* main.m */; }; 15 | 37CB95B9139E8FEA0053AE30 /* EKEventToiCalAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 37CB95B8139E8FEA0053AE30 /* EKEventToiCalAppDelegate.m */; }; 16 | 37CB95BD139E8FEA0053AE30 /* EKEventToiCalAppDelegate_iPhone.m in Sources */ = {isa = PBXBuildFile; fileRef = 37CB95BC139E8FEA0053AE30 /* EKEventToiCalAppDelegate_iPhone.m */; }; 17 | 37CB95C0139E8FEA0053AE30 /* MainWindow_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 37CB95BE139E8FEA0053AE30 /* MainWindow_iPhone.xib */; }; 18 | 37CB95C4139E8FEB0053AE30 /* EKEventToiCalAppDelegate_iPad.m in Sources */ = {isa = PBXBuildFile; fileRef = 37CB95C3139E8FEB0053AE30 /* EKEventToiCalAppDelegate_iPad.m */; }; 19 | 37CB95C7139E8FEB0053AE30 /* MainWindow_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 37CB95C5139E8FEB0053AE30 /* MainWindow_iPad.xib */; }; 20 | 37CB95CE139E8FEB0053AE30 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37CB95A8139E8FEA0053AE30 /* UIKit.framework */; }; 21 | 37CB95CF139E8FEB0053AE30 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37CB95AA139E8FEA0053AE30 /* Foundation.framework */; }; 22 | 37CB95D0139E8FEB0053AE30 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37CB95AC139E8FEA0053AE30 /* CoreGraphics.framework */; }; 23 | 37CB95D8139E8FEB0053AE30 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 37CB95D6139E8FEB0053AE30 /* InfoPlist.strings */; }; 24 | 37CB95DB139E8FEB0053AE30 /* EKEventToiCalTests.h in Resources */ = {isa = PBXBuildFile; fileRef = 37CB95DA139E8FEB0053AE30 /* EKEventToiCalTests.h */; }; 25 | 37CB95DD139E8FEB0053AE30 /* EKEventToiCalTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 37CB95DC139E8FEB0053AE30 /* EKEventToiCalTests.m */; }; 26 | 37CB95E7139E8FF90053AE30 /* EventKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37CB95E6139E8FF90053AE30 /* EventKit.framework */; }; 27 | 86005790166F4EEF003E6BFF /* EKEvent+iCalRepresentation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8600578F166F4EEF003E6BFF /* EKEvent+iCalRepresentation.m */; }; 28 | 86005791166F4EEF003E6BFF /* EKEvent+iCalRepresentation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8600578F166F4EEF003E6BFF /* EKEvent+iCalRepresentation.m */; }; 29 | /* End PBXBuildFile section */ 30 | 31 | /* Begin PBXContainerItemProxy section */ 32 | 37CB95D1139E8FEB0053AE30 /* PBXContainerItemProxy */ = { 33 | isa = PBXContainerItemProxy; 34 | containerPortal = 37CB959B139E8FEA0053AE30 /* Project object */; 35 | proxyType = 1; 36 | remoteGlobalIDString = 37CB95A3139E8FEA0053AE30; 37 | remoteInfo = EKEventToiCal; 38 | }; 39 | /* End PBXContainerItemProxy section */ 40 | 41 | /* Begin PBXFileReference section */ 42 | 37CB95A4139E8FEA0053AE30 /* EKEventToiCal.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = EKEventToiCal.app; sourceTree = BUILT_PRODUCTS_DIR; }; 43 | 37CB95A8139E8FEA0053AE30 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 44 | 37CB95AA139E8FEA0053AE30 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 45 | 37CB95AC139E8FEA0053AE30 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 46 | 37CB95B0139E8FEA0053AE30 /* EKEventToiCal-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "EKEventToiCal-Info.plist"; sourceTree = ""; }; 47 | 37CB95B2139E8FEA0053AE30 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 48 | 37CB95B4139E8FEA0053AE30 /* EKEventToiCal-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "EKEventToiCal-Prefix.pch"; sourceTree = ""; }; 49 | 37CB95B5139E8FEA0053AE30 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 50 | 37CB95B7139E8FEA0053AE30 /* EKEventToiCalAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EKEventToiCalAppDelegate.h; sourceTree = ""; }; 51 | 37CB95B8139E8FEA0053AE30 /* EKEventToiCalAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EKEventToiCalAppDelegate.m; sourceTree = ""; }; 52 | 37CB95BB139E8FEA0053AE30 /* EKEventToiCalAppDelegate_iPhone.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = EKEventToiCalAppDelegate_iPhone.h; path = iPhone/EKEventToiCalAppDelegate_iPhone.h; sourceTree = ""; }; 53 | 37CB95BC139E8FEA0053AE30 /* EKEventToiCalAppDelegate_iPhone.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = EKEventToiCalAppDelegate_iPhone.m; path = iPhone/EKEventToiCalAppDelegate_iPhone.m; sourceTree = ""; }; 54 | 37CB95BF139E8FEA0053AE30 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = iPhone/en.lproj/MainWindow_iPhone.xib; sourceTree = ""; }; 55 | 37CB95C2139E8FEB0053AE30 /* EKEventToiCalAppDelegate_iPad.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = EKEventToiCalAppDelegate_iPad.h; path = iPad/EKEventToiCalAppDelegate_iPad.h; sourceTree = ""; }; 56 | 37CB95C3139E8FEB0053AE30 /* EKEventToiCalAppDelegate_iPad.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = EKEventToiCalAppDelegate_iPad.m; path = iPad/EKEventToiCalAppDelegate_iPad.m; sourceTree = ""; }; 57 | 37CB95C6139E8FEB0053AE30 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = iPad/en.lproj/MainWindow_iPad.xib; sourceTree = ""; }; 58 | 37CB95CD139E8FEB0053AE30 /* EKEventToiCalTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = EKEventToiCalTests.octest; sourceTree = BUILT_PRODUCTS_DIR; }; 59 | 37CB95D5139E8FEB0053AE30 /* EKEventToiCalTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "EKEventToiCalTests-Info.plist"; sourceTree = ""; }; 60 | 37CB95D7139E8FEB0053AE30 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 61 | 37CB95D9139E8FEB0053AE30 /* EKEventToiCalTests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "EKEventToiCalTests-Prefix.pch"; sourceTree = ""; }; 62 | 37CB95DA139E8FEB0053AE30 /* EKEventToiCalTests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EKEventToiCalTests.h; sourceTree = ""; }; 63 | 37CB95DC139E8FEB0053AE30 /* EKEventToiCalTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EKEventToiCalTests.m; sourceTree = ""; }; 64 | 37CB95E6139E8FF90053AE30 /* EventKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = EventKit.framework; path = System/Library/Frameworks/EventKit.framework; sourceTree = SDKROOT; }; 65 | 8600578E166F4EEF003E6BFF /* EKEvent+iCalRepresentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "EKEvent+iCalRepresentation.h"; sourceTree = ""; }; 66 | 8600578F166F4EEF003E6BFF /* EKEvent+iCalRepresentation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "EKEvent+iCalRepresentation.m"; sourceTree = ""; }; 67 | /* End PBXFileReference section */ 68 | 69 | /* Begin PBXFrameworksBuildPhase section */ 70 | 37CB95A1139E8FEA0053AE30 /* Frameworks */ = { 71 | isa = PBXFrameworksBuildPhase; 72 | buildActionMask = 2147483647; 73 | files = ( 74 | 37CB95E7139E8FF90053AE30 /* EventKit.framework in Frameworks */, 75 | 37CB95A9139E8FEA0053AE30 /* UIKit.framework in Frameworks */, 76 | 37CB95AB139E8FEA0053AE30 /* Foundation.framework in Frameworks */, 77 | 37CB95AD139E8FEA0053AE30 /* CoreGraphics.framework in Frameworks */, 78 | ); 79 | runOnlyForDeploymentPostprocessing = 0; 80 | }; 81 | 37CB95C9139E8FEB0053AE30 /* Frameworks */ = { 82 | isa = PBXFrameworksBuildPhase; 83 | buildActionMask = 2147483647; 84 | files = ( 85 | 37CB95CE139E8FEB0053AE30 /* UIKit.framework in Frameworks */, 86 | 37CB95CF139E8FEB0053AE30 /* Foundation.framework in Frameworks */, 87 | 37CB95D0139E8FEB0053AE30 /* CoreGraphics.framework in Frameworks */, 88 | ); 89 | runOnlyForDeploymentPostprocessing = 0; 90 | }; 91 | /* End PBXFrameworksBuildPhase section */ 92 | 93 | /* Begin PBXGroup section */ 94 | 37CB9599139E8FEA0053AE30 = { 95 | isa = PBXGroup; 96 | children = ( 97 | 37CB95AE139E8FEA0053AE30 /* EKEventToiCal */, 98 | 37CB95D3139E8FEB0053AE30 /* EKEventToiCalTests */, 99 | 37CB95A7139E8FEA0053AE30 /* Frameworks */, 100 | 37CB95A5139E8FEA0053AE30 /* Products */, 101 | ); 102 | sourceTree = ""; 103 | }; 104 | 37CB95A5139E8FEA0053AE30 /* Products */ = { 105 | isa = PBXGroup; 106 | children = ( 107 | 37CB95A4139E8FEA0053AE30 /* EKEventToiCal.app */, 108 | 37CB95CD139E8FEB0053AE30 /* EKEventToiCalTests.octest */, 109 | ); 110 | name = Products; 111 | sourceTree = ""; 112 | }; 113 | 37CB95A7139E8FEA0053AE30 /* Frameworks */ = { 114 | isa = PBXGroup; 115 | children = ( 116 | 37CB95E6139E8FF90053AE30 /* EventKit.framework */, 117 | 37CB95A8139E8FEA0053AE30 /* UIKit.framework */, 118 | 37CB95AA139E8FEA0053AE30 /* Foundation.framework */, 119 | 37CB95AC139E8FEA0053AE30 /* CoreGraphics.framework */, 120 | ); 121 | name = Frameworks; 122 | sourceTree = ""; 123 | }; 124 | 37CB95AE139E8FEA0053AE30 /* EKEventToiCal */ = { 125 | isa = PBXGroup; 126 | children = ( 127 | 8600578D166F4EEF003E6BFF /* Classes */, 128 | 37CB95B7139E8FEA0053AE30 /* EKEventToiCalAppDelegate.h */, 129 | 37CB95B8139E8FEA0053AE30 /* EKEventToiCalAppDelegate.m */, 130 | 37CB95BA139E8FEA0053AE30 /* iPhone */, 131 | 37CB95C1139E8FEB0053AE30 /* iPad */, 132 | 37CB95AF139E8FEA0053AE30 /* Supporting Files */, 133 | ); 134 | path = EKEventToiCal; 135 | sourceTree = ""; 136 | }; 137 | 37CB95AF139E8FEA0053AE30 /* Supporting Files */ = { 138 | isa = PBXGroup; 139 | children = ( 140 | 37CB95B0139E8FEA0053AE30 /* EKEventToiCal-Info.plist */, 141 | 37CB95B1139E8FEA0053AE30 /* InfoPlist.strings */, 142 | 37CB95B4139E8FEA0053AE30 /* EKEventToiCal-Prefix.pch */, 143 | 37CB95B5139E8FEA0053AE30 /* main.m */, 144 | ); 145 | name = "Supporting Files"; 146 | sourceTree = ""; 147 | }; 148 | 37CB95BA139E8FEA0053AE30 /* iPhone */ = { 149 | isa = PBXGroup; 150 | children = ( 151 | 37CB95BC139E8FEA0053AE30 /* EKEventToiCalAppDelegate_iPhone.m */, 152 | 37CB95BB139E8FEA0053AE30 /* EKEventToiCalAppDelegate_iPhone.h */, 153 | 37CB95BE139E8FEA0053AE30 /* MainWindow_iPhone.xib */, 154 | ); 155 | name = iPhone; 156 | sourceTree = ""; 157 | }; 158 | 37CB95C1139E8FEB0053AE30 /* iPad */ = { 159 | isa = PBXGroup; 160 | children = ( 161 | 37CB95C2139E8FEB0053AE30 /* EKEventToiCalAppDelegate_iPad.h */, 162 | 37CB95C3139E8FEB0053AE30 /* EKEventToiCalAppDelegate_iPad.m */, 163 | 37CB95C5139E8FEB0053AE30 /* MainWindow_iPad.xib */, 164 | ); 165 | name = iPad; 166 | sourceTree = ""; 167 | }; 168 | 37CB95D3139E8FEB0053AE30 /* EKEventToiCalTests */ = { 169 | isa = PBXGroup; 170 | children = ( 171 | 37CB95DA139E8FEB0053AE30 /* EKEventToiCalTests.h */, 172 | 37CB95DC139E8FEB0053AE30 /* EKEventToiCalTests.m */, 173 | 37CB95D4139E8FEB0053AE30 /* Supporting Files */, 174 | ); 175 | path = EKEventToiCalTests; 176 | sourceTree = ""; 177 | }; 178 | 37CB95D4139E8FEB0053AE30 /* Supporting Files */ = { 179 | isa = PBXGroup; 180 | children = ( 181 | 37CB95D5139E8FEB0053AE30 /* EKEventToiCalTests-Info.plist */, 182 | 37CB95D6139E8FEB0053AE30 /* InfoPlist.strings */, 183 | 37CB95D9139E8FEB0053AE30 /* EKEventToiCalTests-Prefix.pch */, 184 | ); 185 | name = "Supporting Files"; 186 | sourceTree = ""; 187 | }; 188 | 8600578D166F4EEF003E6BFF /* Classes */ = { 189 | isa = PBXGroup; 190 | children = ( 191 | 8600578E166F4EEF003E6BFF /* EKEvent+iCalRepresentation.h */, 192 | 8600578F166F4EEF003E6BFF /* EKEvent+iCalRepresentation.m */, 193 | ); 194 | path = Classes; 195 | sourceTree = ""; 196 | }; 197 | /* End PBXGroup section */ 198 | 199 | /* Begin PBXNativeTarget section */ 200 | 37CB95A3139E8FEA0053AE30 /* EKEventToiCal */ = { 201 | isa = PBXNativeTarget; 202 | buildConfigurationList = 37CB95E0139E8FEB0053AE30 /* Build configuration list for PBXNativeTarget "EKEventToiCal" */; 203 | buildPhases = ( 204 | 37CB95A0139E8FEA0053AE30 /* Sources */, 205 | 37CB95A1139E8FEA0053AE30 /* Frameworks */, 206 | 37CB95A2139E8FEA0053AE30 /* Resources */, 207 | ); 208 | buildRules = ( 209 | ); 210 | dependencies = ( 211 | ); 212 | name = EKEventToiCal; 213 | productName = EKEventToiCal; 214 | productReference = 37CB95A4139E8FEA0053AE30 /* EKEventToiCal.app */; 215 | productType = "com.apple.product-type.application"; 216 | }; 217 | 37CB95CC139E8FEB0053AE30 /* EKEventToiCalTests */ = { 218 | isa = PBXNativeTarget; 219 | buildConfigurationList = 37CB95E3139E8FEB0053AE30 /* Build configuration list for PBXNativeTarget "EKEventToiCalTests" */; 220 | buildPhases = ( 221 | 37CB95C8139E8FEB0053AE30 /* Sources */, 222 | 37CB95C9139E8FEB0053AE30 /* Frameworks */, 223 | 37CB95CA139E8FEB0053AE30 /* Resources */, 224 | 37CB95CB139E8FEB0053AE30 /* ShellScript */, 225 | ); 226 | buildRules = ( 227 | ); 228 | dependencies = ( 229 | 37CB95D2139E8FEB0053AE30 /* PBXTargetDependency */, 230 | ); 231 | name = EKEventToiCalTests; 232 | productName = EKEventToiCalTests; 233 | productReference = 37CB95CD139E8FEB0053AE30 /* EKEventToiCalTests.octest */; 234 | productType = "com.apple.product-type.bundle"; 235 | }; 236 | /* End PBXNativeTarget section */ 237 | 238 | /* Begin PBXProject section */ 239 | 37CB959B139E8FEA0053AE30 /* Project object */ = { 240 | isa = PBXProject; 241 | buildConfigurationList = 37CB959E139E8FEA0053AE30 /* Build configuration list for PBXProject "EKEventToiCal" */; 242 | compatibilityVersion = "Xcode 3.2"; 243 | developmentRegion = English; 244 | hasScannedForEncodings = 0; 245 | knownRegions = ( 246 | en, 247 | ); 248 | mainGroup = 37CB9599139E8FEA0053AE30; 249 | productRefGroup = 37CB95A5139E8FEA0053AE30 /* Products */; 250 | projectDirPath = ""; 251 | projectRoot = ""; 252 | targets = ( 253 | 37CB95A3139E8FEA0053AE30 /* EKEventToiCal */, 254 | 37CB95CC139E8FEB0053AE30 /* EKEventToiCalTests */, 255 | ); 256 | }; 257 | /* End PBXProject section */ 258 | 259 | /* Begin PBXResourcesBuildPhase section */ 260 | 37CB95A2139E8FEA0053AE30 /* Resources */ = { 261 | isa = PBXResourcesBuildPhase; 262 | buildActionMask = 2147483647; 263 | files = ( 264 | 37CB95B3139E8FEA0053AE30 /* InfoPlist.strings in Resources */, 265 | 37CB95C0139E8FEA0053AE30 /* MainWindow_iPhone.xib in Resources */, 266 | 37CB95C7139E8FEB0053AE30 /* MainWindow_iPad.xib in Resources */, 267 | ); 268 | runOnlyForDeploymentPostprocessing = 0; 269 | }; 270 | 37CB95CA139E8FEB0053AE30 /* Resources */ = { 271 | isa = PBXResourcesBuildPhase; 272 | buildActionMask = 2147483647; 273 | files = ( 274 | 37CB95D8139E8FEB0053AE30 /* InfoPlist.strings in Resources */, 275 | 37CB95DB139E8FEB0053AE30 /* EKEventToiCalTests.h in Resources */, 276 | ); 277 | runOnlyForDeploymentPostprocessing = 0; 278 | }; 279 | /* End PBXResourcesBuildPhase section */ 280 | 281 | /* Begin PBXShellScriptBuildPhase section */ 282 | 37CB95CB139E8FEB0053AE30 /* ShellScript */ = { 283 | isa = PBXShellScriptBuildPhase; 284 | buildActionMask = 2147483647; 285 | files = ( 286 | ); 287 | inputPaths = ( 288 | ); 289 | outputPaths = ( 290 | ); 291 | runOnlyForDeploymentPostprocessing = 0; 292 | shellPath = /bin/sh; 293 | shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n"; 294 | }; 295 | /* End PBXShellScriptBuildPhase section */ 296 | 297 | /* Begin PBXSourcesBuildPhase section */ 298 | 37CB95A0139E8FEA0053AE30 /* Sources */ = { 299 | isa = PBXSourcesBuildPhase; 300 | buildActionMask = 2147483647; 301 | files = ( 302 | 37CB95B6139E8FEA0053AE30 /* main.m in Sources */, 303 | 37CB95B9139E8FEA0053AE30 /* EKEventToiCalAppDelegate.m in Sources */, 304 | 37CB95BD139E8FEA0053AE30 /* EKEventToiCalAppDelegate_iPhone.m in Sources */, 305 | 37CB95C4139E8FEB0053AE30 /* EKEventToiCalAppDelegate_iPad.m in Sources */, 306 | 86005790166F4EEF003E6BFF /* EKEvent+iCalRepresentation.m in Sources */, 307 | ); 308 | runOnlyForDeploymentPostprocessing = 0; 309 | }; 310 | 37CB95C8139E8FEB0053AE30 /* Sources */ = { 311 | isa = PBXSourcesBuildPhase; 312 | buildActionMask = 2147483647; 313 | files = ( 314 | 37CB95DD139E8FEB0053AE30 /* EKEventToiCalTests.m in Sources */, 315 | 86005791166F4EEF003E6BFF /* EKEvent+iCalRepresentation.m in Sources */, 316 | ); 317 | runOnlyForDeploymentPostprocessing = 0; 318 | }; 319 | /* End PBXSourcesBuildPhase section */ 320 | 321 | /* Begin PBXTargetDependency section */ 322 | 37CB95D2139E8FEB0053AE30 /* PBXTargetDependency */ = { 323 | isa = PBXTargetDependency; 324 | target = 37CB95A3139E8FEA0053AE30 /* EKEventToiCal */; 325 | targetProxy = 37CB95D1139E8FEB0053AE30 /* PBXContainerItemProxy */; 326 | }; 327 | /* End PBXTargetDependency section */ 328 | 329 | /* Begin PBXVariantGroup section */ 330 | 37CB95B1139E8FEA0053AE30 /* InfoPlist.strings */ = { 331 | isa = PBXVariantGroup; 332 | children = ( 333 | 37CB95B2139E8FEA0053AE30 /* en */, 334 | ); 335 | name = InfoPlist.strings; 336 | sourceTree = ""; 337 | }; 338 | 37CB95BE139E8FEA0053AE30 /* MainWindow_iPhone.xib */ = { 339 | isa = PBXVariantGroup; 340 | children = ( 341 | 37CB95BF139E8FEA0053AE30 /* en */, 342 | ); 343 | name = MainWindow_iPhone.xib; 344 | sourceTree = ""; 345 | }; 346 | 37CB95C5139E8FEB0053AE30 /* MainWindow_iPad.xib */ = { 347 | isa = PBXVariantGroup; 348 | children = ( 349 | 37CB95C6139E8FEB0053AE30 /* en */, 350 | ); 351 | name = MainWindow_iPad.xib; 352 | sourceTree = ""; 353 | }; 354 | 37CB95D6139E8FEB0053AE30 /* InfoPlist.strings */ = { 355 | isa = PBXVariantGroup; 356 | children = ( 357 | 37CB95D7139E8FEB0053AE30 /* en */, 358 | ); 359 | name = InfoPlist.strings; 360 | sourceTree = ""; 361 | }; 362 | /* End PBXVariantGroup section */ 363 | 364 | /* Begin XCBuildConfiguration section */ 365 | 37CB95DE139E8FEB0053AE30 /* Debug */ = { 366 | isa = XCBuildConfiguration; 367 | buildSettings = { 368 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 369 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 370 | GCC_C_LANGUAGE_STANDARD = gnu99; 371 | GCC_OPTIMIZATION_LEVEL = 0; 372 | GCC_PREPROCESSOR_DEFINITIONS = DEBUG; 373 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 374 | GCC_VERSION = ""; 375 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 376 | GCC_WARN_UNUSED_VARIABLE = YES; 377 | IPHONEOS_DEPLOYMENT_TARGET = 5.0; 378 | SDKROOT = iphoneos; 379 | TARGETED_DEVICE_FAMILY = "1,2"; 380 | }; 381 | name = Debug; 382 | }; 383 | 37CB95DF139E8FEB0053AE30 /* Release */ = { 384 | isa = XCBuildConfiguration; 385 | buildSettings = { 386 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 387 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 388 | GCC_C_LANGUAGE_STANDARD = gnu99; 389 | GCC_VERSION = ""; 390 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 391 | GCC_WARN_UNUSED_VARIABLE = YES; 392 | IPHONEOS_DEPLOYMENT_TARGET = 5.0; 393 | OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; 394 | SDKROOT = iphoneos; 395 | TARGETED_DEVICE_FAMILY = "1,2"; 396 | }; 397 | name = Release; 398 | }; 399 | 37CB95E1139E8FEB0053AE30 /* Debug */ = { 400 | isa = XCBuildConfiguration; 401 | buildSettings = { 402 | ALWAYS_SEARCH_USER_PATHS = NO; 403 | COPY_PHASE_STRIP = NO; 404 | GCC_DYNAMIC_NO_PIC = NO; 405 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 406 | GCC_PREFIX_HEADER = "EKEventToiCal/EKEventToiCal-Prefix.pch"; 407 | INFOPLIST_FILE = "EKEventToiCal/EKEventToiCal-Info.plist"; 408 | PRODUCT_NAME = "$(TARGET_NAME)"; 409 | WRAPPER_EXTENSION = app; 410 | }; 411 | name = Debug; 412 | }; 413 | 37CB95E2139E8FEB0053AE30 /* Release */ = { 414 | isa = XCBuildConfiguration; 415 | buildSettings = { 416 | ALWAYS_SEARCH_USER_PATHS = NO; 417 | COPY_PHASE_STRIP = YES; 418 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 419 | GCC_PREFIX_HEADER = "EKEventToiCal/EKEventToiCal-Prefix.pch"; 420 | INFOPLIST_FILE = "EKEventToiCal/EKEventToiCal-Info.plist"; 421 | PRODUCT_NAME = "$(TARGET_NAME)"; 422 | VALIDATE_PRODUCT = YES; 423 | WRAPPER_EXTENSION = app; 424 | }; 425 | name = Release; 426 | }; 427 | 37CB95E4139E8FEB0053AE30 /* Debug */ = { 428 | isa = XCBuildConfiguration; 429 | buildSettings = { 430 | ALWAYS_SEARCH_USER_PATHS = NO; 431 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/EKEventToiCal.app/EKEventToiCal"; 432 | FRAMEWORK_SEARCH_PATHS = ( 433 | "$(SDKROOT)/Developer/Library/Frameworks", 434 | "$(DEVELOPER_LIBRARY_DIR)/Frameworks", 435 | ); 436 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 437 | GCC_PREFIX_HEADER = "EKEventToiCalTests/EKEventToiCalTests-Prefix.pch"; 438 | INFOPLIST_FILE = "EKEventToiCalTests/EKEventToiCalTests-Info.plist"; 439 | OTHER_LDFLAGS = ( 440 | "-framework", 441 | SenTestingKit, 442 | ); 443 | PRODUCT_NAME = "$(TARGET_NAME)"; 444 | TEST_HOST = "$(BUNDLE_LOADER)"; 445 | WRAPPER_EXTENSION = octest; 446 | }; 447 | name = Debug; 448 | }; 449 | 37CB95E5139E8FEB0053AE30 /* Release */ = { 450 | isa = XCBuildConfiguration; 451 | buildSettings = { 452 | ALWAYS_SEARCH_USER_PATHS = NO; 453 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/EKEventToiCal.app/EKEventToiCal"; 454 | FRAMEWORK_SEARCH_PATHS = ( 455 | "$(SDKROOT)/Developer/Library/Frameworks", 456 | "$(DEVELOPER_LIBRARY_DIR)/Frameworks", 457 | ); 458 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 459 | GCC_PREFIX_HEADER = "EKEventToiCalTests/EKEventToiCalTests-Prefix.pch"; 460 | INFOPLIST_FILE = "EKEventToiCalTests/EKEventToiCalTests-Info.plist"; 461 | OTHER_LDFLAGS = ( 462 | "-framework", 463 | SenTestingKit, 464 | ); 465 | PRODUCT_NAME = "$(TARGET_NAME)"; 466 | TEST_HOST = "$(BUNDLE_LOADER)"; 467 | WRAPPER_EXTENSION = octest; 468 | }; 469 | name = Release; 470 | }; 471 | /* End XCBuildConfiguration section */ 472 | 473 | /* Begin XCConfigurationList section */ 474 | 37CB959E139E8FEA0053AE30 /* Build configuration list for PBXProject "EKEventToiCal" */ = { 475 | isa = XCConfigurationList; 476 | buildConfigurations = ( 477 | 37CB95DE139E8FEB0053AE30 /* Debug */, 478 | 37CB95DF139E8FEB0053AE30 /* Release */, 479 | ); 480 | defaultConfigurationIsVisible = 0; 481 | defaultConfigurationName = Release; 482 | }; 483 | 37CB95E0139E8FEB0053AE30 /* Build configuration list for PBXNativeTarget "EKEventToiCal" */ = { 484 | isa = XCConfigurationList; 485 | buildConfigurations = ( 486 | 37CB95E1139E8FEB0053AE30 /* Debug */, 487 | 37CB95E2139E8FEB0053AE30 /* Release */, 488 | ); 489 | defaultConfigurationIsVisible = 0; 490 | defaultConfigurationName = Release; 491 | }; 492 | 37CB95E3139E8FEB0053AE30 /* Build configuration list for PBXNativeTarget "EKEventToiCalTests" */ = { 493 | isa = XCConfigurationList; 494 | buildConfigurations = ( 495 | 37CB95E4139E8FEB0053AE30 /* Debug */, 496 | 37CB95E5139E8FEB0053AE30 /* Release */, 497 | ); 498 | defaultConfigurationIsVisible = 0; 499 | defaultConfigurationName = Release; 500 | }; 501 | /* End XCConfigurationList section */ 502 | }; 503 | rootObject = 37CB959B139E8FEA0053AE30 /* Project object */; 504 | } 505 | --------------------------------------------------------------------------------