diff --git a/Classes/ChatRoomTableViewController.m b/Classes/ChatRoomTableViewController.m index 4bcf7b651..75fd29cce 100644 --- a/Classes/ChatRoomTableViewController.m +++ b/Classes/ChatRoomTableViewController.m @@ -45,7 +45,8 @@ } } -#pragma mark - + +#pragma mark - - (void)loadData { if(data != nil) { @@ -150,7 +151,7 @@ - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { ChatModel *chat = [data objectAtIndex:[indexPath row]]; - return [UIChatRoomCell height:chat]; + return [UIChatRoomCell height:chat width:[self.view frame].size.width]; } @end diff --git a/Classes/ChatRoomViewController.h b/Classes/ChatRoomViewController.h index 9d63ea797..03ac04c83 100644 --- a/Classes/ChatRoomViewController.h +++ b/Classes/ChatRoomViewController.h @@ -37,6 +37,7 @@ UIImageView *avatarImage; UIView *headerView; UIView *footerView; + UIImageView *fieldBackgroundImage; } @@ -48,6 +49,7 @@ @property (nonatomic, retain) IBOutlet UIImageView *avatarImage; @property (nonatomic, retain) IBOutlet UIView *headerView; @property (nonatomic, retain) IBOutlet UIView *footerView; +@property (nonatomic, retain) IBOutlet UIImageView *fieldBackgroundImage; @property (nonatomic, copy) NSString *remoteAddress; - (IBAction)onBackClick:(id)event; diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m index 4e6f12c64..7e3744458 100644 --- a/Classes/ChatRoomViewController.m +++ b/Classes/ChatRoomViewController.m @@ -33,6 +33,8 @@ @synthesize avatarImage; @synthesize headerView; @synthesize footerView; +@synthesize fieldBackgroundImage; + #pragma mark - Lifecycle Functions @@ -55,6 +57,7 @@ [avatarImage release]; [headerView release]; [footerView release]; + [fieldBackgroundImage release]; [super dealloc]; } @@ -72,7 +75,7 @@ static UICompositeViewDescription *compositeDescription = nil; tabBar:@"UIMainBar" tabBarEnabled:true fullscreen:false - landscapeMode:false + landscapeMode:[LinphoneManager runningOnIpad] portraitMode:true]; } return compositeDescription; @@ -109,6 +112,9 @@ static UICompositeViewDescription *compositeDescription = nil; [tableController setEditing:FALSE animated:FALSE]; [editButton setOff]; [[tableController tableView] reloadData]; + + [fieldBackgroundImage setImage:[TUNinePatchCache imageOfSize:[fieldBackgroundImage bounds].size + forNinePatchNamed:@"chat_field"]]; } - (void)viewWillDisappear:(BOOL)animated { @@ -140,6 +146,7 @@ static UICompositeViewDescription *compositeDescription = nil; [remoteAddress release]; } remoteAddress = [aRemoteAddress copy]; + [messageField setText:@""]; [tableController setRemoteAddress: remoteAddress]; [self update]; } @@ -259,6 +266,7 @@ static UICompositeViewDescription *compositeDescription = nil; } } + #pragma mark - Keyboard Event Functions - (void)keyboardWillHide:(NSNotification *)notif { @@ -294,19 +302,33 @@ static UICompositeViewDescription *compositeDescription = nil; [UIView setAnimationDuration:duration]; [UIView setAnimationCurve:curve]; [UIView setAnimationBeginsFromCurrentState:TRUE]; + + if(UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) { + int width = endFrame.size.height; + endFrame.size.height = endFrame.size.width; + endFrame.size.width = width; + } // Move view - CGRect frame = [[self view] frame]; - frame.origin.y = [self.view convertPoint:endFrame.origin fromView:nil].y - frame.size.height; - [[self view] setFrame:frame]; + { + CGRect frame = [[self view] frame]; + CGRect rect = [PhoneMainView instance].view.bounds; + CGPoint pos = {frame.size.width, frame.size.height}; + CGPoint gPos = [self.view convertPoint:pos toView:[UIApplication sharedApplication].keyWindow.rootViewController.view]; // Bypass IOS bug on landscape mode + frame.origin.y = (rect.size.height - gPos.y - endFrame.size.height); + if(frame.origin.y > 0) frame.origin.y = 0; + [[self view] setFrame:frame]; + } // Resize table view - CGPoint pos = {0, 0}; - CGPoint gPos = [[self.view superview] convertPoint:pos toView:self.view]; - CGRect tableFrame = [tableController.view frame]; - tableFrame.origin.y = gPos.y; - tableFrame.size.height = [footerView frame].origin.y - tableFrame.origin.y; - [tableController.view setFrame:tableFrame]; + { + CGPoint pos = {0, 0}; + CGPoint gPos = [[self.view superview] convertPoint:pos toView:self.view]; + CGRect tableFrame = [tableController.view frame]; + tableFrame.origin.y = gPos.y; + tableFrame.size.height = [footerView frame].origin.y - tableFrame.origin.y; + [tableController.view setFrame:tableFrame]; + } // Scroll int lastSection = [tableController.tableView numberOfSections] -1; diff --git a/Classes/ChatRoomViewController.xib b/Classes/ChatRoomViewController.xib index c8b9c4f6b..140f53cfe 100644 --- a/Classes/ChatRoomViewController.xib +++ b/Classes/ChatRoomViewController.xib @@ -3,22 +3,22 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 - IBUIView - IBUIImageView IBProxyObject - IBUILabel - IBUITextField - IBUITableViewController - IBUITableView IBUIButton + IBUIImageView + IBUILabel + IBUITableView + IBUITableViewController + IBUITextField + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -44,6 +44,21 @@ 290 + + + 290 + {320, 58} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + toolsbar_background.png + + 292 @@ -84,7 +99,7 @@ - 292 + 289 {{160, 0}, {160, 58}} @@ -118,7 +133,7 @@ {320, 58} - + _NS:9 3 @@ -150,7 +165,7 @@ - 274 + 292 {{20, 6}, {65, 65}} @@ -165,7 +180,7 @@ - 292 + 290 {{101, 37}, {199, 43}} @@ -238,6 +253,7 @@ {{250, 0}, {70, 59}} + _NS:9 NO @@ -267,7 +283,7 @@ - 260 + 258 {250, 59} @@ -282,7 +298,7 @@ - 260 + 258 {{10, 10}, {230, 39}} @@ -422,6 +438,14 @@ 46 + + + fieldBackgroundImage + + + + 48 + dataSource @@ -527,6 +551,7 @@ + toolsView @@ -577,7 +602,7 @@ 21 - fieldBackground + fieldBackgroundImage 29 @@ -614,6 +639,12 @@ addressLabel + + 47 + + + background + @@ -635,6 +666,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -645,7 +677,7 @@ - 46 + 48 @@ -688,6 +720,7 @@ UILabel UIImageView UIToggleButton + UIImageView UIView UIView UITextField @@ -707,6 +740,10 @@ editButton UIToggleButton + + fieldBackgroundImage + UIImageView + footerView UIView @@ -763,7 +800,8 @@ {140, 117} {140, 117} {140, 117} + {5, 117} - 1181 + 1498 diff --git a/Classes/ChatViewController.m b/Classes/ChatViewController.m index 390b91d5d..ac91c6d5b 100644 --- a/Classes/ChatViewController.m +++ b/Classes/ChatViewController.m @@ -93,7 +93,7 @@ static UICompositeViewDescription *compositeDescription = nil; tabBar: @"UIMainBar" tabBarEnabled:true fullscreen:false - landscapeMode:false + landscapeMode:[LinphoneManager runningOnIpad] portraitMode:true]; } return compositeDescription; diff --git a/Classes/ChatViewController.xib b/Classes/ChatViewController.xib index 24b92a3ae..395f02293 100644 --- a/Classes/ChatViewController.xib +++ b/Classes/ChatViewController.xib @@ -3,19 +3,20 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 - IBUITableViewController - IBUITableView - IBUIView - IBUIButton IBProxyObject + IBUIButton + IBUIImageView + IBUITableView + IBUITableViewController + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -39,8 +40,23 @@ - 288 + 290 + + + 290 + {320, 58} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + toolsbar_background.png + + 292 @@ -81,7 +97,7 @@ - 292 + 289 {{160, 0}, {160, 58}} @@ -115,7 +131,7 @@ {320, 58} - + _NS:9 3 @@ -290,9 +306,10 @@ + - header + toolsBar 9 @@ -306,6 +323,12 @@ addButton + + 23 + + + background + @@ -315,6 +338,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin ChatTableViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -328,7 +352,7 @@ - 22 + 23 @@ -400,7 +424,8 @@ {320, 117} {320, 117} {320, 117} + {5, 117} - 1181 + 1498 diff --git a/Classes/ConsoleViewController.xib b/Classes/ConsoleViewController.xib index 16846dae6..9b81061ea 100644 --- a/Classes/ConsoleViewController.xib +++ b/Classes/ConsoleViewController.xib @@ -1,35 +1,39 @@ - + 784 - 9L31a - 680 - 949.54 - 353.00 - + 11E53 + 2549 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1498 + + YES - + IBProxyObject + IBUITextView + IBUIView + IBUIViewController YES com.apple.InterfaceBuilder.IBCocoaTouchPlugin - YES - - YES - - - YES - + PluginDependencyRecalculationVersion + YES IBFilesOwner + IBCocoaTouchFramework IBFirstResponder + IBCocoaTouchFramework @@ -42,12 +46,14 @@ 274 {320, 450} + 1 MSAxIDEAA YES YES + IBCocoaTouchFramework NO NO NO @@ -56,11 +62,22 @@ 2 + IBCocoaTouchFramework + + + 1 + 17 + + + Helvetica + 17 + 16 {320, 460} + 3 MQA @@ -69,8 +86,14 @@ NO + IBCocoaTouchFramework - + + 1 + 1 + + IBCocoaTouchFramework + NO @@ -116,7 +139,7 @@ -1 - RmlsZSdzIE93bmVyA + File's Owner -2 @@ -151,22 +174,24 @@ YES - + YES -1.CustomClassName + -1.IBPluginDependency -2.CustomClassName + -2.IBPluginDependency 10.CustomClassName - 10.IBEditorWindowLastContentRect 10.IBPluginDependency 4.IBPluginDependency 7.IBPluginDependency - + YES ConsoleViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin ConsoleViewController - {{807, 300}, {320, 480}} com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -174,22 +199,14 @@ YES - - YES - - - YES - + + YES - - YES - - - YES - + + 14 @@ -202,27 +219,59 @@ UIViewController YES - + YES logs logsView - + YES UITextView UIView + + YES + + YES + logs + logsView + + + YES + + logs + UITextView + + + logsView + UIView + + + IBProjectSource - Classes/ConsoleViewController.h + ./Classes/ConsoleViewController.h 0 - ../linphone.xcodeproj + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES 3 - 3.1 + 1498 diff --git a/Classes/ContactDetailsLabelViewController.h b/Classes/ContactDetailsLabelViewController.h index cefe72273..f67e4a253 100644 --- a/Classes/ContactDetailsLabelViewController.h +++ b/Classes/ContactDetailsLabelViewController.h @@ -18,18 +18,25 @@ */ #import +#import "UICompositeViewController.h" -#import "UIModalViewController.h" +@protocol ContactDetailsLabelViewDelegate -@interface ContactDetailsLabelViewController : UIModalViewController { +- (void)changeContactDetailsLabel:(NSString*)label; + +@end + +@interface ContactDetailsLabelViewController : UIViewController { NSDictionary *dataList; UITableView *tableView; NSString *selectedData; + id delegate; } @property (nonatomic, copy) NSString *selectedData; @property (nonatomic, retain) NSDictionary *dataList; @property (nonatomic, retain) IBOutlet UITableView *tableView; +@property (nonatomic, retain) id delegate; - (IBAction)onBackClick:(id)event; diff --git a/Classes/ContactDetailsLabelViewController.m b/Classes/ContactDetailsLabelViewController.m index 81cb0ec1c..be5a95f12 100644 --- a/Classes/ContactDetailsLabelViewController.m +++ b/Classes/ContactDetailsLabelViewController.m @@ -21,12 +21,26 @@ #import "UACellBackgroundView.h" #import "UILinphone.h" +#import "PhoneMainView.h" @implementation ContactDetailsLabelViewController @synthesize dataList; @synthesize tableView; @synthesize selectedData; +@synthesize delegate; + + +#pragma mark - Lifecycle Functions + +- (void)dealloc { + [selectedData release]; + [dataList release]; + [tableView release]; + [delegate release]; + + [super dealloc]; +} #pragma mark - ViewController Functions @@ -37,6 +51,34 @@ } +#pragma mark - UICompositeViewDelegate Functions + +static UICompositeViewDescription *compositeDescription = nil; + ++ (UICompositeViewDescription *)compositeViewDescription { + if(compositeDescription == nil) { + compositeDescription = [[UICompositeViewDescription alloc] init:@"ContactDetailsLabel" + content:@"ContactDetailsLabelViewController" + stateBar:nil + stateBarEnabled:false + tabBar:@"UIMainBar" + tabBarEnabled:true + fullscreen:false + landscapeMode:true + portraitMode:true]; + } + return compositeDescription; +} + + +#pragma mark - + +- (void)dismiss { + if([[[PhoneMainView instance] currentView] equal:[ContactDetailsLabelViewController compositeViewDescription]]) { + [[PhoneMainView instance] popCurrentView]; + } +} + #pragma mark - Property Functions - (void)setDataList:(NSDictionary *)adatalist { @@ -56,6 +98,7 @@ [tableView reloadData]; } + #pragma mark - UITableViewDataSource Functions - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { @@ -90,7 +133,8 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSString* key = [[dataList allKeys] objectAtIndex:[indexPath row]]; [self setSelectedData:key]; - [self dismiss:key]; + [delegate changeContactDetailsLabel:key]; + [self dismiss]; } diff --git a/Classes/ContactDetailsLabelViewController.xib b/Classes/ContactDetailsLabelViewController.xib index 324f0e974..838b54351 100644 --- a/Classes/ContactDetailsLabelViewController.xib +++ b/Classes/ContactDetailsLabelViewController.xib @@ -3,19 +3,19 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 - IBUITableView - IBUIButton - IBUIView - IBUIImageView IBProxyObject + IBUIButton + IBUIImageView + IBUITableView + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -61,17 +61,17 @@ - 292 + 290 {320, 58} - + _NS:9 NO IBCocoaTouchFramework NSImage - contact_bar_background.png + toolsbar_background.png @@ -80,7 +80,7 @@ {160, 58} - + _NS:9 NO @@ -116,7 +116,7 @@ {320, 58} - + _NS:9 3 @@ -210,12 +210,11 @@ AAgACAAIAAEAAQABAAE 10 - {{0, 20}, {320, 460}} + {320, 460} - IBCocoaTouchFramework @@ -306,7 +305,7 @@ AAgACAAIAAEAAQABAAE - header + toolsBar 8 @@ -401,8 +400,8 @@ AAgACAAIAAEAAQABAAE {640, 523} {320, 117} {320, 117} - {5, 117} + {5, 117} - 1181 + 1498 diff --git a/Classes/ContactDetailsTableViewController.h b/Classes/ContactDetailsTableViewController.h index e05883262..24407db95 100644 --- a/Classes/ContactDetailsTableViewController.h +++ b/Classes/ContactDetailsTableViewController.h @@ -24,11 +24,10 @@ #import "UIContactDetailsHeader.h" #import "UIContactDetailsFooter.h" -@interface ContactDetailsTableViewController : UITableViewController { +@interface ContactDetailsTableViewController : UITableViewController { @private ABRecordRef contact; NSMutableArray *dataCache; - ContactDetailsLabelViewController *contactDetailsLabelViewController; NSMutableArray *labelArray; NSIndexPath *editingIndexPath; @public diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index f91b20a18..4aefa5a79 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -20,7 +20,6 @@ #import "ContactDetailsTableViewController.h" #import "PhoneMainView.h" #import "UIEditableTableViewCell.h" -#import "UIView+ModalStack.h" #import "UACellBackgroundView.h" #import "UILinphone.h" #import "OrderedDictionary.h" @@ -61,7 +60,6 @@ #pragma mark - Lifecycle Functions - (void)initContactDetailsTableViewController { - dataCache = [[NSMutableArray alloc] init]; labelArray = [[NSMutableArray alloc] initWithObjects: @"Linphone", @@ -70,6 +68,7 @@ [NSString stringWithString:(NSString*)kABPersonPhoneMainLabel], nil]; headerController = [[UIContactDetailsHeader alloc] init]; footerController = [[UIContactDetailsFooter alloc] init]; + editingIndexPath = nil; } - (id)init { @@ -88,7 +87,13 @@ return self; } -- (void)dealloc { +- (void)dealloc { + if(contact != nil && ABRecordGetRecordID(contact) == kABRecordInvalidID) { + CFRelease(contact); + } + if(editingIndexPath != nil) { + [editingIndexPath release]; + } [labelArray release]; [dataCache release]; [headerController release]; @@ -105,27 +110,8 @@ [self.tableView setBackgroundColor:[UIColor clearColor]]; // Can't do it in Xib: issue with ios4 } -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; -} - -- (void)viewWillDisappear:(BOOL)animated { - [super viewWillDisappear:animated]; - if(contactDetailsLabelViewController != nil) { - [[[self view] superview] removeModalView:[contactDetailsLabelViewController view]]; - [editingIndexPath release]; - editingIndexPath = nil; - [contactDetailsLabelViewController release]; - contactDetailsLabelViewController = nil; - } -} - - (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; - if(contact != nil && ABRecordGetRecordID(contact) == kABRecordInvalidID) { - CFRelease(contact); - } - contact = nil; } @@ -344,6 +330,9 @@ #pragma mark - Property Functions - (void)setContact:(ABRecordRef)acontact { + if(contact != nil && ABRecordGetRecordID(contact) == kABRecordInvalidID) { + CFRelease(contact); + } self->contact = acontact; [self loadData]; } @@ -494,13 +483,16 @@ CFRelease(lMap); } if(key != nil) { - contactDetailsLabelViewController = [[ContactDetailsLabelViewController alloc] initWithNibName:@"ContactDetailsLabelViewController" - bundle:[NSBundle mainBundle]]; - [contactDetailsLabelViewController setSelectedData:key]; - [contactDetailsLabelViewController setDataList:[self getLocalizedLabels]]; - [contactDetailsLabelViewController setModalDelegate:self]; + if(editingIndexPath != nil) { + [editingIndexPath release]; + } editingIndexPath = [indexPath copy]; - [[[self view] superview] addModalView:[contactDetailsLabelViewController view]]; + ContactDetailsLabelViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ContactDetailsLabelViewController compositeViewDescription] push:TRUE], ContactDetailsLabelViewController); + if(controller != nil) { + [controller setDataList:[self getLocalizedLabels]]; + [controller setSelectedData:key]; + [controller setDelegate:self]; + } } } } @@ -546,6 +538,7 @@ } [headerController setEditing:editing animated:animated]; + [footerController setEditing:editing animated:animated]; } - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { @@ -608,11 +601,9 @@ } -#pragma mark - UIModalViewDeletage Functions +#pragma mark - ContactDetailsLabelDelegate Functions -- (void)modalViewDismiss:(UIModalViewController*)controller value:(id)value { - [[[self view]superview] removeModalView:[contactDetailsLabelViewController view]]; - contactDetailsLabelViewController = nil; +- (void)changeContactDetailsLabel:(NSString *)value { if(value != nil) { NSMutableArray *sectionDict = [dataCache objectAtIndex:[editingIndexPath section]]; Entry *entry = [sectionDict objectAtIndex:[editingIndexPath row]]; @@ -621,7 +612,7 @@ ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap); CFRelease(lcMap); int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); - ABMultiValueReplaceLabelAtIndex(lMap, (CFStringRef)((NSString*)value), index); + ABMultiValueReplaceLabelAtIndex(lMap, (CFStringRef)(value), index); ABRecordSetValue(contact, kABPersonPhoneProperty, lMap, nil); CFRelease(lMap); } else if([editingIndexPath section] == 1) { @@ -629,7 +620,7 @@ ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap); CFRelease(lcMap); int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); - ABMultiValueReplaceLabelAtIndex(lMap, (CFStringRef)((NSString*)value), index); + ABMultiValueReplaceLabelAtIndex(lMap, (CFStringRef)(value), index); ABRecordSetValue(contact, kABPersonInstantMessageProperty, lMap, nil); CFRelease(lMap); } diff --git a/Classes/ContactDetailsViewController.m b/Classes/ContactDetailsViewController.m index 0c120384f..dbf758904 100644 --- a/Classes/ContactDetailsViewController.m +++ b/Classes/ContactDetailsViewController.m @@ -57,6 +57,7 @@ #pragma mark - - (void)resetData { + [self disableEdit:FALSE]; if(contact == NULL) { ABAddressBookRevert(addressBook); return; @@ -141,6 +142,8 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf - (void)newContact { [LinphoneLogger logc:LinphoneLoggerLog format:"New contact"]; + self->contact = NULL; + [self resetData]; self->contact = ABPersonCreate(); [tableController setContact:self->contact]; [self enableEdit:FALSE]; @@ -149,6 +152,8 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf - (void)newContact:(NSString*)address { [LinphoneLogger logc:LinphoneLoggerLog format:"New contact"]; + self->contact = NULL; + [self resetData]; self->contact = ABPersonCreate(); [tableController setContact:self->contact]; [tableController addSipField:address]; @@ -158,6 +163,8 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf - (void)editContact:(ABRecordRef)acontact { [LinphoneLogger logc:LinphoneLoggerLog format:"Edit contact %p", acontact]; + self->contact = NULL; + [self resetData]; self->contact = ABAddressBookGetPersonWithRecordID(addressBook, ABRecordGetRecordID(acontact)); [tableController setContact:self->contact]; [self enableEdit:FALSE]; @@ -166,6 +173,8 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf - (void)editContact:(ABRecordRef)acontact address:(NSString*)address { [LinphoneLogger logc:LinphoneLoggerLog format:"Edit contact %p", acontact]; + self->contact = NULL; + [self resetData]; self->contact = ABAddressBookGetPersonWithRecordID(addressBook, ABRecordGetRecordID(acontact)); [tableController setContact:self->contact]; [tableController addSipField:address]; @@ -178,9 +187,10 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf - (void)setContact:(ABRecordRef)acontact { [LinphoneLogger logc:LinphoneLoggerLog format:"Set contact %p", acontact]; + self->contact = NULL; + [self resetData]; self->contact = ABAddressBookGetPersonWithRecordID(addressBook, ABRecordGetRecordID(acontact)); [tableController setContact:self->contact]; - [self disableEdit:FALSE]; } @@ -211,9 +221,6 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { [tableController viewWillDisappear:animated]; } - [self disableEdit:FALSE]; - self->contact = NULL; - [self resetData]; } - (void)viewWillAppear:(BOOL)animated { @@ -257,7 +264,7 @@ static UICompositeViewDescription *compositeDescription = nil; tabBar:@"UIMainBar" tabBarEnabled:true fullscreen:false - landscapeMode:false + landscapeMode:[LinphoneManager runningOnIpad] portraitMode:true]; } return compositeDescription; diff --git a/Classes/ContactDetailsViewController.xib b/Classes/ContactDetailsViewController.xib index 42e2901cc..939b1c99b 100644 --- a/Classes/ContactDetailsViewController.xib +++ b/Classes/ContactDetailsViewController.xib @@ -3,20 +3,20 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 - IBUIImageView - IBUIButton - IBUITableView - IBUIView - IBUITableViewController IBProxyObject + IBUIButton + IBUIImageView + IBUITableView + IBUITableViewController + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -44,16 +44,17 @@ - 292 + 290 {320, 58} + _NS:9 NO IBCocoaTouchFramework NSImage - contact_bar_background.png + toolsbar_background.png @@ -124,7 +125,7 @@ - 292 + 289 {{160, 0}, {160, 58}} @@ -158,7 +159,7 @@ {320, 58} - + _NS:9 3 @@ -175,6 +176,7 @@ {{0, 59}, {320, 401}} + _NS:9 10 @@ -252,12 +254,11 @@ AAgACAAIAAEAAQABAAE 10 - {{0, 20}, {320, 460}} + {320, 460} - IBCocoaTouchFramework @@ -449,7 +450,6 @@ AAgACAAIAAEAAQABAAE UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - TPKeyboardAvoidingTableView com.apple.InterfaceBuilder.IBCocoaTouchPlugin ContactDetailsTableViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -530,14 +530,6 @@ AAgACAAIAAEAAQABAAE ./Classes/ContactDetailsViewController.h - - TPKeyboardAvoidingTableView - UITableView - - IBProjectSource - ./Classes/TPKeyboardAvoidingTableView.h - - UIToggleButton UIButton @@ -559,13 +551,13 @@ AAgACAAIAAEAAQABAAE {320, 117} {320, 117} - {5, 117} {320, 117} {320, 117} {320, 117} {320, 117} {320, 117} + {5, 117} - 1181 + 1498 diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index 918170d81..1ea4084ef 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -82,12 +82,16 @@ ABMultiValueRef lMap = ABRecordCopyValue((ABRecordRef)lPerson, kABPersonInstantMessageProperty); for(int i = 0; i < ABMultiValueGetCount(lMap); ++i) { CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, i); - if(CFDictionaryContainsKey(lDict, @"service")) { - if(CFStringCompare((CFStringRef)@"SIP", CFDictionaryGetValue(lDict, @"service"), kCFCompareCaseInsensitive) == 0) { + if(CFDictionaryContainsKey(lDict, kABPersonInstantMessageServiceKey)) { + CFStringRef serviceKey = CFDictionaryGetValue(lDict, kABPersonInstantMessageServiceKey); + if(CFStringCompare((CFStringRef)@"SIP", serviceKey, kCFCompareCaseInsensitive) == 0) { add = true; } } else { - add = true; + NSString* usernameKey = CFDictionaryGetValue(lDict, kABPersonInstantMessageUsernameKey); + if([usernameKey hasPrefix:@"sip:"]) { + add = true; + } } CFRelease(lDict); } diff --git a/Classes/ContactsViewController.m b/Classes/ContactsViewController.m index c23b5967c..13b1eecdf 100644 --- a/Classes/ContactsViewController.m +++ b/Classes/ContactsViewController.m @@ -109,7 +109,7 @@ static UICompositeViewDescription *compositeDescription = nil; tabBar:@"UIMainBar" tabBarEnabled:true fullscreen:false - landscapeMode:false + landscapeMode:[LinphoneManager runningOnIpad] portraitMode:true]; } return compositeDescription; diff --git a/Classes/ContactsViewController.xib b/Classes/ContactsViewController.xib index 91add1d9e..1a98f54c2 100644 --- a/Classes/ContactsViewController.xib +++ b/Classes/ContactsViewController.xib @@ -3,19 +3,20 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 - IBUIButton - IBUITableView - IBUIView - IBUITableViewController IBProxyObject + IBUIButton + IBUIImageView + IBUITableView + IBUITableViewController + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -39,11 +40,25 @@ - 288 + 290 + + + 290 + {320, 58} + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + toolsbar_background.png + + - 292 + 289 {{108, 0}, {106, 58}} @@ -82,7 +97,7 @@ - 292 + 289 {{214, 0}, {106, 58}} @@ -191,9 +206,7 @@ 1 MC45NDExNzY0NzA2IDAuOTY0NzA1ODgyNCAwLjk2NDcwNTg4MjQAA - NO YES - NO IBCocoaTouchFramework 0.0 10 @@ -387,6 +400,7 @@ + toolBar @@ -428,6 +442,12 @@ backButton + + 92 + + + background + @@ -448,12 +468,13 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 91 + 92 @@ -550,7 +571,8 @@ {213, 117} {213, 117} {213, 117} + {5, 117} - 1181 + 1498 diff --git a/Classes/DialerViewController.h b/Classes/DialerViewController.h index b5a94af44..876541100 100644 --- a/Classes/DialerViewController.h +++ b/Classes/DialerViewController.h @@ -31,7 +31,7 @@ //Buttons UITextField* addressField; UIButton* addContactButton; - UIButton* cancelButton; + UIButton* backButton; UIEraseButton* eraseButton; UICallButton* callButton; UICallButton* addCallButton; @@ -65,7 +65,7 @@ @property (nonatomic, retain) IBOutlet UICallButton* callButton; @property (nonatomic, retain) IBOutlet UICallButton* addCallButton; @property (nonatomic, retain) IBOutlet UITransferButton* transferButton; -@property (nonatomic, retain) IBOutlet UIButton* cancelButton; +@property (nonatomic, retain) IBOutlet UIButton* backButton; @property (nonatomic, retain) IBOutlet UIEraseButton* eraseButton; @property (nonatomic, retain) IBOutlet UIButton* oneButton; diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index 251f90687..61c77c9ca 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -35,7 +35,7 @@ @synthesize addressField; @synthesize addContactButton; -@synthesize cancelButton; +@synthesize backButton; @synthesize addCallButton; @synthesize transferButton; @synthesize callButton; @@ -67,7 +67,7 @@ - (void)dealloc { [addressField release]; [addContactButton release]; - [cancelButton release]; + [backButton release]; [eraseButton release]; [callButton release]; [addCallButton release]; @@ -107,7 +107,7 @@ static UICompositeViewDescription *compositeDescription = nil; tabBar:@"UIMainBar" tabBarEnabled:true fullscreen:false - landscapeMode:false + landscapeMode:[LinphoneManager runningOnIpad] portraitMode:true]; } return compositeDescription; @@ -181,12 +181,12 @@ static UICompositeViewDescription *compositeDescription = nil; [transferButton setHidden:true]; } [callButton setHidden:true]; - [cancelButton setHidden:false]; + [backButton setHidden:false]; [addContactButton setHidden:true]; } else { [addCallButton setHidden:true]; [callButton setHidden:false]; - [cancelButton setHidden:true]; + [backButton setHidden:true]; [addContactButton setHidden:false]; [transferButton setHidden:true]; } diff --git a/Classes/DialerViewController.xib b/Classes/DialerViewController.xib index ccfa0f9c5..acb4e8b52 100644 --- a/Classes/DialerViewController.xib +++ b/Classes/DialerViewController.xib @@ -3,20 +3,20 @@ 784 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 YES + IBProxyObject IBUIButton IBUIImageView - IBUIView IBUITextField - IBProxyObject + IBUIView YES @@ -41,6 +41,82 @@ 292 YES + + + 288 + + YES + + + 292 + {320, 80} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + dialer_address_background.png + + + + + 292 + {320, 60} + + + + + 3 + MSAwAA + + NO + NO + IBCocoaTouchFramework + 0 + + sip: + + 3 + MQA + + YES + 15 + + 1 + 3 + IBCocoaTouchFramework + + + Helvetica + Helvetica + 0 + 36 + + + Helvetica + 36 + 16 + + + + {320, 80} + + + + _NS:9 + + 3 + MSAwAA + + 2 + + + YES + IBCocoaTouchFramework + 288 @@ -362,82 +438,6 @@ IBCocoaTouchFramework - - - 288 - - YES - - - 292 - {320, 80} - - - - _NS:9 - NO - IBCocoaTouchFramework - - NSImage - dialer_address_background.png - - - - - 292 - {320, 60} - - - - - 3 - MSAwAA - - NO - NO - IBCocoaTouchFramework - 0 - - sip: - - 3 - MQA - - YES - 15 - - 1 - 3 - IBCocoaTouchFramework - - - Helvetica - Helvetica - 0 - 36 - - - Helvetica - 36 - 16 - - - - {320, 80} - - - - _NS:9 - - 3 - MSAwAA - - 2 - - - YES - IBCocoaTouchFramework - 288 @@ -496,14 +496,14 @@ NSImage back_over.png + + NSImage + back_disabled.png + NSImage back_default.png - - NSImage - back_disabled.png - @@ -776,14 +776,6 @@ 225 - - - cancelButton - - - - 226 - addCallButton @@ -816,6 +808,14 @@ 253 + + + backButton + + + + 254 + delegate @@ -1012,7 +1012,6 @@ - view 178 @@ -1029,7 +1028,7 @@ 4 - address + addressField 179 @@ -1330,7 +1329,7 @@ - 253 + 254 @@ -1384,6 +1383,7 @@ addCallButton addContactButton addressField + backButton callButton cancelButton eightButton @@ -1406,6 +1406,7 @@ UICallButton UIButton UITextField + UIButton UICallButton UIButton UIButton @@ -1431,6 +1432,7 @@ addCallButton addContactButton addressField + backButton callButton cancelButton eightButton @@ -1462,6 +1464,10 @@ addressField UITextField + + backButton + UIButton + callButton UICallButton @@ -1738,6 +1744,6 @@ {214, 138} - 1181 + 1498 diff --git a/Classes/DialerViewController~ipad.xib b/Classes/DialerViewController~ipad.xib new file mode 100644 index 000000000..09692def9 --- /dev/null +++ b/Classes/DialerViewController~ipad.xib @@ -0,0 +1,1515 @@ + + + + 1296 + 11E53 + 2549 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1498 + + + IBProxyObject + IBUIButton + IBUIImageView + IBUITextField + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + + 292 + + + + 290 + + + + 290 + {768, 80} + + + + _NS:9 + NO + IBIPadFramework + + NSImage + dialer_address_background.png + + + + + 290 + {700, 60} + + + + + 3 + MSAwAA + + NO + NO + IBIPadFramework + 0 + + sip: + + 3 + MQA + + YES + 15 + + 1 + 3 + IBCocoaTouchFramework + + + Helvetica + Helvetica + 0 + 36 + + + Helvetica + 36 + 16 + + + + + 289 + {{698, 4}, {70, 51}} + + + + _NS:9 + NO + IBIPadFramework + NO + 0 + 0 + NO + NO + 15 + 15 + 15 + 15 + + 3 + MC41AA + + + NSImage + backspace_over~ipad.png + + + NSImage + backspace_disabled~ipad.png + + + NSImage + backspace_default~ipad.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + {768, 80} + + + + _NS:9 + + 3 + MSAwAA + + 2 + + + YES + IBIPadFramework + + + + 268 + + + + 292 + {{0, 11}, {107, 54}} + + + + + 1 + MC40MDAwMDAwMSAxIDEgMAA + + NO + NO + IBIPadFramework + 0 + 0 + + + NSImage + numpad_one_over.png + + + NSImage + numpad_one_default.png + + + Helvetica-Bold + Helvetica + 2 + 15 + + + + + + 292 + {{107, 11}, {106, 54}} + + + + NO + NO + IBIPadFramework + 0 + 0 + + + NSImage + numpad_two_over.png + + + NSImage + numpad_two_default.png + + + + + + + 292 + {{213, 11}, {107, 54}} + + + + NO + NO + IBIPadFramework + 0 + 0 + + + NSImage + numpad_three_over.png + + + NSImage + numpad_three_default.png + + + + + + + 292 + {{0, 73}, {107, 54}} + + + + NO + NO + IBIPadFramework + 0 + 0 + + + NSImage + numpad_four_over.png + + + NSImage + numpad_four_default.png + + + + + + + 292 + {{107, 73}, {106, 54}} + + + + NO + NO + IBIPadFramework + 0 + 0 + + + NSImage + numpad_five_over.png + + + NSImage + numpad_five_default.png + + + + + + + 292 + {{213, 73}, {107, 54}} + + + + NO + NO + IBIPadFramework + 0 + 0 + + + NSImage + numpad_six_over.png + + + NSImage + numpad_six_default.png + + + + + + + 292 + {{0, 135}, {107, 54}} + + + + NO + NO + IBIPadFramework + 0 + 0 + + + NSImage + numpad_seven_over.png + + + NSImage + numpad_seven_default.png + + + + + + + 292 + {{107, 135}, {106, 54}} + + + + NO + NO + IBIPadFramework + 0 + 0 + + + NSImage + numpad_eight_over.png + + + NSImage + numpad_eight_default.png + + + + + + + 292 + {{213, 135}, {107, 54}} + + + + NO + NO + IBIPadFramework + 0 + 0 + + + NSImage + numpad_nine_over.png + + + NSImage + numpad_nine_default.png + + + + + + + 292 + {{0, 197}, {107, 54}} + + + + NO + NO + IBIPadFramework + 0 + 0 + + + NSImage + numpad_star_over.png + + + NSImage + numpad_star_default.png + + + + + + + 292 + {{107, 197}, {106, 54}} + + + + NO + NO + IBIPadFramework + 0 + 0 + + + NSImage + numpad_zero_over.png + + + NSImage + numpad_zero_default.png + + + + + + + 292 + {{213, 197}, {107, 54}} + + + + NO + NO + IBIPadFramework + 0 + 0 + + + NSImage + numpad_sharp_over.png + + + NSImage + numpad_sharp_default.png + + + + + + {{0, 640}, {320, 260}} + + + + _NS:9 + + 3 + MCAwAA + + IBIPadFramework + + + + 265 + + + + 292 + {126, 85} + + + + _NS:9 + NO + IBIPadFramework + NO + 0 + 0 + NO + NO + + + NSImage + add_contact_over~ipad.png + + + NSImage + add_contact_disabled~ipad.png + + + NSImage + add_contact_default~ipad.png + + + + + + + -2147483356 + {126, 85} + + + + _NS:9 + NO + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + back_over~ipad.png + + + NSImage + back_disabled~ipad.png + + + NSImage + back_default~ipad.png + + + + + + + 292 + {{126, 0}, {186, 85}} + + + + _NS:9 + NO + IBIPadFramework + NO + 0 + 0 + NO + NO + + + NSImage + call_over~ipad.png + + + NSImage + call_disabled~ipad.png + + + NSImage + call_default~ipad.png + + + + + + + -2147483356 + {{126, 0}, {186, 85}} + + + + _NS:9 + NO + IBIPadFramework + NO + 0 + 0 + NO + NO + + + NSImage + add_call_over~ipad.png + + + NSImage + add_call_disabled~ipad.png + + + NSImage + add_call_default~ipad.png + + + + + + + -2147483356 + {{126, 0}, {186, 85}} + + + _NS:9 + NO + IBIPadFramework + NO + 0 + 0 + NO + NO + + + NSImage + transfer_call_over~ipad.png + + + NSImage + transfer_call_disabled~ipad.png + + + NSImage + transfer_call_default~ipad.png + + + + + + {{456, 815}, {312, 85}} + + + + _NS:9 + + 3 + MSAwAA + + + IBIPadFramework + + + {768, 900} + + + + _NS:9 + + IBIPadFramework + + + + + + + addCallButton + + + + 42 + + + + addContactButton + + + + 43 + + + + addressField + + + + 44 + + + + callButton + + + + 45 + + + + eightButton + + + + 47 + + + + eraseButton + + + + 48 + + + + fiveButton + + + + 49 + + + + fourButton + + + + 50 + + + + nineButton + + + + 51 + + + + oneButton + + + + 52 + + + + sevenButton + + + + 53 + + + + sharpButton + + + + 54 + + + + sixButton + + + + 55 + + + + starButton + + + + 56 + + + + threeButton + + + + 57 + + + + transferButton + + + + 58 + + + + twoButton + + + + 59 + + + + view + + + + 60 + + + + zeroButton + + + + 61 + + + + backButton + + + + 69 + + + + onAddressChange: + + + 18 + + 65 + + + + addressField + + + + 35 + + + + addressField + + + + 29 + + + + addressField + + + + 36 + + + + addressField + + + + 37 + + + + addressField + + + + 32 + + + + addressField + + + + 31 + + + + addressField + + + + 30 + + + + addressField + + + + 27 + + + + addressField + + + + 28 + + + + addressField + + + + 26 + + + + addressField + + + + 33 + + + + addressField + + + + 34 + + + + addressField + + + + 41 + + + + addressField + + + + 40 + + + + onBackClick: + + + 7 + + 68 + + + + addressField + + + + 38 + + + + onAddContactClick: + + + 7 + + 63 + + + + addressField + + + + 39 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + + + + + + + + 3 + + + + + + + + + + toolBar + + + 4 + + + + + + + + + + + + + + + + + pad + + + 5 + + + + + + + + dialer + + + 6 + + + addressField + + + 7 + + + background + + + 8 + + + * + + + 9 + + + 6 + + + 10 + + + 0 + + + 11 + + + # + + + 12 + + + 9 + + + 13 + + + 8 + + + 14 + + + 7 + + + 15 + + + 4 + + + 16 + + + 5 + + + 17 + + + 3 + + + 18 + + + 2 + + + 19 + + + 1 + + + 20 + + + transferButton + + + 21 + + + callButton + + + 22 + + + backButton + + + 23 + + + addCallButton + + + 24 + + + addContactButton + + + 25 + + + backspaceButton + + + + + DialerViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UITransferButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UICallButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UICallButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIEraseButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIAddressTextField + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + + 69 + + + + + DialerViewController + UIViewController + + id + id + id + + + + onAddContactClick: + id + + + onAddressChange: + id + + + onBackClick: + id + + + + UICallButton + UIButton + UITextField + UIButton + UICallButton + UIButton + UIEraseButton + UIButton + UIButton + UIButton + UIButton + UIButton + UIButton + UIButton + UIButton + UIButton + UITransferButton + UIButton + UIButton + + + + addCallButton + UICallButton + + + addContactButton + UIButton + + + addressField + UITextField + + + backButton + UIButton + + + callButton + UICallButton + + + eightButton + UIButton + + + eraseButton + UIEraseButton + + + fiveButton + UIButton + + + fourButton + UIButton + + + nineButton + UIButton + + + oneButton + UIButton + + + sevenButton + UIButton + + + sharpButton + UIButton + + + sixButton + UIButton + + + starButton + UIButton + + + threeButton + UIButton + + + transferButton + UITransferButton + + + twoButton + UIButton + + + zeroButton + UIButton + + + + IBProjectSource + ./Classes/DialerViewController.h + + + + UIAddressTextField + UITextField + + IBProjectSource + ./Classes/UIAddressTextField.h + + + + UICallButton + UIButton + + addressField + UITextField + + + addressField + + addressField + UITextField + + + + IBProjectSource + ./Classes/UICallButton.h + + + + UIDigitButton + UILongTouchButton + + addressField + UITextField + + + addressField + + addressField + UITextField + + + + IBProjectSource + ./Classes/UIDigitButton.h + + + + UIEraseButton + UILongTouchButton + + addressField + UITextField + + + addressField + + addressField + UITextField + + + + IBProjectSource + ./Classes/UIEraseButton.h + + + + UILongTouchButton + UIButton + + IBProjectSource + ./Classes/UILongTouchButton.h + + + + UITransferButton + UIButton + + addressField + UITextField + + + addressField + + addressField + UITextField + + + + IBProjectSource + ./Classes/UITransferButton.h + + + + + 0 + IBIPadFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + + {371, 170} + {371, 170} + {371, 170} + {251, 170} + {251, 170} + {251, 170} + {251, 170} + {251, 170} + {251, 170} + {81, 43} + {81, 43} + {81, 43} + {371, 170} + {371, 170} + {371, 170} + {640, 135} + {220, 113} + {220, 113} + {220, 113} + {220, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {220, 113} + {220, 113} + {220, 113} + {220, 113} + {371, 170} + {371, 170} + {371, 170} + + 1498 + + diff --git a/Classes/FirstLoginViewController.m b/Classes/FirstLoginViewController.m index 47a4c9ebe..c5c02ef0f 100644 --- a/Classes/FirstLoginViewController.m +++ b/Classes/FirstLoginViewController.m @@ -122,22 +122,19 @@ static UICompositeViewDescription *compositeDescription = nil; - (void)registrationUpdate:(LinphoneRegistrationState)state { switch (state) { - case LinphoneRegistrationOk: - { + case LinphoneRegistrationOk: { [[LinphoneManager instance].settingsStore setBool:false forKey:@"enable_first_login_view_preference"]; - [self.waitView setHidden:true]; + [waitView setHidden:true]; [[PhoneMainView instance] changeCurrentView:[DialerViewController compositeViewDescription]]; break; } case LinphoneRegistrationNone: - case LinphoneRegistrationCleared: - { - [self.waitView setHidden:true]; + case LinphoneRegistrationCleared: { + [waitView setHidden:true]; break; } - case LinphoneRegistrationFailed: - { - [self.waitView setHidden:true]; + case LinphoneRegistrationFailed: { + [waitView setHidden:true]; //default behavior if no registration delegates /*UIAlertView* error = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"Registration failure for user %@", usernameField.text] @@ -153,7 +150,7 @@ static UICompositeViewDescription *compositeDescription = nil; break; } case LinphoneRegistrationProgress: { - [self.waitView setHidden:false]; + [waitView setHidden:false]; break; } default: break; diff --git a/Classes/FirstLoginViewController.xib b/Classes/FirstLoginViewController.xib index ac29c839c..73b5dab9f 100644 --- a/Classes/FirstLoginViewController.xib +++ b/Classes/FirstLoginViewController.xib @@ -3,20 +3,20 @@ 784 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 YES - IBUIButton - IBUIActivityIndicatorView - IBUIView - IBUITextField IBProxyObject + IBUIActivityIndicatorView + IBUIButton + IBUITextField + IBUIView YES @@ -87,6 +87,7 @@ {{60, 420}, {200, 37}} + NO NO IBCocoaTouchFramework @@ -139,9 +140,9 @@ 1 IBCocoaTouchFramework - + NSImage - setup_label.png + field_background.png 1 @@ -180,7 +181,7 @@ YES IBCocoaTouchFramework - + @@ -195,6 +196,7 @@ {{142, 211}, {37, 37}} + NO NO NO @@ -220,7 +222,7 @@ {320, 460} - + _NS:9 3 @@ -559,7 +561,7 @@ YES button_background_default.png button_background_over.png - setup_label.png + field_background.png YES @@ -568,6 +570,6 @@ {542, 88} - 1181 + 1498 diff --git a/Classes/HistoryDetailsViewController.m b/Classes/HistoryDetailsViewController.m index 8dc60041e..bc171e708 100644 --- a/Classes/HistoryDetailsViewController.m +++ b/Classes/HistoryDetailsViewController.m @@ -69,7 +69,7 @@ static UICompositeViewDescription *compositeDescription = nil; tabBar:@"UIMainBar" tabBarEnabled:true fullscreen:false - landscapeMode:false + landscapeMode:[LinphoneManager runningOnIpad] portraitMode:true]; } return compositeDescription; diff --git a/Classes/HistoryDetailsViewController.xib b/Classes/HistoryDetailsViewController.xib index 43e580e0e..64ceefebd 100644 --- a/Classes/HistoryDetailsViewController.xib +++ b/Classes/HistoryDetailsViewController.xib @@ -43,7 +43,7 @@ - 292 + 290 {320, 58} @@ -53,7 +53,7 @@ IBCocoaTouchFramework NSImage - history_details_bar_background.png + toolsbar_background.png @@ -96,7 +96,7 @@ - 292 + 289 {{160, 0}, {160, 58}} @@ -139,7 +139,7 @@ - 292 + 295 @@ -197,7 +197,7 @@ - 292 + 290 {{101, 37}, {199, 43}} @@ -240,7 +240,7 @@ - 292 + 295 @@ -271,7 +271,7 @@ - 292 + 290 {{57, 0}, {223, 21}} @@ -307,7 +307,7 @@ - 292 + 295 @@ -331,7 +331,7 @@ - 292 + 290 {{88, 0}, {192, 21}} @@ -360,7 +360,7 @@ - 292 + 295 @@ -384,7 +384,7 @@ - 292 + 290 {{65, 0}, {215, 21}} @@ -413,11 +413,10 @@ - 292 - {{33, 273}, {255, 50}} + 293 + {{33, 323}, {255, 50}} - _NS:9 NO IBCocoaTouchFramework @@ -451,12 +450,11 @@ - {{0, 20}, {320, 460}} + {320, 460} - IBCocoaTouchFramework @@ -612,10 +610,10 @@ - + @@ -900,7 +898,7 @@ {320, 117} {320, 117} {320, 117} - {5, 117} + {5, 117} 1498 diff --git a/Classes/HistoryViewController.m b/Classes/HistoryViewController.m index 6db361946..30ec0ffc6 100644 --- a/Classes/HistoryViewController.m +++ b/Classes/HistoryViewController.m @@ -65,7 +65,7 @@ static UICompositeViewDescription *compositeDescription = nil; tabBar:@"UIMainBar" tabBarEnabled:true fullscreen:false - landscapeMode:false + landscapeMode:[LinphoneManager runningOnIpad] portraitMode:true]; } return compositeDescription; @@ -81,6 +81,11 @@ static UICompositeViewDescription *compositeDescription = nil; [editButton setOff]; [self changeView: History_All]; [self.tableView reloadData]; + + // Reset missed call + linphone_core_reset_missed_calls_count([LinphoneManager getLc]); + // Fake event + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneCallUpdate" object:self]; } - (void)viewDidLoad { diff --git a/Classes/HistoryViewController.xib b/Classes/HistoryViewController.xib index 76bab3437..832f4cb67 100644 --- a/Classes/HistoryViewController.xib +++ b/Classes/HistoryViewController.xib @@ -3,19 +3,20 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 - IBUIButton - IBUITableView - IBUIView - IBUITableViewController IBProxyObject + IBUIButton + IBUIImageView + IBUITableView + IBUITableViewController + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -39,8 +40,22 @@ - 288 + 290 + + + 290 + {320, 58} + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + toolsbar_background.png + + 292 @@ -111,7 +126,7 @@ - 292 + 289 {{212, 0}, {108, 58}} @@ -162,7 +177,6 @@ {{0, 58}, {320, 402}} - _NS:9 1 @@ -343,9 +357,10 @@ + - header + toolsBar 4 @@ -378,6 +393,12 @@ tableController + + 34 + + + background + @@ -390,6 +411,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -402,7 +424,7 @@ - 33 + 34 @@ -496,7 +518,8 @@ {213, 117} {213, 117} {214, 117} + {5, 117} - 1181 + 1498 diff --git a/Classes/InCallTableViewController.m b/Classes/InCallTableViewController.m index 9b0e9f7d2..66956f91a 100644 --- a/Classes/InCallTableViewController.m +++ b/Classes/InCallTableViewController.m @@ -273,11 +273,11 @@ enum TableSection { return [[UIView alloc] initWithFrame:CGRectZero]; } } - return [[UIView alloc] initWithFrame:CGRectZero]; + return [[[UIView alloc] initWithFrame:CGRectZero] autorelease]; } - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { - return [[UIView alloc] initWithFrame:CGRectZero]; + return [[[UIView alloc] initWithFrame:CGRectZero] autorelease]; } - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { diff --git a/Classes/InCallViewController-ipad.xib b/Classes/InCallViewController-ipad.xib deleted file mode 100644 index 51b1dfa66..000000000 --- a/Classes/InCallViewController-ipad.xib +++ /dev/null @@ -1,1953 +0,0 @@ - - - - 1280 - 11C74 - 1938 - 1138.23 - 567.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 933 - - - IBUIButton - IBUIImageView - IBUIViewController - IBProxyObject - IBUIActivityIndicatorView - IBUITableView - IBUIView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - - - 274 - - - - 274 - - - - 292 - {768, 1024} - - - - _NS:569 - NO - IBIPadFramework - - - - 292 - {{20, 956}, {28, 28}} - - - - _NS:567 - NO - IBIPadFramework - - - - 292 - {{366, 493}, {37, 37}} - - - - _NS:1062 - NO - IBIPadFramework - NO - 0 - - - - 292 - {{598, 799}, {170, 225}} - - - - - 3 - MQA - - 2 - - - IBIPadFramework - - - {768, 1024} - - - - _NS:212 - - 3 - MC42NjY2NjY2NjY3AA - - IBIPadFramework - - - - 292 - {{224, 740}, {320, 66}} - - - - NO - IBIPadFramework - 0 - 0 - 1 - Change camera - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - NSImage - clavier-01-108px.png - - - Helvetica-Bold - Helvetica - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 274 - {768, 805} - - - - _NS:408 - - 3 - MSAwAA - - - YES - IBIPadFramework - YES - 0 - YES - 80 - 22 - 22 - - - - 292 - - - - 292 - {{0, 1}, {320, 66}} - - - - - 1 - MSAwIDAuMDgyMzIwMjU5MDQgMC4xOAA - - NO - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - NSImage - stopcall-red.png - - - NSImage - clavier-01-106px.png - - - - - - {{224, 937}, {320, 77}} - - - - _NS:196 - - 3 - MCAwAA - - IBIPadFramework - - - - 292 - - - - 292 - {{80, 70}, {80, 66}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - grouper.png - - - 2 - 17 - - - Helvetica-Bold - 17 - 16 - - - - - 292 - {{0, 4}, {107, 66}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - mic_active.png - - - NSImage - micro_inverse.png - - - NSImage - micro.png - - - 2 - 2 - - - Helvetica-Bold - 18 - 16 - - - - - 292 - {{0, 70}, {80, 66}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - ajouter.png - - - - - - - 292 - {{240, 70}, {80, 66}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - 1 - MCAwIDAAA - - - NSImage - contact.png - - - - - - - -2147483356 - {{240, 70}, {80, 66}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - 1 - video - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - clavier-01-160px.png - - - - - - - 292 - {{160, 70}, {80, 66}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - transfer - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - - - - - - 292 - {{262, 84}, {37, 37}} - - - - _NS:1062 - NO - IBIPadFramework - NO - 0 - - - - 292 - {{107, 4}, {106, 66}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - clavier.png - - - - - - - 292 - {{213, 4}, {107, 66}} - - - - - NO - NO - IBIPadFramework - NO - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - HP_inverse.png - - - NSImage - HP.png - - - - - - - 292 - {{80, 70}, {80, 66}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - - NSImage - pause_inactif.png - - - NSImage - pause.png - - - - - - {{224, 801.5}, {320, 135}} - - - - - NO - NO - IBIPadFramework - - - - -2147483356 - - - - 292 - {{119, 251}, {82, 52}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - close - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{119, 193}, {82, 52}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{31, 19}, {82, 52}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - 1 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{119, 19}, {82, 52}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - 2 - - - - - - - - - 292 - {{207, 19}, {82, 52}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - 3 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{31, 77}, {82, 52}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - 4 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{119, 77}, {82, 52}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - 5 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{207, 77}, {82, 52}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - 6 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{31, 135}, {82, 52}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - 7 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{119, 135}, {82, 52}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - 8 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{207, 135}, {82, 52}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - 9 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{31, 193}, {82, 52}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - * - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{207, 193}, {82, 52}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - # - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - {{178, 146}, {320, 310}} - - - - - 3 - MC4yNAA - - NO - NO - IBIPadFramework - - - {{0, 20}, {768, 1004}} - - - - _NS:212 - - IBIPadFramework - - - 2 - - - 1 - 1 - - IBIPadFramework - NO - - - - - - - callTableView - - - - 114 - - - - endCtrl - - - - 119 - - - - hangUpView - - - - 122 - - - - speaker - - - - 132 - - - - mute - - - - 125 - - - - addVideo - - - - 113 - - - - mergeCalls - - - - 124 - - - - addCall - - - - 112 - - - - contacts - - - - 116 - - - - dialer - - - - 141 - - - - pause - - - - 129 - - - - controlSubView - - - - 117 - - - - five - - - - 120 - - - - nine - - - - 126 - - - - seven - - - - 130 - - - - six - - - - 131 - - - - four - - - - 121 - - - - three - - - - 134 - - - - zero - - - - 137 - - - - two - - - - 135 - - - - close - - - - 115 - - - - hash - - - - 123 - - - - eight - - - - 118 - - - - one - - - - 127 - - - - star - - - - 133 - - - - padSubView - - - - 128 - - - - view - - - - 136 - - - - videoGroup - - - - 159 - - - - videoView - - - - 161 - - - - videoPreview - - - - 162 - - - - videoCallQuality - - - - 163 - - - - videoCameraSwitch - - - - 164 - - - - videoUpdateIndicator - - - - 167 - - - - videoWaitingForFirstImage - - - - 168 - - - - transfer - - - - 170 - - - - dataSource - - - - 139 - - - - delegate - - - - 140 - - - - doAction: - - - 7 - - 144 - - - - doAction: - - - 7 - - 142 - - - - doAction: - - - 7 - - 143 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 59 - - - - - - - - 60 - - - - - - - - - - - - - 61 - - - - - 88 - - - - - - - - 98 - - - end - - - 89 - - - - - - - - - - - - - - - controls - - - 96 - - - speaker - - - 92 - - - mute - - - 90 - - - video - - - 91 - - - merge - - - 93 - - - addcall - - - 94 - - - contacts - - - 95 - - - dialer - - - 97 - - - pauseresume - - - 87 - - - - - - - - - - - - - - - - - - pad - - - 99 - - - 5 - - - 100 - - - 9 - - - 101 - - - 7 - - - 102 - - - 6 - - - 103 - - - 4 - - - 104 - - - 3 - - - 105 - - - 0 - - - 106 - - - 2 - - - 107 - - - close - - - 108 - - - hash - - - 109 - - - 8 - - - 110 - - - 1 - - - 111 - - - star - - - 152 - - - - - - - - - video - - - 158 - - - - video_preview - - - 157 - - - video_view - - - 153 - - - call_quality_video - - - 154 - - - - - 165 - - - toggleVideoIndicator - - - 166 - - - - - 169 - - - transfer - - - - - IncallViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UICamSwitch - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIToggleVideoButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIMuteButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UISpeakerButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIHangUpButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 170 - - - - - IncallViewController - UIViewController - - doAction: - id - - - doAction: - - doAction: - id - - - - UIButton - UIToggleVideoButton - UITableView - UIButton - UIViewController - UIButton - UIView - UIButton - UIButton - UIButton - UIButton - UIButton - UIView - UIButton - UIButton - UIButton - UIButton - UIButton - UIView - UIButton - UIButton - UIButton - UIButton - UIButton - UIButton - UIButton - UIButton - UIImageView - UICamSwitch - UIView - UIView - UIActivityIndicatorView - UIView - VideoViewController - UIActivityIndicatorView - UIButton - - - - addCall - UIButton - - - addVideo - UIToggleVideoButton - - - callTableView - UITableView - - - close - UIButton - - - conferenceDetail - UIViewController - - - contacts - UIButton - - - controlSubView - UIView - - - dialer - UIButton - - - eight - UIButton - - - endCtrl - UIButton - - - five - UIButton - - - four - UIButton - - - hangUpView - UIView - - - hash - UIButton - - - mergeCalls - UIButton - - - mute - UIButton - - - nine - UIButton - - - one - UIButton - - - padSubView - UIView - - - pause - UIButton - - - seven - UIButton - - - six - UIButton - - - speaker - UIButton - - - star - UIButton - - - three - UIButton - - - transfer - UIButton - - - two - UIButton - - - videoCallQuality - UIImageView - - - videoCameraSwitch - UICamSwitch - - - videoGroup - UIView - - - videoPreview - UIView - - - videoUpdateIndicator - UIActivityIndicatorView - - - videoView - UIView - - - videoViewController - VideoViewController - - - videoWaitingForFirstImage - UIActivityIndicatorView - - - zero - UIButton - - - - IBProjectSource - ./Classes/IncallViewController.h - - - - UICamSwitch - UIButton - - preview - UIView - - - preview - - preview - UIView - - - - IBProjectSource - ./Classes/UICamSwitch.h - - - - UIDigitButton - UIButton - - IBProjectSource - ./Classes/UIDigitButton.h - - - - UIHangUpButton - UIButton - - IBProjectSource - ./Classes/UIHangUpButton.h - - - - UIMuteButton - UIToggleButton - - IBProjectSource - ./Classes/UIMuteButton.h - - - - UISpeakerButton - UIToggleButton - - IBProjectSource - ./Classes/UISpeakerButton.h - - - - UIToggleButton - UIButton - - IBProjectSource - ./Classes/UIToggleButton.h - - - - UIToggleVideoButton - UIButton - - videoUpdateIndicator - UIActivityIndicatorView - - - videoUpdateIndicator - - videoUpdateIndicator - UIActivityIndicatorView - - - - IBProjectSource - ./Classes/UIToggleVideoButton.h - - - - VideoViewController - UIViewController - - UIImageView - UIImageView - UIImageView - UICamSwitch - UICamSwitch - UICamSwitch - UIView - UIView - UIView - UIHangUpButton - UIHangUpButton - UIHangUpButton - UIView - UIView - UIMuteButton - UIMuteButton - UIMuteButton - UIView - UIView - UIView - UIView - - - - mCallQuality - UIImageView - - - mCallQualityLandLeft - UIImageView - - - mCallQualityLandRight - UIImageView - - - mCamSwitch - UICamSwitch - - - mCamSwitchLandLeft - UICamSwitch - - - mCamSwitchLandRight - UICamSwitch - - - mDisplay - UIView - - - mDisplayLandLeft - UIView - - - mDisplayLandRight - UIView - - - mHangUp - UIHangUpButton - - - mHangUpLandLeft - UIHangUpButton - - - mHangUpLandRight - UIHangUpButton - - - mLandscapeLeft - UIView - - - mLandscapeRight - UIView - - - mMute - UIMuteButton - - - mMuteLandLeft - UIMuteButton - - - mMuteLandRight - UIMuteButton - - - mPortrait - UIView - - - mPreview - UIView - - - mPreviewLandLeft - UIView - - - mPreviewLandRight - UIView - - - - IBProjectSource - ./Classes/VideoViewController.h - - - - - 0 - IBIPadFramework - YES - 3 - - {107, 67} - {107, 67} - {107, 67} - {106, 60} - {108, 60} - {160, 60} - {106, 67} - {107, 67} - {106, 67} - {20, 20} - {107, 67} - {107, 67} - {106, 67} - {106, 67} - {62, 54} - - 933 - - diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index 6fb175e2d..92db0a82e 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -28,6 +28,7 @@ #import "UICallCell.h" #import "LinphoneManager.h" #import "PhoneMainView.h" +#import "UILinphone.h" #include "linphonecore.h" #include "private.h" @@ -191,24 +192,53 @@ static UICompositeViewDescription *compositeDescription = nil; videoGroup.alpha = 0; [videoCameraSwitch setPreview:videoPreview]; + + removeTableBackground([callTableController view]); } -#pragma mark - +- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { + CGRect frame = [videoPreview frame]; + switch (toInterfaceOrientation) { + case UIInterfaceOrientationPortrait: + [videoPreview setTransform: CGAffineTransformMakeRotation(0)]; + break; + case UIInterfaceOrientationPortraitUpsideDown: + [videoPreview setTransform: CGAffineTransformMakeRotation(M_PI)]; + break; + case UIInterfaceOrientationLandscapeLeft: + [videoPreview setTransform: CGAffineTransformMakeRotation(M_PI / 2)]; + break; + case UIInterfaceOrientationLandscapeRight: + [videoPreview setTransform: CGAffineTransformMakeRotation(-M_PI / 2)]; + break; + default: + break; + } + [videoPreview setFrame:frame]; +} + +#pragma mark - - (void)orientationUpdate { int oldLinphoneOrientation = linphone_core_get_device_rotation([LinphoneManager getLc]); UIDeviceOrientation orientation = [UIDevice currentDevice].orientation; int newRotation = 0; switch (orientation) { - case UIInterfaceOrientationLandscapeRight: - newRotation = 270; + case UIDeviceOrientationPortrait: + newRotation = 0; break; - case UIInterfaceOrientationLandscapeLeft: + case UIDeviceOrientationPortraitUpsideDown: + newRotation = 180; + break; + case UIDeviceOrientationLandscapeRight: newRotation = 90; break; + case UIDeviceOrientationLandscapeLeft: + newRotation = 270; + break; default: - newRotation = 0; + newRotation = oldLinphoneOrientation; } if (oldLinphoneOrientation != newRotation) { linphone_core_set_device_rotation([LinphoneManager getLc], newRotation); @@ -299,40 +329,46 @@ static UICompositeViewDescription *compositeDescription = nil; hideControlsTimer = nil; } - // show controls - [UIView beginAnimations:nil context:nil]; - [UIView setAnimationDuration:0.3]; - [[PhoneMainView instance] showTabBar: true]; - /* MODIFICATION show video in background */ - [callTableView setAlpha:1.0]; - /* */ - [videoCameraSwitch setAlpha:1.0]; - [UIView commitAnimations]; - - // hide controls in 5 sec - hideControlsTimer = [NSTimer scheduledTimerWithTimeInterval:5.0 - target:self - selector:@selector(hideControls:) - userInfo:nil - repeats:NO]; + if([[[PhoneMainView instance] currentView] equal:[InCallViewController compositeViewDescription]] && videoShown) { + // show controls + [UIView beginAnimations:nil context:nil]; + [UIView setAnimationDuration:0.3]; + [[PhoneMainView instance] showTabBar: true]; + [[PhoneMainView instance] showStateBar: true]; + /* MODIFICATION show video in background */ + [callTableView setAlpha:1.0]; + /* */ + [videoCameraSwitch setAlpha:1.0]; + [UIView commitAnimations]; + + // hide controls in 5 sec + hideControlsTimer = [NSTimer scheduledTimerWithTimeInterval:5.0 + target:self + selector:@selector(hideControls:) + userInfo:nil + repeats:NO]; + } } - (void)hideControls:(id)sender { - [UIView beginAnimations:nil context:nil]; - [UIView setAnimationDuration:0.3]; - [videoCameraSwitch setAlpha:0.0]; - [UIView commitAnimations]; - - if([[[PhoneMainView instance] currentView] equal:[InCallViewController compositeViewDescription]] && videoShown) { - [[PhoneMainView instance] showTabBar: false]; - /* MODIFICATION show video in background */ - [callTableView setAlpha:0.0]; - /* */ - } if (hideControlsTimer) { [hideControlsTimer invalidate]; hideControlsTimer = nil; } + + if([[[PhoneMainView instance] currentView] equal:[InCallViewController compositeViewDescription]] && videoShown) { + [UIView beginAnimations:nil context:nil]; + [UIView setAnimationDuration:0.3]; + [videoCameraSwitch setAlpha:0.0]; + /* MODIFICATION show video in background */ + [callTableView setAlpha:0.0]; + /* */ + [UIView commitAnimations]; + + + [[PhoneMainView instance] showTabBar: false]; + [[PhoneMainView instance] showStateBar: false]; + } } #ifdef TEST_VIDEO_VIEW_CHANGE @@ -365,6 +401,8 @@ static UICompositeViewDescription *compositeDescription = nil; [callTableView setAlpha:0.0]; /* MODIFICATION show video in background */ + UIEdgeInsets insets = {23, 0, 0, 0}; + [callTableView setContentInset:insets]; [callTableController minimizeAll]; /* */ @@ -386,6 +424,7 @@ static UICompositeViewDescription *compositeDescription = nil; [[PhoneMainView instance] fullScreen: true]; [[PhoneMainView instance] showTabBar: false]; + [[PhoneMainView instance] showStateBar: false]; #ifdef TEST_VIDEO_VIEW_CHANGE [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(_debugChangeVideoView) userInfo:nil repeats:YES]; @@ -414,7 +453,10 @@ static UICompositeViewDescription *compositeDescription = nil; [videoGroup setAlpha:0.0]; [[PhoneMainView instance] showTabBar: true]; + UIEdgeInsets insets = {0, 0, 0, 0}; + [callTableView setContentInset:insets]; [callTableView setAlpha:1.0]; + [videoCameraSwitch setHidden:TRUE]; if(animation) { diff --git a/Classes/InCallViewController.xib b/Classes/InCallViewController.xib index cb842bcb8..a5299317d 100644 --- a/Classes/InCallViewController.xib +++ b/Classes/InCallViewController.xib @@ -3,21 +3,21 @@ 784 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 YES - IBUITableView - IBUIButton - IBUIActivityIndicatorView - IBUIView - IBUITableViewController IBProxyObject + IBUIActivityIndicatorView + IBUIButton + IBUITableView + IBUITableViewController + IBUIView YES @@ -67,7 +67,7 @@ {320, 460} - + _NS:196 3 @@ -77,12 +77,13 @@ - 265 - {{214, 354}, {106, 106}} + 283 + {{220, 360}, {100, 100}} - + + 1 IBCocoaTouchFramework @@ -91,7 +92,7 @@ {{141, 212}, {37, 37}} - + _NS:1030 NO IBCocoaTouchFramework @@ -142,9 +143,10 @@ -2147483356 - {85, 33} + {{0, 23}, {85, 33}} + _NS:9 NO IBCocoaTouchFramework @@ -587,6 +589,6 @@ {170, 65} - 1181 + 1498 diff --git a/Classes/IncomingCallViewController.h b/Classes/IncomingCallViewController.h index dbdbc41e0..cea938b97 100644 --- a/Classes/IncomingCallViewController.h +++ b/Classes/IncomingCallViewController.h @@ -19,26 +19,29 @@ #import -#import "UIModalViewController.h" - +#import "UICompositeViewController.h" #include "linphonecore.h" -typedef enum _IncomingCallStates { - IncomingCall_Accepted, - IncomingCall_Decline, - IncomingCall_Aborted -} IncomingCallStats; +@protocol IncomingCallViewDelegate -@interface IncomingCallViewController : UIModalViewController { +- (void)incomingCallAccepted:(LinphoneCall*)call; +- (void)incomingCallDeclined:(LinphoneCall*)call; +- (void)incomingCallAborted:(LinphoneCall*)call; + +@end + +@interface IncomingCallViewController : UIViewController { @private UILabel* addressLabel; UIImageView* avatarImage; LinphoneCall *call; + id delegate; } @property (nonatomic, retain) IBOutlet UILabel* addressLabel; @property (nonatomic, retain) IBOutlet UIImageView* avatarImage; @property (nonatomic, assign) LinphoneCall* call; +@property (nonatomic, retain) id delegate; - (IBAction)onAcceptClick:(id) event; - (IBAction)onDeclineClick:(id) event; diff --git a/Classes/IncomingCallViewController.m b/Classes/IncomingCallViewController.m index 7553a0fbe..7ec92fa6b 100644 --- a/Classes/IncomingCallViewController.m +++ b/Classes/IncomingCallViewController.m @@ -20,13 +20,14 @@ #import "IncomingCallViewController.h" #import "LinphoneManager.h" #import "FastAddressBook.h" +#import "PhoneMainView.h" @implementation IncomingCallViewController @synthesize addressLabel; @synthesize avatarImage; @synthesize call; - +@synthesize delegate; #pragma mark - Lifecycle Functions @@ -37,6 +38,9 @@ - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; + [avatarImage release]; + [addressLabel release]; + [delegate release]; [super dealloc]; } @@ -50,7 +54,6 @@ selector:@selector(callUpdateEvent:) name:@"LinphoneCallUpdate" object:nil]; - [self callUpdate:call state:linphone_call_get_state(call)]; } - (void)viewWillDisappear:(BOOL)animated { @@ -62,6 +65,25 @@ } +#pragma mark - UICompositeViewDelegate Functions + +static UICompositeViewDescription *compositeDescription = nil; + ++ (UICompositeViewDescription *)compositeViewDescription { + if(compositeDescription == nil) { + compositeDescription = [[UICompositeViewDescription alloc] init:@"IncomingCall" + content:@"IncomingCallViewController" + stateBar:nil + stateBarEnabled:false + tabBar:nil + tabBarEnabled:false + fullscreen:false + landscapeMode:true + portraitMode:true]; + } + return compositeDescription; +} + #pragma mark - Event Functions @@ -76,16 +98,16 @@ - (void)callUpdate:(LinphoneCall *)acall state:(LinphoneCallState)astate { if(call == acall && (astate == LinphoneCallEnd || astate == LinphoneCallError)) { - [self dismiss: [NSNumber numberWithInt: IncomingCall_Aborted]]; + [delegate incomingCallAborted:call]; + [self dismiss]; } } -#pragma mark - Property Functions - -- (void)setCall:(LinphoneCall*)acall { - call = acall; - [self update]; +- (void)dismiss { + if([[[PhoneMainView instance] currentView] equal:[IncomingCallViewController compositeViewDescription]]) { + [[PhoneMainView instance] popCurrentView]; + } } - (void)update { @@ -131,21 +153,26 @@ [addressLabel setText:address]; } -- (LinphoneCall*) getCall { - return call; + +#pragma mark - Property Functions + +- (void)setCall:(LinphoneCall*)acall { + call = acall; + [self update]; + [self callUpdate:call state:linphone_call_get_state(call)]; } #pragma mark - Action Functions - (IBAction)onAcceptClick:(id)event { - linphone_core_accept_call([LinphoneManager getLc], call); - [self dismiss: [NSNumber numberWithInt:IncomingCall_Accepted]]; + [self dismiss]; + [delegate incomingCallAccepted:call]; } - (IBAction)onDeclineClick:(id)event { - linphone_core_terminate_call([LinphoneManager getLc], call); - [self dismiss: [NSNumber numberWithInt:IncomingCall_Decline]]; + [self dismiss]; + [delegate incomingCallDeclined:call]; } @end diff --git a/Classes/IncomingCallViewController.xib b/Classes/IncomingCallViewController.xib index e8d746ba6..435a55df5 100644 --- a/Classes/IncomingCallViewController.xib +++ b/Classes/IncomingCallViewController.xib @@ -3,19 +3,19 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 + IBProxyObject IBUIButton IBUIImageView - IBUIView IBUILabel - IBProxyObject + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -33,15 +33,15 @@ IBFirstResponder IBCocoaTouchFramework - + 274 - + 274 - {{0, 20}, {320, 460}} - + {320, 460} + _NS:9 @@ -56,12 +56,12 @@ - + 290 - 292 + 290 {{0, 49}, {320, 63}} @@ -76,7 +76,7 @@ - 292 + 290 {320, 68} @@ -4512,7 +4512,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 292 + 293 {{0, 96}, {320, 262}} @@ -4527,7 +4527,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 292 + 293 {{80, 113}, {160, 170}} @@ -4541,8 +4541,8 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - {{0, 20}, {320, 395}} - + {320, 395} + _NS:9 @@ -4550,7 +4550,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE IBCocoaTouchFramework - + 266 @@ -4587,21 +4587,15 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE IBCocoaTouchFramework 0 0 - NO - NO 3 MC41AA - + NSImage accept_over.png - - NSImage - accept_disabled.png - - + NSImage accept_default.png @@ -4630,14 +4624,12 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE IBCocoaTouchFramework 0 0 - NO - NO - + NSImage decline_over.png - + NSImage decline_default.png @@ -4645,41 +4637,26 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - {{0, 403}, {320, 77}} - + {{0, 383}, {320, 77}} + _NS:9 - - 1 - MCAxIDAuMTkxOTQ1NDc1NSAwAA - - NO + IBCocoaTouchFramework - {320, 480} + {320, 460} - - 3 - MAA - - NO + _NS:9 + IBCocoaTouchFramework - - - view - - - - 3 - avatarImage @@ -4696,6 +4673,14 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 14 + + + view + + + + 26 + onDeclineClick: @@ -4735,55 +4720,32 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 1 - + 25 + - - + + - 4 - - - - - - - - tabBar - - - 5 - - - mask - - - 6 - - - declineButton - - - 7 - - - acceptButton + 22 + + + background 8 - - - - + + + + - + 21 @@ -4816,10 +4778,33 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE headerBackground - 22 - - - background + 4 + + + + + + + + tabBar + + + 5 + + + mask + + + 6 + + + declineButton + + + 7 + + + acceptButton @@ -4828,18 +4813,18 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 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 com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -4847,13 +4832,13 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 24 + 30 IncomingCallViewController - UIModalViewController + UIViewController id id @@ -4887,14 +4872,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE ./Classes/IncomingCallViewController.h - - UIModalViewController - UIViewController - - IBProjectSource - ./Classes/UIModalViewController.h - - 0 @@ -4907,7 +4884,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 3 {320, 154} - {320, 154} {320, 154} {640, 523} {320, 339} @@ -4917,6 +4893,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE {320, 154} {640, 135} - 1181 + 1498 diff --git a/Classes/LinphoneApp.xib b/Classes/LinphoneApp.xib index cc511507a..d2f9903f2 100644 --- a/Classes/LinphoneApp.xib +++ b/Classes/LinphoneApp.xib @@ -2,19 +2,19 @@ 1296 - 11D50 - 2182 - 1138.32 - 568.00 + 11E53 + 2549 + 1138.47 + 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 - IBUIWindow + IBProxyObject IBUICustomObject IBUIViewController - IBProxyObject + IBUIWindow com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -42,20 +42,20 @@ {320, 480} + - 1 - MCAxIDAuMTkxOTQ1NDc1NQA + 3 + MAA NO NO - IBCocoaTouchFramework + YES YES NO PhoneMainView - 1 1 @@ -135,6 +135,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UILinphoneWindow com.apple.InterfaceBuilder.IBCocoaTouchPlugin LinphoneAppDelegate @@ -189,8 +190,30 @@ - UICompositeViewController + TPMultiLayoutViewController UIViewController + + UIView + UIView + + + + landscapeView + UIView + + + portraitView + UIView + + + + IBProjectSource + ./Classes/TPMultiLayoutViewController.h + + + + UICompositeViewController + TPMultiLayoutViewController UIView UIView @@ -215,6 +238,14 @@ ./Classes/UICompositeViewController.h + + UILinphoneWindow + UIWindow + + IBProjectSource + ./Classes/UILinphoneWindow.h + + 0 @@ -225,6 +256,6 @@ YES 3 - 1181 + 1498 diff --git a/Classes/LinphoneAppDelegate.h b/Classes/LinphoneAppDelegate.h index 767eb32ab..a17a464fd 100644 --- a/Classes/LinphoneAppDelegate.h +++ b/Classes/LinphoneAppDelegate.h @@ -23,6 +23,10 @@ #import "LinphoneCoreSettingsStore.h" +@interface UILinphoneWindow : UIWindow + +@end + @interface LinphoneAppDelegate : NSObject { UIWindow *window; CTCallCenter* callCenter; diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index fb6832fcb..ff6f76a1d 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -38,6 +38,10 @@ int __aeabi_idiv(int a, int b) { } #endif +@implementation UILinphoneWindow + +@end + @implementation LinphoneAppDelegate @synthesize window; @@ -161,6 +165,7 @@ int __aeabi_idiv(int a, int b) { } - (void)setupUI { + [[PhoneMainView instance] startUp]; if ([[LinphoneManager instance].settingsStore boolForKey:@"enable_first_login_view_preference"] == true) { // Change to fist login view [[PhoneMainView instance] changeCurrentView: [FirstLoginViewController compositeViewDescription]]; @@ -174,7 +179,6 @@ int __aeabi_idiv(int a, int b) { [[PhoneMainView instance] changeCurrentView: [WizardViewController compositeViewDescription]]; }*/ } - [UIDevice currentDevice].batteryMonitoringEnabled = YES; } diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index d75a6aefe..23e303f35 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -119,11 +119,12 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); } } { - LinphoneAddress *parsed=linphone_core_get_primary_contact_parsed(lc); + LinphoneAddress *parsed = linphone_core_get_primary_contact_parsed(lc); if(parsed != NULL) { [self setString: linphone_address_get_display_name(parsed) forKey:@"primary_displayname_preference"]; [self setString: linphone_address_get_username(parsed) forKey:@"primary_username_preference"]; } + linphone_address_destroy(parsed); } { LCSipTransports tp; @@ -176,7 +177,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); } [self setString:val forKey:@"media_encryption_preference"]; } - [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","landscape_preference", 1) forKey:@"landscape_preference"]; + [self setString: lp_config_get_string(linphone_core_get_config(lc),"app","rotation_preference", "auto") forKey:@"rotation_preference"]; [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","enable_first_login_view_preference", 0) forKey:@"enable_first_login_view_preference"]; [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","debugenable_preference", 0) forKey:@"debugenable_preference"]; [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","check_config_disable_preference", 0) forKey:@"check_config_disable_preference"]; @@ -320,11 +321,11 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); // add username password LinphoneAddress *from = linphone_address_new(identity); LinphoneAuthInfo *info; - if (from !=0){ + if (from != 0){ info=linphone_auth_info_new(linphone_address_get_username(from),NULL,password,NULL,NULL); linphone_core_add_auth_info(lc,info); + linphone_address_destroy(from); } - linphone_address_destroy(from); // configure proxy entries linphone_proxy_config_set_identity(proxyCfg,identity); @@ -425,12 +426,14 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); // Primary contact NSString* displayname = [self stringForKey:@"primary_displayname_preference"]; NSString* username = [self stringForKey:@"primary_username_preference"]; - LinphoneAddress *parsed=linphone_core_get_primary_contact_parsed(lc); + LinphoneAddress *parsed = linphone_core_get_primary_contact_parsed(lc); if(parsed != NULL) { linphone_address_set_display_name(parsed,[displayname cStringUsingEncoding:[NSString defaultCStringEncoding]]); linphone_address_set_username(parsed,[username cStringUsingEncoding:[NSString defaultCStringEncoding]]); char *contact = linphone_address_as_string(parsed); linphone_core_set_primary_contact(lc, contact); + ms_free(contact); + linphone_address_destroy(parsed); } @@ -449,8 +452,8 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); BOOL firstloginview = [self boolForKey:@"enable_first_login_view_preference"]; lp_config_set_int(linphone_core_get_config(lc),"app","enable_first_login_view_preference", firstloginview); - BOOL landscape = [self boolForKey:@"landscape_preference"]; - lp_config_set_int(linphone_core_get_config(lc),"app","landscape_preference", landscape); + NSString *landscape = [self stringForKey:@"rotation_preference"]; + lp_config_set_string(linphone_core_get_config(lc),"app","rotation_preference", [landscape UTF8String]); BOOL debugmode = [self boolForKey:@"debugenable_preference"]; lp_config_set_int(linphone_core_get_config(lc),"app","debugenable_preference", debugmode); diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index 9de0d3acd..199fb671d 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -83,6 +83,7 @@ typedef struct _LinphoneCallAppData { + (BOOL)isNotIphone3G; + (NSString *)getPreferenceForCodec: (const char*) name withRate: (int) rate; + (NSSet *)unsupportedCodecs; ++ (NSString *)getUserAgent; - (void)startLibLinphone; - (void)destroyLibLinphone; diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 642857618..097c5388e 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -50,8 +50,8 @@ extern void libmsamr_init(); #ifdef HAVE_X264 extern void libmsx264_init(); #endif -#define FRONT_CAM_NAME "AV Capture: Front Camera" -#define BACK_CAM_NAME "AV Capture: Back Camera" +#define FRONT_CAM_NAME "AV Capture: com.apple.avfoundation.avcapturedevice.built-in_video:1" /*"AV Capture: Front Camera"*/ +#define BACK_CAM_NAME "AV Capture: com.apple.avfoundation.avcapturedevice.built-in_video:0" /*"AV Capture: Back Camera"*/ #if defined (HAVE_SILK) extern void libmssilk_init(); @@ -142,6 +142,14 @@ struct codec_name_pref_table codec_pref_table[]={ return result; } ++ (NSString *)getUserAgent { + return [NSString stringWithFormat:@"LinphoneIphone/%@ (Linphone/%s; Apple %@/%@)", + [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString*)kCFBundleVersionKey], + linphone_core_get_version(), + [UIDevice currentDevice].systemName, + [UIDevice currentDevice].systemVersion]; +} + + (LinphoneManager*)instance { if(theLinphoneManager == nil) { theLinphoneManager = [LinphoneManager alloc]; @@ -874,8 +882,9 @@ static LinphoneCoreVTable linphonec_vtable = { if(transfer) { linphone_core_transfer_call([LinphoneManager getLc], linphone_core_get_current_call([LinphoneManager getLc]), normalizedUserName); } else { - linphone_core_invite_address_with_params([LinphoneManager getLc], linphoneAddress,lcallParams); + linphone_core_invite_address_with_params([LinphoneManager getLc], linphoneAddress, lcallParams); } + linphone_address_destroy(linphoneAddress); } linphone_call_params_destroy(lcallParams); } diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index f400ca853..36ebb610e 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -109,8 +109,6 @@ #pragma mark - ViewController Functions - (void)viewDidLoad { - [super viewDidLoad]; - [pauseButton setType:UIPauseButtonType_CurrentCall call:nil]; [zeroButton setDigit:'0']; @@ -118,7 +116,7 @@ [oneButton setDigit:'1']; [oneButton setDtmf:true]; [twoButton setDigit:'2']; - [twoButton setDtmf:true]; + [twoButton setDtmf:true]; [threeButton setDigit:'3']; [threeButton setDtmf:true]; [fourButton setDigit:'4']; @@ -192,11 +190,13 @@ // Set selected+over background: IB lack ! + /* MODIFICATION no options [optionsButton setImage:[UIImage imageNamed:@"options_over.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)]; [(UIButton*) [landscapeView viewWithTag:[optionsButton tag]] setImage:[UIImage imageNamed:@"options_over_landscape.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)]; + */ // Set selected+over background: IB lack ! @@ -206,17 +206,7 @@ setImage:[UIImage imageNamed:@"dialer_alt_back_over_landscape.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)]; - // Set label multilines: IB lack ! - [option1Button.titleLabel setLineBreakMode:UILineBreakModeWordWrap]; - [option1Button.titleLabel setTextAlignment:UITextAlignmentCenter]; - - // Set label multilines: IB lack ! - [option2Button.titleLabel setLineBreakMode:UILineBreakModeWordWrap]; - [option2Button.titleLabel setTextAlignment:UITextAlignmentCenter]; - - // Set label multilines: IB lack ! - [option3Button.titleLabel setLineBreakMode:UILineBreakModeWordWrap]; - [option3Button.titleLabel setTextAlignment:UITextAlignmentCenter]; + [super viewDidLoad]; } - (void)viewWillAppear:(BOOL)animated { @@ -317,18 +307,9 @@ [conferenceButton setHidden:true]; } } - - // Disable menu when no call & no conference - if(linphone_core_get_current_call(lc) == NULL && linphone_core_is_in_conference(lc) == FALSE) { - [self hidePad]; - [self hideOptions]; - [optionsButton setEnabled:FALSE]; - } else { - [optionsButton setEnabled:TRUE]; - } // Disable transfert in conference - if(linphone_core_is_in_conference(lc)) { + if(linphone_core_get_current_call(lc) == NULL) { [optionsTransferButton setEnabled:FALSE]; } else { [optionsTransferButton setEnabled:TRUE]; @@ -423,7 +404,7 @@ } } -- (void)hideOptions { +- (void)hideOptions{ [optionsButton setOff]; if(![optionsView isHidden]) { CGRect frame = [optionsView frame]; @@ -458,6 +439,7 @@ } } + #pragma mark - Action Functions - (IBAction)onPadClick:(id)sender { diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/UICallBar.xib index 2c70c84bb..48bcfec58 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -43,6 +43,7 @@ {{0, 335}, {320, 125}} + _NS:9 1 @@ -62,7 +63,7 @@ 274 - {320, 460} + {320, 473} @@ -70,7 +71,7 @@ 2 NO IBCocoaTouchFramework - + NSImage background.png @@ -372,7 +373,7 @@ {{213, 206}, {107, 54}} - + NO NO 14 @@ -391,13 +392,13 @@ - + 292 - {{19, 268}, {68, 48}} + {{39, 268}, {68, 48}} - + NO NO 100 @@ -405,29 +406,29 @@ 0 0 Option n°1 - + 3 MQA - + NSImage dialer_alt_button_options_over.png - + NSImage dialer_alt_button_options_default.png - + 292 {{126, 268}, {68, 48}} - + NO NO 101 @@ -435,17 +436,17 @@ 0 0 Option n°2 - + - - + + - + 292 - {{232, 268}, {68, 48}} + {{213, 268}, {68, 48}} @@ -456,15 +457,15 @@ 0 0 Option n°3 - + - - + + - {320, 340} + {321, 340} @@ -480,6 +481,21 @@ 292 + + + 290 + {{0, 135}, {320, 2000}} + + + + _NS:9 + + 1 + MC42OTQxMTc2NDcxIDAuNzg0MzEzNzI1NSAwAA + + 28 + IBCocoaTouchFramework + 292 @@ -610,40 +626,6 @@ - - - 292 - {{240, 0}, {80, 67}} - - - - _NS:9 - NO - 17 - - Add call - - IBCocoaTouchFramework - 0 - 0 - NO - NO - - - NSImage - options_add_over.png - - - NSImage - options_add_disabled.png - - - NSImage - options_add_default.png - - - - 264 @@ -678,6 +660,40 @@ + + + 292 + {{240, 0}, {80, 67}} + + + + _NS:9 + NO + 17 + + Add call + + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + NSImage + options_add_over.png + + + NSImage + options_add_disabled.png + + + NSImage + options_add_default.png + + + + -2147483384 @@ -744,7 +760,7 @@ {{215, 67}, {105, 68}} - + _NS:9 NO 27 @@ -802,6 +818,7 @@ {{0, 248}, {480, 72}} + _NS:9 1 @@ -821,15 +838,15 @@ 274 - {480, 320} + {{-5, 0}, {485, 320}} - + _NS:9 2 NO IBCocoaTouchFramework - + @@ -879,7 +896,7 @@ {{284, 10}, {107, 54}} - + NO NO 5 @@ -936,7 +953,7 @@ {{284, 72}, {107, 54}} - + NO NO 8 @@ -1050,7 +1067,7 @@ {{284, 196}, {107, 54}} - + NO NO 14 @@ -1063,13 +1080,13 @@ - + 292 - {{20, 44}, {68, 48}} + {{40, 50}, {68, 48}} - + NO NO 100 @@ -1077,20 +1094,20 @@ 0 0 Option n°1 - + - - + + - + 292 - {{20, 106}, {68, 48}} + {{40, 106}, {68, 48}} - + NO NO 101 @@ -1098,20 +1115,19 @@ 0 0 Option n°2 - + - - + + - + 292 - {{20, 168}, {68, 48}} + {{40, 162}, {68, 48}} - NO NO 102 @@ -1119,10 +1135,10 @@ 0 0 Option n°3 - + - - + + @@ -1140,6 +1156,21 @@ 292 + + + 290 + {{0, 82}, {480, 2000}} + + + + _NS:9 + + 1 + MC42OTQxMTc2NDcxIDAuNzg0MzEzNzI1NSAwAA + + 28 + IBCocoaTouchFramework + 292 @@ -1235,6 +1266,7 @@ {{285, 0}, {65, 82}} + _NS:9 NO 22 @@ -1400,6 +1432,7 @@ {{415, 0}, {65, 82}} + _NS:9 NO 27 @@ -1630,6 +1663,14 @@ 138 + + + dialerButton + + + + 140 + optionsAddButton @@ -1642,33 +1683,25 @@ option1Button - + - 149 - - - - option3Button - - - - 151 - - - - dialerButton - - - - 152 + 153 option2Button - + - 157 + 164 + + + + option3Button + + + + 165 @@ -1758,6 +1791,33 @@ 136 + + + onOption1Click: + + + 7 + + 169 + + + + onOption2Click: + + + 7 + + 170 + + + + onOption3Click: + + + 7 + + 171 + @@ -1808,6 +1868,7 @@ + @@ -1855,114 +1916,12 @@ videoButton - - 31 - - - - - - - - - - - - - - - - - - - - - pad - 59 videoWaitView - - 73 - - - 1 - - - 72 - - - 2 - - - 71 - - - 3 - - - 69 - - - 4 - - - 70 - - - 5 - - - 63 - - - 6 - - - 68 - - - 7 - - - 67 - - - 8 - - - 66 - - - 9 - - - 62 - - - * - - - 64 - - - 0 - - - 65 - - - # - - - 99 - - - background - 100 @@ -1991,12 +1950,12 @@ - - - + + + - pad + padView 114 @@ -2088,6 +2047,7 @@ + @@ -2147,47 +2107,17 @@ mask - - 88 - - - optionsAddButton - - - 140 - - - option1 - 141 - - - option2 + + + background 142 - - - option3 - - - 146 - - - option1 - - - 147 - - - option2 - - - 148 - - - option3 + + + background 127 @@ -2195,6 +2125,150 @@ optionsAddButton + + 88 + + + optionsAddButton + + + 31 + + + + + + + + + + + + + + + + + + + + + padView + + + 99 + + + background + + + 73 + + + 1 + + + 72 + + + 2 + + + 71 + + + 3 + + + 69 + + + 4 + + + 70 + + + 5 + + + 63 + + + 6 + + + 68 + + + 7 + + + 67 + + + 8 + + + 66 + + + 9 + + + 62 + + + * + + + 64 + + + 0 + + + 65 + + + # + + + 152 + + + option1 + + + 159 + + + option2 + + + 160 + + + option3 + + + 166 + + + option1 + + + 167 + + + option2 + + + 168 + + + option3 + @@ -2273,24 +2347,20 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -2301,7 +2371,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIToggleButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -2319,7 +2389,7 @@ UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -2355,7 +2425,7 @@ - 157 + 171 @@ -2727,11 +2797,11 @@ {220, 113} {220, 113} {160, 134} - {129, 109} + {130, 163} {160, 134} - {129, 109} + {130, 163} {160, 134} - {129, 109} + {130, 163} {209, 136} {130, 163} {209, 136} diff --git a/Classes/LinphoneUI/UICallBar~ipad.xib b/Classes/LinphoneUI/UICallBar~ipad.xib new file mode 100644 index 000000000..e56b19570 --- /dev/null +++ b/Classes/LinphoneUI/UICallBar~ipad.xib @@ -0,0 +1,2827 @@ + + + + 1296 + 11E53 + 2549 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1498 + + + IBProxyObject + IBUIActivityIndicatorView + IBUIButton + IBUIImageView + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + + 301 + + + + -2147483356 + {{0, 680}, {1024, 68}} + + + + _NS:9 + + 1 + MCAxIDAuMTkxOTQ1NDc1NQA + + NO + NO + NO + -1 + NO + IBIPadFramework + + + + 288 + + + + 274 + {281, 260} + + + + _NS:9 + 2 + NO + IBIPadFramework + + NSImage + dialer_alt_background.png + + + + + 292 + {{-20, 10}, {107, 54}} + + + + + 1 + MC40MDAwMDAwMSAxIDEgMAA + + NO + NO + 3 + IBIPadFramework + 0 + 0 + + 3 + MC41AA + + + NSImage + numpad_one_over.png + + + NSImage + numpad_one_default.png + + + Helvetica-Bold + Helvetica + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 292 + {{87, 10}, {106, 54}} + + + + NO + NO + 4 + IBIPadFramework + 0 + 0 + + + NSImage + numpad_two_over.png + + + NSImage + numpad_two_default.png + + + + + + + 292 + {{193, 10}, {107, 54}} + + + + NO + NO + 5 + IBIPadFramework + 0 + 0 + + + NSImage + numpad_three_over.png + + + NSImage + numpad_three_default.png + + + + + + + 292 + {{-20, 72}, {107, 54}} + + + + NO + NO + 6 + IBIPadFramework + 0 + 0 + + + NSImage + numpad_four_over.png + + + NSImage + numpad_four_default.png + + + + + + + 292 + {{87, 72}, {106, 54}} + + + + NO + NO + 7 + IBIPadFramework + 0 + 0 + + + NSImage + numpad_five_over.png + + + NSImage + numpad_five_default.png + + + + + + + 292 + {{193, 72}, {107, 54}} + + + + NO + NO + 8 + IBIPadFramework + 0 + 0 + + + NSImage + numpad_six_over.png + + + NSImage + numpad_six_default.png + + + + + + + 292 + {{-20, 134}, {107, 54}} + + + + NO + NO + 9 + IBIPadFramework + 0 + 0 + + + NSImage + numpad_seven_over.png + + + NSImage + numpad_seven_default.png + + + + + + + 292 + {{87, 134}, {106, 54}} + + + + NO + NO + 10 + IBIPadFramework + 0 + 0 + + + NSImage + numpad_eight_over.png + + + NSImage + numpad_eight_default.png + + + + + + + 292 + {{193, 134}, {107, 54}} + + + + NO + NO + 11 + IBIPadFramework + 0 + 0 + + + NSImage + numpad_nine_over.png + + + NSImage + numpad_nine_default.png + + + + + + + 292 + {{-20, 196}, {107, 54}} + + + + NO + NO + 12 + IBIPadFramework + 0 + 0 + + + NSImage + numpad_star_over.png + + + NSImage + numpad_star_default.png + + + + + + + 292 + {{87, 196}, {106, 54}} + + + + NO + NO + 13 + IBIPadFramework + 0 + 0 + + + NSImage + numpad_zero_over.png + + + NSImage + numpad_zero_default.png + + + + + + + 292 + {{193, 196}, {107, 54}} + + + + NO + NO + 14 + IBIPadFramework + 0 + 0 + + + NSImage + numpad_sharp_over.png + + + NSImage + numpad_sharp_default.png + + + + + + {{372, 244}, {281, 260}} + + + + _NS:9 + + 3 + MCAwAA + + 1 + IBIPadFramework + + + + 292 + + + + 292 + {81, 69} + + + + _NS:9 + NO + 16 + + Add call + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + options_transfer_over_landscape~ipad.png + + + NSImage + options_transfer_disabled_landscape~ipad.png + + + NSImage + options_transfer_default_landscape~ipad.png + + + 2 + 15 + + + + + + 292 + {{0, 65}, {81, 69}} + + + _NS:9 + NO + 17 + + Add call + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + options_add_over_landscape~ipad.png + + + NSImage + options_add_disabled_landscape~ipad.png + + + NSImage + options_add_default_landscape~ipad.png + + + + + + {{239, 552}, {81, 133}} + + + + _NS:9 + + 15 + IBIPadFramework + + + + 292 + + + + 290 + {{0, 85}, {1024, 2000}} + + + + _NS:9 + + 1 + MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA + + 28 + IBIPadFramework + + + + 292 + {80, 85} + + + + _NS:9 + NO + 19 + + Video + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + video_off_over_landscape~ipad.png + + + NSImage + video_off_disabled_landscape~ipad.png + + + NSImage + video_on_default_landscape~ipad.png + + + NSImage + video_off_default_landscape~ipad.png + + + + + + + -2147483356 + {{20, 20}, {37, 37}} + + + + _NS:9 + NO + 20 + IBIPadFramework + 0 + + + + 292 + {{80, 0}, {80, 85}} + + + + _NS:9 + NO + 21 + + Micro + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + micro_off_over_landscape~ipad.png + + + NSImage + micro_off_disabled_landscape~ipad.png + + + NSImage + micro_on_default_landscape~ipad.png + + + NSImage + micro_off_default_landscape~ipad.png + + + + + + + 292 + {{160, 0}, {80, 85}} + + + + _NS:9 + NO + 22 + + Speaker + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + speaker_off_over_landscape~ipad.png + + + NSImage + speaker_off_disabled_landscape~ipad.png + + + NSImage + speaker_on_default_landscape~ipad.png + + + NSImage + speaker_off_default_landscape~ipad.png + + + + + + + 292 + {{240, 0}, {80, 85}} + + + + _NS:9 + NO + 23 + + Add call + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + options_over_landscape~ipad.png + + + NSImage + options_disabled_landscape~ipad.png + + + NSImage + options_selected_landscape~ipad.png + + + NSImage + options_default_landscape~ipad.png + + + + + + + 264 + {{701, 0}, {87, 85}} + + + + _NS:9 + NO + 24 + + Pause + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + pause_off_over_landscape~ipad.png + + + NSImage + pause_on_default_landscape~ipad.png + + + NSImage + pause_off_default_landscape~ipad.png + + + + + + + -2147483384 + {{701, 0}, {87, 85}} + + + + _NS:9 + NO + 25 + + Start Conference + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + conference_over_landscape~ipad.png + + + NSImage + conference_default_landscape~ipad.png + + + + + + + 264 + {{875, 0}, {149, 85}} + + + + _NS:9 + NO + 26 + + Hangup + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + hangup_over_landscape~ipad.png + + + NSImage + hangup_default_landscape~ipad.png + + + + + + + 264 + {{788, 0}, {87, 85}} + + + + _NS:9 + NO + 27 + + Back + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + dialer_alt_over_landscape~ipad.png + + + NSImage + dialer_alt_back_default_landscape~ipad.png + + + NSImage + dialer_alt_default_landscape~ipad.png + + + + + + {{0, 663}, {1024, 85}} + + + + _NS:9 + + 18 + IBIPadFramework + + + {1024, 748} + + + + _NS:9 + + NO + + 3 + 3 + + IBIPadFramework + + + + 301 + + + + -2147483356 + {{0, 936}, {768, 68}} + + + + _NS:9 + + 1 + MCAxIDAuMTkxOTQ1NDc1NQA + + NO + NO + NO + -1 + NO + IBIPadFramework + + + + 288 + + + + 274 + {281, 260} + + + + _NS:9 + 2 + NO + IBIPadFramework + + + + + 292 + {{-20, 10}, {107, 54}} + + + + + 1 + MC40MDAwMDAwMSAxIDEgMAA + + NO + NO + 3 + IBIPadFramework + 0 + 0 + + + + + + + + + 292 + {{87, 10}, {106, 54}} + + + + NO + NO + 4 + IBIPadFramework + 0 + 0 + + + + + + + + + 292 + {{193, 10}, {107, 54}} + + + + NO + NO + 5 + IBIPadFramework + 0 + 0 + + + + + + + + + 292 + {{-20, 72}, {107, 54}} + + + + NO + NO + 6 + IBIPadFramework + 0 + 0 + + + + + + + + + 292 + {{87, 72}, {106, 54}} + + + + NO + NO + 7 + IBIPadFramework + 0 + 0 + + + + + + + + + 292 + {{193, 72}, {107, 54}} + + + + NO + NO + 8 + IBIPadFramework + 0 + 0 + + + + + + + + + 292 + {{-20, 134}, {107, 54}} + + + + NO + NO + 9 + IBIPadFramework + 0 + 0 + + + + + + + + + 292 + {{87, 134}, {106, 54}} + + + + NO + NO + 10 + IBIPadFramework + 0 + 0 + + + + + + + + + 292 + {{193, 134}, {107, 54}} + + + + NO + NO + 11 + IBIPadFramework + 0 + 0 + + + + + + + + + 292 + {{-20, 196}, {107, 54}} + + + + NO + NO + 12 + IBIPadFramework + 0 + 0 + + + + + + + + + 292 + {{87, 196}, {106, 54}} + + + + NO + NO + 13 + IBIPadFramework + 0 + 0 + + + + + + + + + 292 + {{193, 196}, {107, 54}} + + + + NO + NO + 14 + IBIPadFramework + 0 + 0 + + + + + + + + {{244, 372}, {281, 260}} + + + + _NS:9 + + 1 + IBIPadFramework + + + + 292 + + + + 292 + {81, 69} + + + + _NS:9 + NO + 16 + + Add call + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + options_transfer_over~ipad.png + + + NSImage + options_transfer_disabled~ipad.png + + + NSImage + options_transfer_default~ipad.png + + + + + + + 292 + {{0, 64}, {81, 69}} + + + _NS:9 + NO + 17 + + Add call + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + options_add_over~ipad.png + + + NSImage + options_add_disabled~ipad.png + + + NSImage + options_add_default~ipad.png + + + + + + {{239, 809}, {81, 133}} + + + + _NS:9 + + 15 + IBIPadFramework + + + + 292 + + + + 290 + {{0, 85}, {768, 2000}} + + + + _NS:9 + + 1 + MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA + + 28 + IBIPadFramework + + + + 292 + {80, 85} + + + + _NS:9 + NO + 19 + + Video + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + video_off_over~ipad.png + + + NSImage + video_off_disabled~ipad.png + + + NSImage + video_on_default~ipad.png + + + NSImage + video_off_default~ipad.png + + + + + + + -2147483356 + {{20, 20}, {37, 37}} + + + + _NS:9 + NO + 20 + IBIPadFramework + 0 + + + + 292 + {{80, 0}, {80, 85}} + + + + _NS:9 + NO + 21 + + Micro + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + micro_off_over~ipad.png + + + NSImage + micro_off_disabled~ipad.png + + + NSImage + micro_on_default~ipad.png + + + NSImage + micro_off_default~ipad.png + + + + + + + 292 + {{160, 0}, {80, 85}} + + + + _NS:9 + NO + 22 + + Speaker + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + speaker_off_over~ipad.png + + + NSImage + speaker_off_disabled~ipad.png + + + NSImage + speaker_on_default~ipad.png + + + NSImage + speaker_off_default~ipad.png + + + + + + + 292 + {{240, 0}, {80, 85}} + + + + _NS:9 + NO + 23 + + Add call + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + options_over~ipad.png + + + NSImage + options_disabled~ipad.png + + + NSImage + options_selected~ipad.png + + + NSImage + options_default~ipad.png + + + + + + + 264 + {{445, 0}, {87, 85}} + + + + _NS:9 + NO + 24 + + Pause + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + pause_off_over~ipad.png + + + NSImage + pause_on_default~ipad.png + + + NSImage + pause_off_default~ipad.png + + + + + + + -2147483384 + {{445, 0}, {87, 85}} + + + + _NS:9 + NO + 25 + + Start Conference + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + conference_over~ipad.png + + + NSImage + conference_default~ipad.png + + + + + + + 264 + {{619, 0}, {149, 85}} + + + + _NS:9 + NO + 26 + + Hangup + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + hangup_over~ipad.png + + + NSImage + hangup_default~ipad.png + + + + + + + 264 + {{532, 0}, {87, 85}} + + + + _NS:9 + NO + 27 + + Back + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + dialer_alt_over~ipad.png + + + NSImage + dialer_alt_back_default~ipad.png + + + NSImage + dialer_alt_default~ipad.png + + + + + + {{0, 919}, {768, 85}} + + + + _NS:9 + + 18 + IBIPadFramework + + + {768, 1004} + + + + _NS:9 + + NO + IBIPadFramework + + + + + + + conferenceButton + + + + 64 + + + + dialerButton + + + + 65 + + + + eightButton + + + + 66 + + + + fiveButton + + + + 67 + + + + fourButton + + + + 68 + + + + hangupButton + + + + 69 + + + + landscapeView + + + + 70 + + + + microButton + + + + 71 + + + + nineButton + + + + 72 + + + + oneButton + + + + 73 + + + + optionsAddButton + + + + 74 + + + + optionsButton + + + + 75 + + + + optionsTransferButton + + + + 76 + + + + optionsView + + + + 77 + + + + padView + + + + 78 + + + + pauseButton + + + + 79 + + + + portraitView + + + + 80 + + + + sevenButton + + + + 81 + + + + sharpButton + + + + 82 + + + + sixButton + + + + 83 + + + + speakerButton + + + + 84 + + + + starButton + + + + 85 + + + + threeButton + + + + 86 + + + + twoButton + + + + 87 + + + + videoButton + + + + 88 + + + + view + + + + 89 + + + + zeroButton + + + + 90 + + + + onPadClick: + + + 7 + + 92 + + + + onConferenceClick: + + + 7 + + 93 + + + + onOptionsClick: + + + 7 + + 91 + + + + waitView + + + + 62 + + + + onOptionsAddClick: + + + 7 + + 94 + + + + onOptionsTransferClick: + + + 7 + + 95 + + + + waitView + + + + 63 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + + + + + + + Landscape View + + + 3 + + + + + + + + + Portrait View + + + 4 + + + + + + + optionsView + + + 5 + + + + + + + + + + + + + + + + + + padView + + + 6 + + + + + + + + + + + + + + + buttons + + + 7 + + + mask + + + 8 + + + background + + + 9 + + + videoWaitView + + + 10 + + + dialerButton + + + 11 + + + hangupButton + + + 12 + + + conferenceButton + + + 13 + + + pauseButton + + + 14 + + + optionsButton + + + 15 + + + speakerButton + + + 16 + + + microButton + + + 17 + + + videoButton + + + 18 + + + background + + + 19 + + + 1 + + + 20 + + + 2 + + + 21 + + + 3 + + + 22 + + + 4 + + + 23 + + + 5 + + + 24 + + + 6 + + + 25 + + + 7 + + + 26 + + + 8 + + + 27 + + + 9 + + + 28 + + + * + + + 29 + + + 0 + + + 30 + + + # + + + 31 + + + optionsAddButton + + + 32 + + + optionsTansferButton + + + 33 + + + mask + + + 34 + + + + + + + optionsView + + + 35 + + + + + + + + + + + + + + + + + + padView + + + 36 + + + + + + + + + + + + + + + buttons + + + 37 + + + background + + + 38 + + + dialerButton + + + 39 + + + optionsButton + + + 40 + + + videoButton + + + 41 + + + microButton + + + 42 + + + speakerButton + + + 43 + + + pauseButton + + + 44 + + + conferenceButton + + + 45 + + + hangupButton + + + 46 + + + videoWaitView + + + 47 + + + # + + + 48 + + + 0 + + + 49 + + + * + + + 50 + + + 9 + + + 51 + + + 8 + + + 52 + + + 7 + + + 53 + + + 6 + + + 54 + + + 5 + + + 55 + + + 4 + + + 56 + + + 3 + + + 57 + + + 2 + + + 58 + + + 1 + + + 59 + + + background + + + 60 + + + optionsAddButton + + + 61 + + + optionsTansferButton + + + + + UICallBar + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIToggleButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIHangUpButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIPauseButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIToggleButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UISpeakerButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIMicroButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIVideoButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UITransparentView + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UITransparentView + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIToggleButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIToggleButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIVideoButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIMicroButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UISpeakerButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIPauseButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIHangUpButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 95 + + + + + TPMultiLayoutViewController + UIViewController + + UIView + UIView + + + + landscapeView + UIView + + + portraitView + UIView + + + + IBProjectSource + ./Classes/TPMultiLayoutViewController.h + + + + UICallBar + TPMultiLayoutViewController + + id + id + id + id + id + id + id + id + + + + onConferenceClick: + id + + + onOption1Click: + id + + + onOption2Click: + id + + + onOption3Click: + id + + + onOptionsAddClick: + id + + + onOptionsClick: + id + + + onOptionsTransferClick: + id + + + onPadClick: + id + + + + UIButton + UIToggleButton + UIButton + UIButton + UIButton + UIHangUpButton + UIMicroButton + UIButton + UIButton + UIButton + UIButton + UIButton + UIButton + UIToggleButton + UIButton + UIView + UIView + UIPauseButton + UIButton + UIButton + UIButton + UISpeakerButton + UIButton + UIButton + UIButton + UIVideoButton + UIButton + + + + conferenceButton + UIButton + + + dialerButton + UIToggleButton + + + eightButton + UIButton + + + fiveButton + UIButton + + + fourButton + UIButton + + + hangupButton + UIHangUpButton + + + microButton + UIMicroButton + + + nineButton + UIButton + + + oneButton + UIButton + + + option1Button + UIButton + + + option2Button + UIButton + + + option3Button + UIButton + + + optionsAddButton + UIButton + + + optionsButton + UIToggleButton + + + optionsTransferButton + UIButton + + + optionsView + UIView + + + padView + UIView + + + pauseButton + UIPauseButton + + + sevenButton + UIButton + + + sharpButton + UIButton + + + sixButton + UIButton + + + speakerButton + UISpeakerButton + + + starButton + UIButton + + + threeButton + UIButton + + + twoButton + UIButton + + + videoButton + UIVideoButton + + + zeroButton + UIButton + + + + IBProjectSource + ./Classes/UICallBar.h + + + + UIDigitButton + UILongTouchButton + + addressField + UITextField + + + addressField + + addressField + UITextField + + + + IBProjectSource + ./Classes/UIDigitButton.h + + + + UIHangUpButton + UIButton + + IBProjectSource + ./Classes/UIHangUpButton.h + + + + UILongTouchButton + UIButton + + IBProjectSource + ./Classes/UILongTouchButton.h + + + + UIMicroButton + UIToggleButton + + IBProjectSource + ./Classes/UIMicroButton.h + + + + UIPauseButton + UIToggleButton + + IBProjectSource + ./Classes/UIPauseButton.h + + + + UISpeakerButton + UIToggleButton + + IBProjectSource + ./Classes/UISpeakerButton.h + + + + UIToggleButton + UIButton + + IBProjectSource + ./Classes/UIToggleButton.h + + + + UITransparentView + UIView + + IBProjectSource + ./Classes/UITransparentView.h + + + + UIVideoButton + UIToggleButton + + waitView + UIActivityIndicatorView + + + waitView + + waitView + UIActivityIndicatorView + + + + IBProjectSource + ./Classes/UIVideoButton.h + + + + + 0 + IBIPadFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + + {173, 170} + {173, 170} + {173, 170} + {173, 170} + {173, 170} + {173, 170} + {530, 526} + {173, 170} + {173, 170} + {173, 170} + {173, 170} + {297, 170} + {297, 170} + {297, 170} + {297, 170} + {159, 170} + {159, 170} + {159, 170} + {159, 170} + {159, 170} + {159, 170} + {159, 170} + {159, 170} + {220, 113} + {220, 113} + {220, 113} + {220, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {220, 113} + {220, 113} + {220, 113} + {220, 113} + {162, 137} + {162, 137} + {162, 137} + {162, 137} + {162, 137} + {162, 137} + {162, 170} + {162, 170} + {162, 170} + {162, 170} + {162, 170} + {162, 170} + {162, 170} + {162, 170} + {162, 137} + {162, 137} + {162, 137} + {162, 137} + {162, 137} + {162, 137} + {173, 170} + {173, 170} + {173, 170} + {173, 170} + {173, 170} + {173, 170} + {160, 170} + {160, 170} + {160, 170} + {160, 170} + {160, 170} + {160, 170} + {160, 170} + {160, 170} + {162, 170} + {162, 170} + {162, 170} + {162, 170} + {162, 170} + {162, 170} + {162, 170} + {162, 170} + + 1498 + + diff --git a/Classes/LinphoneUI/UICallCell.xib b/Classes/LinphoneUI/UICallCell.xib index 5a1b8a9c6..e8526ff6d 100644 --- a/Classes/LinphoneUI/UICallCell.xib +++ b/Classes/LinphoneUI/UICallCell.xib @@ -3,19 +3,19 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 + IBProxyObject IBUIButton IBUIImageView - IBUIView IBUILabel - IBProxyObject + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -154,7 +154,7 @@ - 294 + 290 {{10, 0}, {206, 51}} @@ -4651,7 +4651,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE {{262, 12}, {50, 29}} - _NS:9 NO YES @@ -4676,7 +4675,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 294 + 290 {{0, 5}, {200, 40}} @@ -4716,7 +4715,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE {320, 460} - _NS:9 NO @@ -5114,6 +5112,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE {43, 46} {640, 125} - 1181 + 1498 diff --git a/Classes/LinphoneUI/UIChatCell.xib b/Classes/LinphoneUI/UIChatCell.xib index 994bb83e7..7bf9dcf3c 100644 --- a/Classes/LinphoneUI/UIChatCell.xib +++ b/Classes/LinphoneUI/UIChatCell.xib @@ -3,19 +3,19 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 + IBProxyObject IBUIButton IBUIImageView - IBUIView IBUILabel - IBProxyObject + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -35,7 +35,7 @@ - 292 + 274 @@ -123,7 +123,7 @@ - 292 + 257 {{276, 0}, {44, 44}} @@ -162,7 +162,7 @@ - 292 + 257 {{276, 0}, {44, 44}} @@ -417,6 +417,6 @@ {45, 45} {45, 45} - 1181 + 1498 diff --git a/Classes/LinphoneUI/UIChatRoomCell.h b/Classes/LinphoneUI/UIChatRoomCell.h index 22891bdbb..cfc479c23 100644 --- a/Classes/LinphoneUI/UIChatRoomCell.h +++ b/Classes/LinphoneUI/UIChatRoomCell.h @@ -41,7 +41,7 @@ @property (nonatomic, retain) IBOutlet UILabel *dateLabel; - (id)initWithIdentifier:(NSString*)identifier; -+ (CGFloat)height:(ChatModel*)chat; ++ (CGFloat)height:(ChatModel*)chat width:(int)width; - (IBAction)onDeleteClick:(id)event; diff --git a/Classes/LinphoneUI/UIChatRoomCell.m b/Classes/LinphoneUI/UIChatRoomCell.m index 98f355cc5..44b261a31 100644 --- a/Classes/LinphoneUI/UIChatRoomCell.m +++ b/Classes/LinphoneUI/UIChatRoomCell.m @@ -117,41 +117,12 @@ static UIFont *CELL_FONT = nil; } } -- (void)resizeContent { - if(chat != nil) { - // Resize Content - CGRect contentFrame = [contentView frame]; - contentFrame.size = [UIChatRoomCell viewSize:[chat message]]; - if([[chat direction] intValue]) { // Inverted - contentFrame.origin.x = 0.0f; - contentFrame.origin.y = 0.0f; - } else { - contentFrame.origin.x = CELL_MAX_WIDTH - contentFrame.size.width; - contentFrame.origin.y = 0.0f; - } - [contentView setFrame:contentFrame]; - - CGRect messageFrame = [messageView frame]; - messageFrame.origin.y = ([contentView frame].size.height - messageFrame.size.height)/2; - if([[chat direction] intValue]) { // Inverted - [backgroundImage setImage:[TUNinePatchCache imageOfSize:[backgroundImage bounds].size - forNinePatchNamed:@"chat_bubble_incoming"]]; - messageFrame.origin.y += 5; - } else { - [backgroundImage setImage:[TUNinePatchCache imageOfSize:[backgroundImage bounds].size - forNinePatchNamed:@"chat_bubble_outgoing"]]; - messageFrame.origin.y -= 5; - } - [messageView setFrame:messageFrame]; - } -} - -+ (CGSize)viewSize:(NSString*)message { ++ (CGSize)viewSize:(NSString*)message width:(int)width { if(CELL_FONT == nil) { CELL_FONT = [UIFont systemFontOfSize:CELL_FONT_SIZE]; } CGSize messageSize = [message sizeWithFont: CELL_FONT - constrainedToSize: CGSizeMake(CELL_MAX_WIDTH - CELL_MESSAGE_X_MARGIN, 10000.0f) + constrainedToSize: CGSizeMake(width - CELL_MESSAGE_X_MARGIN, 10000.0f) lineBreakMode: UILineBreakModeTailTruncation]; messageSize.height += CELL_MESSAGE_Y_MARGIN; if(messageSize.height < CELL_MIN_HEIGHT) @@ -162,8 +133,8 @@ static UIFont *CELL_FONT = nil; return messageSize; } -+ (CGFloat)height:(ChatModel*)chat { - return [UIChatRoomCell viewSize:[chat message]].height; ++ (CGFloat)height:(ChatModel*)chat width:(int)width { + return [UIChatRoomCell viewSize:[chat message] width:width].height; } @@ -171,7 +142,32 @@ static UIFont *CELL_FONT = nil; - (void)layoutSubviews { [super layoutSubviews]; - [self resizeContent]; + if(chat != nil) { + // Resize Content + CGRect contentFrame = [contentView frame]; + contentFrame.size = [UIChatRoomCell viewSize:[chat message] width:[self frame].size.width]; + if([[chat direction] intValue]) { // Inverted + contentFrame.origin.x = 0.0f; + contentFrame.origin.y = 0.0f; + } else { + contentFrame.origin.x = [self frame].size.width - contentFrame.size.width; + contentFrame.origin.y = 0.0f; + } + [contentView setFrame:contentFrame]; + + CGRect messageFrame = [messageView frame]; + messageFrame.origin.y = ([contentView frame].size.height - messageFrame.size.height)/2; + if([[chat direction] intValue]) { // Inverted + [backgroundImage setImage:[TUNinePatchCache imageOfSize:[backgroundImage bounds].size + forNinePatchNamed:@"chat_bubble_incoming"]]; + messageFrame.origin.y += 5; + } else { + [backgroundImage setImage:[TUNinePatchCache imageOfSize:[backgroundImage bounds].size + forNinePatchNamed:@"chat_bubble_outgoing"]]; + messageFrame.origin.y -= 5; + } + [messageView setFrame:messageFrame]; + } } diff --git a/Classes/LinphoneUI/UIChatRoomCell.xib b/Classes/LinphoneUI/UIChatRoomCell.xib index 822ed6cc6..b5bdba778 100644 --- a/Classes/LinphoneUI/UIChatRoomCell.xib +++ b/Classes/LinphoneUI/UIChatRoomCell.xib @@ -3,19 +3,19 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 + IBProxyObject IBUIButton IBUIImageView - IBUIView IBUILabel - IBProxyObject + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -35,7 +35,7 @@ - 274 + 301 @@ -181,17 +181,21 @@ IBCocoaTouchFramework - - 292 + + 274 {100, 100} + + _NS:9 IBCocoaTouchFramework - - 292 + + 274 {100, 100} + + _NS:9 IBCocoaTouchFramework @@ -443,6 +447,6 @@ {45, 45} {45, 45} - 1181 + 1498 diff --git a/Classes/LinphoneUI/UICompositeViewController.h b/Classes/LinphoneUI/UICompositeViewController.h index d19634296..f4ad7f907 100644 --- a/Classes/LinphoneUI/UICompositeViewController.h +++ b/Classes/LinphoneUI/UICompositeViewController.h @@ -87,6 +87,7 @@ - (void)changeView:(UICompositeViewDescription *)description; - (void)setFullScreen:(BOOL) enabled; +- (void)setStateBarHidden:(BOOL) hidden; - (void)setToolBarHidden:(BOOL) hidden; - (UIViewController *)getCurrentViewController; diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 547de4cb0..2068160e1 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -19,6 +19,8 @@ #import "UICompositeViewController.h" +#import "PhoneMainView.h" + @implementation UICompositeViewDescription @synthesize name; @@ -90,7 +92,7 @@ #pragma mark - Lifecycle Functions - (void)initUICompositeViewController { - self->viewControllerCache = [[NSMutableDictionary alloc] init]; + self->viewControllerCache = [[NSMutableDictionary alloc] init]; self->currentOrientation = UIDeviceOrientationUnknown; } @@ -133,17 +135,23 @@ #pragma mark - ViewController Functions +- (void)viewDidLoad { + /* Force landscape view to match portrait view */ + CGRect frame = [portraitView frame]; + int height = frame.size.width; + frame.size.width = frame.size.height; + frame.size.height = height; + [landscapeView setFrame:frame]; + [super viewDidLoad]; +} + - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [contentViewController viewWillAppear:animated]; [tabBarViewController viewWillAppear:animated]; [stateBarViewController viewWillAppear:animated]; [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; - - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(orientationChanged:) - name:UIDeviceOrientationDidChangeNotification - object:nil]; + currentOrientation = [[UIDevice currentDevice] orientation]; } - (void)viewDidAppear:(BOOL)animated { @@ -158,11 +166,8 @@ [contentViewController viewWillDisappear:animated]; [tabBarViewController viewWillDisappear:animated]; [stateBarViewController viewWillDisappear:animated]; - [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications]; - [[NSNotificationCenter defaultCenter] removeObserver:self - name:UIDeviceOrientationDidChangeNotification - object:nil]; + [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications]; } - (void)viewDidDisappear:(BOOL)animated { @@ -172,25 +177,20 @@ [stateBarViewController viewDidDisappear:animated]; } -- (void)orientationChanged:(NSNotification *)notification { - currentOrientation = [[UIDevice currentDevice] orientation]; -} - - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { - UIDeviceOrientation correctOrientation = [self getCorrectInterfaceOrientation:toInterfaceOrientation]; - [super willRotateToInterfaceOrientation:correctOrientation duration:duration]; - [contentViewController willRotateToInterfaceOrientation:correctOrientation duration:duration]; - [tabBarViewController willRotateToInterfaceOrientation:correctOrientation duration:duration]; - [stateBarViewController willRotateToInterfaceOrientation:correctOrientation duration:duration]; + currentOrientation = [self getCorrectInterfaceOrientation:toInterfaceOrientation]; + [super willRotateToInterfaceOrientation:currentOrientation duration:duration]; + [contentViewController willRotateToInterfaceOrientation:currentOrientation duration:duration]; + [tabBarViewController willRotateToInterfaceOrientation:currentOrientation duration:duration]; + [stateBarViewController willRotateToInterfaceOrientation:currentOrientation duration:duration]; } - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { - UIDeviceOrientation correctOrientation = [self getCorrectInterfaceOrientation:toInterfaceOrientation]; - [super willAnimateRotationToInterfaceOrientation:correctOrientation duration:duration]; - [contentViewController willAnimateRotationToInterfaceOrientation:correctOrientation duration:duration]; - [tabBarViewController willAnimateRotationToInterfaceOrientation:correctOrientation duration:duration]; - [stateBarViewController willAnimateRotationToInterfaceOrientation:correctOrientation duration:duration]; - [self update:nil tabBar:nil fullscreen:nil]; + [super willAnimateRotationToInterfaceOrientation:currentOrientation duration:duration]; + [contentViewController willAnimateRotationToInterfaceOrientation:currentOrientation duration:duration]; + [tabBarViewController willAnimateRotationToInterfaceOrientation:currentOrientation duration:duration]; + [stateBarViewController willAnimateRotationToInterfaceOrientation:currentOrientation duration:duration]; + [self update:nil tabBar:nil stateBar:nil fullscreen:nil]; } - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { @@ -201,15 +201,19 @@ } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - if(currentViewDescription != nil && [[LinphoneManager instance].settingsStore boolForKey:@"landscape_preference"]) { - if (UIInterfaceOrientationIsPortrait(interfaceOrientation) && [currentViewDescription portraitMode]) { + if(currentViewDescription != nil) { + NSString* rotationPreference = [[LinphoneManager instance].settingsStore objectForKey:@"rotation_preference"]; + if (UIInterfaceOrientationIsPortrait(interfaceOrientation) && [currentViewDescription portraitMode] && + ([rotationPreference isEqualToString:@"auto"] || [rotationPreference isEqualToString:@"portrait"])) { return YES; } - if (UIInterfaceOrientationIsLandscape(interfaceOrientation) && [currentViewDescription landscapeMode]) { + if (UIInterfaceOrientationIsLandscape(interfaceOrientation) && [currentViewDescription landscapeMode] && + ([rotationPreference isEqualToString:@"auto"] || [rotationPreference isEqualToString:@"landscape"])) { return YES; } + return NO; } - return NO; + return YES; } @@ -217,7 +221,6 @@ + (void)addSubView:(UIViewController*)controller view:(UIView*)view { if(controller != nil) { - [controller view]; // Load the view if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { [controller viewWillAppear:NO]; } @@ -247,23 +250,64 @@ if(controller == nil) { controller = [[NSClassFromString(name) alloc] init]; [viewControllerCache setValue:controller forKey:name]; + [controller view]; // Load the view } } return controller; } -- (UIInterfaceOrientation)getCorrectInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - if(currentViewDescription != nil && [[LinphoneManager instance].settingsStore boolForKey:@"landscape_preference"]) { - if (UIInterfaceOrientationIsPortrait(interfaceOrientation)) { - if ([currentViewDescription portraitMode]) { - return interfaceOrientation; +- (UIInterfaceOrientation)getCorrectInterfaceOrientation:(UIDeviceOrientation)deviceOrientation { + if(currentViewDescription != nil) { + NSString* rotationPreference = [[LinphoneManager instance].settingsStore objectForKey:@"rotation_preference"]; + if([rotationPreference isEqualToString:@"auto"]) { + if(deviceOrientation == UIDeviceOrientationUnknown) { + return [UIApplication sharedApplication].statusBarOrientation; + } + if (UIDeviceOrientationIsPortrait(deviceOrientation)) { + if ([currentViewDescription portraitMode]) { + return deviceOrientation; + } else { + return UIInterfaceOrientationLandscapeLeft; + } + } + if (UIDeviceOrientationIsLandscape(deviceOrientation)) { + if ([currentViewDescription landscapeMode]) { + return deviceOrientation; + } else { + return UIInterfaceOrientationPortrait; + } + } + } else if([rotationPreference isEqualToString:@"portrait"]) { + if ([currentViewDescription landscapeMode]) { + if (UIDeviceOrientationIsPortrait(deviceOrientation)) { + if(deviceOrientation == UIDeviceOrientationUnknown) { + return [UIApplication sharedApplication].statusBarOrientation; + } + return deviceOrientation; + } else { + if(UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation)) { + return [UIApplication sharedApplication].statusBarOrientation; + } else { + return UIInterfaceOrientationPortrait; + } + } } else { return UIInterfaceOrientationLandscapeLeft; } - } - if (UIInterfaceOrientationIsLandscape(interfaceOrientation)) { + } else if([rotationPreference isEqualToString:@"landscape"]) { if ([currentViewDescription landscapeMode]) { - return interfaceOrientation; + if (UIDeviceOrientationIsLandscape(deviceOrientation)) { + if(deviceOrientation == UIDeviceOrientationUnknown) { + return [UIApplication sharedApplication].statusBarOrientation; + } + return deviceOrientation; + } else { + if(UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) { + return [UIApplication sharedApplication].statusBarOrientation; + } else { + return UIInterfaceOrientationLandscapeLeft; + } + } } else { return UIInterfaceOrientationPortrait; } @@ -298,7 +342,7 @@ #define IPHONE_STATUSBAR_HEIGHT 20 -- (void)update: (UICompositeViewDescription*) description tabBar:(NSNumber*)tabBar fullscreen:(NSNumber*)fullscreen { +- (void)update: (UICompositeViewDescription*) description tabBar:(NSNumber*)tabBar stateBar:(NSNumber*)stateBar fullscreen:(NSNumber*)fullscreen { // Copy view description UICompositeViewDescription *oldViewDescription = nil; @@ -332,17 +376,11 @@ tabBarViewController = [self getCachedController:description.tabBar]; // Update rotation - UIDeviceOrientation correctOrientation = [self getCorrectInterfaceOrientation:currentOrientation]; - if([UIApplication sharedApplication].statusBarOrientation != correctOrientation) { - [[NSNotificationCenter defaultCenter] removeObserver:self - name:UIDeviceOrientationDidChangeNotification - object:nil]; - [[UIDevice currentDevice] performSelector:NSSelectorFromString(@"setOrientation:") withObject:(id)correctOrientation]; - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(orientationChanged:) - name:UIDeviceOrientationDidChangeNotification - object:nil]; + UIInterfaceOrientation correctOrientation = [self getCorrectInterfaceOrientation:[[UIDevice currentDevice] orientation]]; + if(currentOrientation != correctOrientation) { + [PhoneMainView forceOrientation:correctOrientation animated:currentOrientation!=UIDeviceOrientationUnknown]; } + currentOrientation = correctOrientation; [self updateInterfaceOrientation:correctOrientation]; } else { oldViewDescription = (currentViewDescription != nil)? [currentViewDescription copy]: nil; @@ -360,6 +398,14 @@ } } + if(stateBar != nil) { + if(currentViewDescription.stateBarEnabled != [stateBar boolValue]) { + currentViewDescription.stateBarEnabled = [stateBar boolValue]; + } else { + stateBar = nil; // No change = No Update + } + } + if(fullscreen != nil) { if(currentViewDescription.fullscreen != [fullscreen boolValue]) { currentViewDescription.fullscreen = [fullscreen boolValue]; @@ -372,14 +418,12 @@ } // Start animation - if(tabBar != nil || fullscreen != nil) { + if(tabBar != nil || stateBar != nil || fullscreen != nil) { [UIView beginAnimations:@"resize" context:nil]; [UIView setAnimationDuration:0.35]; [UIView setAnimationBeginsFromCurrentState:TRUE]; } - UIView *innerView = contentViewController.view; - CGRect contentFrame = contentView.frame; CGRect viewFrame = [self.view frame]; @@ -418,24 +462,25 @@ tabFrame.origin.y = viewFrame.size.height; } - if(currentViewDescription.fullscreen) + if(currentViewDescription.fullscreen) { + contentFrame.origin.y = origin; contentFrame.size.height = viewFrame.size.height - contentFrame.origin.y; - - // Resize innerView - CGRect innerContentFrame = innerView.frame; - innerContentFrame.origin.x = 0; - innerContentFrame.origin.y = 0; - innerContentFrame.size.width = contentFrame.size.width; - innerContentFrame.size.height = contentFrame.size.height; + } // Set frames [contentView setFrame: contentFrame]; - [innerView setFrame: innerContentFrame]; + [contentViewController.view setFrame: [contentView bounds]]; [tabBarView setFrame: tabFrame]; + CGRect frame = [tabBarViewController.view frame]; + frame.size.width = [tabBarView bounds].size.width; + [tabBarViewController.view setFrame:frame]; [stateBarView setFrame: stateBarFrame]; + frame = [stateBarViewController.view frame]; + frame.size.width = [stateBarView bounds].size.width; + [stateBarViewController.view setFrame:frame]; // Commit animation - if(tabBar != nil || fullscreen != nil) { + if(tabBar != nil || stateBar != nil || fullscreen != nil) { [UIView commitAnimations]; } @@ -458,15 +503,19 @@ - (void) changeView:(UICompositeViewDescription *)description { [self view]; // Force view load - [self update:description tabBar:nil fullscreen:nil]; + [self update:description tabBar:nil stateBar:nil fullscreen:nil]; } - (void) setFullScreen:(BOOL) enabled { - [self update:nil tabBar:nil fullscreen:[NSNumber numberWithBool:enabled]]; + [self update:nil tabBar:nil stateBar:nil fullscreen:[NSNumber numberWithBool:enabled]]; } - (void) setToolBarHidden:(BOOL) hidden { - [self update:nil tabBar:[NSNumber numberWithBool:!hidden] fullscreen:nil]; + [self update:nil tabBar:[NSNumber numberWithBool:!hidden] stateBar:nil fullscreen:nil]; +} + +- (void) setStateBarHidden:(BOOL) hidden { + [self update:nil tabBar: nil stateBar:[NSNumber numberWithBool:!hidden] fullscreen:nil]; } - (UIViewController *) getCurrentViewController { diff --git a/Classes/LinphoneUI/UICompositeViewController.xib b/Classes/LinphoneUI/UICompositeViewController.xib index a2e27d760..c400fdb98 100644 --- a/Classes/LinphoneUI/UICompositeViewController.xib +++ b/Classes/LinphoneUI/UICompositeViewController.xib @@ -3,12 +3,12 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 IBProxyObject @@ -37,7 +37,7 @@ 314 - {{0, 23}, {320, 389}} + {{0, 23}, {320, 397}} @@ -60,7 +60,6 @@ _NS:9 NO - YES 2 IBCocoaTouchFramework @@ -73,7 +72,6 @@ _NS:9 NO - YES 3 IBCocoaTouchFramework @@ -83,7 +81,6 @@ - NO IBCocoaTouchFramework @@ -93,7 +90,7 @@ 314 - {{0, 24}, {480, 231}} + {{0, 23}, {480, 237}} @@ -113,7 +110,6 @@ _NS:9 NO - YES 2 IBCocoaTouchFramework @@ -126,7 +122,6 @@ _NS:9 NO - YES 3 IBCocoaTouchFramework @@ -136,7 +131,6 @@ - NO 3 3 @@ -368,6 +362,6 @@ YES 3 - 1181 + 1498 diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.m b/Classes/LinphoneUI/UIContactDetailsHeader.m index 03bb83259..2ca7037a9 100644 --- a/Classes/LinphoneUI/UIContactDetailsHeader.m +++ b/Classes/LinphoneUI/UIContactDetailsHeader.m @@ -21,6 +21,7 @@ #import "Utils.h" #import "UIEditableTableViewCell.h" #import "FastAddressBook.h" +#import "UILinphone.h" @implementation UIContactDetailsHeader @@ -60,7 +61,7 @@ - (void)viewDidLoad { [super viewDidLoad]; - [tableView setBackgroundColor:[UIColor clearColor]]; // Can't do it in Xib: issue with ios4 + removeTableBackground(tableView); // Can't do it in Xib: issue with ios4 } diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.xib b/Classes/LinphoneUI/UIContactDetailsHeader.xib index bbe9f59c5..e6fe80dcc 100644 --- a/Classes/LinphoneUI/UIContactDetailsHeader.xib +++ b/Classes/LinphoneUI/UIContactDetailsHeader.xib @@ -2,20 +2,20 @@ 1296 - 11D50 - 2182 - 1138.32 - 568.00 + 11E53 + 2549 + 1138.47 + 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 - IBUITableView - IBUIImageView - IBUIView - IBUILabel IBProxyObject + IBUIImageView + IBUILabel + IBUITableView + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -35,7 +35,7 @@ - 292 + 290 @@ -69,11 +69,11 @@ - 292 + 290 - 292 + 290 {{0, 37}, {199, 43}} @@ -116,7 +116,7 @@ - 292 + 290 @@ -378,7 +378,6 @@ AAgACAAIAAEAAQABAAE UILabel UIImageView - UILabel UIView UIView UITableView @@ -392,10 +391,6 @@ AAgACAAIAAEAAQABAAE avatarImage UIImageView - - contactLabel - UILabel - editView UIView @@ -428,6 +423,6 @@ AAgACAAIAAEAAQABAAE {262, 214} {131, 131} - 1181 + 1498 diff --git a/Classes/LinphoneUI/UIHistoryCell.xib b/Classes/LinphoneUI/UIHistoryCell.xib index 20b98f889..e2fe52aa4 100644 --- a/Classes/LinphoneUI/UIHistoryCell.xib +++ b/Classes/LinphoneUI/UIHistoryCell.xib @@ -3,19 +3,19 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 + IBProxyObject IBUIButton IBUIImageView - IBUIView IBUILabel - IBProxyObject + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -35,7 +35,7 @@ - 292 + 274 @@ -86,7 +86,7 @@ - 292 + 257 {{276, 0}, {44, 44}} @@ -125,7 +125,7 @@ - 292 + 257 {{276, 0}, {44, 44}} @@ -358,6 +358,6 @@ {45, 45} {45, 45} - 1181 + 1498 diff --git a/Classes/LinphoneUI/UILinphone.h b/Classes/LinphoneUI/UILinphone.h index e44df8f5b..50f543838 100644 --- a/Classes/LinphoneUI/UILinphone.h +++ b/Classes/LinphoneUI/UILinphone.h @@ -32,4 +32,6 @@ - (UIColor *)darkerColor; -@end \ No newline at end of file +@end + +void removeTableBackground(UIView* view); diff --git a/Classes/LinphoneUI/UILinphone.m b/Classes/LinphoneUI/UILinphone.m index 595b27cd9..b1788b19e 100644 --- a/Classes/LinphoneUI/UILinphone.m +++ b/Classes/LinphoneUI/UILinphone.m @@ -21,6 +21,8 @@ #import "ColorSpaceUtilities.h" #import "Utils.h" +#import + @implementation UIColor (LightAndDark) - (UIColor *)lumColor:(float)mult { @@ -89,4 +91,16 @@ return [self lumColor:0.75]; } -@end \ No newline at end of file +@end + +void removeTableBackground(UIView*view) { + if([view isKindOfClass:[UITableView class]]) { + [view setBackgroundColor:[UIColor clearColor]]; + } + if([view isKindOfClass:[UIImageView class]] && [[view superview] isKindOfClass:[UITableView class]]) { + [(UIImageView*)view setImage:nil]; + } + for(UIView *subview in [view subviews]) { + removeTableBackground(subview); + } +} diff --git a/Classes/LinphoneUI/UIMainBar.h b/Classes/LinphoneUI/UIMainBar.h index 9c64042a5..dc1921c9c 100644 --- a/Classes/LinphoneUI/UIMainBar.h +++ b/Classes/LinphoneUI/UIMainBar.h @@ -18,8 +18,9 @@ */ #import +#import "TPMultiLayoutViewController.h" -@interface UIMainBar : UIViewController { +@interface UIMainBar : TPMultiLayoutViewController { UIButton *historyButton; UIButton *contactsButton; UIButton *dialerButton; diff --git a/Classes/LinphoneUI/UIMainBar.m b/Classes/LinphoneUI/UIMainBar.m index 03d5c9bdc..78fd80272 100644 --- a/Classes/LinphoneUI/UIMainBar.m +++ b/Classes/LinphoneUI/UIMainBar.m @@ -82,7 +82,7 @@ name:@"LinphoneTextReceived" object:nil]; */ - [self update]; + [self update:FALSE]; } - (void)viewWillDisappear:(BOOL)animated { @@ -118,21 +118,36 @@ object:nil]; } +- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { + // Force the animations + [[self.view layer] removeAllAnimations]; + [historyNotificationView.layer setTransform:CATransform3DIdentity]; + [chatNotificationView.layer setTransform:CATransform3DIdentity]; +} + +- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { + [chatNotificationView setHidden:TRUE]; + [historyNotificationView setHidden:TRUE]; + [self update:FALSE]; +} + #pragma mark - Event Functions - (void)applicationWillEnterForeground:(NSNotification*)notif { // Force the animations [[self.view layer] removeAllAnimations]; + [historyNotificationView.layer setTransform:CATransform3DIdentity]; + [chatNotificationView.layer setTransform:CATransform3DIdentity]; [chatNotificationView setHidden:TRUE]; [historyNotificationView setHidden:TRUE]; - [self update]; + [self update:FALSE]; } -- (void)callUpdate:(NSNotification*)notif { +- (void)callUpdate:(NSNotification*)notif { //LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; //LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; - [self updateMissedCall:linphone_core_get_missed_calls_count([LinphoneManager getLc])]; + [self updateMissedCall:linphone_core_get_missed_calls_count([LinphoneManager getLc]) appear:TRUE]; } - (void)changeViewEvent:(NSNotification*)notif { @@ -143,97 +158,112 @@ /* MODIFICATION Remove chat - (void)textReceived:(NSNotification*)notif { - [self updateUnreadMessage:[ChatModel unreadMessages]]; + [self updateUnreadMessage:[ChatModel unreadMessages] appear:TRUE]; } */ #pragma mark - -- (void)update { +- (void)update:(BOOL)appear{ [self updateView:[[PhoneMainView instance] firstView]]; if([LinphoneManager isLcReady]) { - [self updateMissedCall:linphone_core_get_missed_calls_count([LinphoneManager getLc])]; + [self updateMissedCall:linphone_core_get_missed_calls_count([LinphoneManager getLc]) appear:appear]; } else { - [self updateMissedCall:0]; + [self updateMissedCall:0 appear:TRUE]; } /* MODIFICATION Remove chat - [self updateUnreadMessage:[ChatModel unreadMessages]]; + [self updateUnreadMessage:[ChatModel unreadMessages] appear:appear]; */ } -- (void)updateUnreadMessage:(int)unreadMessage{ - /* MODIFICATION Remove chat +- (void)updateUnreadMessage:(int)unreadMessage appear:(BOOL)appear{ + /* if (unreadMessage > 0) { if([chatNotificationView isHidden]) { [chatNotificationView setHidden:FALSE]; - [self appearAnimation:@"Appear" target:chatNotificationView completion:^(BOOL finished){ + if(appear) { + [self appearAnimation:@"Appear" target:chatNotificationView completion:^(BOOL finished){ + [self startBounceAnimation:@"Bounce" target:chatNotificationView]; + }]; + } else { [self startBounceAnimation:@"Bounce" target:chatNotificationView]; - }]; + } } [chatNotificationLabel setText:[NSString stringWithFormat:@"%i", unreadMessage]]; } else { if(![chatNotificationView isHidden]) { [self stopBounceAnimation:@"Bounce" target:chatNotificationView]; - [self disappearAnimation:@"Disappear" target:chatNotificationView completion:^(BOOL finished){ + if(appear) { + [self disappearAnimation:@"Disappear" target:chatNotificationView completion:^(BOOL finished){ + [chatNotificationView setHidden:TRUE]; + }]; + } else { [chatNotificationView setHidden:TRUE]; - }]; + } } } */ } -- (void)updateMissedCall:(int)missedCall{ +- (void)updateMissedCall:(int)missedCall appear:(BOOL)appear{ if (missedCall > 0) { if([historyNotificationView isHidden]) { [historyNotificationView setHidden:FALSE]; - [self appearAnimation:@"Appear" target:historyNotificationView completion:^(BOOL finished){ + if(appear) { + [self appearAnimation:@"Appear" target:historyNotificationView completion:^(BOOL finished){ + [self startBounceAnimation:@"Bounce" target:historyNotificationView]; + }]; + } else { [self startBounceAnimation:@"Bounce" target:historyNotificationView]; - }]; + } } [historyNotificationLabel setText:[NSString stringWithFormat:@"%i", missedCall]]; } else { if(![historyNotificationView isHidden]) { [self stopBounceAnimation:@"Bounce" target:historyNotificationView]; - [self disappearAnimation:@"Disappear" target:historyNotificationView completion:^(BOOL finished){ - [historyNotificationView setHidden:TRUE]; - } - ]; + if(appear) { + [self disappearAnimation:@"Disappear" target:historyNotificationView completion:^(BOOL finished){ + + }]; + } else { + [historyNotificationView setHidden:TRUE]; + } } } } - (void)appearAnimation:(NSString*)animationID target:(UIView*)target completion:(void (^)(BOOL finished))completion { - target.transform = CGAffineTransformMakeScale(0.01f, 0.01f); + target.layer.transform = CATransform3DMakeScale(0.01f, 0.01f, 1.0f); [UIView animateWithDuration:0.4 delay:0 options:UIViewAnimationOptionCurveEaseOut | UIViewAnimationOptionAllowUserInteraction animations:^{ - target.transform = CGAffineTransformIdentity; + target.layer.transform = CATransform3DIdentity; } completion:completion]; } - (void)disappearAnimation:(NSString*)animationID target:(UIView*)target completion:(void (^)(BOOL finished))completion { - CGAffineTransform startCGA = [target transform]; + CATransform3D startCGA = target.layer.transform; [UIView animateWithDuration:0.4 delay:0 options:UIViewAnimationOptionCurveEaseOut | UIViewAnimationOptionAllowUserInteraction animations:^{ - target.transform = CGAffineTransformConcat(startCGA, CGAffineTransformMakeScale(0.01f, 0.01f)); + target.layer.transform = CATransform3DConcat(startCGA, CATransform3DMakeScale(0.01f, 0.01f, 1.0f)); } completion:completion]; } - (void)startBounceAnimation:(NSString *)animationID target:(UIView *)target { - CGAffineTransform startCGA = [target transform]; + CATransform3D startCGA = target.layer.transform; [UIView animateWithDuration: 0.3 delay: 0 options: UIViewAnimationOptionRepeat | - UIViewAnimationOptionAutoreverse | + UIViewAnimationOptionAutoreverse | UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionCurveEaseIn animations:^{ - [target setTransform: CGAffineTransformConcat(startCGA, CGAffineTransformMakeTranslation(0, 8))]; + target.layer.transform = CATransform3DConcat(startCGA, CATransform3DMakeTranslation(0, 8, 0)); } completion:^(BOOL finished){ }]; @@ -244,13 +274,7 @@ [target.layer removeAnimationForKey:animationID]; } -- (void)updateView:(UICompositeViewDescription*) view { - // Reset missed call - if([view equal:[HistoryViewController compositeViewDescription]]) { - linphone_core_reset_missed_calls_count([LinphoneManager getLc]); - [self updateMissedCall:0]; - } - +- (void)updateView:(UICompositeViewDescription*) view { // Update buttons if([view equal:[HistoryViewController compositeViewDescription]]) { historyButton.selected = TRUE; @@ -276,9 +300,18 @@ /* MODIFICATION Remove chat if([view equal:[ChatViewController compositeViewDescription]]) { chatButton.selected = TRUE; + } else { + chatButton.selected = FALSE; + } + */ + + /* + if([view equal:[ChatViewController compositeViewDescription]]) { + moreButton.selected = TRUE; } else { moreButton.selected = FALSE; - }*/ + } + */ } @@ -313,4 +346,72 @@ //[[PhoneMainView instance] changeView:PhoneView_Chat]; } + +#pragma mark - TPMultiLayoutViewController Functions + +- (NSDictionary*)attributesForView:(UIView*)view { + NSMutableDictionary *attributes = [NSMutableDictionary dictionary]; + + [attributes setObject:[NSValue valueWithCGRect:view.frame] forKey:@"frame"]; + [attributes setObject:[NSValue valueWithCGRect:view.bounds] forKey:@"bounds"]; + if([view isKindOfClass:[UIButton class]]) { + UIButton *button = (UIButton *)view; + [UIMainBar addDictEntry:attributes item:[button imageForState:UIControlStateNormal] key:@"image-normal"]; + [UIMainBar addDictEntry:attributes item:[button imageForState:UIControlStateHighlighted] key:@"image-highlighted"]; + [UIMainBar addDictEntry:attributes item:[button imageForState:UIControlStateDisabled] key:@"image-disabled"]; + [UIMainBar addDictEntry:attributes item:[button imageForState:UIControlStateSelected] key:@"image-selected"]; + [UIMainBar addDictEntry:attributes item:[button imageForState:UIControlStateDisabled | UIControlStateHighlighted] key:@"image-disabled-highlighted"]; + [UIMainBar addDictEntry:attributes item:[button imageForState:UIControlStateSelected | UIControlStateHighlighted] key:@"image-selected-highlighted"]; + [UIMainBar addDictEntry:attributes item:[button imageForState:UIControlStateSelected | UIControlStateDisabled] key:@"image-selected-disabled"]; + + [UIMainBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateNormal] key:@"background-normal"]; + [UIMainBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateHighlighted] key:@"background-highlighted"]; + [UIMainBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateDisabled] key:@"background-disabled"]; + [UIMainBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateSelected] key:@"background-selected"]; + [UIMainBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateDisabled | UIControlStateHighlighted] key:@"background-disabled-highlighted"]; + [UIMainBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateSelected | UIControlStateHighlighted] key:@"background-selected-highlighted"]; + [UIMainBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateSelected | UIControlStateDisabled] key:@"background-selected-disabled"]; + } + [attributes setObject:[NSNumber numberWithInteger:view.autoresizingMask] forKey:@"autoresizingMask"]; + + return attributes; +} + +- (void)applyAttributes:(NSDictionary*)attributes toView:(UIView*)view { + view.frame = [[attributes objectForKey:@"frame"] CGRectValue]; + view.bounds = [[attributes objectForKey:@"bounds"] CGRectValue]; + if([view isKindOfClass:[UIButton class]]) { + UIButton *button = (UIButton *)view; + [button setImage:[UIMainBar getDictEntry:attributes key:@"image-normal"] forState:UIControlStateNormal]; + [button setImage:[UIMainBar getDictEntry:attributes key:@"image-highlighted"] forState:UIControlStateHighlighted]; + [button setImage:[UIMainBar getDictEntry:attributes key:@"image-disabled"] forState:UIControlStateDisabled]; + [button setImage:[UIMainBar getDictEntry:attributes key:@"image-selected"] forState:UIControlStateSelected]; + [button setImage:[UIMainBar getDictEntry:attributes key:@"image-disabled-highlighted"] forState:UIControlStateDisabled | UIControlStateHighlighted]; + [button setImage:[UIMainBar getDictEntry:attributes key:@"image-selected-highlighted"] forState:UIControlStateSelected | UIControlStateHighlighted]; + [button setImage:[UIMainBar getDictEntry:attributes key:@"image-selected-disabled"] forState:UIControlStateSelected | UIControlStateDisabled]; + + [button setBackgroundImage:[UIMainBar getDictEntry:attributes key:@"background-normal"] forState:UIControlStateNormal]; + [button setBackgroundImage:[UIMainBar getDictEntry:attributes key:@"background-highlighted"] forState:UIControlStateHighlighted]; + [button setBackgroundImage:[UIMainBar getDictEntry:attributes key:@"background-disabled"] forState:UIControlStateDisabled]; + [button setBackgroundImage:[UIMainBar getDictEntry:attributes key:@"background-selected"] forState:UIControlStateSelected]; + [button setBackgroundImage:[UIMainBar getDictEntry:attributes key:@"background-disabled-highlighted"] forState:UIControlStateDisabled | UIControlStateHighlighted]; + [button setBackgroundImage:[UIMainBar getDictEntry:attributes key:@"background-selected-highlighted"] forState:UIControlStateSelected | UIControlStateHighlighted]; + [button setBackgroundImage:[UIMainBar getDictEntry:attributes key:@"background-selected-disabled"] forState:UIControlStateSelected | UIControlStateDisabled]; + } + view.autoresizingMask = [[attributes objectForKey:@"autoresizingMask"] integerValue]; +} + ++ (void)addDictEntry:(NSMutableDictionary*)dict item:(id)item key:(id)key { + if(item != nil && key != nil) { + [dict setObject:item forKey:key]; + } +} + ++ (id)getDictEntry:(NSDictionary*)dict key:(id)key { + if(key != nil) { + return [dict objectForKey:key]; + } + return nil; +} + @end diff --git a/Classes/LinphoneUI/UIMainBar.xib b/Classes/LinphoneUI/UIMainBar.xib index 78b20c921..a351acdcd 100644 --- a/Classes/LinphoneUI/UIMainBar.xib +++ b/Classes/LinphoneUI/UIMainBar.xib @@ -3,19 +3,19 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 + IBProxyObject IBUIButton IBUIImageView - IBUIView IBUILabel - IBProxyObject + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -37,6 +37,21 @@ 292 + + + 290 + {{0, 77}, {320, 2000}} + + + + _NS:9 + + 1 + MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA + + 28 + IBCocoaTouchFramework + -2147483356 @@ -344,7 +359,7 @@ {320, 77} - + _NS:9 1 @@ -436,6 +451,14 @@ 41 + + + portraitView + + + + 43 + onMoreClick: @@ -513,9 +536,9 @@ + - mainTabBar 4 @@ -598,6 +621,12 @@ chatNotificationImage + + 45 + + + background + @@ -614,6 +643,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -629,13 +659,35 @@ - 41 + 45 - UIMainBar + TPMultiLayoutViewController UIViewController + + UIView + UIView + + + + landscapeView + UIView + + + portraitView + UIView + + + + IBProjectSource + ./Classes/TPMultiLayoutViewController.h + + + + UIMainBar + TPMultiLayoutViewController id id @@ -737,6 +789,6 @@ {128, 154} {128, 154} - 1181 + 1498 diff --git a/Classes/LinphoneUI/UIMainBar~ipad.xib b/Classes/LinphoneUI/UIMainBar~ipad.xib new file mode 100644 index 000000000..ae8b1246d --- /dev/null +++ b/Classes/LinphoneUI/UIMainBar~ipad.xib @@ -0,0 +1,1234 @@ + + + + 1280 + 11E53 + 2549 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1498 + + + IBProxyObject + IBUIButton + IBUIImageView + IBUILabel + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + + 292 + + + + 290 + {{0, 77}, {768, 2000}} + + + + _NS:9 + + 1 + MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA + + 28 + IBIPadFramework + + + + -2147483356 + {{0, 11}, {768, 66}} + + + + _NS:9 + + 1 + MCAxIDAuMDkwOTI0NTczOTEAA + + NO + NO + NO + -1 + NO + IBIPadFramework + + + + 292 + {175, 77} + + + + _NS:9 + NO + 1 + + History + + IBIPadFramework + 0 + 0 + NO + + 3 + MC41AA + + + NSImage + history_over~ipad.png + + + NSImage + history_selected~ipad.png + + + NSImage + history_default~ipad.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + -2147483356 + + + + 274 + {21, 21} + + + + _NS:9 + NO + IBIPadFramework + + NSImage + history_notification.png + + + + + 256 + {{2, 2}, {17, 17}} + + + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + 99 + + 3 + MQA + + + 0 + 10 + 1 + + 1 + 14 + + + Helvetica + 14 + 16 + + + + {{140, 1}, {21, 21}} + + + + _NS:9 + + 3 + MCAwAA + + NO + 2 + NO + IBIPadFramework + + + + 292 + {{175, 0}, {175, 77}} + + + + _NS:9 + NO + 3 + + Contacts + + IBIPadFramework + 0 + 0 + NO + + + NSImage + contacts_over~ipad.png + + + NSImage + contacts_selected~ipad.png + + + NSImage + contacts_default~ipad.png + + + + + + + 288 + {{350, -1}, {68, 80}} + + + + _NS:9 + NO + 4 + + Dialer + + IBIPadFramework + 0 + 0 + NO + + + NSImage + dialer_over.png + + + NSImage + dialer_selected + + + NSImage + dialer_default.png + + + + + + + 292 + {{418, 0}, {175, 77}} + + + + _NS:9 + NO + 5 + + Settings + + IBIPadFramework + 0 + 0 + NO + + + NSImage + settings_over~ipad.png + + + NSImage + settings_selected~ipad.png + + + NSImage + settings_default~ipad.png + + + + + + + 292 + {{593, 0}, {175, 77}} + + + + _NS:9 + NO + 6 + + Chat + + IBIPadFramework + 0 + 0 + NO + + + NSImage + chat_over~ipad.png + + + NSImage + chat_selected~ipad.png + + + NSImage + chat_default~ipad.png + + + + + + + -2147483356 + + + + 274 + {21, 21} + + + + _NS:9 + NO + IBIPadFramework + + + + + 256 + {{2, 2}, {17, 17}} + + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + 99 + + + 0 + 10 + 1 + + + + + {{605, 1}, {21, 21}} + + + + _NS:9 + + NO + 7 + NO + IBIPadFramework + + + {768, 77} + + + + _NS:9 + + 1 + MCAxIDAuMTkxOTQ1NDc1NSAwAA + + NO + IBIPadFramework + + + + 292 + + + + 290 + {{0, 86}, {1024, 2000}} + + + _NS:9 + + 1 + MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA + + 28 + IBIPadFramework + + + + -2147483356 + {{0, 19}, {1024, 67}} + + + _NS:9 + + 1 + MCAxIDAuMDkwOTI0NTczOTEAA + + NO + NO + NO + -1 + NO + IBIPadFramework + + + + 292 + {240, 86} + + + _NS:9 + NO + 1 + + History + + IBIPadFramework + 0 + 0 + NO + + + NSImage + history_over_landscape~ipad.png + + + NSImage + history_selected_landscape~ipad.png + + + NSImage + history_default_landscape~ipad.png + + + + + + + -2147483356 + + + + 274 + {21, 21} + + + _NS:9 + NO + IBIPadFramework + + + + + 256 + {{2, 2}, {17, 17}} + + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + 99 + + + 0 + 10 + 1 + + + + + {{208, 1}, {21, 21}} + + + _NS:9 + + NO + 2 + NO + IBIPadFramework + + + + 292 + {{240, 0}, {240, 86}} + + + _NS:9 + NO + 3 + + Contacts + + IBIPadFramework + 0 + 0 + NO + + + NSImage + contacts_over_landscape~ipad.png + + + NSImage + contacts_selected_landscape~ipad.png + + + NSImage + contacts_default_landscape~ipad.png + + + + + + + 288 + {{480, 8}, {68, 80}} + + + _NS:9 + NO + 4 + + Dialer + + IBIPadFramework + 0 + 0 + NO + + + + + + + + + + 292 + {{544, 0}, {240, 86}} + + + _NS:9 + NO + 5 + + Settings + + IBIPadFramework + 0 + 0 + NO + + + NSImage + settings_over_landscape~ipad.png + + + NSImage + settings_selected_landscape~ipad.png + + + NSImage + settings_default_landscape~ipad.png + + + + + + + 292 + {{784, 0}, {240, 86}} + + + _NS:9 + NO + 6 + + Chat + + IBIPadFramework + 0 + 0 + NO + + + NSImage + chat_over_landscape~ipad.png + + + NSImage + chat_selected_landscape~ipad.png + + + NSImage + chat_default_landscape~ipad.png + + + + + + + -2147483356 + + + + 274 + {21, 21} + + + _NS:9 + NO + IBIPadFramework + + + + + 256 + {{2, 2}, {17, 17}} + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + 99 + + + 0 + 10 + 1 + + + + + {{792, 1}, {21, 21}} + + + _NS:9 + + NO + 7 + NO + IBIPadFramework + + + {1024, 86} + + _NS:9 + + 1 + MCAxIDAuMTkxOTQ1NDc1NSAwAA + + NO + IBIPadFramework + + + + + + + view + + + + 41 + + + + portraitView + + + + 42 + + + + landscapeView + + + + 43 + + + + chatNotificationView + + + + 45 + + + + chatNotificationLabel + + + + 46 + + + + contactsButton + + + + 47 + + + + dialerButton + + + + 48 + + + + historyButton + + + + 49 + + + + historyNotificationLabel + + + + 50 + + + + historyNotificationView + + + + 51 + + + + settingsButton + + + + 52 + + + + onDialerClick: + + + 7 + + 60 + + + + onChatClick: + + + 7 + + 56 + + + + onHistoryClick: + + + 7 + + 58 + + + + onContactsClick: + + + 7 + + 57 + + + + onSettingsClick: + + + 7 + + 59 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + + + + + + + + + + + + Portrait View + + + 3 + + + + + + + chatNotificationView + + + 4 + + + + + + + historyNotificationView + + + 5 + + + dialer + + + 6 + + + + mask + + + 7 + + + chat + + + 8 + + + history + + + 9 + + + contacts + + + 11 + + + historyNotificationLabel + + + 12 + + + historyNotificationImage + + + 13 + + + chatNotificationImage + + + 14 + + + chatNotificationLabel + + + 10 + + + settings + + + 28 + + + + + + + + + + + + + + Landscape View + + + 29 + + + + + + + chatNotificationView + + + 30 + + + settings + + + 31 + + + contacts + + + 32 + + + history + + + 33 + + + chat + + + 34 + + + + mask + + + 36 + + + + + + + historyNotificationView + + + 37 + + + historyNotificationImage + + + 38 + + + historyNotificationLabel + + + 39 + + + chatNotificationLabel + + + 40 + + + chatNotificationImage + + + 35 + + + dialer + + + 61 + + + background + + + 62 + + + background + + + + + UIMainBar + 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 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + + 62 + + + + + TPMultiLayoutViewController + UIViewController + + UIView + UIView + + + + landscapeView + UIView + + + portraitView + UIView + + + + IBProjectSource + ./Classes/TPMultiLayoutViewController.h + + + + UIMainBar + TPMultiLayoutViewController + + id + id + id + id + id + + + + onContactsClick: + id + + + onDialerClick: + id + + + onHistoryClick: + id + + + onMoreClick: + id + + + onSettingsClick: + id + + + + UILabel + UIView + UIButton + UIButton + UIButton + UILabel + UIView + UIButton + UIButton + + + + chatNotificationLabel + UILabel + + + chatNotificationView + UIView + + + contactsButton + UIButton + + + dialerButton + UIButton + + + historyButton + UIButton + + + historyNotificationLabel + UILabel + + + historyNotificationView + UIView + + + moreButton + UIButton + + + settingsButton + UIButton + + + + IBProjectSource + ./Classes/UIMainBar.h + + + + + 0 + IBIPadFramework + YES + 3 + + {480, 170} + {353, 153} + {480, 170} + {353, 153} + {480, 170} + {353, 153} + {480, 171} + {352, 153} + {480, 171} + {352, 153} + {480, 171} + {352, 153} + {128, 154} + {128, 154} + {16, 16} + {480, 171} + {353, 153} + {43, 43} + {480, 171} + {353, 153} + {480, 171} + {353, 153} + {480, 171} + {350, 153} + {480, 171} + {350, 153} + {480, 171} + {350, 153} + + 1498 + + diff --git a/Classes/LinphoneUI/UIModalViewController.h b/Classes/LinphoneUI/UIModalViewController.h deleted file mode 100644 index 929414823..000000000 --- a/Classes/LinphoneUI/UIModalViewController.h +++ /dev/null @@ -1,39 +0,0 @@ -/* UIModalViewController.h - * - * Copyright (C) 2012 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#import - -@class UIModalViewController; - -@protocol UIModalViewDelegate - -- (void)modalViewDismiss:(UIModalViewController*)controller value:(id)value; - -@end - -@interface UIModalViewController : UIViewController { - BOOL dismissed; - id modalDelegate; -} - -- (void)setModalDelegate:(id)delegate; -- (void)dismiss:(id)value; -- (void)dismiss; - -@end diff --git a/Classes/LinphoneUI/UIModalViewController.m b/Classes/LinphoneUI/UIModalViewController.m deleted file mode 100644 index dfda1b240..000000000 --- a/Classes/LinphoneUI/UIModalViewController.m +++ /dev/null @@ -1,90 +0,0 @@ -/* UIModalViewController.h - * - * Copyright (C) 2012 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#import "UIModalViewController.h" - -@implementation UIModalViewController - -- (void)initUIModalViewController { - dismissed = FALSE; -} - -- (id)init { - self = [super init]; - if (self) { - [self initUIModalViewController]; - } - return self; -} - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - [self initUIModalViewController]; - } - return self; -} - -- (id)initWithCoder:(NSCoder *)decoder { - self = [super initWithCoder:decoder]; - if (self) { - [self initUIModalViewController]; - } - return self; -} - -- (void)hideView { - if([self.view superview] !=nil) { - if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [self viewWillDisappear:NO]; - } - [self.view removeFromSuperview]; - if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [self viewDidDisappear:NO]; - } - } -} - -- (void)dismiss:(id)value { - if(modalDelegate != nil) - [modalDelegate modalViewDismiss:self value:value]; - - if(!dismissed) { - [self hideView]; - dismissed = true; - [self autorelease]; - } -} - -- (void)dismiss{ - if(modalDelegate != nil) - [modalDelegate modalViewDismiss:self value:nil]; - - if(!dismissed) { - [self hideView]; - dismissed = true; - [self autorelease]; - } -} - -- (void)setModalDelegate:(id)delegate { - modalDelegate = delegate; -} - -@end diff --git a/Classes/LinphoneUI/UIStateBar.xib b/Classes/LinphoneUI/UIStateBar.xib index 08f79fb0a..b25d2e859 100644 --- a/Classes/LinphoneUI/UIStateBar.xib +++ b/Classes/LinphoneUI/UIStateBar.xib @@ -3,18 +3,18 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 - IBUIImageView - IBUIView - IBUILabel IBProxyObject + IBUIImageView + IBUILabel + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -34,11 +34,11 @@ - 292 + 290 - 292 + 274 {320, 23} @@ -70,8 +70,8 @@ - 292 - {{22, 0}, {189, 20}} + 290 + {{22, 0}, {222, 20}} @@ -102,7 +102,7 @@ - 292 + 289 {{252, 3}, {27, 17}} @@ -114,11 +114,10 @@ - 292 + 289 {{287, 3}, {27, 17}} - _NS:567 1 5 @@ -139,11 +138,11 @@ - 292 + 290 - 292 + 274 {480, 23} @@ -169,8 +168,8 @@ - 292 - {{22, 0}, {189, 20}} + 290 + {{22, 0}, {382, 20}} @@ -191,7 +190,7 @@ - 292 + 289 {{412, 3}, {27, 17}} @@ -203,11 +202,10 @@ - 292 + 289 {{447, 3}, {27, 17}} - _NS:567 1 5 @@ -313,6 +311,7 @@ + Portrait View 6 @@ -355,6 +354,7 @@ + Landscape View 20 @@ -482,6 +482,6 @@ {18, 17} {640, 46} - 1181 + 1498 diff --git a/Classes/LinphoneUI/UIView+ModalStack.h b/Classes/LinphoneUI/UIView+ModalStack.h deleted file mode 100644 index c036ad7ff..000000000 --- a/Classes/LinphoneUI/UIView+ModalStack.h +++ /dev/null @@ -1,29 +0,0 @@ -/* UIView+ModalStack.h - * - * Copyright (C) 2012 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Library General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#import - -#import "UIModalViewController.h" - -@interface UIView (ModalStack) - -- (void)addModalView:(UIView*)view; -- (void)removeModalView:(UIView*)view; - -@end diff --git a/Classes/LinphoneUI/UIView+ModalStack.m b/Classes/LinphoneUI/UIView+ModalStack.m deleted file mode 100644 index 24170c292..000000000 --- a/Classes/LinphoneUI/UIView+ModalStack.m +++ /dev/null @@ -1,49 +0,0 @@ -/* UIView+ModalStack.m - * - * Copyright (C) 2012 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Library General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#import - -#import "UIView+ModalStack.h" - -@implementation UIView (ModalStack) - -- (void)addModalView:(UIView*)view { - CATransition* trans = [CATransition animation]; - [trans setType:kCATransitionFade]; - [trans setDuration:0.35]; - [trans setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; - [trans setSubtype:kCATransitionFromRight]; - [self.layer addAnimation:trans forKey:@"Appear"]; - - [self addSubview:view]; - [self bringSubviewToFront:view]; -} - -- (void)removeModalView:(UIView*)view { - CATransition* trans = [CATransition animation]; - [trans setType:kCATransitionFade]; - [trans setDuration:0.35]; - [trans setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; - [trans setSubtype:kCATransitionFromRight]; - [self.layer addAnimation:trans forKey:@"Disappear"]; - - [view removeFromSuperview]; -} - -@end diff --git a/Classes/MoreViewController.xib b/Classes/MoreViewController.xib index da9802a57..f035483ed 100644 --- a/Classes/MoreViewController.xib +++ b/Classes/MoreViewController.xib @@ -2,33 +2,31 @@ 784 - 10J567 - 823 - 1038.35 - 462.00 + 11E53 + 2549 + 1138.47 + 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 132 + 1498 - + YES - - - - + IBProxyObject + IBUIImageView + IBUILabel + IBUITableView + IBUITableViewCell + IBUITextView + IBUIViewController YES com.apple.InterfaceBuilder.IBCocoaTouchPlugin - YES - - YES - - - YES - + PluginDependencyRecalculationVersion + YES @@ -44,13 +42,14 @@ 274 - {{0, 106}, {320, 247}} + {320, 247} + 10 549453824 - {84, 1} + {512, 1} YES @@ -58,15 +57,44 @@ - TU0AKgAAAVjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ + TU0AKgAACAjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P8ADQEAAAMAAAABAFQAAAEB -AAMAAAABAAEAAAECAAMAAAAEAAAB+gEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES -AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABAAEAAAEXAAQAAAABAAABUAEcAAMAAAABAAEAAAFS -AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/wANAQAAAwAAAAECAAAAAQEAAwAAAAEAAQAAAQIAAwAAAAQAAAiqAQMAAwAA +AAEAAQAAAQYAAwAAAAEAAgAAAREABAAAAAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEABAAAARYAAwAA +AAEAAQAAARcABAAAAAEAAAgAARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAQAAAiyAAAAAAAI +AAgACAAIAAEAAQABAAE @@ -91,15 +119,15 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA 10 10 - + 1 1 IBCocoaTouchFramework NO - + 292 YES @@ -125,6 +153,15 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA 1 10 + + 1 + 17 + + + Helvetica + 17 + 16 + {300, 44} @@ -138,19 +175,17 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA {320, 44} - 1 MSAxIDEAA NO IBCocoaTouchFramework - 1 1 - + 292 YES @@ -176,6 +211,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA 1 10 + + {300, 44} @@ -189,16 +226,14 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA {320, 44} - NO IBCocoaTouchFramework - 1 1 - + 292 YES @@ -241,6 +276,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA 2 IBCocoaTouchFramework + + @@ -258,6 +295,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA 1 10 1 + + {322, 230} @@ -271,12 +310,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA {322, 230} - NO NO IBCocoaTouchFramework - 1 @@ -337,7 +374,9 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA YES 0 - + + YES + @@ -430,38 +469,32 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA YES -1.CustomClassName + -1.IBPluginDependency -2.CustomClassName - 18.IBEditorWindowLastContentRect + -2.IBPluginDependency 18.IBPluginDependency - 25.IBEditorWindowLastContentRect 25.IBPluginDependency 34.IBPluginDependency - 38.IBEditorWindowLastContentRect 38.IBPluginDependency 39.IBPluginDependency - 4.IBEditorWindowLastContentRect 4.IBPluginDependency - 42.IBEditorWindowLastContentRect 42.IBPluginDependency 43.IBPluginDependency 45.IBPluginDependency 49.IBPluginDependency - + YES MoreViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder - {{138, 864}, {320, 247}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - {{251, 502}, {320, 44}} com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - {{252, 1012}, {320, 44}} com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - {{79, 106}, {320, 480}} com.apple.InterfaceBuilder.IBCocoaTouchPlugin - {{100, 713}, {322, 230}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -471,17 +504,13 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA YES - - YES - + YES - - YES - + 50 @@ -502,7 +531,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA web weburi - + YES UITableViewCell UITableViewCell @@ -521,7 +550,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA web weburi - + YES console @@ -547,236 +576,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA IBProjectSource - Classes/MoreViewController.h - - - - - YES - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIAccessibility.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UINibLoading.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIResponder.h - - - - UIImageView - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIImageView.h - - - - UILabel - UIView - - IBFrameworkSource - UIKit.framework/Headers/UILabel.h - - - - UIResponder - NSObject - - - - UIScrollView - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIScrollView.h - - - - UISearchBar - UIView - - IBFrameworkSource - UIKit.framework/Headers/UISearchBar.h - - - - UISearchDisplayController - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UISearchDisplayController.h - - - - UITableView - UIScrollView - - IBFrameworkSource - UIKit.framework/Headers/UITableView.h - - - - UITableViewCell - UIView - - IBFrameworkSource - UIKit.framework/Headers/UITableViewCell.h - - - - UITableViewController - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UITableViewController.h - - - - UITextView - UIScrollView - - IBFrameworkSource - UIKit.framework/Headers/UITextView.h - - - - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIPrintFormatter.h - - - - UIView - - IBFrameworkSource - UIKit.framework/Headers/UITextField.h - - - - UIView - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIView.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UINavigationController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UIPopoverController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UISplitViewController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UITabBarController.h - - - - UIViewController - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIViewController.h + ./Classes/MoreViewController.h @@ -789,19 +589,18 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 YES - ../linphone.xcodeproj 3 linphone-banner.png {300, 100} - 132 + 1498 diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index 848d59da5..a67106e4e 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -21,7 +21,6 @@ #import "LinphoneManager.h" #import "UICompositeViewController.h" -#import "UIModalViewController.h" #import "FirstLoginViewController.h" #import "IncomingCallViewController.h" @@ -38,8 +37,9 @@ #import "SettingsViewController.h" #import "FirstLoginViewController.h" #import "WizardViewController.h" +#import "IncomingCallViewController.h" -@interface PhoneMainView : UIViewController { +@interface PhoneMainView : UIViewController { @private UICompositeViewController *mainViewController; @@ -59,8 +59,12 @@ - (UIViewController*)popCurrentView; - (void)popToView:(UICompositeViewDescription *)currentView; - (UICompositeViewDescription *)firstView; +- (void)showStateBar:(BOOL)show; - (void)showTabBar:(BOOL)show; - (void)fullScreen:(BOOL)enabled; +- (void)startUp; + ++ (void)forceOrientation:(UIInterfaceOrientation)orientation animated:(BOOL)animated; + (PhoneMainView*) instance; diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index c6f856a8e..7328bf269 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -20,9 +20,9 @@ #import #import +#import "LinphoneAppDelegate.h" #import "PhoneMainView.h" #import "Utils.h" -#import "UIView+ModalStack.h" static PhoneMainView* phoneMainViewInstance=nil; @@ -31,6 +31,10 @@ static PhoneMainView* phoneMainViewInstance=nil; @synthesize mainViewController; @synthesize currentView; +// TO READ +// If a Controller set wantFullScreenLayout then DON'T set the autoresize! +// So DON'T set autoresize for PhoneMainView + #pragma mark - Lifecycle Functions - (void)initPhoneMainView { @@ -86,11 +90,6 @@ static PhoneMainView* phoneMainViewInstance=nil; [super viewDidLoad]; [self.view addSubview: mainViewController.view]; - - if ([[UIDevice currentDevice].systemVersion doubleValue] >= 5.0) { - UIInterfaceOrientation interfaceOrientation = [[UIApplication sharedApplication] statusBarOrientation]; - [self willRotateToInterfaceOrientation:interfaceOrientation duration:0.2f]; - } } - (void)viewWillAppear:(BOOL)animated { @@ -117,7 +116,7 @@ static PhoneMainView* phoneMainViewInstance=nil; */ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryLevelChanged:) - name:UIDeviceBatteryLevelDidChangeNotification + name:UIDeviceBatteryLevelDidChangeNotification object:nil]; } @@ -167,7 +166,62 @@ static PhoneMainView* phoneMainViewInstance=nil; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return [mainViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation]; + if(mainViewController != nil) { + return [mainViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation]; + } else { + return YES; + } +} + +/* + Will simulate a device rotation + */ ++ (void)forceOrientation:(UIInterfaceOrientation)orientation animated:(BOOL)animated { + for(UIWindow *window in [[UIApplication sharedApplication] windows]) { + UIView *view = window; + UIViewController *controller = nil; + CGRect frame = [view frame]; + if([window isKindOfClass:[UILinphoneWindow class]]) { + controller = window.rootViewController; + view = controller.view; + } + UIInterfaceOrientation oldOrientation = controller.interfaceOrientation; + + NSTimeInterval animationDuration = 0.0; + if(animated) { + animationDuration = 0.3f; + } + [controller willRotateToInterfaceOrientation:orientation duration:animationDuration]; + if(animated) { + [UIView beginAnimations:nil context:nil]; + [UIView setAnimationDuration:animationDuration]; + } + switch (orientation) { + case UIInterfaceOrientationPortrait: + [view setTransform: CGAffineTransformMakeRotation(0)]; + break; + case UIInterfaceOrientationPortraitUpsideDown: + [view setTransform: CGAffineTransformMakeRotation(M_PI)]; + break; + case UIInterfaceOrientationLandscapeLeft: + [view setTransform: CGAffineTransformMakeRotation(-M_PI / 2)]; + break; + case UIInterfaceOrientationLandscapeRight: + [view setTransform: CGAffineTransformMakeRotation(M_PI / 2)]; + break; + default: + break; + } + if([window isKindOfClass:[UILinphoneWindow class]]) { + [view setFrame:frame]; + } + [controller willAnimateRotationToInterfaceOrientation:orientation duration:animationDuration]; + if(animated) { + [UIView commitAnimations]; + } + [controller didRotateFromInterfaceOrientation:oldOrientation]; + } + [[UIApplication sharedApplication] setStatusBarOrientation:orientation animated:TRUE]; } - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { @@ -193,6 +247,7 @@ static PhoneMainView* phoneMainViewInstance=nil; ChatModel *chat = [[notif userInfo] objectForKey:@"chat"]; if(chat != nil) { [self displayMessage:chat]; + [self updateApplicationBadgeNumber]; } } */ @@ -236,6 +291,11 @@ static PhoneMainView* phoneMainViewInstance=nil; bool canHideInCallView = (linphone_core_get_calls([LinphoneManager getLc]) == NULL); + // Don't handle call state during incoming call view + if([[self currentView] equal:[IncomingCallViewController compositeViewDescription]] && state != LinphoneCallError && state != LinphoneCallEnd) { + return; + } + switch (state) { case LinphoneCallIncomingReceived: { @@ -287,11 +347,25 @@ static PhoneMainView* phoneMainViewInstance=nil; default: break; } + [self updateApplicationBadgeNumber]; } #pragma mark - +- (void)startUp { + [self updateApplicationBadgeNumber]; // Update Badge at startup +} + +- (void)updateApplicationBadgeNumber { + int count = 0; + count += linphone_core_get_missed_calls_count([LinphoneManager getLc]); + /* MODIFICATION: Disable Chat + count += [ChatModel unreadMessages]; + */ + [[UIApplication sharedApplication] setApplicationIconBadgeNumber:count]; +} + + (CATransition*)getBackwardTransition { CATransition* trans = [CATransition animation]; [trans setType:kCATransitionPush]; @@ -355,6 +429,10 @@ static PhoneMainView* phoneMainViewInstance=nil; [mainViewController setToolBarHidden:!show]; } +- (void) showStateBar:(BOOL) show { + [mainViewController setStateBarHidden:!show]; +} + - (void)fullScreen:(BOOL) enabled { [mainViewController setFullScreen:enabled]; } @@ -536,18 +614,12 @@ static PhoneMainView* phoneMainViewInstance=nil; [[UIApplication sharedApplication] presentLocalNotificationNow:appData->notification]; } - } else { - IncomingCallViewController *controller = [[IncomingCallViewController alloc] init]; - [controller setWantsFullScreenLayout:TRUE]; - [controller setCall:call]; - [controller setModalDelegate:self]; - if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [controller viewWillAppear:NO]; - } - [[self view] addModalView:[controller view]]; - if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [controller viewDidAppear:NO]; - } + } else { + IncomingCallViewController *controller = DYNAMIC_CAST([self changeCurrentView:[IncomingCallViewController compositeViewDescription] push:TRUE],IncomingCallViewController); + if(controller != nil) { + [controller setCall:call]; + [controller setDelegate:self]; + } } } @@ -606,11 +678,17 @@ static PhoneMainView* phoneMainViewInstance=nil; } -#pragma mark - Modal Functions +#pragma mark - IncomingCallDelegate Functions -- (void)modalViewDismiss:(UIModalViewController*)controller value:(id)value { - [controller setModalDelegate:nil]; - [[self view] removeModalView:[controller view]]; +- (void)incomingCallAborted:(LinphoneCall*)call { +} + +- (void)incomingCallAccepted:(LinphoneCall*)call { + linphone_core_accept_call([LinphoneManager getLc], call); +} + +- (void)incomingCallDeclined:(LinphoneCall*)call { + linphone_core_terminate_call([LinphoneManager getLc], call); } @end \ No newline at end of file diff --git a/Classes/PhoneMainView.xib b/Classes/PhoneMainView.xib index 6ff46115c..fb81bca47 100644 --- a/Classes/PhoneMainView.xib +++ b/Classes/PhoneMainView.xib @@ -3,19 +3,19 @@ 784 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 YES - IBUIViewController + IBProxyObject IBUIImageView IBUIView - IBProxyObject + IBUIViewController YES @@ -37,7 +37,7 @@ - 274 + 301 YES @@ -68,13 +68,12 @@ IBCocoaTouchFramework - NO UICompositeViewController - 1 1 + YES IBCocoaTouchFramework NO @@ -181,7 +180,7 @@ - 216 + 217 @@ -314,6 +313,6 @@ background.png {640, 523} - 1181 + 1498 diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index a695cddb5..0ad6b0011 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -62,6 +62,34 @@ @implementation IASKSpecifierValuesViewControllerEx +- (void)initIASKSpecifierValuesViewControllerEx { + [self.view setBackgroundColor:[UIColor clearColor]]; +} + +- (id)init { + self = [super init]; + if(self != nil) { + [self initIASKSpecifierValuesViewControllerEx]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)aDecoder { + self = [super initWithCoder:aDecoder]; + if(self != nil) { + [self initIASKSpecifierValuesViewControllerEx]; + } + return self; +} + +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if(self != nil) { + [self initIASKSpecifierValuesViewControllerEx]; + } + return self; +} + - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell * cell = [super tableView:tableView cellForRowAtIndexPath:indexPath]; @@ -133,6 +161,8 @@ } - (void)initIASKAppSettingsViewControllerEx { + [self.view setBackgroundColor:[UIColor clearColor]]; + // Force kIASKSpecifierValuesViewControllerIndex static int kIASKSpecifierValuesViewControllerIndex = 0; _viewList = [[NSMutableArray alloc] init]; @@ -223,7 +253,7 @@ } - (void)drawRect:(CGRect)rect { - UIImage *img = [UIImage imageNamed:@"settings_bar_background.png"]; + UIImage *img = [UIImage imageNamed:@"toolsbar_background.png"]; [img drawInRect:rect]; } @@ -238,22 +268,18 @@ @implementation UINavigationControllerEx -+ (void)removeTableBackground:(UIView*)view { - if([view isKindOfClass:[UITableView class]]) { - [view setBackgroundColor:[UIColor clearColor]]; - } - for(UIView *subview in [view subviews]) { - [UINavigationControllerEx removeTableBackground:subview]; - } +- (id)initWithRootViewController:(UIViewController *)rootViewController { + [UINavigationControllerEx removeBackground:rootViewController.view]; + return [self initWithRootViewController:rootViewController]; } -- (id)initWithRootViewController:(UIViewController *)rootViewController { - [UINavigationControllerEx removeTableBackground:rootViewController.view]; - return [super initWithRootViewController:rootViewController]; ++ (void)removeBackground:(UIView*)view { + [view setBackgroundColor:[UIColor clearColor]]; + removeTableBackground(view); } - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { - [UINavigationControllerEx removeTableBackground:viewController.view]; + [UINavigationControllerEx removeBackground:viewController.view]; [viewController viewWillAppear:FALSE]; // Force load: Load Title UILabel *labelTitleView = [[UILabel alloc] init]; @@ -272,14 +298,14 @@ - (void)setViewControllers:(NSArray *)viewControllers { for(UIViewController *controller in viewControllers) { - [UINavigationControllerEx removeTableBackground:controller.view]; + [UINavigationControllerEx removeBackground:controller.view]; } [super setViewControllers:viewControllers]; } - (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated { for(UIViewController *controller in viewControllers) { - [UINavigationControllerEx removeTableBackground:controller.view]; + [UINavigationControllerEx removeBackground:controller.view]; } [super setViewControllers:viewControllers animated:animated]; } @@ -319,7 +345,7 @@ static UICompositeViewDescription *compositeDescription = nil; tabBar: @"UIMainBar" tabBarEnabled:true fullscreen:false - landscapeMode:false + landscapeMode:[LinphoneManager runningOnIpad] portraitMode:true]; } return compositeDescription; @@ -337,6 +363,8 @@ static UICompositeViewDescription *compositeDescription = nil; settingsController.hiddenKeys = [self findHiddenKeys]; settingsController.settingsStore = [[LinphoneManager instance] settingsStore]; + [navigationController.view setBackgroundColor:[UIColor clearColor]]; + navigationController.view.frame = self.view.frame; [navigationController pushViewController:settingsController animated:FALSE]; [self.view addSubview: navigationController.view]; diff --git a/Classes/SettingsViewController.xib b/Classes/SettingsViewController.xib index f4b4552a1..09f4282f4 100644 --- a/Classes/SettingsViewController.xib +++ b/Classes/SettingsViewController.xib @@ -40,7 +40,6 @@ {320, 460} - _NS:9 3 diff --git a/Classes/Utils/NinePatch/NinePatch.xcodeproj/project.pbxproj b/Classes/Utils/NinePatch/NinePatch.xcodeproj/project.pbxproj index b135d02b2..8cd815711 100755 --- a/Classes/Utils/NinePatch/NinePatch.xcodeproj/project.pbxproj +++ b/Classes/Utils/NinePatch/NinePatch.xcodeproj/project.pbxproj @@ -269,12 +269,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - armv6, - "$(ARCHS_STANDARD_32_BIT)", - ); COPY_PHASE_STRIP = NO; - DSTROOT = /tmp/NinePatch.dst; GCC_DYNAMIC_NO_PIC = NO; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; @@ -282,11 +277,8 @@ GCC_PREFIX_HEADER = NinePatch_Prefix.pch; GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - INSTALL_PATH = /usr/local/lib; IPHONEOS_DEPLOYMENT_TARGET = 4.0; - ONLY_ACTIVE_ARCH = NO; PRODUCT_NAME = NinePatch; - SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -296,23 +288,15 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - armv6, - "$(ARCHS_STANDARD_32_BIT)", - ); COPY_PHASE_STRIP = NO; - DSTROOT = /tmp/NinePatch.dst; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = s; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = NinePatch_Prefix.pch; GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - INSTALL_PATH = /usr/local/lib; IPHONEOS_DEPLOYMENT_TARGET = 4.0; - ONLY_ACTIVE_ARCH = NO; PRODUCT_NAME = NinePatch; - SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -321,12 +305,16 @@ 1DEB922308733DC00010E9CD /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); CODE_SIGN_IDENTITY = "Don't Code Sign"; GCC_C_LANGUAGE_STANDARD = c99; GCC_OPTIMIZATION_LEVEL = 0; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; + ONLY_ACTIVE_ARCH = NO; OTHER_LDFLAGS = "-ObjC"; PROVISIONING_PROFILE = ""; SDKROOT = iphoneos; @@ -336,12 +324,15 @@ 1DEB922408733DC00010E9CD /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); CODE_SIGN_IDENTITY = "Don't Code Sign"; GCC_C_LANGUAGE_STANDARD = c99; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; - ONLY_ACTIVE_ARCH = YES; + ONLY_ACTIVE_ARCH = NO; OTHER_LDFLAGS = "-ObjC"; PROVISIONING_PROFILE = ""; SDKROOT = iphoneos; @@ -351,12 +342,15 @@ D3D14E7E15A72BD10074A527 /* Distribution */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); CODE_SIGN_IDENTITY = "Don't Code Sign"; GCC_C_LANGUAGE_STANDARD = c99; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; - ONLY_ACTIVE_ARCH = YES; + ONLY_ACTIVE_ARCH = NO; OTHER_LDFLAGS = "-ObjC"; PROVISIONING_PROFILE = ""; SDKROOT = iphoneos; @@ -367,23 +361,15 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - armv6, - "$(ARCHS_STANDARD_32_BIT)", - ); COPY_PHASE_STRIP = NO; - DSTROOT = /tmp/NinePatch.dst; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = s; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = NinePatch_Prefix.pch; GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - INSTALL_PATH = /usr/local/lib; IPHONEOS_DEPLOYMENT_TARGET = 4.0; - ONLY_ACTIVE_ARCH = NO; PRODUCT_NAME = NinePatch; - SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -392,12 +378,15 @@ D3D14E8015A72BD70074A527 /* DistributionAdhoc */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); CODE_SIGN_IDENTITY = "Don't Code Sign"; GCC_C_LANGUAGE_STANDARD = c99; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; - ONLY_ACTIVE_ARCH = YES; + ONLY_ACTIVE_ARCH = NO; OTHER_LDFLAGS = "-ObjC"; PROVISIONING_PROFILE = ""; SDKROOT = iphoneos; @@ -408,23 +397,15 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - armv6, - "$(ARCHS_STANDARD_32_BIT)", - ); COPY_PHASE_STRIP = NO; - DSTROOT = /tmp/NinePatch.dst; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = s; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = NinePatch_Prefix.pch; GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - INSTALL_PATH = /usr/local/lib; IPHONEOS_DEPLOYMENT_TARGET = 4.0; - ONLY_ACTIVE_ARCH = NO; PRODUCT_NAME = NinePatch; - SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; diff --git a/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.h b/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.h deleted file mode 100755 index 262c841c6..000000000 --- a/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// TPKeyboardAvoidingScrollView.h -// -// Created by Michael Tyson on 11/04/2011. -// Copyright 2011 A Tasty Pixel. All rights reserved. -// - -@interface TPKeyboardAvoidingScrollView : UIScrollView { - UIEdgeInsets _priorInset; - BOOL _priorInsetSaved; - BOOL _keyboardVisible; - CGRect _keyboardRect; - CGSize _originalContentSize; -} - -- (void)adjustOffsetToIdealIfNeeded; -@end diff --git a/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.m b/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.m deleted file mode 100755 index ee0372065..000000000 --- a/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.m +++ /dev/null @@ -1,186 +0,0 @@ -// -// TPKeyboardAvoidingScrollView.m -// -// Created by Michael Tyson on 11/04/2011. -// Copyright 2011 A Tasty Pixel. All rights reserved. -// - -#import "TPKeyboardAvoidingScrollView.h" - -#define _UIKeyboardFrameEndUserInfoKey (&UIKeyboardFrameEndUserInfoKey != NULL ? UIKeyboardFrameEndUserInfoKey : @"UIKeyboardBoundsUserInfoKey") - -@interface TPKeyboardAvoidingScrollView () -- (UIView*)findFirstResponderBeneathView:(UIView*)view; -- (UIEdgeInsets)contentInsetForKeyboard; -- (CGFloat)idealOffsetForView:(UIView *)view withSpace:(CGFloat)space; -- (CGRect)keyboardRect; -@end - -@implementation TPKeyboardAvoidingScrollView - -- (void)setup { - _priorInsetSaved = NO; - if ( CGSizeEqualToSize(self.contentSize, CGSizeZero) ) { - self.contentSize = self.bounds.size; - } - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; -} - --(id)initWithFrame:(CGRect)frame { - if ( !(self = [super initWithFrame:frame]) ) return nil; - [self setup]; - return self; -} - --(void)awakeFromNib { - [self setup]; -} - --(void)dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; -#if !__has_feature(objc_arc) - [super dealloc]; -#endif -} - --(void)setFrame:(CGRect)frame { - [super setFrame:frame]; - - CGSize contentSize = _originalContentSize; - contentSize.width = MAX(contentSize.width, self.frame.size.width); - contentSize.height = MAX(contentSize.height, self.frame.size.height); - [super setContentSize:contentSize]; - - if ( _keyboardVisible ) { - self.contentInset = [self contentInsetForKeyboard]; - } -} - --(void)setContentSize:(CGSize)contentSize { - _originalContentSize = contentSize; - - contentSize.width = MAX(contentSize.width, self.frame.size.width); - contentSize.height = MAX(contentSize.height, self.frame.size.height); - [super setContentSize:contentSize]; - - if ( _keyboardVisible ) { - self.contentInset = [self contentInsetForKeyboard]; - } -} - -- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { - [[self findFirstResponderBeneathView:self] resignFirstResponder]; - [super touchesEnded:touches withEvent:event]; -} - -- (void)keyboardWillShow:(NSNotification*)notification { - _keyboardRect = [[[notification userInfo] objectForKey:_UIKeyboardFrameEndUserInfoKey] CGRectValue]; - _keyboardVisible = YES; - - UIView *firstResponder = [self findFirstResponderBeneathView:self]; - if ( !firstResponder ) { - // No child view is the first responder - nothing to do here - return; - } - - if (!_priorInsetSaved) { - _priorInset = self.contentInset; - _priorInsetSaved = YES; - } - - // Shrink view's inset by the keyboard's height, and scroll to show the text field/view being edited - [UIView beginAnimations:nil context:NULL]; - [UIView setAnimationCurve:[[[notification userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]]; - [UIView setAnimationDuration:[[[notification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue]]; - - self.contentInset = [self contentInsetForKeyboard]; - [self setContentOffset:CGPointMake(self.contentOffset.x, - [self idealOffsetForView:firstResponder withSpace:[self keyboardRect].origin.y - self.bounds.origin.y]) - animated:YES]; - [self setScrollIndicatorInsets:self.contentInset]; - - [UIView commitAnimations]; -} - -- (void)keyboardWillHide:(NSNotification*)notification { - _keyboardRect = CGRectZero; - _keyboardVisible = NO; - - // Restore dimensions to prior size - [UIView beginAnimations:nil context:NULL]; - [UIView setAnimationCurve:[[[notification userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]]; - [UIView setAnimationDuration:[[[notification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue]]; - self.contentInset = _priorInset; - [self setScrollIndicatorInsets:self.contentInset]; - _priorInsetSaved = NO; - [UIView commitAnimations]; -} - -- (UIView*)findFirstResponderBeneathView:(UIView*)view { - // Search recursively for first responder - for ( UIView *childView in view.subviews ) { - if ( [childView respondsToSelector:@selector(isFirstResponder)] && [childView isFirstResponder] ) return childView; - UIView *result = [self findFirstResponderBeneathView:childView]; - if ( result ) return result; - } - return nil; -} - -- (UIEdgeInsets)contentInsetForKeyboard { - UIEdgeInsets newInset = self.contentInset; - CGRect keyboardRect = [self keyboardRect]; - newInset.bottom = keyboardRect.size.height - ((keyboardRect.origin.y+keyboardRect.size.height) - (self.bounds.origin.y+self.bounds.size.height)); - return newInset; -} - --(CGFloat)idealOffsetForView:(UIView *)view withSpace:(CGFloat)space { - - // Convert the rect to get the view's distance from the top of the scrollView. - CGRect rect = [view convertRect:view.bounds toView:self]; - - // Set starting offset to that point - CGFloat offset = rect.origin.y; - - - if ( self.contentSize.height - offset < space ) { - // Scroll to the bottom - offset = self.contentSize.height - space; - } else { - if ( view.bounds.size.height < space ) { - // Center vertically if there's room - offset -= floor((space-view.bounds.size.height)/2.0); - } - if ( offset + space > self.contentSize.height ) { - // Clamp to content size - offset = self.contentSize.height - space; - } - } - - if (offset < 0) offset = 0; - - return offset; -} - --(void)adjustOffsetToIdealIfNeeded { - - // Only do this if the keyboard is already visible - if ( !_keyboardVisible ) return; - - CGFloat visibleSpace = self.bounds.size.height - self.contentInset.top - self.contentInset.bottom; - - CGPoint idealOffset = CGPointMake(0, [self idealOffsetForView:[self findFirstResponderBeneathView:self] withSpace:visibleSpace]); - - [self setContentOffset:idealOffset animated:YES]; -} - -- (CGRect)keyboardRect { - CGRect keyboardRect = [self convertRect:_keyboardRect fromView:nil]; - if ( keyboardRect.origin.y == 0 ) { - CGRect screenBounds = [self convertRect:[UIScreen mainScreen].bounds fromView:nil]; - keyboardRect.origin = CGPointMake(0, screenBounds.size.height - keyboardRect.size.height); - } - return keyboardRect; -} - -@end diff --git a/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.h b/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.h deleted file mode 100755 index 7485c6005..000000000 --- a/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// TPKeyboardAvoidingTableView.h -// -// Created by Michael Tyson on 11/04/2011. -// Copyright 2011 A Tasty Pixel. All rights reserved. -// - -@interface TPKeyboardAvoidingTableView : UITableView { - UIEdgeInsets _priorInset; - BOOL _priorInsetSaved; - BOOL _keyboardVisible; - CGRect _keyboardRect; -} - -- (void)adjustOffsetToIdealIfNeeded; -@end diff --git a/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.m b/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.m deleted file mode 100755 index 9eea88c74..000000000 --- a/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.m +++ /dev/null @@ -1,173 +0,0 @@ -// -// TPKeyboardAvoidingTableView.m -// -// Created by Michael Tyson on 11/04/2011. -// Copyright 2011 A Tasty Pixel. All rights reserved. -// - -#import "TPKeyboardAvoidingTableView.h" - -#define _UIKeyboardFrameEndUserInfoKey (&UIKeyboardFrameEndUserInfoKey != NULL ? UIKeyboardFrameEndUserInfoKey : @"UIKeyboardBoundsUserInfoKey") - -@interface TPKeyboardAvoidingTableView () -- (UIView*)findFirstResponderBeneathView:(UIView*)view; -- (UIEdgeInsets)contentInsetForKeyboard; -- (CGFloat)idealOffsetForView:(UIView *)view withSpace:(CGFloat)space; -- (CGRect)keyboardRect; -@end - -@implementation TPKeyboardAvoidingTableView - -- (void)setup { - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; -} - --(id)initWithFrame:(CGRect)frame { - if ( !(self = [super initWithFrame:frame]) ) return nil; - [self setup]; - return self; -} - --(id)initWithCoder:(NSCoder *)aDecoder { - if ( !(self = [super initWithCoder:aDecoder]) ) return nil; - [self setup]; - return self; -} - --(void)dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; -#if !__has_feature(objc_arc) - [super dealloc]; -#endif -} - --(void)setFrame:(CGRect)frame { - [super setFrame:frame]; - if ( _keyboardVisible ) { - self.contentInset = [self contentInsetForKeyboard]; - } -} - --(void)setContentSize:(CGSize)contentSize { - [super setContentSize:contentSize]; - if ( _keyboardVisible ) { - self.contentInset = [self contentInsetForKeyboard]; - } -} - -- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { - [[self findFirstResponderBeneathView:self] resignFirstResponder]; - [super touchesEnded:touches withEvent:event]; -} - -- (void)keyboardWillShow:(NSNotification*)notification { - _keyboardRect = [[[notification userInfo] objectForKey:_UIKeyboardFrameEndUserInfoKey] CGRectValue]; - _keyboardVisible = YES; - - UIView *firstResponder = [self findFirstResponderBeneathView:self]; - if ( !firstResponder ) { - // No child view is the first responder - nothing to do here - return; - } - - if (!_priorInsetSaved) { - _priorInset = self.contentInset; - _priorInsetSaved = YES; - } - - // Shrink view's inset by the keyboard's height, and scroll to show the text field/view being edited - [UIView beginAnimations:nil context:NULL]; - [UIView setAnimationCurve:[[[notification userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]]; - [UIView setAnimationDuration:[[[notification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue]]; - - self.contentInset = [self contentInsetForKeyboard]; - [self setContentOffset:CGPointMake(self.contentOffset.x, - [self idealOffsetForView:firstResponder withSpace:[self keyboardRect].origin.y - self.bounds.origin.y]) - animated:YES]; - [self setScrollIndicatorInsets:self.contentInset]; - - [UIView commitAnimations]; -} - -- (void)keyboardWillHide:(NSNotification*)notification { - _keyboardRect = CGRectZero; - _keyboardVisible = NO; - - // Restore dimensions to prior size - [UIView beginAnimations:nil context:NULL]; - [UIView setAnimationCurve:[[[notification userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]]; - [UIView setAnimationDuration:[[[notification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue]]; - self.contentInset = _priorInset; - [self setScrollIndicatorInsets:self.contentInset]; - _priorInsetSaved = NO; - [UIView commitAnimations]; -} - -- (UIView*)findFirstResponderBeneathView:(UIView*)view { - // Search recursively for first responder - for ( UIView *childView in view.subviews ) { - if ( [childView respondsToSelector:@selector(isFirstResponder)] && [childView isFirstResponder] ) return childView; - UIView *result = [self findFirstResponderBeneathView:childView]; - if ( result ) return result; - } - return nil; -} - -- (UIEdgeInsets)contentInsetForKeyboard { - UIEdgeInsets newInset = self.contentInset; - CGRect keyboardRect = [self keyboardRect]; - newInset.bottom = keyboardRect.size.height - ((keyboardRect.origin.y+keyboardRect.size.height) - (self.bounds.origin.y+self.bounds.size.height)); - return newInset; -} - --(CGFloat)idealOffsetForView:(UIView *)view withSpace:(CGFloat)space { - - // Convert the rect to get the view's distance from the top of the scrollView. - CGRect rect = [view convertRect:view.bounds toView:self]; - - // Set starting offset to that point - CGFloat offset = rect.origin.y; - - - if ( self.contentSize.height - offset < space ) { - // Scroll to the bottom - offset = self.contentSize.height - space; - } else { - if ( view.bounds.size.height < space ) { - // Center vertically if there's room - offset -= floor((space-view.bounds.size.height)/2.0); - } - if ( offset + space > self.contentSize.height ) { - // Clamp to content size - offset = self.contentSize.height - space; - } - } - - if (offset < 0) offset = 0; - - return offset; -} - --(void)adjustOffsetToIdealIfNeeded { - - // Only do this if the keyboard is already visible - if ( !_keyboardVisible ) return; - - CGFloat visibleSpace = self.bounds.size.height - self.contentInset.top - self.contentInset.bottom; - - CGPoint idealOffset = CGPointMake(0, [self idealOffsetForView:[self findFirstResponderBeneathView:self] withSpace:visibleSpace]); - - [self setContentOffset:idealOffset animated:YES]; -} - -- (CGRect)keyboardRect { - CGRect keyboardRect = [self convertRect:_keyboardRect fromView:nil]; - if ( keyboardRect.origin.y == 0 ) { - CGRect screenBounds = [self convertRect:[UIScreen mainScreen].bounds fromView:nil]; - keyboardRect.origin = CGPointMake(0, screenBounds.size.height - keyboardRect.size.height); - } - return keyboardRect; -} - -@end diff --git a/Classes/Utils/XMLRPC/Configurations/Common.xcconfig b/Classes/Utils/XMLRPC/Configurations/Common.xcconfig new file mode 100755 index 000000000..e036134b0 --- /dev/null +++ b/Classes/Utils/XMLRPC/Configurations/Common.xcconfig @@ -0,0 +1,12 @@ +RUN_CLANG_STATIC_ANALYZER = YES + +GCC_C_LANGUAGE_STANDARD = gnu99 +GCC_PRECOMPILE_PREFIX_HEADER = YES +GCC_MODEL_TUNING = G5 + +GCC_WARN_ABOUT_MISSING_NEWLINE = YES +GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = YES +GCC_WARN_ABOUT_RETURN_TYPE = YES +GCC_WARN_UNUSED_VARIABLE = YES +GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO +GCC_TREAT_WARNINGS_AS_ERRORS = YES diff --git a/Classes/Utils/XMLRPC/Configurations/CommonDevelopment.xcconfig b/Classes/Utils/XMLRPC/Configurations/CommonDevelopment.xcconfig new file mode 100755 index 000000000..fd2066210 --- /dev/null +++ b/Classes/Utils/XMLRPC/Configurations/CommonDevelopment.xcconfig @@ -0,0 +1,6 @@ +#include "Common.xcconfig" + +DEBUG_INFORMATION_FORMAT = dwarf + +GCC_DYNAMIC_NO_PIC = NO +GCC_OPTIMIZATION_LEVEL = 0 diff --git a/Classes/Utils/XMLRPC/Configurations/CommonRelease.xcconfig b/Classes/Utils/XMLRPC/Configurations/CommonRelease.xcconfig new file mode 100755 index 000000000..54ace760e --- /dev/null +++ b/Classes/Utils/XMLRPC/Configurations/CommonRelease.xcconfig @@ -0,0 +1,3 @@ +#include "Common.xcconfig" + +DEBUG_INFORMATION_FORMAT = dwarf-with-dsym diff --git a/Classes/Utils/XMLRPC/Configurations/XMLRPC.xcconfig b/Classes/Utils/XMLRPC/Configurations/XMLRPC.xcconfig new file mode 100755 index 000000000..a4cc02a92 --- /dev/null +++ b/Classes/Utils/XMLRPC/Configurations/XMLRPC.xcconfig @@ -0,0 +1,12 @@ +PRODUCT_NAME = XMLRPC +INFOPLIST_FILE = Resources/Property Lists/XMLRPC-Info.plist + +FRAMEWORK_VERSION = A +DYLIB_CURRENT_VERSION = 1 +DYLIB_COMPATIBILITY_VERSION = 1 + +GCC_PRECOMPILE_PREFIX_HEADER = YES +GCC_PREFIX_HEADER = XMLRPC.pch +GCC_ENABLE_OBJC_GC = supported + +INSTALL_PATH = @loader_path/../Frameworks diff --git a/Classes/Utils/XMLRPC/Configurations/XMLRPCDevelopment.xcconfig b/Classes/Utils/XMLRPC/Configurations/XMLRPCDevelopment.xcconfig new file mode 100755 index 000000000..399d47fff --- /dev/null +++ b/Classes/Utils/XMLRPC/Configurations/XMLRPCDevelopment.xcconfig @@ -0,0 +1,2 @@ +#include "XMLRPC.xcconfig" +#include "CommonDevelopment.xcconfig" diff --git a/Classes/Utils/XMLRPC/Configurations/XMLRPCRelease.xcconfig b/Classes/Utils/XMLRPC/Configurations/XMLRPCRelease.xcconfig new file mode 100755 index 000000000..5a87b922d --- /dev/null +++ b/Classes/Utils/XMLRPC/Configurations/XMLRPCRelease.xcconfig @@ -0,0 +1,2 @@ +#include "XMLRPC.xcconfig" +#include "CommonRelease.xcconfig" diff --git a/Classes/Utils/XMLRPC/Configurations/XMLRPCUnitTests.xcconfig b/Classes/Utils/XMLRPC/Configurations/XMLRPCUnitTests.xcconfig new file mode 100755 index 000000000..b4c830f44 --- /dev/null +++ b/Classes/Utils/XMLRPC/Configurations/XMLRPCUnitTests.xcconfig @@ -0,0 +1,7 @@ +PRODUCT_NAME = XMLRPCUnitTests +INFOPLIST_FILE = Resources/Property Lists/XMLRPCUnitTests-Info.plist + +WRAPPER_EXTENSION=octest + +GCC_PRECOMPILE_PREFIX_HEADER = YES +GCC_PREFIX_HEADER = XMLRPC.pch diff --git a/Classes/Utils/XMLRPC/Configurations/XMLRPCUnitTestsDevelopment.xcconfig b/Classes/Utils/XMLRPC/Configurations/XMLRPCUnitTestsDevelopment.xcconfig new file mode 100755 index 000000000..b7ffa9c43 --- /dev/null +++ b/Classes/Utils/XMLRPC/Configurations/XMLRPCUnitTestsDevelopment.xcconfig @@ -0,0 +1,2 @@ +#include "XMLRPCUnitTests.xcconfig" +#include "CommonDevelopment.xcconfig" diff --git a/Classes/Utils/XMLRPC/Configurations/XMLRPCUnitTestsRelease.xcconfig b/Classes/Utils/XMLRPC/Configurations/XMLRPCUnitTestsRelease.xcconfig new file mode 100755 index 000000000..1c1b03264 --- /dev/null +++ b/Classes/Utils/XMLRPC/Configurations/XMLRPCUnitTestsRelease.xcconfig @@ -0,0 +1,2 @@ +#include "XMLRPCUnitTests.xcconfig" +#include "CommonRelease.xcconfig" diff --git a/Classes/Utils/XMLRPC/LICENSE.md b/Classes/Utils/XMLRPC/LICENSE.md new file mode 100755 index 000000000..63faaeb29 --- /dev/null +++ b/Classes/Utils/XMLRPC/LICENSE.md @@ -0,0 +1,23 @@ +# License + +## The Cocoa XML-RPC Framework is distributed under the MIT License: + +Copyright (c) 2012 Eric Czarny + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Classes/Utils/XMLRPC/Languages/English.lproj/InfoPlist.strings b/Classes/Utils/XMLRPC/Languages/English.lproj/InfoPlist.strings new file mode 100755 index 000000000..0bddbc344 Binary files /dev/null and b/Classes/Utils/XMLRPC/Languages/English.lproj/InfoPlist.strings differ diff --git a/Classes/Utils/XMLRPC/NSData+Base64.h b/Classes/Utils/XMLRPC/NSData+Base64.h new file mode 100755 index 000000000..118c4e17d --- /dev/null +++ b/Classes/Utils/XMLRPC/NSData+Base64.h @@ -0,0 +1,42 @@ +// +// NSData+Base64.h +// base64 +// +// Created by Matt Gallagher on 2009/06/03. +// Copyright 2009 Matt Gallagher. All rights reserved. +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. Permission is granted to anyone to +// use this software for any purpose, including commercial applications, and to +// alter it and redistribute it freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source +// distribution. +// + +#import + +void *NewBase64Decode( + const char *inputBuffer, + size_t length, + size_t *outputLength); + +char *NewBase64Encode( + const void *inputBuffer, + size_t length, + bool separateLines, + size_t *outputLength); + +@interface NSData (Base64) + ++ (NSData *)dataFromBase64String:(NSString *)aString; +- (NSString *)base64EncodedString; + +@end diff --git a/Classes/Utils/XMLRPC/NSData+Base64.m b/Classes/Utils/XMLRPC/NSData+Base64.m new file mode 100755 index 000000000..4e6bb74c0 --- /dev/null +++ b/Classes/Utils/XMLRPC/NSData+Base64.m @@ -0,0 +1,313 @@ +// +// NSData+Base64.m +// base64 +// +// Created by Matt Gallagher on 2009/06/03. +// Copyright 2009 Matt Gallagher. All rights reserved. +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. Permission is granted to anyone to +// use this software for any purpose, including commercial applications, and to +// alter it and redistribute it freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source +// distribution. +// + +#import "NSData+Base64.h" + +// +// Mapping from 6 bit pattern to ASCII character. +// +static unsigned char base64EncodeLookup[65] = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + +// +// Definition for "masked-out" areas of the base64DecodeLookup mapping +// +#define xx 65 + +// +// Mapping from ASCII character to 6 bit pattern. +// +static unsigned char base64DecodeLookup[256] = +{ + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, 62, xx, xx, xx, 63, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, xx, xx, xx, xx, xx, xx, + xx, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, xx, xx, xx, xx, xx, + xx, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, xx, xx, xx, xx, xx, + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, +}; + +// +// Fundamental sizes of the binary and base64 encode/decode units in bytes +// +#define BINARY_UNIT_SIZE 3 +#define BASE64_UNIT_SIZE 4 + +// +// NewBase64Decode +// +// Decodes the base64 ASCII string in the inputBuffer to a newly malloced +// output buffer. +// +// inputBuffer - the source ASCII string for the decode +// length - the length of the string or -1 (to specify strlen should be used) +// outputLength - if not-NULL, on output will contain the decoded length +// +// returns the decoded buffer. Must be free'd by caller. Length is given by +// outputLength. +// +void *NewBase64Decode( + const char *inputBuffer, + size_t length, + size_t *outputLength) +{ + if (length == -1) + { + length = strlen(inputBuffer); + } + + size_t outputBufferSize = + ((length+BASE64_UNIT_SIZE-1) / BASE64_UNIT_SIZE) * BINARY_UNIT_SIZE; + unsigned char *outputBuffer = (unsigned char *)malloc(outputBufferSize); + + size_t i = 0; + size_t j = 0; + while (i < length) + { + // + // Accumulate 4 valid characters (ignore everything else) + // + unsigned char accumulated[BASE64_UNIT_SIZE]; + size_t accumulateIndex = 0; + while (i < length) + { + unsigned char decode = base64DecodeLookup[inputBuffer[i++]]; + if (decode != xx) + { + accumulated[accumulateIndex] = decode; + accumulateIndex++; + + if (accumulateIndex == BASE64_UNIT_SIZE) + { + break; + } + } + } + + // + // Store the 6 bits from each of the 4 characters as 3 bytes + // + // (Uses improved bounds checking suggested by Alexandre Colucci) + // + if(accumulateIndex >= 2) + outputBuffer[j] = (accumulated[0] << 2) | (accumulated[1] >> 4); + if(accumulateIndex >= 3) + outputBuffer[j + 1] = (accumulated[1] << 4) | (accumulated[2] >> 2); + if(accumulateIndex >= 4) + outputBuffer[j + 2] = (accumulated[2] << 6) | accumulated[3]; + j += accumulateIndex - 1; + } + + if (outputLength) + { + *outputLength = j; + } + return outputBuffer; +} + +// +// NewBase64Encode +// +// Encodes the arbitrary data in the inputBuffer as base64 into a newly malloced +// output buffer. +// +// inputBuffer - the source data for the encode +// length - the length of the input in bytes +// separateLines - if zero, no CR/LF characters will be added. Otherwise +// a CR/LF pair will be added every 64 encoded chars. +// outputLength - if not-NULL, on output will contain the encoded length +// (not including terminating 0 char) +// +// returns the encoded buffer. Must be free'd by caller. Length is given by +// outputLength. +// +char *NewBase64Encode( + const void *buffer, + size_t length, + bool separateLines, + size_t *outputLength) +{ + const unsigned char *inputBuffer = (const unsigned char *)buffer; + + #define MAX_NUM_PADDING_CHARS 2 + #define OUTPUT_LINE_LENGTH 64 + #define INPUT_LINE_LENGTH ((OUTPUT_LINE_LENGTH / BASE64_UNIT_SIZE) * BINARY_UNIT_SIZE) + #define CR_LF_SIZE 2 + + // + // Byte accurate calculation of final buffer size + // + size_t outputBufferSize = + ((length / BINARY_UNIT_SIZE) + + ((length % BINARY_UNIT_SIZE) ? 1 : 0)) + * BASE64_UNIT_SIZE; + if (separateLines) + { + outputBufferSize += + (outputBufferSize / OUTPUT_LINE_LENGTH) * CR_LF_SIZE; + } + + // + // Include space for a terminating zero + // + outputBufferSize += 1; + + // + // Allocate the output buffer + // + char *outputBuffer = (char *)malloc(outputBufferSize); + if (!outputBuffer) + { + return NULL; + } + + size_t i = 0; + size_t j = 0; + const size_t lineLength = separateLines ? INPUT_LINE_LENGTH : length; + size_t lineEnd = lineLength; + + while (true) + { + if (lineEnd > length) + { + lineEnd = length; + } + + for (; i + BINARY_UNIT_SIZE - 1 < lineEnd; i += BINARY_UNIT_SIZE) + { + // + // Inner loop: turn 48 bytes into 64 base64 characters + // + outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2]; + outputBuffer[j++] = base64EncodeLookup[((inputBuffer[i] & 0x03) << 4) + | ((inputBuffer[i + 1] & 0xF0) >> 4)]; + outputBuffer[j++] = base64EncodeLookup[((inputBuffer[i + 1] & 0x0F) << 2) + | ((inputBuffer[i + 2] & 0xC0) >> 6)]; + outputBuffer[j++] = base64EncodeLookup[inputBuffer[i + 2] & 0x3F]; + } + + if (lineEnd == length) + { + break; + } + + // + // Add the newline + // + outputBuffer[j++] = '\r'; + outputBuffer[j++] = '\n'; + lineEnd += lineLength; + } + + if (i + 1 < length) + { + // + // Handle the single '=' case + // + outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2]; + outputBuffer[j++] = base64EncodeLookup[((inputBuffer[i] & 0x03) << 4) + | ((inputBuffer[i + 1] & 0xF0) >> 4)]; + outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i + 1] & 0x0F) << 2]; + outputBuffer[j++] = '='; + } + else if (i < length) + { + // + // Handle the double '=' case + // + outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2]; + outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i] & 0x03) << 4]; + outputBuffer[j++] = '='; + outputBuffer[j++] = '='; + } + outputBuffer[j] = 0; + + // + // Set the output length and return the buffer + // + if (outputLength) + { + *outputLength = j; + } + return outputBuffer; +} + +@implementation NSData (Base64) + +// +// dataFromBase64String: +// +// Creates an NSData object containing the base64 decoded representation of +// the base64 string 'aString' +// +// Parameters: +// aString - the base64 string to decode +// +// returns the autoreleased NSData representation of the base64 string +// ++ (NSData *)dataFromBase64String:(NSString *)aString +{ + NSData *data = [aString dataUsingEncoding:NSASCIIStringEncoding]; + size_t outputLength; + void *outputBuffer = NewBase64Decode([data bytes], [data length], &outputLength); + NSData *result = [NSData dataWithBytes:outputBuffer length:outputLength]; + free(outputBuffer); + return result; +} + +// +// base64EncodedString +// +// Creates an NSString object that contains the base 64 encoding of the +// receiver's data. Lines are broken at 64 characters long. +// +// returns an autoreleased NSString being the base 64 representation of the +// receiver. +// +- (NSString *)base64EncodedString +{ + size_t outputLength = 0; + char *outputBuffer = + NewBase64Encode([self bytes], [self length], true, &outputLength); + + NSString *result =[[NSString alloc] initWithBytes:outputBuffer + length:outputLength + encoding:NSASCIIStringEncoding]; +#if ! __has_feature(objc_arc) + [result autorelease]; +#endif + free(outputBuffer); + return result; +} + +@end diff --git a/Classes/Utils/XMLRPC/NSStringAdditions.h b/Classes/Utils/XMLRPC/NSStringAdditions.h new file mode 100755 index 000000000..26f0937bd --- /dev/null +++ b/Classes/Utils/XMLRPC/NSStringAdditions.h @@ -0,0 +1,13 @@ +#import + +@interface NSString (NSStringAdditions) + ++ (NSString *)stringByGeneratingUUID; + +#pragma mark - + +- (NSString *)unescapedString; + +- (NSString *)escapedString; + +@end diff --git a/Classes/Utils/XMLRPC/NSStringAdditions.m b/Classes/Utils/XMLRPC/NSStringAdditions.m new file mode 100755 index 000000000..9c728b79f --- /dev/null +++ b/Classes/Utils/XMLRPC/NSStringAdditions.m @@ -0,0 +1,46 @@ +#import "NSStringAdditions.h" + +@implementation NSString (NSStringAdditions) + ++ (NSString *)stringByGeneratingUUID { + CFUUIDRef UUIDReference = CFUUIDCreate(nil); + CFStringRef temporaryUUIDString = CFUUIDCreateString(nil, UUIDReference); + + CFRelease(UUIDReference); +#if ! __has_feature(objc_arc) + return [NSMakeCollectable(temporaryUUIDString) autorelease]; +#else + return (__bridge_transfer NSString*)temporaryUUIDString; +#endif +} + +#pragma mark - + +- (NSString *)unescapedString { + NSMutableString *string = [NSMutableString stringWithString: self]; + + [string replaceOccurrencesOfString: @"&" withString: @"&" options: NSLiteralSearch range: NSMakeRange(0, [string length])]; + [string replaceOccurrencesOfString: @""" withString: @"\"" options: NSLiteralSearch range: NSMakeRange(0, [string length])]; + [string replaceOccurrencesOfString: @"'" withString: @"'" options: NSLiteralSearch range: NSMakeRange(0, [string length])]; + [string replaceOccurrencesOfString: @"9" withString: @"'" options: NSLiteralSearch range: NSMakeRange(0, [string length])]; + [string replaceOccurrencesOfString: @"’" withString: @"'" options: NSLiteralSearch range: NSMakeRange(0, [string length])]; + [string replaceOccurrencesOfString: @"–" withString: @"'" options: NSLiteralSearch range: NSMakeRange(0, [string length])]; + [string replaceOccurrencesOfString: @">" withString: @">" options: NSLiteralSearch range: NSMakeRange(0, [string length])]; + [string replaceOccurrencesOfString: @"<" withString: @"<" options: NSLiteralSearch range: NSMakeRange(0, [string length])]; + + return [NSString stringWithString: string]; +} + +- (NSString *)escapedString { + NSMutableString *string = [NSMutableString stringWithString: self]; + + // NOTE: we use unicode entities instead of & > < etc. since some hosts (powweb, fatcow, and similar) + // have a weird PHP/libxml2 combination that ignores regular entities + [string replaceOccurrencesOfString: @"&" withString: @"&" options: NSLiteralSearch range: NSMakeRange(0, [string length])]; + [string replaceOccurrencesOfString: @">" withString: @">" options: NSLiteralSearch range: NSMakeRange(0, [string length])]; + [string replaceOccurrencesOfString: @"<" withString: @"<" options: NSLiteralSearch range: NSMakeRange(0, [string length])]; + + return [NSString stringWithString: string]; +} + +@end diff --git a/Classes/Utils/XMLRPC/README.md b/Classes/Utils/XMLRPC/README.md new file mode 100755 index 000000000..3bcc0736e --- /dev/null +++ b/Classes/Utils/XMLRPC/README.md @@ -0,0 +1,87 @@ +# The Cocoa XML-RPC Framework + +The Cocoa XML-RPC Framework is a simple, and lightweight, XML-RPC client framework written in Objective-C. + +# Requirements + +The Cocoa XML-RPC Framework has been built, and designed, for Mac OS X 10.5 or later. This release should provide basic iPhone and iPod touch support. + +This version of the Cocoa XML-RPC Framework includes a new event-based XML parser. The previous tree-based XML parser still exists, but is no longer the default XML-RPC response parser nor included in the Xcode build. This should hopefully provide better compatibility with the iPhone SDK. + +# Usage + +The following example of the Cocoa XML-RPC Framework assumes that the included XML-RPC test server is available. More information on the test server can be found in the README under: + + XMLRPC\Tools\Test Server + +Please review this document before moving forward. + +## Invoking XML-RPC requests through the XML-RPC connection manager + +Invoking an XML-RPC request through the XML-RPC connection manager is easy: + + NSURL *URL = [NSURL URLWithString: @"http://127.0.0.1:8080/"]; + XMLRPCRequest *request = [[XMLRPCRequest alloc] initWithURL: URL]; + XMLRPCConnectionManager *manager = [XMLRPCConnectionManager sharedManager]; + + [request setMethod: @"Echo.echo" withParameter: @"Hello World!"]; + + NSLog(@"Request body: %@", [request body]); + + [manager spawnConnectionWithXMLRPCRequest: request delegate: self]; + + [request release]; + +This spawns a new XML-RPC connection, assigning that connection with a unique identifer and returning it to the sender. This unique identifier, a UUID expressed as an NSString, can then be used to obtain the XML-RPC connection from the XML-RPC connection manager, as long as it is still active. + +The XML-RPC connection manager has been designed to ease the management of active XML-RPC connections. For example, the following method obtains an NSArray of active XML-RPC connection identifiers: + + - (NSArray *)activeConnectionIdentifiers; + +The NSArray returned by this method contains a list of each active connection identifier. Provided with a connection identifier, the following method will return an instance of the requested XML-RPC connection: + + - (XMLRPCConnection *)connectionForIdentifier: (NSString *)connectionIdentifier; + +Finally, for a delegate to receive XML-RPC responses, authentication challenges, or errors, the XMLRPCConnectionDelegate protocol must be implemented. For example, the following will handle successful XML-RPC responses: + + - (void)request: (XMLRPCRequest *)request didReceiveResponse: (XMLRPCResponse *)response { + if ([response isFault]) { + NSLog(@"Fault code: %@", [response faultCode]); + + NSLog(@"Fault string: %@", [response faultString]); + } else { + NSLog(@"Parsed response: %@", [response object]); + } + + NSLog(@"Response body: %@", [response body]); + } + +Refer to XMLRPCConnectionDelegate.h for a full list of methods a delegate must implement. Each of these delegate methods plays a role in the life of an active XML-RPC connection. + +## Sending synchronous XML-RPC requests + +There are situations where it may be desirable to invoke XML-RPC requests synchronously in another thread or background process. The following method declared in XMLRPCConnection.h will invoke an XML-RPC request synchronously: + + + (XMLRPCResponse *)sendSynchronousXMLRPCRequest: (XMLRPCRequest *)request error: (NSError **)error; + +If there is a problem sending the XML-RPC request expect nil to be returned. + +# What if I find a bug, or what if I want to help? + +Please, contact me with any questions, comments, suggestions, or problems. I try to make the time to answer every request. + +Those wishing to contribute to the project should begin by obtaining the latest source with Git. The project is hosted on GitHub, making it easy for anyone to make contributions. Simply create a fork and make your changes. + +# Acknowledgments + +The Base64 encoder/decoder found in NSData+Base64 is created by [Matt Gallagher](http://cocoawithlove.com/2009/06/base64-encoding-options-on-mac-and.html). + +The idea for this framework came from examples provided by Brent Simmons, the creator of NetNewsWire. + +# License + +Copyright (c) 2012 Eric Czarny. + +The Cocoa XML-RPC Framework should be accompanied by a LICENSE file, this file contains the license relevant to this distribution. + +If no LICENSE exists please contact Eric Czarny . diff --git a/Classes/Utils/XMLRPC/Resources/Property Lists/TestCases.plist b/Classes/Utils/XMLRPC/Resources/Property Lists/TestCases.plist new file mode 100755 index 000000000..65f7caf03 --- /dev/null +++ b/Classes/Utils/XMLRPC/Resources/Property Lists/TestCases.plist @@ -0,0 +1,41 @@ + + + + + AlternativeDateFormatsTestCase + + 2009-12-02T01:49:00Z + 2009-12-02T01:50:00Z + + DefaultTypeTestCase + Hello World! + EmptyBooleanTestCase + 0 + EmptyDataTestCase + + EmptyDoubleTestCase + 0 + EmptyIntegerTestCase + 0 + EmptyStringTestCase + + SimpleArrayTestCase + + Hello World! + 42 + 3.14 + 1 + 2009-07-18T21:34:00Z + eW91IGNhbid0IHJlYWQgdGhpcyE= + + SimpleStructTestCase + + Name + Eric Czarny + Birthday + 1984-04-15T05:00:00Z + Age + 25 + + + diff --git a/Classes/Utils/XMLRPC/Resources/Property Lists/XMLRPC-Info.plist b/Classes/Utils/XMLRPC/Resources/Property Lists/XMLRPC-Info.plist new file mode 100755 index 000000000..f9624ae91 --- /dev/null +++ b/Classes/Utils/XMLRPC/Resources/Property Lists/XMLRPC-Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + XMLRPC + CFBundleIdentifier + com.divisiblebyzero.XMLRPC + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + XMLRPC + CFBundlePackageType + FMWK + CFBundleSignature + ZERO + CFBundleVersion + 2.2.1 + CFBundleShortVersionString + 2.2.1 + + diff --git a/Classes/Utils/XMLRPC/Resources/Property Lists/XMLRPCUnitTests-Info.plist b/Classes/Utils/XMLRPC/Resources/Property Lists/XMLRPCUnitTests-Info.plist new file mode 100755 index 000000000..492f334bb --- /dev/null +++ b/Classes/Utils/XMLRPC/Resources/Property Lists/XMLRPCUnitTests-Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleIdentifier + com.divisiblebyzero.XMLRPCUnitTests + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + XMLRPCUnitTests + CFBundlePackageType + BNDL + CFBundleSignature + ZERO + CFBundleVersion + 1.0 + CFBundleShortVersionString + 1.0 + + diff --git a/Classes/Utils/XMLRPC/Resources/Test Cases/AlternativeDateFormatsTestCase.xml b/Classes/Utils/XMLRPC/Resources/Test Cases/AlternativeDateFormatsTestCase.xml new file mode 100755 index 000000000..2e197f1eb --- /dev/null +++ b/Classes/Utils/XMLRPC/Resources/Test Cases/AlternativeDateFormatsTestCase.xml @@ -0,0 +1,15 @@ + + + + + + + + 20091201T20:49:00 + 2009-12-01T20:50:00 + + + + + + diff --git a/Classes/Utils/XMLRPC/Resources/Test Cases/DefaultTypeTestCase.xml b/Classes/Utils/XMLRPC/Resources/Test Cases/DefaultTypeTestCase.xml new file mode 100755 index 000000000..8375ba6d3 --- /dev/null +++ b/Classes/Utils/XMLRPC/Resources/Test Cases/DefaultTypeTestCase.xml @@ -0,0 +1,8 @@ + + + + + Hello World! + + + diff --git a/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyBooleanTestCase.xml b/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyBooleanTestCase.xml new file mode 100755 index 000000000..dd0a4f980 --- /dev/null +++ b/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyBooleanTestCase.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyDataTestCase.xml b/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyDataTestCase.xml new file mode 100755 index 000000000..a055d2d57 --- /dev/null +++ b/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyDataTestCase.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyDoubleTestCase.xml b/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyDoubleTestCase.xml new file mode 100755 index 000000000..1d82be425 --- /dev/null +++ b/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyDoubleTestCase.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyIntegerTestCase.xml b/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyIntegerTestCase.xml new file mode 100755 index 000000000..99c93d799 --- /dev/null +++ b/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyIntegerTestCase.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyStringTestCase.xml b/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyStringTestCase.xml new file mode 100755 index 000000000..3813759fd --- /dev/null +++ b/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyStringTestCase.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Classes/Utils/XMLRPC/Resources/Test Cases/SimpleArrayTestCase.xml b/Classes/Utils/XMLRPC/Resources/Test Cases/SimpleArrayTestCase.xml new file mode 100755 index 000000000..41388ccc8 --- /dev/null +++ b/Classes/Utils/XMLRPC/Resources/Test Cases/SimpleArrayTestCase.xml @@ -0,0 +1,19 @@ + + + + + + + + Hello World! + 42 + 3.14 + 1 + 20090718T17:34:00 + eW91IGNhbid0IHJlYWQgdGhpcyE= + + + + + + diff --git a/Classes/Utils/XMLRPC/Resources/Test Cases/SimpleStructTestCase.xml b/Classes/Utils/XMLRPC/Resources/Test Cases/SimpleStructTestCase.xml new file mode 100755 index 000000000..d2552c311 --- /dev/null +++ b/Classes/Utils/XMLRPC/Resources/Test Cases/SimpleStructTestCase.xml @@ -0,0 +1,23 @@ + + + + + + + + Name + Eric Czarny + + + Birthday + 1984-04-15T00:00:00 + + + Age + 25 + + + + + + diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/Common.xcconfig b/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/Common.xcconfig new file mode 100755 index 000000000..587996846 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/Common.xcconfig @@ -0,0 +1,14 @@ +ARCHS = $(ARCHS_STANDARD_32_64_BIT) +VALID_ARCHS = i386 ppc x86_64 +SDKROOT = macosx10.6 +PREBINDING = NO + +GCC_C_LANGUAGE_STANDARD = gnu99 +GCC_PRECOMPILE_PREFIX_HEADER = YES +GCC_MODEL_TUNING = G5 + +GCC_WARN_ABOUT_MISSING_NEWLINE = YES +GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = YES +GCC_WARN_ABOUT_RETURN_TYPE = YES +GCC_WARN_UNUSED_VARIABLE = YES +GCC_TREAT_WARNINGS_AS_ERRORS = YES diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/CommonDevelopment.xcconfig b/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/CommonDevelopment.xcconfig new file mode 100755 index 000000000..a4de0d06d --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/CommonDevelopment.xcconfig @@ -0,0 +1,7 @@ +#include "Common.xcconfig" + +ONLY_ACTIVE_ARCH = YES + +DEBUG_INFORMATION_FORMAT = dwarf + +GCC_OPTIMIZATION_LEVEL = 0 diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/CommonRelease.xcconfig b/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/CommonRelease.xcconfig new file mode 100755 index 000000000..d49f88eed --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/CommonRelease.xcconfig @@ -0,0 +1,5 @@ +#include "Common.xcconfig" + +DEBUG_INFORMATION_FORMAT = dwarf-with-dsym + +GCC_OPTIMIZATION_LEVEL = s diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/TestClient.xcconfig b/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/TestClient.xcconfig new file mode 100755 index 000000000..fb2896703 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/TestClient.xcconfig @@ -0,0 +1,7 @@ +PRODUCT_NAME = Test Client +INFOPLIST_FILE = TestClient-Info.plist + +GCC_PRECOMPILE_PREFIX_HEADER = YES +GCC_PREFIX_HEADER = TestClient.pch + +INSTALL_PATH = /Applications diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/TestClientDevelopment.xcconfig b/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/TestClientDevelopment.xcconfig new file mode 100755 index 000000000..35a8b9a27 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/TestClientDevelopment.xcconfig @@ -0,0 +1,2 @@ +#include "TestClient.xcconfig" +#include "CommonDevelopment.xcconfig" diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/TestClientRelease.xcconfig b/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/TestClientRelease.xcconfig new file mode 100755 index 000000000..3835f9903 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/TestClientRelease.xcconfig @@ -0,0 +1,2 @@ +#include "TestClient.xcconfig" +#include "CommonRelease.xcconfig" diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/Languages/English.lproj/InfoPlist.strings b/Classes/Utils/XMLRPC/Tools/Test Client/Languages/English.lproj/InfoPlist.strings new file mode 100755 index 000000000..58481ab26 Binary files /dev/null and b/Classes/Utils/XMLRPC/Tools/Test Client/Languages/English.lproj/InfoPlist.strings differ diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/Languages/English.lproj/TestClient.xib b/Classes/Utils/XMLRPC/Tools/Test Client/Languages/English.lproj/TestClient.xib new file mode 100755 index 000000000..eb6bbb284 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/Languages/English.lproj/TestClient.xib @@ -0,0 +1,3617 @@ + + + + 1050 + 10C540 + 740 + 1038.25 + 458.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 740 + + + YES + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + YES + + + YES + + + + YES + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + YES + + + Test Client + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + Test Client + + YES + + + About Test Client + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + Services + + YES + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide Test Client + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit Test Client + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + File + + YES + + + New + n + 1048576 + 2147483647 + + + + + + Open… + o + 1048576 + 2147483647 + + + + + + Open Recent + + 1048576 + 2147483647 + + + submenuAction: + + Open Recent + + YES + + + Clear Menu + + 1048576 + 2147483647 + + + + + _NSRecentDocumentsMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + Save + s + 1048576 + 2147483647 + + + + + + Save As… + S + 1179648 + 2147483647 + + + + + + Revert to Saved + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Page Setup... + P + 1179648 + 2147483647 + + + + + + + Print… + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + Edit + + YES + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + Find + + YES + + + Find… + f + 1048576 + 2147483647 + + + 1 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1179648 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling and Grammar + + 1048576 + 2147483647 + + + submenuAction: + + Spelling and Grammar + + YES + + + Show Spelling… + : + 1048576 + 2147483647 + + + + + + Check Spelling + ; + 1048576 + 2147483647 + + + + + + Check Spelling While Typing + + 1048576 + 2147483647 + + + + + + Check Grammar With Spelling + + 1048576 + 2147483647 + + + + + + + + + Substitutions + + 1048576 + 2147483647 + + + submenuAction: + + Substitutions + + YES + + + Smart Copy/Paste + f + 1048576 + 2147483647 + + + 1 + + + + Smart Quotes + g + 1048576 + 2147483647 + + + 2 + + + + Smart Links + G + 1179648 + 2147483647 + + + 3 + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + Speech + + YES + + + Start Speaking + + 1048576 + 2147483647 + + + + + + Stop Speaking + + 1048576 + 2147483647 + + + + + + + + + + + + Format + + 2147483647 + + + submenuAction: + + Format + + YES + + + Font + + 2147483647 + + + submenuAction: + + Font + + YES + + + Show Fonts + t + 1048576 + 2147483647 + + + + + + Bold + b + 1048576 + 2147483647 + + + 2 + + + + Italic + i + 1048576 + 2147483647 + + + 1 + + + + Underline + u + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Bigger + + + 1048576 + 2147483647 + + + 3 + + + + Smaller + - + 1048576 + 2147483647 + + + 4 + + + + YES + YES + + + 2147483647 + + + + + + Kern + + 2147483647 + + + submenuAction: + + Kern + + YES + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Tighten + + 2147483647 + + + + + + Loosen + + 2147483647 + + + + + + + + + Ligature + + 2147483647 + + + submenuAction: + + Ligature + + YES + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Use All + + 2147483647 + + + + + + + + + Baseline + + 2147483647 + + + submenuAction: + + Baseline + + YES + + + Use Default + + 2147483647 + + + + + + Superscript + + 2147483647 + + + + + + Subscript + + 2147483647 + + + + + + Raise + + 2147483647 + + + + + + Lower + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Colors + C + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Copy Style + c + 1572864 + 2147483647 + + + + + + Paste Style + v + 1572864 + 2147483647 + + + + + _NSFontMenu + + + + + Text + + 2147483647 + + + submenuAction: + + Text + + YES + + + Align Left + { + 1048576 + 2147483647 + + + + + + Center + | + 1048576 + 2147483647 + + + + + + Justify + + 2147483647 + + + + + + Align Right + } + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Show Ruler + + 2147483647 + + + + + + Copy Ruler + c + 1310720 + 2147483647 + + + + + + Paste Ruler + v + 1310720 + 2147483647 + + + + + + + + + + + + View + + 1048576 + 2147483647 + + + submenuAction: + + View + + YES + + + Show Toolbar + t + 1572864 + 2147483647 + + + + + + Customize Toolbar… + + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + Window + + YES + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Main Window + 0 + 1048576 + 2147483647 + + + + + + XML Parser + 1 + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 1048576 + 2147483647 + + + submenuAction: + + Help + + YES + + + Test Client Help + ? + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + NSFontManager + + + TestClientApplicationController + + + + + YES + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + clearRecentDocuments: + + + + 127 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + performClose: + + + + 193 + + + + toggleContinuousSpellChecking: + + + + 222 + + + + undo: + + + + 223 + + + + copy: + + + + 224 + + + + checkSpelling: + + + + 225 + + + + paste: + + + + 226 + + + + stopSpeaking: + + + + 227 + + + + cut: + + + + 228 + + + + showGuessPanel: + + + + 230 + + + + redo: + + + + 231 + + + + selectAll: + + + + 232 + + + + startSpeaking: + + + + 233 + + + + delete: + + + + 235 + + + + performZoom: + + + + 240 + + + + performFindPanelAction: + + + + 241 + + + + centerSelectionInVisibleArea: + + + + 245 + + + + toggleGrammarChecking: + + + + 347 + + + + toggleSmartInsertDelete: + + + + 355 + + + + toggleAutomaticQuoteSubstitution: + + + + 356 + + + + toggleAutomaticLinkDetection: + + + + 357 + + + + showHelp: + + + + 360 + + + + saveDocument: + + + + 362 + + + + saveDocumentAs: + + + + 363 + + + + revertDocumentToSaved: + + + + 364 + + + + runToolbarCustomizationPalette: + + + + 365 + + + + toggleToolbarShown: + + + + 366 + + + + hide: + + + + 367 + + + + hideOtherApplications: + + + + 368 + + + + unhideAllApplications: + + + + 370 + + + + newDocument: + + + + 373 + + + + openDocument: + + + + 374 + + + + addFontTrait: + + + + 421 + + + + addFontTrait: + + + + 422 + + + + modifyFont: + + + + 423 + + + + orderFrontFontPanel: + + + + 424 + + + + modifyFont: + + + + 425 + + + + raiseBaseline: + + + + 426 + + + + lowerBaseline: + + + + 427 + + + + copyFont: + + + + 428 + + + + subscript: + + + + 429 + + + + superscript: + + + + 430 + + + + tightenKerning: + + + + 431 + + + + underline: + + + + 432 + + + + orderFrontColorPanel: + + + + 433 + + + + useAllLigatures: + + + + 434 + + + + loosenKerning: + + + + 435 + + + + pasteFont: + + + + 436 + + + + unscript: + + + + 437 + + + + useStandardKerning: + + + + 438 + + + + useStandardLigatures: + + + + 439 + + + + turnOffLigatures: + + + + 440 + + + + turnOffKerning: + + + + 441 + + + + alignLeft: + + + + 442 + + + + alignJustified: + + + + 443 + + + + copyRuler: + + + + 444 + + + + alignCenter: + + + + 445 + + + + toggleRuler: + + + + 446 + + + + alignRight: + + + + 447 + + + + pasteRuler: + + + + 448 + + + + terminate: + + + + 449 + + + + delegate + + + + 457 + + + + toggleTestClientWindow: + + + + 461 + + + + toggleXMLParserWindow: + + + + 462 + + + + + YES + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + YES + + + + + + + + + + Main Menu + + + 19 + + + YES + + + + + + 56 + + + YES + + + + + + 103 + + + YES + + + + 1 + + + 217 + + + YES + + + + + + 83 + + + YES + + + + + + 81 + + + YES + + + + + + + + + + + + + + + + 75 + + + 3 + + + 80 + + + 8 + + + 78 + + + 6 + + + 72 + + + + + 82 + + + 9 + + + 124 + + + YES + + + + + + 77 + + + 5 + + + 73 + + + 1 + + + 79 + + + 7 + + + 112 + + + 10 + + + 74 + + + 2 + + + 125 + + + YES + + + + + + 126 + + + + + 205 + + + YES + + + + + + + + + + + + + + + + + + 202 + + + + + 198 + + + + + 207 + + + + + 214 + + + + + 199 + + + + + 203 + + + + + 197 + + + + + 206 + + + + + 215 + + + + + 218 + + + YES + + + + + + 216 + + + YES + + + + + + 200 + + + YES + + + + + + + + + 219 + + + + + 201 + + + + + 204 + + + + + 220 + + + YES + + + + + + + + + + 213 + + + + + 210 + + + + + 221 + + + + + 208 + + + + + 209 + + + + + 106 + + + YES + + + + 2 + + + 111 + + + + + 57 + + + YES + + + + + + + + + + + + + + + + 58 + + + + + 134 + + + + + 150 + + + + + 136 + + + 1111 + + + 144 + + + + + 129 + + + 121 + + + 143 + + + + + 236 + + + + + 131 + + + YES + + + + + + 149 + + + + + 145 + + + + + 130 + + + + + 24 + + + YES + + + + + + + + + + + + 92 + + + + + 5 + + + + + 239 + + + + + 23 + + + + + 295 + + + YES + + + + + + 296 + + + YES + + + + + + + 297 + + + + + 298 + + + + + 211 + + + YES + + + + + + 212 + + + YES + + + + + + + 195 + + + + + 196 + + + + + 346 + + + + + 348 + + + YES + + + + + + 349 + + + YES + + + + + + + + 350 + + + + + 351 + + + + + 354 + + + + + 375 + + + YES + + + + + + 376 + + + YES + + + + + + + 377 + + + YES + + + + + + 378 + + + YES + + + + + + 379 + + + YES + + + + + + + + + + + + + 380 + + + + + 381 + + + + + 382 + + + + + 383 + + + + + 384 + + + + + 385 + + + + + 386 + + + + + 387 + + + + + 388 + + + YES + + + + + + + + + + + + + + + + + + + + + 389 + + + + + 390 + + + + + 391 + + + + + 392 + + + + + 393 + + + + + 394 + + + + + 395 + + + + + 396 + + + + + 397 + + + YES + + + + + + 398 + + + YES + + + + + + 399 + + + YES + + + + + + 400 + + + + + 401 + + + + + 402 + + + + + 403 + + + + + 404 + + + + + 405 + + + YES + + + + + + + + + + 406 + + + + + 407 + + + + + 408 + + + + + 409 + + + + + 410 + + + + + 411 + + + YES + + + + + + + + 412 + + + + + 413 + + + + + 414 + + + + + 415 + + + YES + + + + + + + + + 416 + + + + + 417 + + + + + 418 + + + + + 419 + + + + + 420 + + + + + 450 + + + + + 451 + + + + + 455 + + + Application Controller + + + 458 + + + + + + + YES + + YES + -3.IBPluginDependency + 103.IBPluginDependency + 103.ImportedFromIB2 + 106.IBEditorWindowLastContentRect + 106.IBPluginDependency + 106.ImportedFromIB2 + 106.editorWindowContentRectSynchronizationRect + 111.IBPluginDependency + 111.ImportedFromIB2 + 112.IBPluginDependency + 112.ImportedFromIB2 + 124.IBPluginDependency + 124.ImportedFromIB2 + 125.IBPluginDependency + 125.ImportedFromIB2 + 125.editorWindowContentRectSynchronizationRect + 126.IBPluginDependency + 126.ImportedFromIB2 + 129.IBPluginDependency + 129.ImportedFromIB2 + 130.IBPluginDependency + 130.ImportedFromIB2 + 130.editorWindowContentRectSynchronizationRect + 131.IBPluginDependency + 131.ImportedFromIB2 + 134.IBPluginDependency + 134.ImportedFromIB2 + 136.IBPluginDependency + 136.ImportedFromIB2 + 143.IBPluginDependency + 143.ImportedFromIB2 + 144.IBPluginDependency + 144.ImportedFromIB2 + 145.IBPluginDependency + 145.ImportedFromIB2 + 149.IBPluginDependency + 149.ImportedFromIB2 + 150.IBPluginDependency + 150.ImportedFromIB2 + 19.IBPluginDependency + 19.ImportedFromIB2 + 195.IBPluginDependency + 195.ImportedFromIB2 + 196.IBPluginDependency + 196.ImportedFromIB2 + 197.IBPluginDependency + 197.ImportedFromIB2 + 198.IBPluginDependency + 198.ImportedFromIB2 + 199.IBPluginDependency + 199.ImportedFromIB2 + 200.IBPluginDependency + 200.ImportedFromIB2 + 200.editorWindowContentRectSynchronizationRect + 201.IBPluginDependency + 201.ImportedFromIB2 + 202.IBPluginDependency + 202.ImportedFromIB2 + 203.IBPluginDependency + 203.ImportedFromIB2 + 204.IBPluginDependency + 204.ImportedFromIB2 + 205.IBEditorWindowLastContentRect + 205.IBPluginDependency + 205.ImportedFromIB2 + 205.editorWindowContentRectSynchronizationRect + 206.IBPluginDependency + 206.ImportedFromIB2 + 207.IBPluginDependency + 207.ImportedFromIB2 + 208.IBPluginDependency + 208.ImportedFromIB2 + 209.IBPluginDependency + 209.ImportedFromIB2 + 210.IBPluginDependency + 210.ImportedFromIB2 + 211.IBPluginDependency + 211.ImportedFromIB2 + 212.IBPluginDependency + 212.ImportedFromIB2 + 212.editorWindowContentRectSynchronizationRect + 213.IBPluginDependency + 213.ImportedFromIB2 + 214.IBPluginDependency + 214.ImportedFromIB2 + 215.IBPluginDependency + 215.ImportedFromIB2 + 216.IBPluginDependency + 216.ImportedFromIB2 + 217.IBPluginDependency + 217.ImportedFromIB2 + 218.IBPluginDependency + 218.ImportedFromIB2 + 219.IBPluginDependency + 219.ImportedFromIB2 + 220.IBPluginDependency + 220.ImportedFromIB2 + 220.editorWindowContentRectSynchronizationRect + 221.IBPluginDependency + 221.ImportedFromIB2 + 23.IBPluginDependency + 23.ImportedFromIB2 + 236.IBPluginDependency + 236.ImportedFromIB2 + 239.IBPluginDependency + 239.ImportedFromIB2 + 24.IBEditorWindowLastContentRect + 24.IBPluginDependency + 24.ImportedFromIB2 + 24.editorWindowContentRectSynchronizationRect + 29.IBEditorWindowLastContentRect + 29.IBPluginDependency + 29.ImportedFromIB2 + 29.WindowOrigin + 29.editorWindowContentRectSynchronizationRect + 295.IBPluginDependency + 296.IBEditorWindowLastContentRect + 296.IBPluginDependency + 296.editorWindowContentRectSynchronizationRect + 297.IBPluginDependency + 298.IBPluginDependency + 346.IBPluginDependency + 346.ImportedFromIB2 + 348.IBPluginDependency + 348.ImportedFromIB2 + 349.IBPluginDependency + 349.ImportedFromIB2 + 349.editorWindowContentRectSynchronizationRect + 350.IBPluginDependency + 350.ImportedFromIB2 + 351.IBPluginDependency + 351.ImportedFromIB2 + 354.IBPluginDependency + 354.ImportedFromIB2 + 375.IBPluginDependency + 376.IBEditorWindowLastContentRect + 376.IBPluginDependency + 377.IBPluginDependency + 378.IBPluginDependency + 379.IBPluginDependency + 380.IBPluginDependency + 381.IBPluginDependency + 382.IBPluginDependency + 383.IBPluginDependency + 384.IBPluginDependency + 385.IBPluginDependency + 386.IBPluginDependency + 387.IBPluginDependency + 388.IBEditorWindowLastContentRect + 388.IBPluginDependency + 389.IBPluginDependency + 390.IBPluginDependency + 391.IBPluginDependency + 392.IBPluginDependency + 393.IBPluginDependency + 394.IBPluginDependency + 395.IBPluginDependency + 396.IBPluginDependency + 397.IBPluginDependency + 398.IBPluginDependency + 399.IBPluginDependency + 400.IBPluginDependency + 401.IBPluginDependency + 402.IBPluginDependency + 403.IBPluginDependency + 404.IBPluginDependency + 405.IBPluginDependency + 406.IBPluginDependency + 407.IBPluginDependency + 408.IBPluginDependency + 409.IBPluginDependency + 410.IBPluginDependency + 411.IBPluginDependency + 412.IBPluginDependency + 413.IBPluginDependency + 414.IBPluginDependency + 415.IBPluginDependency + 416.IBPluginDependency + 417.IBPluginDependency + 418.IBPluginDependency + 419.IBPluginDependency + 450.IBPluginDependency + 450.ImportedFromIB2 + 451.IBPluginDependency + 458.IBPluginDependency + 5.IBPluginDependency + 5.ImportedFromIB2 + 56.IBPluginDependency + 56.ImportedFromIB2 + 57.IBEditorWindowLastContentRect + 57.IBPluginDependency + 57.ImportedFromIB2 + 57.editorWindowContentRectSynchronizationRect + 58.IBPluginDependency + 58.ImportedFromIB2 + 72.IBPluginDependency + 72.ImportedFromIB2 + 73.IBPluginDependency + 73.ImportedFromIB2 + 74.IBPluginDependency + 74.ImportedFromIB2 + 75.IBPluginDependency + 75.ImportedFromIB2 + 77.IBPluginDependency + 77.ImportedFromIB2 + 78.IBPluginDependency + 78.ImportedFromIB2 + 79.IBPluginDependency + 79.ImportedFromIB2 + 80.IBPluginDependency + 80.ImportedFromIB2 + 81.IBEditorWindowLastContentRect + 81.IBPluginDependency + 81.ImportedFromIB2 + 81.editorWindowContentRectSynchronizationRect + 82.IBPluginDependency + 82.ImportedFromIB2 + 83.IBPluginDependency + 83.ImportedFromIB2 + 92.IBPluginDependency + 92.ImportedFromIB2 + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + {{698, 824}, {183, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{596, 852}, {216, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{522, 812}, {146, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{436, 809}, {64, 6}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {275, 83}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{494, 604}, {243, 243}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{187, 434}, {243, 243}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {167, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {241, 103}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{627, 724}, {197, 123}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{525, 802}, {197, 73}} + {{316, 847}, {443, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {74, 862} + {{6, 978}, {478, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + {{604, 804}, {234, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + {{475, 832}, {234, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {215, 63}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + {{538, 804}, {86, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{523, 2}, {178, 283}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{328, 664}, {212, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{23, 794}, {245, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{452, 644}, {199, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 474}, {199, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + YES + + + YES + + + + + YES + + + YES + + + + 462 + + + + YES + + TestClientApplicationController + NSObject + + YES + + YES + toggleTestClientWindow: + toggleXMLParserWindow: + + + YES + id + id + + + + IBProjectSource + TestClientApplicationController.h + + + + + YES + + NSApplication + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSApplication.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSApplicationScripting.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSColorPanel.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSHelpManager.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSPageLayout.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSUserInterfaceItemSearching.h + + + + NSBrowser + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSBrowser.h + + + + NSControl + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSControl.h + + + + NSDocument + NSObject + + YES + + YES + printDocument: + revertDocumentToSaved: + runPageLayout: + saveDocument: + saveDocumentAs: + saveDocumentTo: + + + YES + id + id + id + id + id + id + + + + IBFrameworkSource + AppKit.framework/Headers/NSDocument.h + + + + NSDocument + + IBFrameworkSource + AppKit.framework/Headers/NSDocumentScripting.h + + + + NSDocumentController + NSObject + + YES + + YES + clearRecentDocuments: + newDocument: + openDocument: + saveAllDocuments: + + + YES + id + id + id + id + + + + IBFrameworkSource + AppKit.framework/Headers/NSDocumentController.h + + + + NSFontManager + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontManager.h + + + + NSFormatter + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFormatter.h + + + + NSMatrix + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSMatrix.h + + + + NSMenu + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenu.h + + + + NSMenuItem + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenuItem.h + + + + NSMovieView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSMovieView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSAccessibility.h + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDictionaryController.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDragging.h + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontPanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSKeyValueBinding.h + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSNibLoading.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSOutlineView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSPasteboard.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSSavePanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTableView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSToolbarItem.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSView.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSError.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFileManager.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueObserving.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyedArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObject.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObjectScripting.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSPortCoder.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSRunLoop.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptObjectSpecifiers.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptWhoseTests.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSThread.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURL.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLConnection.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLDownload.h + + + + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSInterfaceStyle.h + + + + NSResponder + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSResponder.h + + + + NSTableView + NSControl + + + + NSText + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSText.h + + + + NSTextView + NSText + + IBFrameworkSource + AppKit.framework/Headers/NSTextView.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSClipView.h + + + + NSView + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSRulerView.h + + + + NSView + NSResponder + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSDrawer.h + + + + NSWindow + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSWindow.h + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSWindowScripting.h + + + + + 0 + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + ../../Test Client.xcodeproj + 3 + + diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/Languages/English.lproj/TestClientMainWindow.xib b/Classes/Utils/XMLRPC/Tools/Test Client/Languages/English.lproj/TestClientMainWindow.xib new file mode 100755 index 000000000..bc486b4d2 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/Languages/English.lproj/TestClientMainWindow.xib @@ -0,0 +1,1992 @@ + + + + 1050 + 10C540 + 740 + 1038.25 + 458.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 740 + + + YES + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + YES + + + YES + + + + YES + + TestClientMainWindowController + + + FirstResponder + + + NSApplication + + + 3 + 2 + {{600, 416}, {500, 442}} + 880280576 + Test Client + NSWindow + + {3.40282e+38, 3.40282e+38} + + + 268 + + YES + + + 1284 + + {{20, 8}, {16, 16}} + + 28938 + 16 + 100 + + + + 260 + {{361, 296}, {125, 32}} + + YES + + 67239424 + 134217728 + Send Request + + LucidaGrande + 13 + 1044 + + + -2034876161 + 129 + + + + 200 + 25 + + + + + 268 + {{134, 400}, {346, 22}} + + YES + + -1804468671 + 268436480 + http://127.0.0.1:8080/ + + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + 3 + MAA + + + + + + + 268 + {{17, 343}, {112, 16}} + + YES + + 68288064 + 71304192 + Parameter: + + LucidaGrande + 12 + 16 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2ODY1AA + + + + 6 + System + controlTextColor + + + + + + + 268 + {{335, 344}, {148, 13}} + + YES + + 68288064 + 4195328 + Type: String + + LucidaGrande + 10 + 16 + + + + + + + + + 268 + {{17, 373}, {112, 16}} + + YES + + 68288064 + 71304192 + Method: + + + + + + + + + 268 + {{134, 340}, {196, 22}} + + YES + + -1804468671 + 268436480 + Hello World! + + + YES + + + + + + + 268 + {{134, 370}, {196, 22}} + + YES + + -1804468671 + 268436480 + Echo.echo + + + YES + + + + + + + 268 + {{17, 403}, {112, 16}} + + YES + + 68288064 + 71304192 + Request URL: + + + + + + + + + 12 + {{-8, 22}, {516, 268}} + + + YES + + 1 + + + 256 + + YES + + + 268 + + YES + + + 2304 + + YES + + + 2322 + {460, 14} + + + + + + + + + + + YES + + + 6 + + + + 460 + 1 + + + 12129 + 0 + + + + YES + + YES + NSBackgroundColor + NSColor + + + YES + + 6 + System + selectedTextBackgroundColor + + + + 6 + System + selectedTextColor + + + + + + + YES + + YES + NSColor + NSUnderline + + + YES + + 1 + MCAwIDEAA + + + + + + + 6 + {922, 1e+07} + {223, 0} + + + + {{1, 1}, {460, 200}} + + + + + + {4, -5} + 1 + + 4 + + + + -2147483392 + {{434, 1}, {15, 217}} + + + _doScroller: + 0.98750001192092896 + + + + -2147483392 + {{-100, -100}, {87, 18}} + + 1 + + _doScroller: + 1 + 0.94565218687057495 + + + {{17, 17}, {462, 202}} + + + 530 + + + + + + {{10, 33}, {496, 222}} + + + Request Body + + + + + 2 + + + 256 + + YES + + + 268 + + YES + + + 2304 + + YES + + + 2322 + {460, 14} + + + + + + + + + + + YES + + + 6 + + + + 460 + 1 + + + 12129 + 0 + + + + YES + + YES + NSBackgroundColor + NSColor + + + YES + + + + + + + YES + + YES + NSColor + NSUnderline + + + YES + + + + + + + 6 + {922, 1e+07} + {223, 0} + + + + {{1, 1}, {460, 200}} + + + + + + 4 + + + + -2147483392 + {{434, 1}, {15, 217}} + + + _doScroller: + 0.98750001192092896 + + + + -2147483392 + {{-100, -100}, {87, 18}} + + 1 + + _doScroller: + 1 + 0.94565218687057495 + + + {{17, 17}, {462, 202}} + + + 530 + + + + + + {{10, 33}, {496, 222}} + + Response Body + + + + + 3 + + + 256 + + YES + + + 4364 + + YES + + + 2304 + + YES + + + 4352 + {460, 200} + + YES + + + -2147483392 + {{444, 0}, {16, 17}} + + + YES + + type + 125 + 16 + 1000 + + 75628096 + 2048 + + + LucidaGrande + 11 + 3100 + + + 3 + MC4zMzMzMzI5ODU2AA + + + 6 + System + headerTextColor + + + + + 67239488 + 2048 + Text Cell + + + + 6 + System + controlBackgroundColor + + + + + + + + value + 331 + 40 + 1000 + + 75628096 + 2048 + + + + + + + 67239488 + 2048 + Text Cell + + + + + + + + + 2 + 3 + + + 1 + MC45MDE5NjA3OTAyIDAuOTAxOTYwNzkwMiAwLjkwMTk2MDc5MDIAA + + 17 + 314572800 + + + 1 + 4 + 15 + 0 + NO + 0 + 12 + + + {{1, 1}, {460, 200}} + + + + + 4 + + + + -2147483392 + {{450, 1}, {15, 172}} + + + _doScroller: + 0.91978609561920166 + + + + -2147483392 + {{1, 173}, {449, 15}} + + 1 + + _doScroller: + 0.96506547927856445 + + + {{17, 17}, {462, 202}} + + + 562 + + + + QSAAAEEgAABBoAAAQaAAAA + + + {{10, 33}, {496, 222}} + + Parsed Response + + + + + + + 0 + YES + YES + + YES + + + + + + -2147483388 + {{41, 9}, {442, 13}} + + YES + + 68288064 + 4195328 + + + Active Connection: 00000000-0000-0000-000000000000 + + + + + + + + 12 + {{20, 311}, {339, 5}} + + {0, 0} + + 67239424 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + 3 + 2 + 0 + NO + + + {500, 442} + + {{0, 0}, {1280, 1002}} + {3.40282e+38, 3.40282e+38} + + + + + YES + + + myProgressIndicator + + + + 42 + + + + myRequestURL + + + + 44 + + + + window + + + + 47 + + + + sendRequest: + + + + 53 + + + + initialFirstResponder + + + + 54 + + + + sendRequest: + + + + 55 + + + + myMethod + + + + 65 + + + + sendRequest: + + + + 66 + + + + nextKeyView + + + + 67 + + + + myParameter + + + + 76 + + + + nextKeyView + + + + 77 + + + + nextKeyView + + + + 78 + + + + sendRequest: + + + + 79 + + + + mySendRequest + + + + 103 + + + + myActiveConnection + + + + 136 + + + + myRequestBody + + + + 137 + + + + myResponseBody + + + + 151 + + + + myParsedResponse + + + + 152 + + + + dataSource + + + + 153 + + + + + YES + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 1 + + + YES + + + + Test Client + + + 2 + + + YES + + + + + + + + + + + + + + + + + 4 + + + + + 6 + + + YES + + + + + + 27 + + + + + 70 + + + YES + + + + + + 73 + + + + + 74 + + + YES + + + + + + 75 + + + + + 8 + + + YES + + + + + + 21 + + + + + 63 + + + YES + + + + + + 64 + + + + + 9 + + + YES + + + + + + 20 + + + + + 50 + + + YES + + + + + + 51 + + + + + 109 + + + YES + + + + + + + + 110 + + + YES + + + + + + 111 + + + YES + + + + + + 112 + + + YES + + + + + + 113 + + + YES + + + + + + 122 + + + YES + + + + + + + + 123 + + + + + 124 + + + + + 125 + + + + + 126 + + + YES + + + + + + 127 + + + YES + + + + + + 71 + + + YES + + + + + + 72 + + + + + 134 + + + YES + + + + + + 135 + + + + + 139 + + + YES + + + + + + + + 140 + + + + + 141 + + + + + 142 + + + YES + + + + + + + 143 + + + YES + + + + + + 144 + + + YES + + + + + + 145 + + + + + 146 + + + + + 147 + + + YES + + + + + + + + 148 + + + + + 149 + + + + + 150 + + + + + 154 + + + + + + + YES + + YES + -3.IBPluginDependency + 1.IBEditorWindowLastContentRect + 1.IBPluginDependency + 1.IBViewEditorWindowController.showingBoundsRectangles + 1.IBViewEditorWindowController.showingLayoutRectangles + 1.IBWindowTemplateEditedContentRect + 1.NSWindowTemplate.visibleAtLaunch + 1.editorWindowContentRectSynchronizationRect + 1.windowTemplate.maxSize + 109.IBAttributePlaceholdersKey + 109.IBPluginDependency + 110.IBPluginDependency + 111.IBPluginDependency + 112.IBPluginDependency + 113.IBPluginDependency + 122.IBPluginDependency + 123.IBPluginDependency + 124.IBPluginDependency + 125.IBPluginDependency + 126.IBPluginDependency + 127.IBPluginDependency + 134.IBPluginDependency + 135.IBPluginDependency + 139.IBPluginDependency + 140.IBPluginDependency + 141.IBPluginDependency + 142.IBPluginDependency + 143.IBPluginDependency + 144.IBPluginDependency + 145.IBPluginDependency + 146.IBPluginDependency + 147.IBPluginDependency + 148.IBPluginDependency + 149.IBPluginDependency + 150.IBPluginDependency + 154.IBPluginDependency + 2.IBPluginDependency + 20.IBPluginDependency + 21.IBPluginDependency + 27.IBPluginDependency + 4.IBPluginDependency + 50.IBPluginDependency + 51.IBPluginDependency + 6.IBPluginDependency + 63.IBPluginDependency + 64.IBPluginDependency + 70.IBPluginDependency + 71.IBPluginDependency + 72.IBPluginDependency + 73.IBPluginDependency + 74.IBPluginDependency + 75.IBPluginDependency + 8.IBPluginDependency + 9.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + {{521, 272}, {500, 442}} + com.apple.InterfaceBuilder.CocoaPlugin + + + {{521, 272}, {500, 442}} + + {{642, 270}, {480, 514}} + {3.40282e+38, 3.40282e+38} + + YES + + + YES + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + + YES + + + + + YES + + + YES + + + + 154 + + + + YES + + TestClientMainWindowController + NSWindowController + + YES + + YES + hideTestClientWindow: + sendRequest: + showTestClientWindow: + toggleTestClientWindow: + + + YES + id + id + id + id + + + + YES + + YES + myActiveConnection + myMethod + myParameter + myParsedResponse + myProgressIndicator + myRequestBody + myRequestURL + myResponseBody + mySendRequest + + + YES + NSTextField + NSTextField + NSTextField + NSOutlineView + NSProgressIndicator + NSTextView + NSTextField + NSTextView + NSButton + + + + IBProjectSource + TestClientMainWindowController.h + + + + + YES + + NSActionCell + NSCell + + IBFrameworkSource + AppKit.framework/Headers/NSActionCell.h + + + + NSApplication + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSApplication.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSApplicationScripting.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSColorPanel.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSHelpManager.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSPageLayout.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSUserInterfaceItemSearching.h + + + + NSBox + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSBox.h + + + + NSButton + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSButton.h + + + + NSButtonCell + NSActionCell + + IBFrameworkSource + AppKit.framework/Headers/NSButtonCell.h + + + + NSCell + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSCell.h + + + + NSControl + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSControl.h + + + + NSFormatter + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFormatter.h + + + + NSMenu + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenu.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSAccessibility.h + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDictionaryController.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDragging.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontManager.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontPanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSKeyValueBinding.h + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSNibLoading.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSOutlineView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSPasteboard.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSSavePanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTableView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSToolbarItem.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSView.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSError.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFileManager.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueObserving.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyedArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObject.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObjectScripting.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSPortCoder.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSRunLoop.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptObjectSpecifiers.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptWhoseTests.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSThread.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURL.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLConnection.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLDownload.h + + + + NSOutlineView + NSTableView + + + + NSProgressIndicator + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSProgressIndicator.h + + + + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSInterfaceStyle.h + + + + NSResponder + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSResponder.h + + + + NSScrollView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSScrollView.h + + + + NSScroller + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSScroller.h + + + + NSTabView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSTabView.h + + + + NSTabViewItem + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTabViewItem.h + + + + NSTableColumn + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTableColumn.h + + + + NSTableView + NSControl + + + + NSText + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSText.h + + + + NSTextField + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSTextField.h + + + + NSTextFieldCell + NSActionCell + + IBFrameworkSource + AppKit.framework/Headers/NSTextFieldCell.h + + + + NSTextView + NSText + + IBFrameworkSource + AppKit.framework/Headers/NSTextView.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSClipView.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSMenuItem.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSRulerView.h + + + + NSView + NSResponder + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSDrawer.h + + + + NSWindow + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSWindow.h + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSWindowScripting.h + + + + NSWindowController + NSResponder + + showWindow: + id + + + IBFrameworkSource + AppKit.framework/Headers/NSWindowController.h + + + + + 0 + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + ../../Test Client.xcodeproj + 3 + + diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/Languages/English.lproj/TestClientXMLParserWindow.xib b/Classes/Utils/XMLRPC/Tools/Test Client/Languages/English.lproj/TestClientXMLParserWindow.xib new file mode 100755 index 000000000..7eef35218 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/Languages/English.lproj/TestClientXMLParserWindow.xib @@ -0,0 +1,1228 @@ + + + + 1050 + 10C540 + 740 + 1038.25 + 458.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 740 + + + YES + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + YES + + + YES + + + + YES + + TestClientXMLParserWindowController + + + FirstResponder + + + NSApplication + + + 3 + 2 + {{196, 13}, {490, 497}} + 872416256 + XML Parser + NSWindow + + {3.40282e+38, 3.40282e+38} + + + 288 + + YES + + + 268 + {{380, 12}, {96, 32}} + + YES + + 67239424 + 134217728 + Parse + + LucidaGrande + 13 + 1044 + + + -2038284033 + 129 + + + 200 + 25 + + + + + 256 + + YES + + + 268 + + YES + + + 2304 + + YES + + + 2322 + + YES + + YES + Apple HTML pasteboard type + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple PNG pasteboard type + Apple URL pasteboard type + CorePasteboardFlavorType 0x6D6F6F76 + CorePasteboardFlavorType 0x75726C20 + NSColor pasteboard type + NSFilenamesPboardType + NSStringPboardType + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT RTFD pasteboard type + NeXT Rich Text Format v1.0 pasteboard type + NeXT TIFF v4.0 pasteboard type + NeXT font pasteboard type + NeXT ruler pasteboard type + WebURLsWithTitlesPboardType + public.url + + + {448, 14} + + + + + + + + + + + YES + + + 6 + + + + 448 + 1 + + + 12131 + 0 + + + 3 + MQA + + + YES + + YES + NSBackgroundColor + NSColor + + + YES + + 6 + System + selectedTextBackgroundColor + + 3 + MC42NjY2NjY2ODY1AA + + + + 6 + System + selectedTextColor + + 3 + MAA + + + + + + + YES + + YES + NSColor + NSUnderline + + + YES + + 1 + MCAwIDEAA + + + + + + + 6 + {922, 1e+07} + {223, 0} + + + + {{1, 1}, {448, 205}} + + + + + + {4, -5} + 1 + + 4 + + + + -2147483392 + {{434, 1}, {15, 217}} + + + _doScroller: + 0.98750001192092896 + + + + -2147483392 + {{-100, -100}, {87, 18}} + + 1 + + _doScroller: + 1 + 0.94565218687057495 + + + {450, 207} + + + 530 + + + + + + + 4364 + + YES + + + 2304 + + YES + + + 4352 + {448, 200} + + YES + + + -2147483392 + {{434, 0}, {16, 17}} + + + YES + + type + 125 + 16 + 1000 + + 75628096 + 2048 + + + LucidaGrande + 11 + 3100 + + + 3 + MC4zMzMzMzI5ODU2AA + + + 6 + System + headerTextColor + + + + + 67239488 + 2048 + Text Cell + + + + 6 + System + controlBackgroundColor + + + + 6 + System + controlTextColor + + + + 3 + YES + + + + value + 319 + 40 + 1000 + + 75628096 + 2048 + + + + + + + 67239488 + 2048 + Text Cell + + + + + + 3 + YES + + + + 2 + 3 + + + 1 + MC45MDE5NjA3OTAyIDAuOTAxOTYwNzkwMiAwLjkwMTk2MDc5MDIAA + + 17 + 1119879168 + + + 1 + 4 + 15 + 0 + NO + 0 + 12 + + + {{1, 1}, {448, 200}} + + + + + 4 + + + + -2147483392 + {{434, 1}, {15, 185}} + + + _doScroller: + 0.9950249195098877 + + + + -2147483392 + {{1, 186}, {433, 15}} + + 1 + + _doScroller: + 0.99777281284332275 + + + {{0, 216}, {450, 202}} + + + 562 + + + + QSAAAEEgAABBoAAAQaAAAA + + + {{20, 59}, {450, 418}} + + + + {490, 497} + + {{0, 0}, {1280, 1002}} + {3.40282e+38, 3.40282e+38} + + + + + YES + + + window + + + + 3 + + + + myXML + + + + 28 + + + + parse: + + + + 29 + + + + dataSource + + + + 40 + + + + myParserResult + + + + 41 + + + + + YES + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 1 + + + YES + + + + XML Parser + + + 2 + + + YES + + + + + + + 16 + + + YES + + + + + + 17 + + + + + 38 + + + YES + + + + + + + 24 + + + YES + + + + + + + + 27 + + + + + 26 + + + + + 25 + + + + + 30 + + + YES + + + + + + + + 33 + + + + + 32 + + + + + 31 + + + YES + + + + + + + 35 + + + YES + + + + + + 34 + + + YES + + + + + + 37 + + + + + 36 + + + + + + + YES + + YES + -3.IBPluginDependency + 1.IBEditorWindowLastContentRect + 1.IBPluginDependency + 1.IBWindowTemplateEditedContentRect + 1.NSWindowTemplate.visibleAtLaunch + 16.IBPluginDependency + 17.IBPluginDependency + 2.IBPluginDependency + 24.IBPluginDependency + 25.IBPluginDependency + 26.IBPluginDependency + 27.IBPluginDependency + 30.IBPluginDependency + 31.IBPluginDependency + 32.IBPluginDependency + 33.IBPluginDependency + 34.IBPluginDependency + 35.IBPluginDependency + 36.IBPluginDependency + 37.IBPluginDependency + 38.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + {{431, 342}, {490, 497}} + com.apple.InterfaceBuilder.CocoaPlugin + {{431, 342}, {490, 497}} + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + + YES + + + + + YES + + + YES + + + + 43 + + + + YES + + TestClientXMLParserWindowController + NSWindowController + + YES + + YES + hideXMLParserWindow: + parse: + showXMLParserWindow: + toggleXMLParserWindow: + + + YES + id + id + id + id + + + + YES + + YES + myParsedObject + myParserResult + myXML + + + YES + id + NSOutlineView + NSTextView + + + + IBProjectSource + TestClientXMLParserWindowController.h + + + + + YES + + NSActionCell + NSCell + + IBFrameworkSource + AppKit.framework/Headers/NSActionCell.h + + + + NSApplication + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSApplication.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSApplicationScripting.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSColorPanel.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSHelpManager.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSPageLayout.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSUserInterfaceItemSearching.h + + + + NSButton + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSButton.h + + + + NSButtonCell + NSActionCell + + IBFrameworkSource + AppKit.framework/Headers/NSButtonCell.h + + + + NSCell + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSCell.h + + + + NSControl + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSControl.h + + + + NSFormatter + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFormatter.h + + + + NSMenu + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenu.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSAccessibility.h + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDictionaryController.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDragging.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontManager.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontPanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSKeyValueBinding.h + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSNibLoading.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSOutlineView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSPasteboard.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSSavePanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTableView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSToolbarItem.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSView.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSError.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFileManager.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueObserving.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyedArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObject.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObjectScripting.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSPortCoder.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSRunLoop.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptObjectSpecifiers.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptWhoseTests.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSThread.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURL.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLConnection.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLDownload.h + + + + NSOutlineView + NSTableView + + + + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSInterfaceStyle.h + + + + NSResponder + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSResponder.h + + + + NSScrollView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSScrollView.h + + + + NSScroller + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSScroller.h + + + + NSSplitView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSSplitView.h + + + + NSTableColumn + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTableColumn.h + + + + NSTableView + NSControl + + + + NSText + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSText.h + + + + NSTextFieldCell + NSActionCell + + IBFrameworkSource + AppKit.framework/Headers/NSTextFieldCell.h + + + + NSTextView + NSText + + IBFrameworkSource + AppKit.framework/Headers/NSTextView.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSClipView.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSMenuItem.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSRulerView.h + + + + NSView + NSResponder + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSDrawer.h + + + + NSWindow + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSWindow.h + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSWindowScripting.h + + + + NSWindowController + NSResponder + + showWindow: + id + + + IBFrameworkSource + AppKit.framework/Headers/NSWindowController.h + + + + + 0 + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + ../../Test Client.xcodeproj + 3 + + diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/Test Client.xcodeproj/project.pbxproj b/Classes/Utils/XMLRPC/Tools/Test Client/Test Client.xcodeproj/project.pbxproj new file mode 100755 index 000000000..39e38edce --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/Test Client.xcodeproj/project.pbxproj @@ -0,0 +1,401 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 070043021144653D000D05B6 /* TestClient.xib in Resources */ = {isa = PBXBuildFile; fileRef = 070043001144653D000D05B6 /* TestClient.xib */; }; + 070043051144656D000D05B6 /* TestClientXMLParserWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 070043031144656D000D05B6 /* TestClientXMLParserWindow.xib */; }; + 0700430C11446593000D05B6 /* TestClientMainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0700430A11446593000D05B6 /* TestClientMainWindow.xib */; }; + 070043131144667B000D05B6 /* TestClientApplicationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0700430E1144667B000D05B6 /* TestClientApplicationController.m */; }; + 070043141144667B000D05B6 /* TestClientMainWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 070043101144667B000D05B6 /* TestClientMainWindowController.m */; }; + 070043151144667B000D05B6 /* TestClientXMLParserWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 070043121144667B000D05B6 /* TestClientXMLParserWindowController.m */; }; + 07E6DAB013679C6E00454D31 /* XMLRPC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 07E6DAA513679B7600454D31 /* XMLRPC.framework */; }; + 07E6DAB213679F3000454D31 /* XMLRPC.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 07E6DAA513679B7600454D31 /* XMLRPC.framework */; }; + 2DC70E311004D90100BBEEA6 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2DC70E2F1004D90100BBEEA6 /* InfoPlist.strings */; }; + 2DC70E381004D90F00BBEEA6 /* Common.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 2DC70E321004D90F00BBEEA6 /* Common.xcconfig */; }; + 2DC70E391004D90F00BBEEA6 /* CommonDevelopment.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 2DC70E331004D90F00BBEEA6 /* CommonDevelopment.xcconfig */; }; + 2DC70E3A1004D90F00BBEEA6 /* CommonRelease.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 2DC70E341004D90F00BBEEA6 /* CommonRelease.xcconfig */; }; + 2DC70E3B1004D90F00BBEEA6 /* TestClientDevelopment.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 2DC70E351004D90F00BBEEA6 /* TestClientDevelopment.xcconfig */; }; + 2DC70E3C1004D90F00BBEEA6 /* TestClientRelease.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 2DC70E361004D90F00BBEEA6 /* TestClientRelease.xcconfig */; }; + 2DC70E3D1004D90F00BBEEA6 /* TestClient.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 2DC70E371004D90F00BBEEA6 /* TestClient.xcconfig */; }; + 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; + 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 07E6DAB113679F1400454D31 /* Copy Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 07E6DAB213679F3000454D31 /* XMLRPC.framework in Copy Frameworks */, + ); + name = "Copy Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 070043011144653D000D05B6 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Languages/English.lproj/TestClient.xib; sourceTree = ""; }; + 070043041144656D000D05B6 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Languages/English.lproj/TestClientXMLParserWindow.xib; sourceTree = ""; }; + 0700430B11446593000D05B6 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Languages/English.lproj/TestClientMainWindow.xib; sourceTree = ""; }; + 0700430D1144667B000D05B6 /* TestClientApplicationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestClientApplicationController.h; sourceTree = ""; }; + 0700430E1144667B000D05B6 /* TestClientApplicationController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestClientApplicationController.m; sourceTree = ""; }; + 0700430F1144667B000D05B6 /* TestClientMainWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestClientMainWindowController.h; sourceTree = ""; }; + 070043101144667B000D05B6 /* TestClientMainWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestClientMainWindowController.m; sourceTree = ""; }; + 070043111144667B000D05B6 /* TestClientXMLParserWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestClientXMLParserWindowController.h; sourceTree = ""; }; + 070043121144667B000D05B6 /* TestClientXMLParserWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestClientXMLParserWindowController.m; sourceTree = ""; }; + 0759A73511434C0D000DFE98 /* XMLRPCEventBasedParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = XMLRPCEventBasedParser.h; path = ../../XMLRPCEventBasedParser.h; sourceTree = SOURCE_ROOT; }; + 0759A73C11434C3C000DFE98 /* XMLRPCEventBasedParserDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = XMLRPCEventBasedParserDelegate.h; path = ../../XMLRPCEventBasedParserDelegate.h; sourceTree = SOURCE_ROOT; }; + 07E6DAA513679B7600454D31 /* XMLRPC.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XMLRPC.framework; path = "../../../../../../Library/Developer/Xcode/DerivedData/XMLRPC-gcawxlhfrkyvgjeolligeasrfeux/Build/Products/Development/XMLRPC.framework"; sourceTree = ""; }; + 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; + 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; + 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; + 2DC70E301004D90100BBEEA6 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = Languages/English.lproj/InfoPlist.strings; sourceTree = ""; }; + 2DC70E321004D90F00BBEEA6 /* Common.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Common.xcconfig; path = Configurations/Common.xcconfig; sourceTree = ""; }; + 2DC70E331004D90F00BBEEA6 /* CommonDevelopment.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = CommonDevelopment.xcconfig; path = Configurations/CommonDevelopment.xcconfig; sourceTree = ""; }; + 2DC70E341004D90F00BBEEA6 /* CommonRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = CommonRelease.xcconfig; path = Configurations/CommonRelease.xcconfig; sourceTree = ""; }; + 2DC70E351004D90F00BBEEA6 /* TestClientDevelopment.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = TestClientDevelopment.xcconfig; path = Configurations/TestClientDevelopment.xcconfig; sourceTree = ""; }; + 2DC70E361004D90F00BBEEA6 /* TestClientRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = TestClientRelease.xcconfig; path = Configurations/TestClientRelease.xcconfig; sourceTree = ""; }; + 2DC70E371004D90F00BBEEA6 /* TestClient.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = TestClient.xcconfig; path = Configurations/TestClient.xcconfig; sourceTree = ""; }; + 32CA4F630368D1EE00C91783 /* TestClient.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestClient.pch; sourceTree = ""; }; + 8D1107310486CEB800E47090 /* TestClient-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "TestClient-Info.plist"; sourceTree = ""; }; + 8D1107320486CEB800E47090 /* Test Client.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Test Client.app"; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8D11072E0486CEB800E47090 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */, + 07E6DAB013679C6E00454D31 /* XMLRPC.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0759A75B11434CC8000DFE98 /* Private Headers */ = { + isa = PBXGroup; + children = ( + 0759A73511434C0D000DFE98 /* XMLRPCEventBasedParser.h */, + 0759A73C11434C3C000DFE98 /* XMLRPCEventBasedParserDelegate.h */, + ); + name = "Private Headers"; + sourceTree = ""; + }; + 080E96DDFE201D6D7F000001 /* Classes */ = { + isa = PBXGroup; + children = ( + 0700430D1144667B000D05B6 /* TestClientApplicationController.h */, + 0700430E1144667B000D05B6 /* TestClientApplicationController.m */, + 0700430F1144667B000D05B6 /* TestClientMainWindowController.h */, + 070043101144667B000D05B6 /* TestClientMainWindowController.m */, + 070043111144667B000D05B6 /* TestClientXMLParserWindowController.h */, + 070043121144667B000D05B6 /* TestClientXMLParserWindowController.m */, + ); + name = Classes; + sourceTree = ""; + }; + 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = { + isa = PBXGroup; + children = ( + 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, + 07E6DAA513679B7600454D31 /* XMLRPC.framework */, + ); + name = "Linked Frameworks"; + sourceTree = ""; + }; + 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 29B97324FDCFA39411CA2CEA /* AppKit.framework */, + 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */, + 29B97325FDCFA39411CA2CEA /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + 19C28FACFE9D520D11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8D1107320486CEB800E47090 /* Test Client.app */, + ); + name = Products; + sourceTree = ""; + }; + 29B97314FDCFA39411CA2CEA /* Test Client */ = { + isa = PBXGroup; + children = ( + 080E96DDFE201D6D7F000001 /* Classes */, + 0759A75B11434CC8000DFE98 /* Private Headers */, + 29B97315FDCFA39411CA2CEA /* Other Sources */, + 29B97317FDCFA39411CA2CEA /* Resources */, + 29B97323FDCFA39411CA2CEA /* Frameworks */, + 19C28FACFE9D520D11CA2CBB /* Products */, + ); + name = "Test Client"; + sourceTree = ""; + }; + 29B97315FDCFA39411CA2CEA /* Other Sources */ = { + isa = PBXGroup; + children = ( + 29B97316FDCFA39411CA2CEA /* main.m */, + 32CA4F630368D1EE00C91783 /* TestClient.pch */, + ); + name = "Other Sources"; + sourceTree = ""; + }; + 29B97317FDCFA39411CA2CEA /* Resources */ = { + isa = PBXGroup; + children = ( + 2DC70E201004D85400BBEEA6 /* Configurations */, + 2DC70E211004D85C00BBEEA6 /* Interface Builder */, + 2DC70E221004D86F00BBEEA6 /* Localized Strings */, + 2DC70E231004D87A00BBEEA6 /* Property Lists */, + ); + name = Resources; + sourceTree = ""; + }; + 29B97323FDCFA39411CA2CEA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, + 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; + 2DC70E201004D85400BBEEA6 /* Configurations */ = { + isa = PBXGroup; + children = ( + 2DC70E321004D90F00BBEEA6 /* Common.xcconfig */, + 2DC70E331004D90F00BBEEA6 /* CommonDevelopment.xcconfig */, + 2DC70E341004D90F00BBEEA6 /* CommonRelease.xcconfig */, + 2DC70E351004D90F00BBEEA6 /* TestClientDevelopment.xcconfig */, + 2DC70E361004D90F00BBEEA6 /* TestClientRelease.xcconfig */, + 2DC70E371004D90F00BBEEA6 /* TestClient.xcconfig */, + ); + name = Configurations; + sourceTree = ""; + }; + 2DC70E211004D85C00BBEEA6 /* Interface Builder */ = { + isa = PBXGroup; + children = ( + 070043001144653D000D05B6 /* TestClient.xib */, + 0700430A11446593000D05B6 /* TestClientMainWindow.xib */, + 070043031144656D000D05B6 /* TestClientXMLParserWindow.xib */, + ); + name = "Interface Builder"; + sourceTree = ""; + }; + 2DC70E221004D86F00BBEEA6 /* Localized Strings */ = { + isa = PBXGroup; + children = ( + 2DC70E2F1004D90100BBEEA6 /* InfoPlist.strings */, + ); + name = "Localized Strings"; + sourceTree = ""; + }; + 2DC70E231004D87A00BBEEA6 /* Property Lists */ = { + isa = PBXGroup; + children = ( + 8D1107310486CEB800E47090 /* TestClient-Info.plist */, + ); + name = "Property Lists"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8D1107260486CEB800E47090 /* Test Client */ = { + isa = PBXNativeTarget; + buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Test Client" */; + buildPhases = ( + 8D1107290486CEB800E47090 /* Resources */, + 07E6DAB113679F1400454D31 /* Copy Frameworks */, + 8D11072C0486CEB800E47090 /* Sources */, + 8D11072E0486CEB800E47090 /* Frameworks */, + 0759A72C11434B8D000DFE98 /* Run Script: Include Git commit hash */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Test Client"; + productInstallPath = "$(HOME)/Applications"; + productName = "XMLRPC Client"; + productReference = 8D1107320486CEB800E47090 /* Test Client.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 29B97313FDCFA39411CA2CEA /* Project object */ = { + isa = PBXProject; + buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Test Client" */; + compatibilityVersion = "Xcode 3.1"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + en, + ); + mainGroup = 29B97314FDCFA39411CA2CEA /* Test Client */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D1107260486CEB800E47090 /* Test Client */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D1107290486CEB800E47090 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2DC70E381004D90F00BBEEA6 /* Common.xcconfig in Resources */, + 2DC70E391004D90F00BBEEA6 /* CommonDevelopment.xcconfig in Resources */, + 2DC70E3A1004D90F00BBEEA6 /* CommonRelease.xcconfig in Resources */, + 2DC70E311004D90100BBEEA6 /* InfoPlist.strings in Resources */, + 2DC70E3D1004D90F00BBEEA6 /* TestClient.xcconfig in Resources */, + 070043021144653D000D05B6 /* TestClient.xib in Resources */, + 2DC70E3B1004D90F00BBEEA6 /* TestClientDevelopment.xcconfig in Resources */, + 0700430C11446593000D05B6 /* TestClientMainWindow.xib in Resources */, + 2DC70E3C1004D90F00BBEEA6 /* TestClientRelease.xcconfig in Resources */, + 070043051144656D000D05B6 /* TestClientXMLParserWindow.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 0759A72C11434B8D000DFE98 /* Run Script: Include Git commit hash */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script: Include Git commit hash"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /usr/bin/ruby; + shellScript = "raise \"Must be executed from within Xcode.\" unless ENV['XCODE_VERSION_ACTUAL']\n\ninfo_plist = \"#{ENV['BUILT_PRODUCTS_DIR']}/#{ENV['WRAPPER_NAME']}/Contents/Info.plist\"\n\nif !File.exist?('/usr/local/bin/git')\n exit\nend\n\ncommit = `/usr/local/bin/git rev-parse --short HEAD`.chomp!\n\nif commit.nil? or commit.empty?\n exit\nend\n\nlines = IO.readlines(info_plist).join\n\nlines.gsub! /(CFBundleShortVersionString<\\/key>\\n\\t)(\\d+\\.\\d+(?:\\.\\d)*[a-z])<\\/string>/, \"\\\\1\\\\2 rev. #{commit}\"\n\nFile.open(info_plist, 'w') { |f| f.puts lines }"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D11072C0486CEB800E47090 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D11072D0486CEB800E47090 /* main.m in Sources */, + 070043131144667B000D05B6 /* TestClientApplicationController.m in Sources */, + 070043141144667B000D05B6 /* TestClientMainWindowController.m in Sources */, + 070043151144667B000D05B6 /* TestClientXMLParserWindowController.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 070043001144653D000D05B6 /* TestClient.xib */ = { + isa = PBXVariantGroup; + children = ( + 070043011144653D000D05B6 /* English */, + ); + name = TestClient.xib; + sourceTree = ""; + }; + 070043031144656D000D05B6 /* TestClientXMLParserWindow.xib */ = { + isa = PBXVariantGroup; + children = ( + 070043041144656D000D05B6 /* English */, + ); + name = TestClientXMLParserWindow.xib; + sourceTree = ""; + }; + 0700430A11446593000D05B6 /* TestClientMainWindow.xib */ = { + isa = PBXVariantGroup; + children = ( + 0700430B11446593000D05B6 /* English */, + ); + name = TestClientMainWindow.xib; + sourceTree = ""; + }; + 2DC70E2F1004D90100BBEEA6 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 2DC70E301004D90100BBEEA6 /* English */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + C01FCF4B08A954540054247B /* Development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2DC70E351004D90F00BBEEA6 /* TestClientDevelopment.xcconfig */; + buildSettings = { + INFOPLIST_FILE = "TestClient-Info.plist"; + }; + name = Development; + }; + C01FCF4C08A954540054247B /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2DC70E361004D90F00BBEEA6 /* TestClientRelease.xcconfig */; + buildSettings = { + INFOPLIST_FILE = "TestClient-Info.plist"; + }; + name = Release; + }; + C01FCF4F08A954540054247B /* Development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2DC70E331004D90F00BBEEA6 /* CommonDevelopment.xcconfig */; + buildSettings = { + }; + name = Development; + }; + C01FCF5008A954540054247B /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2DC70E341004D90F00BBEEA6 /* CommonRelease.xcconfig */; + buildSettings = { + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Test Client" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C01FCF4B08A954540054247B /* Development */, + C01FCF4C08A954540054247B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Test Client" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C01FCF4F08A954540054247B /* Development */, + C01FCF5008A954540054247B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; +} diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/TestClient-Info.plist b/Classes/Utils/XMLRPC/Tools/Test Client/TestClient-Info.plist new file mode 100755 index 000000000..99b1457be --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/TestClient-Info.plist @@ -0,0 +1,30 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + Test Client + CFBundleIconFile + + CFBundleIdentifier + com.divisiblebyzero.Test Client + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Test Client + CFBundlePackageType + APPL + CFBundleSignature + ZERO + CFBundleVersion + 100.0 + CFBundleShortVersionString + 1.0.0d + NSMainNibFile + TestClient + NSPrincipalClass + NSApplication + + diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/TestClient.pch b/Classes/Utils/XMLRPC/Tools/Test Client/TestClient.pch new file mode 100755 index 000000000..564186ff6 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/TestClient.pch @@ -0,0 +1,4 @@ +#ifdef __OBJC__ + #import + #import +#endif diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/TestClientApplicationController.h b/Classes/Utils/XMLRPC/Tools/Test Client/TestClientApplicationController.h new file mode 100755 index 000000000..000d43cd6 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/TestClientApplicationController.h @@ -0,0 +1,11 @@ +#import + +@interface TestClientApplicationController : NSObject { + +} + +- (void)toggleTestClientWindow: (id)sender; + +- (void)toggleXMLParserWindow: (id)sender; + +@end diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/TestClientApplicationController.m b/Classes/Utils/XMLRPC/Tools/Test Client/TestClientApplicationController.m new file mode 100755 index 000000000..cadfe8ba8 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/TestClientApplicationController.m @@ -0,0 +1,21 @@ +#import "TestClientApplicationController.h" +#import "TestClientMainWindowController.h" +#import "TestClientXMLParserWindowController.h" + +@implementation TestClientApplicationController + +- (void)applicationDidFinishLaunching: (NSNotification *)notification { + [self toggleTestClientWindow: self]; +} + +#pragma mark - + +- (void)toggleTestClientWindow: (id)sender { + [[TestClientMainWindowController sharedController] toggleTestClientWindow: self]; +} + +- (void)toggleXMLParserWindow: (id)sender { + [[TestClientXMLParserWindowController sharedController] toggleXMLParserWindow: self]; +} + +@end diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/TestClientMainWindowController.h b/Classes/Utils/XMLRPC/Tools/Test Client/TestClientMainWindowController.h new file mode 100755 index 000000000..0f2374bda --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/TestClientMainWindowController.h @@ -0,0 +1,48 @@ +#import + +@interface TestClientMainWindowController : NSWindowController { + XMLRPCResponse *myResponse; + IBOutlet NSTextField *myRequestURL; + IBOutlet NSTextField *myMethod; + IBOutlet NSTextField *myParameter; + IBOutlet NSProgressIndicator *myProgressIndicator; + IBOutlet NSTextField *myActiveConnection; + IBOutlet NSButton *mySendRequest; + IBOutlet NSTextView *myRequestBody; + IBOutlet NSTextView *myResponseBody; + IBOutlet NSOutlineView *myParsedResponse; +} + ++ (TestClientMainWindowController *)sharedController; + +#pragma mark - + +- (void)showTestClientWindow: (id)sender; + +- (void)hideTestClientWindow: (id)sender; + +#pragma mark - + +- (void)toggleTestClientWindow: (id)sender; + +#pragma mark - + +- (void)sendRequest: (id)sender; + +@end + +#pragma mark - + +@interface TestClientMainWindowController (XMLRPCConnectionDelegate) + +- (void)request: (XMLRPCRequest *)request didReceiveResponse: (XMLRPCResponse *)response; + +- (void)request: (XMLRPCRequest *)request didFailWithError: (NSError *)error; + +- (void)request: (XMLRPCRequest *)request didReceiveAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge; + +- (void)request: (XMLRPCRequest *)request didCancelAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge; + +- (BOOL)request: (XMLRPCRequest *)request canAuthenticateAgainstProtectionSpace: (NSURLProtectionSpace *)protectionSpace; + +@end diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/TestClientMainWindowController.m b/Classes/Utils/XMLRPC/Tools/Test Client/TestClientMainWindowController.m new file mode 100755 index 000000000..c4cefa125 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/TestClientMainWindowController.m @@ -0,0 +1,241 @@ +#import "TestClientMainWindowController.h" + +@implementation TestClientMainWindowController + +static TestClientMainWindowController *sharedInstance = nil; + +- (id)init { + if ((self = [super initWithWindowNibName: @"TestClientMainWindow"])) { + myResponse = nil; + } + + return self; +} + +#pragma mark - + ++ (id)allocWithZone: (NSZone *)zone { + @synchronized(self) { + if (!sharedInstance) { + sharedInstance = [super allocWithZone: zone]; + + return sharedInstance; + } + } + + return nil; +} + +#pragma mark - + ++ (TestClientMainWindowController *)sharedController { + @synchronized(self) { + if (!sharedInstance) { + [[self alloc] init]; + } + } + + return sharedInstance; +} + +#pragma mark - + +- (void)awakeFromNib { + [[self window] center]; +} + +#pragma mark - + +- (void)showTestClientWindow: (id)sender { + [self showWindow: sender]; +} + +- (void)hideTestClientWindow: (id)sender { + [self close]; +} + +#pragma mark - + +- (void)toggleTestClientWindow: (id)sender { + if ([[self window] isKeyWindow]) { + [self hideTestClientWindow: sender]; + } else { + [self showTestClientWindow: sender]; + } +} + +#pragma mark - + +- (void)sendRequest: (id)sender { + NSURL *URL = [NSURL URLWithString: [myRequestURL stringValue]]; + XMLRPCRequest *request = [[[XMLRPCRequest alloc] initWithURL: URL] autorelease]; + NSString *connectionIdentifier; + + [request setMethod: [myMethod stringValue] withParameter: [myParameter stringValue]]; + + [myProgressIndicator startAnimation: self]; + + [myRequestBody setString: [request body]]; + + connectionIdentifier = [[XMLRPCConnectionManager sharedManager] spawnConnectionWithXMLRPCRequest: request delegate: self]; + + [myActiveConnection setHidden: NO]; + + [myActiveConnection setStringValue: [NSString stringWithFormat: @"Active Connection: %@", connectionIdentifier]]; + + [mySendRequest setEnabled: NO]; +} + +#pragma mark - + +- (void)dealloc { + [myResponse release]; + + [super dealloc]; +} + +#pragma mark - + +#pragma mark Outline View Data Source Methods + +#pragma mark - + +- (id)outlineView: (NSOutlineView *)outlineView child: (NSInteger)index ofItem: (id)item { + if (item == nil) { + item = [myResponse object]; + } + + if ([item isKindOfClass: [NSDictionary class]]) { + return [item objectForKey: [[item allKeys] objectAtIndex: index]]; + } else if ([item isKindOfClass: [NSArray class]]) { + return [item objectAtIndex: index]; + } + + return item; +} + +- (BOOL)outlineView: (NSOutlineView *)outlineView isItemExpandable: (id)item { + if ([item isKindOfClass: [NSDictionary class]] || [item isKindOfClass: [NSArray class]]) { + if ([item count] > 0) { + return YES; + } + } + + return NO; +} + +- (NSInteger)outlineView: (NSOutlineView *)outlineView numberOfChildrenOfItem: (id)item { + if (item == nil) { + item = [myResponse object]; + } + + if ([item isKindOfClass: [NSDictionary class]] || [item isKindOfClass: [NSArray class]]) { + return [item count]; + } else if (item != nil) { + return 1; + } + + return 0; +} + +- (id)outlineView: (NSOutlineView *)outlineView objectValueForTableColumn: (NSTableColumn *)tableColumn byItem: (id)item { + NSString *columnIdentifier = (NSString *)[tableColumn identifier]; + + if ([columnIdentifier isEqualToString: @"type"]) { + id parentObject = [outlineView parentForItem: item] ? [outlineView parentForItem: item] : [myResponse object]; + + if ([parentObject isKindOfClass: [NSDictionary class]]) { + return [[parentObject allKeysForObject: item] objectAtIndex: 0]; + } else if ([parentObject isKindOfClass: [NSArray class]]) { + return [NSString stringWithFormat: @"Item %d", [parentObject indexOfObject: item]]; + } else if ([item isKindOfClass: [NSString class]]) { + return @"String"; + } else { + return @"Object"; + } + } else { + if ([item isKindOfClass: [NSDictionary class]] || [item isKindOfClass: [NSArray class]]) { + return [NSString stringWithFormat: @"%d items", [item count]]; + } else { + return item; + } + } + + return nil; +} + +#pragma mark - + +#pragma mark XMLRPC Connection Delegate Methods + +#pragma mark - + +- (void)request: (XMLRPCRequest *)request didReceiveResponse: (XMLRPCResponse *)response { + [myProgressIndicator stopAnimation: self]; + + [myActiveConnection setHidden: YES]; + + [mySendRequest setEnabled: YES]; + + if ([response isFault]) { + NSAlert *alert = [[[NSAlert alloc] init] autorelease]; + + [alert addButtonWithTitle: @"OK"]; + [alert setMessageText: @"The XML-RPC response returned a fault."]; + [alert setInformativeText: [NSString stringWithFormat: @"Fault String: %@", [response faultString]]]; + [alert setAlertStyle: NSCriticalAlertStyle]; + + [alert runModal]; + } else { + [response retain]; + + [myResponse release]; + + myResponse = response; + } + + [myParsedResponse reloadData]; + + [myResponseBody setString: [response body]]; +} + +- (void)request: (XMLRPCRequest *)request didFailWithError: (NSError *)error { + NSAlert *alert = [[[NSAlert alloc] init] autorelease]; + + [[NSApplication sharedApplication] requestUserAttention: NSCriticalRequest]; + + [alert addButtonWithTitle: @"OK"]; + [alert setMessageText: @"The request failed!"]; + [alert setInformativeText: @"The request failed to return a valid response."]; + [alert setAlertStyle: NSCriticalAlertStyle]; + + [alert runModal]; + + [myParsedResponse reloadData]; + + [myProgressIndicator stopAnimation: self]; + + [myActiveConnection setHidden: YES]; + + [mySendRequest setEnabled: YES]; +} + +- (void)request: (XMLRPCRequest *)request didReceiveAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge { + if ([challenge previousFailureCount] == 0) { + NSURLCredential *credential = [NSURLCredential credentialWithUser: @"user" password: @"password" persistence: NSURLCredentialPersistenceNone]; + + [[challenge sender] useCredential: credential forAuthenticationChallenge: challenge]; + } else { + [[challenge sender] cancelAuthenticationChallenge: challenge]; + } +} + +- (void)request: (XMLRPCRequest *)request didCancelAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge { + +} + +- (BOOL)request: (XMLRPCRequest *)request canAuthenticateAgainstProtectionSpace: (NSURLProtectionSpace *)protectionSpace { + return NO; +} + +@end diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/TestClientXMLParserWindowController.h b/Classes/Utils/XMLRPC/Tools/Test Client/TestClientXMLParserWindowController.h new file mode 100755 index 000000000..516d23365 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/TestClientXMLParserWindowController.h @@ -0,0 +1,25 @@ +#import + +@interface TestClientXMLParserWindowController : NSWindowController { + id myParsedObject; + IBOutlet NSTextView *myXML; + IBOutlet NSOutlineView *myParserResult; +} + ++ (TestClientXMLParserWindowController *)sharedController; + +#pragma mark - + +- (void)showXMLParserWindow: (id)sender; + +- (void)hideXMLParserWindow: (id)sender; + +#pragma mark - + +- (void)toggleXMLParserWindow: (id)sender; + +#pragma mark - + +- (void)parse: (id)sender; + +@end diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/TestClientXMLParserWindowController.m b/Classes/Utils/XMLRPC/Tools/Test Client/TestClientXMLParserWindowController.m new file mode 100755 index 000000000..82a59aca1 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/TestClientXMLParserWindowController.m @@ -0,0 +1,215 @@ +#import "TestClientXMLParserWindowController.h" +#import "XMLRPCEventBasedParser.h" + +@interface TestClientXMLParserWindowController (TestClientXMLParserWindowControllerPrivate) + +- (NSString *)typeForItem: (id)item; + +@end + +#pragma mark - + +@implementation TestClientXMLParserWindowController + +static TestClientXMLParserWindowController *sharedInstance = nil; + +- (id)init { + if (self = [super initWithWindowNibName: @"TestClientXMLParserWindow"]) { + myParsedObject = nil; + } + + return self; +} + +#pragma mark - + ++ (id)allocWithZone: (NSZone *)zone { + @synchronized(self) { + if (!sharedInstance) { + sharedInstance = [super allocWithZone: zone]; + + return sharedInstance; + } + } + + return nil; +} + +#pragma mark - + ++ (TestClientXMLParserWindowController *)sharedController { + @synchronized(self) { + if (!sharedInstance) { + [[self alloc] init]; + } + } + + return sharedInstance; +} + +#pragma mark - + +- (void)awakeFromNib { + [[self window] center]; +} + +#pragma mark - + +- (void)showXMLParserWindow: (id)sender { + [self showWindow: sender]; +} + +- (void)hideXMLParserWindow: (id)sender { + [self close]; +} + +#pragma mark - + +- (void)toggleXMLParserWindow: (id)sender { + if ([[self window] isKeyWindow]) { + [self hideXMLParserWindow: sender]; + } else { + [self showXMLParserWindow: sender]; + } +} + +#pragma mark - + +- (void)parse: (id)sender { + NSData *data = [[myXML string] dataUsingEncoding: NSUTF8StringEncoding]; + XMLRPCEventBasedParser *parser = (XMLRPCEventBasedParser *)[[XMLRPCEventBasedParser alloc] initWithData: data]; + + if (!parser) { + NSAlert *alert = [[[NSAlert alloc] init] autorelease]; + + [alert addButtonWithTitle: @"OK"]; + [alert setMessageText: @"The parser encountered an error."]; + [alert setInformativeText: @"There was a problem creating the XML parser."]; + [alert setAlertStyle: NSCriticalAlertStyle]; + + [alert runModal]; + + return; + } + + [myParsedObject release]; + + myParsedObject = [[parser parse] retain]; + + NSError *parserError = [[[parser parserError] retain] autorelease]; + + [parser release]; + + if (!myParsedObject) { + NSAlert *alert = [[[NSAlert alloc] init] autorelease]; + + [alert addButtonWithTitle: @"OK"]; + [alert setMessageText: @"The parser encountered an error."]; + [alert setInformativeText: [parserError localizedDescription]]; + [alert setAlertStyle: NSCriticalAlertStyle]; + + [alert runModal]; + + return; + } + + [myParserResult reloadData]; +} + +#pragma mark - + +#pragma mark Outline View Data Source Methods + +#pragma mark - + +- (id)outlineView: (NSOutlineView *)outlineView child: (NSInteger)index ofItem: (id)item { + if (item == nil) { + item = myParsedObject; + } + + if ([item isKindOfClass: [NSDictionary class]]) { + return [item objectForKey: [[item allKeys] objectAtIndex: index]]; + } else if ([item isKindOfClass: [NSArray class]]) { + return [item objectAtIndex: index]; + } + + return item; +} + +- (BOOL)outlineView: (NSOutlineView *)outlineView isItemExpandable: (id)item { + if ([item isKindOfClass: [NSDictionary class]] || [item isKindOfClass: [NSArray class]]) { + if ([item count] > 0) { + return YES; + } + } + + return NO; +} + +- (NSInteger)outlineView: (NSOutlineView *)outlineView numberOfChildrenOfItem: (id)item { + if (item == nil) { + item = myParsedObject; + } + + if ([item isKindOfClass: [NSDictionary class]] || [item isKindOfClass: [NSArray class]]) { + return [item count]; + } else if (item != nil) { + return 1; + } + + return 0; +} + +- (id)outlineView: (NSOutlineView *)outlineView objectValueForTableColumn: (NSTableColumn *)tableColumn byItem: (id)item { + NSString *columnIdentifier = (NSString *)[tableColumn identifier]; + + if ([columnIdentifier isEqualToString: @"type"]) { + id parentObject = [outlineView parentForItem: item] ? [outlineView parentForItem: item] : myParsedObject; + + if ([parentObject isKindOfClass: [NSDictionary class]]) { + return [NSString stringWithFormat: @"\"%@\", %@", [[parentObject allKeysForObject: item] objectAtIndex: 0], [self typeForItem: item]]; + } else if ([parentObject isKindOfClass: [NSArray class]]) { + return [NSString stringWithFormat: @"Item %d, %@", [parentObject indexOfObject: item], [self typeForItem: item]]; + } else { + return [self typeForItem: item]; + } + } else { + if ([item isKindOfClass: [NSDictionary class]] || [item isKindOfClass: [NSArray class]]) { + return [NSString stringWithFormat: @"%d items", [item count]]; + } else { + return [NSString stringWithFormat: @"\"%@\"", item]; + } + } + + return nil; +} + +@end + +#pragma mark - + +@implementation TestClientXMLParserWindowController (TestClientXMLParserWindowControllerPrivate) + +- (NSString *)typeForItem: (id)item { + NSString *type; + + if ([item isKindOfClass: [NSArray class]]) { + type = @"Array"; + } else if ([item isKindOfClass: [NSDictionary class]]) { + type = @"Dictionary"; + } else if ([item isKindOfClass: [NSString class]]) { + type = @"String"; + } else if ([item isKindOfClass: [NSNumber class]]) { + type = @"Number"; + } else if ([item isKindOfClass: [NSDate class]]) { + type = @"Date"; + } else if ([item isKindOfClass: [NSData class]]) { + type = @"Data"; + } else { + type = @"Object"; + } + + return type; +} + +@end diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/main.m b/Classes/Utils/XMLRPC/Tools/Test Client/main.m new file mode 100755 index 000000000..632c47ed0 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/main.m @@ -0,0 +1,5 @@ +#import + +int main(int argc, char *argv[]) { + return NSApplicationMain(argc, (const char **)argv); +} diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/README.md b/Classes/Utils/XMLRPC/Tools/Test Server/README.md new file mode 100755 index 000000000..b8c84b0ed --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Server/README.md @@ -0,0 +1,51 @@ +# The XML-RPC Test Server + +The XML-RPC test server is written in Java and utilizes the Apache XML-RPC server library. This test server can be useful when debugging problems with the XML-RPC framework. + +# Usage + +To start the server simply call Ant from the XML-RPC test server directory: + + $ ant + +This will invoke Ant with the default target. The default target will issue the following targets in the following order, the last target is the default invoked by Ant: + + - init + - compile + - pre-jar + - jar + - run + +These targets each play a role in building and running the Java project. The details of each target can be found in the Ant build script. + +Finally, the XML-RPC test server should now be running. To start the server simply click on the "Start" button. This will start the test server on port 8080, available for any incoming XML-RPC requests. + +## Creating XML-RPC server handlers + +The XML-RPC test server exposes XML-RPC methods through server handlers. Each server handler is simply a Java class that is registered with the Apache XML-RPC library. Here is an example of the Echo handler provided in the distribution: + + public class Echo { + public String echo(String message) { + return message; + } + } + +This handler simply takes a message provided in the XML-RPC request and returns it in the XML-RPC response. To register this handler with the XML-RPC server simply add it to the propertyHandlerMapping in Server.java: + + try { + propertyHandlerMapping.addHandler("Echo", Echo.class); + + this.embeddedXmlRpcServer.setHandlerMapping(propertyHandlerMapping); + } catch (Exception e) { + this.controlPanel.addLogMessage(e.getMessage()); + } + +The handler is now available to any incoming XML-RPC requests. + +# License + +Copyright (c) 2012 Eric Czarny. + +The Cocoa XML-RPC Framework should be accompanied by a LICENSE file, this file contains the license relevant to this distribution. + +If no LICENSE exists please contact Eric Czarny . diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/build.properties b/Classes/Utils/XMLRPC/Tools/Test Server/build.properties new file mode 100755 index 000000000..d87bc741d --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Server/build.properties @@ -0,0 +1,17 @@ +project.name = test-server +project.main = com.divisiblebyzero.xmlrpc.Application +project.base.directory = . +project.source.directory = ${project.base.directory}/src +project.libraries = commons-logging-1.1.1.jar log4j-1.2.15.jar ws-commons-util-1.0.2.jar xmlrpc-common-3.1.jar xmlrpc-server-3.1.jar + +build.directory = ${project.base.directory} +build.classes.directory = ${build.directory}/classes + +distribution.directory = ${project.base.directory}/lib +distribution.jar = ${distribution.directory}/${project.name}.jar + +resources.directory = ${project.base.directory}/resources + +jar.compress = true + +compiler.debug = true diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/build.xml b/Classes/Utils/XMLRPC/Tools/Test Server/build.xml new file mode 100755 index 000000000..494c7a583 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Server/build.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Stub for project installation. + + + + + + + diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/lib/commons-logging-1.1.1.jar b/Classes/Utils/XMLRPC/Tools/Test Server/lib/commons-logging-1.1.1.jar new file mode 100755 index 000000000..8758a96b7 Binary files /dev/null and b/Classes/Utils/XMLRPC/Tools/Test Server/lib/commons-logging-1.1.1.jar differ diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/lib/log4j-1.2.15.jar b/Classes/Utils/XMLRPC/Tools/Test Server/lib/log4j-1.2.15.jar new file mode 100755 index 000000000..c930a6ab4 Binary files /dev/null and b/Classes/Utils/XMLRPC/Tools/Test Server/lib/log4j-1.2.15.jar differ diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/lib/ws-commons-util-1.0.2.jar b/Classes/Utils/XMLRPC/Tools/Test Server/lib/ws-commons-util-1.0.2.jar new file mode 100755 index 000000000..3fc364e7f Binary files /dev/null and b/Classes/Utils/XMLRPC/Tools/Test Server/lib/ws-commons-util-1.0.2.jar differ diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/lib/xmlrpc-common-3.1.jar b/Classes/Utils/XMLRPC/Tools/Test Server/lib/xmlrpc-common-3.1.jar new file mode 100755 index 000000000..862098b10 Binary files /dev/null and b/Classes/Utils/XMLRPC/Tools/Test Server/lib/xmlrpc-common-3.1.jar differ diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/lib/xmlrpc-server-3.1.jar b/Classes/Utils/XMLRPC/Tools/Test Server/lib/xmlrpc-server-3.1.jar new file mode 100755 index 000000000..bb64a504e Binary files /dev/null and b/Classes/Utils/XMLRPC/Tools/Test Server/lib/xmlrpc-server-3.1.jar differ diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/resources/handlers.properties b/Classes/Utils/XMLRPC/Tools/Test Server/resources/handlers.properties new file mode 100755 index 000000000..0f32a8e80 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Server/resources/handlers.properties @@ -0,0 +1,5 @@ +# +# XML-RPC Server Handlers +# + +Echo=com.divisiblebyzero.xmlrpc.model.handlers.Echo diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/resources/log4j.xml b/Classes/Utils/XMLRPC/Tools/Test Server/resources/log4j.xml new file mode 100755 index 000000000..f1e19c3d7 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Server/resources/log4j.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/server.sh b/Classes/Utils/XMLRPC/Tools/Test Server/server.sh new file mode 100755 index 000000000..d23346a72 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Server/server.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +java -jar lib/test-server.jar $* diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/Application.java b/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/Application.java new file mode 100755 index 000000000..c8ff3dfff --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/Application.java @@ -0,0 +1,25 @@ +package com.divisiblebyzero.xmlrpc; + +import javax.swing.UIManager; + +import org.apache.log4j.Logger; + +import com.divisiblebyzero.xmlrpc.view.XmlRpcServerControlPanel; + +class Application { + private static Logger logger = Logger.getLogger(Application.class); + + private Application() { + new XmlRpcServerControlPanel(); + } + + public static void main(String args[]) { + try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch (Exception e) { + logger.error("Unable to modify application look and feel."); + } + + new Application(); + } +} diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/controller/XmlRpcServerControlPanelController.java b/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/controller/XmlRpcServerControlPanelController.java new file mode 100755 index 000000000..043f718f9 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/controller/XmlRpcServerControlPanelController.java @@ -0,0 +1,67 @@ +package com.divisiblebyzero.xmlrpc.controller; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import com.divisiblebyzero.xmlrpc.model.Server; +import com.divisiblebyzero.xmlrpc.view.XmlRpcServerControlPanel; + +public class XmlRpcServerControlPanelController implements ActionListener { + private XmlRpcServerControlPanel controlPanel; + private Server xmlRpcServer; + + public XmlRpcServerControlPanelController(XmlRpcServerControlPanel controlPanel) { + this.controlPanel = controlPanel; + this.xmlRpcServer = new Server(this.controlPanel); + } + + public void actionPerformed(ActionEvent actionEvent) { + String actionCommand = actionEvent.getActionCommand(); + + if (actionCommand.equals("Start")) { + this.startXmlRpcServer(); + } else if (actionCommand.equals("Stop")) { + this.stopXmlRpcServer(); + } else if (actionCommand.equals("Restart")) { + this.restartXmlRpcServer(); + } + + this.controlPanel.refreshControls(); + } + + public boolean isXmlRpcServerRunning() { + return this.xmlRpcServer.isRunning(); + } + + private void startXmlRpcServer() { + this.controlPanel.addLogMessage("Starting the XML-RPC server."); + + this.xmlRpcServer.startEmbeddedWebServer(); + } + + private void stopXmlRpcServer() { + if (this.xmlRpcServer == null) { + this.controlPanel.addLogMessage("Unable to stop the XML-RPC server, none could be found."); + + return; + } + + this.controlPanel.addLogMessage("Stopping the XML-RPC server."); + + this.xmlRpcServer.stopEmbeddedWebServer(); + } + + private void restartXmlRpcServer() { + if (this.xmlRpcServer == null) { + this.controlPanel.addLogMessage("Unable to restart the XML-RPC server, none could be found."); + + return; + } + + this.controlPanel.addLogMessage("Restarting the XML-RPC server."); + + this.xmlRpcServer.stopEmbeddedWebServer(); + + this.xmlRpcServer.startEmbeddedWebServer(); + } +} diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/model/Server.java b/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/model/Server.java new file mode 100755 index 000000000..8704bf214 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/model/Server.java @@ -0,0 +1,60 @@ +package com.divisiblebyzero.xmlrpc.model; + +import com.divisiblebyzero.xmlrpc.view.XmlRpcServerControlPanel; + +import org.apache.xmlrpc.server.PropertyHandlerMapping; +import org.apache.xmlrpc.server.XmlRpcServer; +import org.apache.xmlrpc.webserver.WebServer; + +public class Server { + private static final int port = 8080; + private WebServer embeddedWebServer; + private XmlRpcServer embeddedXmlRpcServer; + private boolean running; + private XmlRpcServerControlPanel controlPanel; + + public Server(XmlRpcServerControlPanel controlPanel) { + this.embeddedWebServer = new WebServer(Server.port); + this.embeddedXmlRpcServer = this.embeddedWebServer.getXmlRpcServer(); + this.running = false; + this.controlPanel = controlPanel; + + PropertyHandlerMapping propertyHandlerMapping = new PropertyHandlerMapping(); + + try { + propertyHandlerMapping.load(Thread.currentThread().getContextClassLoader(), "handlers.properties"); + } catch (Exception e) { + this.controlPanel.addLogMessage(e.getMessage()); + } + + this.embeddedXmlRpcServer.setHandlerMapping(propertyHandlerMapping); + } + + public void startEmbeddedWebServer() { + try { + this.embeddedWebServer.start(); + + this.controlPanel.addLogMessage("The XML-RPC server has been started on port " + Server.port + "."); + } catch (Exception e) { + this.controlPanel.addLogMessage(e.getMessage()); + } + + this.running = true; + } + + public void stopEmbeddedWebServer() { + try { + this.embeddedWebServer.shutdown(); + + this.controlPanel.addLogMessage("The XML-RPC server has been stopped."); + } catch (Exception e) { + this.controlPanel.addLogMessage(e.getMessage()); + } + + this.running = false; + } + + public boolean isRunning() { + return this.running; + } +} diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/model/handlers/Echo.java b/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/model/handlers/Echo.java new file mode 100755 index 000000000..852f6102b --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/model/handlers/Echo.java @@ -0,0 +1,7 @@ +package com.divisiblebyzero.xmlrpc.model.handlers; + +public class Echo { + public String echo(String message) { + return message; + } +} diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/view/XmlRpcServerControlPanel.java b/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/view/XmlRpcServerControlPanel.java new file mode 100755 index 000000000..c40779024 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/view/XmlRpcServerControlPanel.java @@ -0,0 +1,155 @@ +package com.divisiblebyzero.xmlrpc.view; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Toolkit; + +import javax.swing.BorderFactory; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTextPane; + +import com.divisiblebyzero.xmlrpc.controller.XmlRpcServerControlPanelController; + +public class XmlRpcServerControlPanel extends JFrame { + private static final long serialVersionUID = -7835812670356078909L; + private XmlRpcServerControlPanelController xmlRpcServerControlPanelController; + private JTextPane logMessageTextPane; + private JButton startButton; + private JButton stopButton; + private JButton restartButton; + + public XmlRpcServerControlPanel() { + super("Control Panel"); + + this.xmlRpcServerControlPanelController = new XmlRpcServerControlPanelController(this); + + int x = Toolkit.getDefaultToolkit().getScreenSize().width; + int y = Toolkit.getDefaultToolkit().getScreenSize().height; + + int width, height; + + width = 500; + height = 500; + + this.setBounds(((x - (width)) / 2), ((y - (height)) / 2) - (height / 4), width, height); + + this.setResizable(false); + + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + this.initialize(); + + this.setVisible(true); + } + + private void initialize() { + Container container = this.getContentPane(); + + container.setLayout(new BorderLayout()); + + /* North Panel */ + container.add(new JPanel(), BorderLayout.NORTH); + + /* East Panel */ + container.add(new JPanel(), BorderLayout.EAST); + + /* Center Panel */ + JPanel center = new JPanel(); + center.setBorder(BorderFactory.createTitledBorder(" " + "Server Log" + " ")); + + this.logMessageTextPane = new JTextPane(); + + this.logMessageTextPane.setEditable(false); + this.logMessageTextPane.setBackground(Color.WHITE); + this.logMessageTextPane.setFont(new Font("Monospaced", Font.PLAIN, 12)); + + this.logMessageTextPane.setText("Server awaiting action..."); + + JScrollPane scrollableTextPane = new JScrollPane(this.logMessageTextPane); + scrollableTextPane.setBorder(BorderFactory.createLineBorder(Color.GRAY)); + scrollableTextPane.setPreferredSize(new Dimension(435, 374)); + + center.add(scrollableTextPane); + + container.add(center, BorderLayout.CENTER); + + /* South Panel */ + container.add(this.createSouthernPanel(), BorderLayout.SOUTH); + + /* West Panel */ + container.add(new JPanel(), BorderLayout.WEST); + } + + private JPanel createSouthernPanel() { + JPanel south = new JPanel(); + + south.setPreferredSize(new Dimension(425, 47)); + + /* Start & Stop Panel */ + JPanel startAndStopPanel = new JPanel(); + + startButton = new JButton("Start"); + + startButton.setPreferredSize(new Dimension(85, 25)); + startButton.addActionListener(this.xmlRpcServerControlPanelController); + + startAndStopPanel.add(startButton); + + startAndStopPanel.add(new JLabel(" / ")); + + stopButton = new JButton("Stop"); + + stopButton.setPreferredSize(new Dimension(85, 25)); + stopButton.addActionListener(this.xmlRpcServerControlPanelController); + + startAndStopPanel.add(stopButton); + + south.add(startAndStopPanel); + + JPanel padding = new JPanel(); + padding.setPreferredSize(new Dimension(150, 25)); + + south.add(padding); + + /* Restart Panel */ + JPanel restartPanel = new JPanel(); + + restartButton = new JButton("Restart"); + + restartButton.setPreferredSize(new Dimension(95, 25)); + restartButton.addActionListener(this.xmlRpcServerControlPanelController); + + restartPanel.add(restartButton); + + south.add(restartPanel); + + this.refreshControls(); + + return south; + } + + public void addLogMessage(String message) { + String existingLogMessages = this.logMessageTextPane.getText() + "\n"; + + this.logMessageTextPane.setText(existingLogMessages + message); + } + + public void refreshControls() { + if (this.xmlRpcServerControlPanelController.isXmlRpcServerRunning()) { + this.startButton.setEnabled(false); + this.stopButton.setEnabled(true); + this.restartButton.setEnabled(true); + } else { + this.startButton.setEnabled(true); + this.stopButton.setEnabled(false); + this.restartButton.setEnabled(false); + } + } +} diff --git a/Classes/Utils/XMLRPC/Unit Tests/XMLRPCParserTest.h b/Classes/Utils/XMLRPC/Unit Tests/XMLRPCParserTest.h new file mode 100755 index 000000000..36d87abde --- /dev/null +++ b/Classes/Utils/XMLRPC/Unit Tests/XMLRPCParserTest.h @@ -0,0 +1,9 @@ +#import + +@interface XMLRPCParserTest : SenTestCase { + NSDictionary *myTestCases; +} + +- (void)testEventBasedParser; + +@end diff --git a/Classes/Utils/XMLRPC/Unit Tests/XMLRPCParserTest.m b/Classes/Utils/XMLRPC/Unit Tests/XMLRPCParserTest.m new file mode 100755 index 000000000..45cbb48c8 --- /dev/null +++ b/Classes/Utils/XMLRPC/Unit Tests/XMLRPCParserTest.m @@ -0,0 +1,150 @@ +#import "XMLRPCParserTest.h" +#import "XMLRPCEventBasedParser.h" + +@interface XMLRPCParserTest (XMLRPCParserTestPrivate) + +- (NSBundle *)unitTestBundle; + +#pragma mark - + +- (NSDictionary *)testCases; + +#pragma mark - + +- (BOOL)parsedResult: (id)parsedResult isEqualToTestCaseResult: (id)testCaseResult; + +#pragma mark - + +- (BOOL)parsedResult: (id)parsedResult isEqualToArray: (NSArray *)array; + +- (BOOL)parsedResult: (id)parsedResult isEqualToDictionary: (NSDictionary *)dictionary; + +@end + +#pragma mark - + +@implementation XMLRPCParserTest + +- (void)setUp { + myTestCases = [[self testCases] retain]; +} + +#pragma mark - + +- (void)testEventBasedParser { + NSEnumerator *testCaseEnumerator = [myTestCases keyEnumerator]; + id testCaseName; + + while (testCaseName = [testCaseEnumerator nextObject]) { + NSString *testCase = [[self unitTestBundle] pathForResource: testCaseName ofType: @"xml"]; + NSData *testCaseData =[[[NSData alloc] initWithContentsOfFile: testCase] autorelease]; + XMLRPCEventBasedParser *parser = [[[XMLRPCEventBasedParser alloc] initWithData: testCaseData] autorelease]; + id testCaseResult = [myTestCases objectForKey: testCaseName]; + id parsedResult = [parser parse]; + + STAssertTrue([self parsedResult: parsedResult isEqualToTestCaseResult: testCaseResult], @"The test case failed: %@", testCaseName); + } +} + +#pragma mark - + +- (void)tearDown { + [myTestCases release]; +} + +@end + +#pragma mark - + +@implementation XMLRPCParserTest (XMLRPCParserTestPrivate) + +- (NSBundle *)unitTestBundle { + return [NSBundle bundleForClass: [XMLRPCParserTest class]]; +} + +#pragma mark - + +- (NSDictionary *)testCases { + NSString *file = [[self unitTestBundle] pathForResource: @"TestCases" ofType: @"plist"]; + NSDictionary *testCases = [[[NSDictionary alloc] initWithContentsOfFile: file] autorelease]; + + return testCases; +} + +#pragma mark - + +- (BOOL)parsedResult: (id)parsedResult isEqualToTestCaseResult: (id)testCaseResult { + if ([testCaseResult isKindOfClass: [NSArray class]]) { + return [self parsedResult: parsedResult isEqualToArray: testCaseResult]; + } else if ([testCaseResult isKindOfClass: [NSDictionary class]]) { + return [self parsedResult: parsedResult isEqualToDictionary: testCaseResult]; + } + + if ([testCaseResult isKindOfClass: [NSNumber class]]) { + return [parsedResult isEqualToNumber: testCaseResult]; + } else if ([testCaseResult isKindOfClass: [NSString class]]) { + return [parsedResult isEqualToString: testCaseResult]; + } else if ([testCaseResult isKindOfClass: [NSDate class]]) { + return [parsedResult isEqualToDate: testCaseResult]; + } else if ([testCaseResult isKindOfClass: [NSData class]]) { + return [parsedResult isEqualToData: testCaseResult]; + } + + return YES; +} + +#pragma mark - + +- (BOOL)parsedResult: (id)parsedResult isEqualToArray: (NSArray *)array { + NSEnumerator *arrayEnumerator = [array objectEnumerator]; + id arrayElement; + + if (![parsedResult isKindOfClass: [NSArray class]]) { + return NO; + } + + if ([parsedResult count] != [array count]) { + return NO; + } + + if ([parsedResult isEqualToArray: array]) { + return YES; + } + + while (arrayElement = [arrayEnumerator nextObject]) { + NSInteger index = [array indexOfObject: arrayElement]; + + if (![self parsedResult: [parsedResult objectAtIndex: index] isEqualToTestCaseResult: arrayElement]) { + return NO; + } + } + + return YES; +} + +- (BOOL)parsedResult: (id)parsedResult isEqualToDictionary: (NSDictionary *)dictionary { + NSEnumerator *keyEnumerator = [dictionary keyEnumerator]; + id key; + + if (![parsedResult isKindOfClass: [NSDictionary class]]) { + return NO; + } + + if ([parsedResult count] != [dictionary count]) { + return NO; + } + + if ([parsedResult isEqualToDictionary: dictionary]) { + return YES; + } + + while (key = [keyEnumerator nextObject]) { + if (![self parsedResult: [parsedResult objectForKey: key] isEqualToTestCaseResult: [dictionary objectForKey: key]]) { + return NO; + } + } + + return YES; +} + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPC.h b/Classes/Utils/XMLRPC/XMLRPC.h new file mode 100755 index 000000000..d5ded9b67 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPC.h @@ -0,0 +1,5 @@ +#import +#import +#import +#import +#import diff --git a/Classes/Utils/XMLRPC/XMLRPC.pch b/Classes/Utils/XMLRPC/XMLRPC.pch new file mode 100755 index 000000000..60070a9c9 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPC.pch @@ -0,0 +1,3 @@ +#ifdef __OBJC__ + #import +#endif diff --git a/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/project.pbxproj b/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/project.pbxproj new file mode 100755 index 000000000..109f3a548 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/project.pbxproj @@ -0,0 +1,526 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 033836841527905D00EF8E8A /* NSData+Base64.h in Headers */ = {isa = PBXBuildFile; fileRef = 033836811527905D00EF8E8A /* NSData+Base64.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 033836861527905D00EF8E8A /* NSData+Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 033836821527905D00EF8E8A /* NSData+Base64.m */; }; + 2DCADEDB1529E24300B47A4F /* XMLRPCEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DCADED91529E06900B47A4F /* XMLRPCEncoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DC212F7581200BD6E09 /* NSStringAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C5F80E33A659006453B4 /* NSStringAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DC312F7581200BD6E09 /* NSStringAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B0C5F90E33A659006453B4 /* NSStringAdditions.m */; }; + 903B0DC412F7581200BD6E09 /* XMLRPCConnectionDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 07452BE20E469C9000A57686 /* XMLRPCConnectionDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DC512F7581200BD6E09 /* XMLRPC.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C5FA0E33A659006453B4 /* XMLRPC.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DC612F7581200BD6E09 /* XMLRPCConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C5FB0E33A659006453B4 /* XMLRPCConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DC712F7581200BD6E09 /* XMLRPCConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B0C5FC0E33A659006453B4 /* XMLRPCConnection.m */; }; + 903B0DC812F7581200BD6E09 /* XMLRPCConnectionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 075137F90E429E560019E4F6 /* XMLRPCConnectionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DC912F7581200BD6E09 /* XMLRPCConnectionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 075137FA0E429E560019E4F6 /* XMLRPCConnectionManager.m */; }; + 903B0DCA12F7581200BD6E09 /* XMLRPCDefaultEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C5FF0E33A659006453B4 /* XMLRPCDefaultEncoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DCB12F7581200BD6E09 /* XMLRPCDefaultEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B0C6000E33A659006453B4 /* XMLRPCDefaultEncoder.m */; }; + 903B0DCC12F7581200BD6E09 /* XMLRPCEventBasedParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 07EF45390E721A5D009F2708 /* XMLRPCEventBasedParser.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DCD12F7581200BD6E09 /* XMLRPCEventBasedParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 07EF453A0E721A5D009F2708 /* XMLRPCEventBasedParser.m */; }; + 903B0DCE12F7581200BD6E09 /* XMLRPCEventBasedParserDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0707047610114B9400CB7702 /* XMLRPCEventBasedParserDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DCF12F7581200BD6E09 /* XMLRPCEventBasedParserDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 0707047710114B9400CB7702 /* XMLRPCEventBasedParserDelegate.m */; }; + 903B0DD012F7581200BD6E09 /* XMLRPCRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C6010E33A659006453B4 /* XMLRPCRequest.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DD112F7581200BD6E09 /* XMLRPCRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B0C6020E33A659006453B4 /* XMLRPCRequest.m */; }; + 903B0DD212F7581200BD6E09 /* XMLRPCResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C6030E33A659006453B4 /* XMLRPCResponse.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DD312F7581200BD6E09 /* XMLRPCResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B0C6040E33A659006453B4 /* XMLRPCResponse.m */; }; + 903B0DD412F7581F00BD6E09 /* XMLRPC.pch in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C6160E33A672006453B4 /* XMLRPC.pch */; settings = {ATTRIBUTES = (Public, ); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 033836811527905D00EF8E8A /* NSData+Base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+Base64.h"; sourceTree = ""; }; + 033836821527905D00EF8E8A /* NSData+Base64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+Base64.m"; sourceTree = ""; }; + 0707047610114B9400CB7702 /* XMLRPCEventBasedParserDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLRPCEventBasedParserDelegate.h; sourceTree = ""; }; + 0707047710114B9400CB7702 /* XMLRPCEventBasedParserDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XMLRPCEventBasedParserDelegate.m; sourceTree = ""; }; + 07075BAD10C5FE3800589A27 /* AlternativeDateFormatsTestCase.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = AlternativeDateFormatsTestCase.xml; path = "Resources/Test Cases/AlternativeDateFormatsTestCase.xml"; sourceTree = ""; }; + 07127C580F4266F4009C7476 /* Common.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Common.xcconfig; path = Configurations/Common.xcconfig; sourceTree = ""; }; + 07127C590F4266F4009C7476 /* CommonDevelopment.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = CommonDevelopment.xcconfig; path = Configurations/CommonDevelopment.xcconfig; sourceTree = ""; }; + 07127C5A0F4266F4009C7476 /* CommonRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = CommonRelease.xcconfig; path = Configurations/CommonRelease.xcconfig; sourceTree = ""; }; + 07452BE20E469C9000A57686 /* XMLRPCConnectionDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLRPCConnectionDelegate.h; sourceTree = ""; }; + 075137F90E429E560019E4F6 /* XMLRPCConnectionManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLRPCConnectionManager.h; sourceTree = ""; }; + 075137FA0E429E560019E4F6 /* XMLRPCConnectionManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XMLRPCConnectionManager.m; sourceTree = ""; }; + 0759A6F21143495E000DFE98 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = Languages/English.lproj/InfoPlist.strings; sourceTree = ""; }; + 0799AF040F6721FF00B71B22 /* XMLRPCUnitTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "XMLRPCUnitTests-Info.plist"; path = "Resources/Property Lists/XMLRPCUnitTests-Info.plist"; sourceTree = ""; }; + 0799AF0A0F67227F00B71B22 /* XMLRPCUnitTests.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = XMLRPCUnitTests.xcconfig; path = Configurations/XMLRPCUnitTests.xcconfig; sourceTree = ""; }; + 0799AF0B0F67227F00B71B22 /* XMLRPCUnitTestsDevelopment.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = XMLRPCUnitTestsDevelopment.xcconfig; path = Configurations/XMLRPCUnitTestsDevelopment.xcconfig; sourceTree = ""; }; + 0799AF0C0F67227F00B71B22 /* XMLRPCUnitTestsRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = XMLRPCUnitTestsRelease.xcconfig; path = Configurations/XMLRPCUnitTestsRelease.xcconfig; sourceTree = ""; }; + 0799AF0F0F6722D600B71B22 /* XMLRPC.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = XMLRPC.xcconfig; path = Configurations/XMLRPC.xcconfig; sourceTree = ""; }; + 0799AF100F6722D600B71B22 /* XMLRPCDevelopment.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = XMLRPCDevelopment.xcconfig; path = Configurations/XMLRPCDevelopment.xcconfig; sourceTree = ""; }; + 0799AF110F6722D600B71B22 /* XMLRPCRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = XMLRPCRelease.xcconfig; path = Configurations/XMLRPCRelease.xcconfig; sourceTree = ""; }; + 0799AF280F67254B00B71B22 /* XMLRPC-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "XMLRPC-Info.plist"; path = "Resources/Property Lists/XMLRPC-Info.plist"; sourceTree = ""; }; + 0799AF5D0F67266400B71B22 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; }; + 07A0A9021016A51000CEE3C7 /* EmptyBooleanTestCase.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = EmptyBooleanTestCase.xml; path = "Resources/Test Cases/EmptyBooleanTestCase.xml"; sourceTree = ""; }; + 07A0A9031016A51000CEE3C7 /* EmptyDataTestCase.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = EmptyDataTestCase.xml; path = "Resources/Test Cases/EmptyDataTestCase.xml"; sourceTree = ""; }; + 07A0A9041016A51000CEE3C7 /* EmptyDoubleTestCase.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = EmptyDoubleTestCase.xml; path = "Resources/Test Cases/EmptyDoubleTestCase.xml"; sourceTree = ""; }; + 07A0A9051016A51000CEE3C7 /* EmptyIntegerTestCase.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = EmptyIntegerTestCase.xml; path = "Resources/Test Cases/EmptyIntegerTestCase.xml"; sourceTree = ""; }; + 07A0A9061016A51000CEE3C7 /* EmptyStringTestCase.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = EmptyStringTestCase.xml; path = "Resources/Test Cases/EmptyStringTestCase.xml"; sourceTree = ""; }; + 07B0C5F80E33A659006453B4 /* NSStringAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSStringAdditions.h; sourceTree = ""; }; + 07B0C5F90E33A659006453B4 /* NSStringAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSStringAdditions.m; sourceTree = ""; }; + 07B0C5FA0E33A659006453B4 /* XMLRPC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLRPC.h; sourceTree = ""; }; + 07B0C5FB0E33A659006453B4 /* XMLRPCConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLRPCConnection.h; sourceTree = ""; }; + 07B0C5FC0E33A659006453B4 /* XMLRPCConnection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XMLRPCConnection.m; sourceTree = ""; }; + 07B0C5FF0E33A659006453B4 /* XMLRPCDefaultEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLRPCDefaultEncoder.h; sourceTree = ""; }; + 07B0C6000E33A659006453B4 /* XMLRPCDefaultEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XMLRPCDefaultEncoder.m; sourceTree = ""; }; + 07B0C6010E33A659006453B4 /* XMLRPCRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLRPCRequest.h; sourceTree = ""; }; + 07B0C6020E33A659006453B4 /* XMLRPCRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XMLRPCRequest.m; sourceTree = ""; }; + 07B0C6030E33A659006453B4 /* XMLRPCResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLRPCResponse.h; sourceTree = ""; }; + 07B0C6040E33A659006453B4 /* XMLRPCResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XMLRPCResponse.m; sourceTree = ""; }; + 07B0C6160E33A672006453B4 /* XMLRPC.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLRPC.pch; sourceTree = ""; }; + 07B52BE5101004670015AD8B /* SimpleArrayTestCase.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = SimpleArrayTestCase.xml; path = "Resources/Test Cases/SimpleArrayTestCase.xml"; sourceTree = ""; }; + 07B52BE6101004670015AD8B /* SimpleStructTestCase.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = SimpleStructTestCase.xml; path = "Resources/Test Cases/SimpleStructTestCase.xml"; sourceTree = ""; }; + 07B52BE9101004810015AD8B /* TestCases.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = TestCases.plist; path = "Resources/Property Lists/TestCases.plist"; sourceTree = ""; }; + 07B52C01101008670015AD8B /* XMLRPCParserTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = XMLRPCParserTest.h; path = "Unit Tests/XMLRPCParserTest.h"; sourceTree = ""; }; + 07B52C02101008670015AD8B /* XMLRPCParserTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = XMLRPCParserTest.m; path = "Unit Tests/XMLRPCParserTest.m"; sourceTree = ""; }; + 07BB09881316B65A00E1911C /* DefaultTypeTestCase.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = DefaultTypeTestCase.xml; path = "Resources/Test Cases/DefaultTypeTestCase.xml"; sourceTree = ""; }; + 07EF45390E721A5D009F2708 /* XMLRPCEventBasedParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLRPCEventBasedParser.h; sourceTree = ""; }; + 07EF453A0E721A5D009F2708 /* XMLRPCEventBasedParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XMLRPCEventBasedParser.m; sourceTree = ""; }; + 0867D69BFE84028FC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; + 0867D6A5FE840307C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; + 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + 2DCADED91529E06900B47A4F /* XMLRPCEncoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XMLRPCEncoder.h; sourceTree = ""; }; + 903B0DB612F7574800BD6E09 /* libXMLRPC.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libXMLRPC.a; sourceTree = BUILT_PRODUCTS_DIR; }; + D2F7E79907B2D74100F64583 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 903B0DB412F7574800BD6E09 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 034768DFFF38A50411DB9C8B /* Products */ = { + isa = PBXGroup; + children = ( + 903B0DB612F7574800BD6E09 /* libXMLRPC.a */, + ); + name = Products; + sourceTree = ""; + }; + 07127C570F4266E2009C7476 /* Configurations */ = { + isa = PBXGroup; + children = ( + 07127C580F4266F4009C7476 /* Common.xcconfig */, + 07127C590F4266F4009C7476 /* CommonDevelopment.xcconfig */, + 07127C5A0F4266F4009C7476 /* CommonRelease.xcconfig */, + 0799AF0F0F6722D600B71B22 /* XMLRPC.xcconfig */, + 0799AF100F6722D600B71B22 /* XMLRPCDevelopment.xcconfig */, + 0799AF110F6722D600B71B22 /* XMLRPCRelease.xcconfig */, + 0799AF0A0F67227F00B71B22 /* XMLRPCUnitTests.xcconfig */, + 0799AF0B0F67227F00B71B22 /* XMLRPCUnitTestsDevelopment.xcconfig */, + 0799AF0C0F67227F00B71B22 /* XMLRPCUnitTestsRelease.xcconfig */, + ); + name = Configurations; + sourceTree = ""; + }; + 07452BDC0E469C6900A57686 /* Delegates */ = { + isa = PBXGroup; + children = ( + 07452BE20E469C9000A57686 /* XMLRPCConnectionDelegate.h */, + ); + name = Delegates; + sourceTree = ""; + }; + 074E8A200F6D8D6E00BE0B22 /* Localized Strings */ = { + isa = PBXGroup; + children = ( + 0759A6F11143495E000DFE98 /* InfoPlist.strings */, + ); + name = "Localized Strings"; + sourceTree = ""; + }; + 074E8A220F6D8D8300BE0B22 /* Property Lists */ = { + isa = PBXGroup; + children = ( + 07B52BE9101004810015AD8B /* TestCases.plist */, + 0799AF280F67254B00B71B22 /* XMLRPC-Info.plist */, + 0799AF040F6721FF00B71B22 /* XMLRPCUnitTests-Info.plist */, + ); + name = "Property Lists"; + sourceTree = ""; + }; + 0799AF2F0F67258600B71B22 /* Unit Tests */ = { + isa = PBXGroup; + children = ( + 07B52C01101008670015AD8B /* XMLRPCParserTest.h */, + 07B52C02101008670015AD8B /* XMLRPCParserTest.m */, + ); + name = "Unit Tests"; + sourceTree = ""; + }; + 07B0C6140E33A65E006453B4 /* Additions */ = { + isa = PBXGroup; + children = ( + 033836811527905D00EF8E8A /* NSData+Base64.h */, + 033836821527905D00EF8E8A /* NSData+Base64.m */, + 07B0C5F80E33A659006453B4 /* NSStringAdditions.h */, + 07B0C5F90E33A659006453B4 /* NSStringAdditions.m */, + ); + name = Additions; + sourceTree = ""; + }; + 07B52BE4101004270015AD8B /* Test Cases */ = { + isa = PBXGroup; + children = ( + 07075BAD10C5FE3800589A27 /* AlternativeDateFormatsTestCase.xml */, + 07BB09881316B65A00E1911C /* DefaultTypeTestCase.xml */, + 07A0A9021016A51000CEE3C7 /* EmptyBooleanTestCase.xml */, + 07A0A9031016A51000CEE3C7 /* EmptyDataTestCase.xml */, + 07A0A9041016A51000CEE3C7 /* EmptyDoubleTestCase.xml */, + 07A0A9051016A51000CEE3C7 /* EmptyIntegerTestCase.xml */, + 07A0A9061016A51000CEE3C7 /* EmptyStringTestCase.xml */, + 07B52BE5101004670015AD8B /* SimpleArrayTestCase.xml */, + 07B52BE6101004670015AD8B /* SimpleStructTestCase.xml */, + ); + name = "Test Cases"; + sourceTree = ""; + }; + 0867D691FE84028FC02AAC07 /* XMLRPC */ = { + isa = PBXGroup; + children = ( + 08FB77AEFE84172EC02AAC07 /* Classes */, + 32C88DFF0371C24200C91783 /* Other Sources */, + 089C1665FE841158C02AAC07 /* Resources */, + 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */, + 034768DFFF38A50411DB9C8B /* Products */, + ); + name = XMLRPC; + sourceTree = ""; + }; + 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + 1058C7B0FEA5585E11CA2CBB /* Linked Frameworks */, + 1058C7B2FEA5585E11CA2CBB /* Other Frameworks */, + ); + name = "External Frameworks and Libraries"; + sourceTree = ""; + }; + 089C1665FE841158C02AAC07 /* Resources */ = { + isa = PBXGroup; + children = ( + 07127C570F4266E2009C7476 /* Configurations */, + 074E8A200F6D8D6E00BE0B22 /* Localized Strings */, + 074E8A220F6D8D8300BE0B22 /* Property Lists */, + 07B52BE4101004270015AD8B /* Test Cases */, + ); + name = Resources; + sourceTree = ""; + }; + 08FB77AEFE84172EC02AAC07 /* Classes */ = { + isa = PBXGroup; + children = ( + 07B0C6140E33A65E006453B4 /* Additions */, + 07452BDC0E469C6900A57686 /* Delegates */, + 07B0C5FA0E33A659006453B4 /* XMLRPC.h */, + 07B0C5FB0E33A659006453B4 /* XMLRPCConnection.h */, + 07B0C5FC0E33A659006453B4 /* XMLRPCConnection.m */, + 075137F90E429E560019E4F6 /* XMLRPCConnectionManager.h */, + 075137FA0E429E560019E4F6 /* XMLRPCConnectionManager.m */, + 2DCADED91529E06900B47A4F /* XMLRPCEncoder.h */, + 07B0C5FF0E33A659006453B4 /* XMLRPCDefaultEncoder.h */, + 07B0C6000E33A659006453B4 /* XMLRPCDefaultEncoder.m */, + 07EF45390E721A5D009F2708 /* XMLRPCEventBasedParser.h */, + 07EF453A0E721A5D009F2708 /* XMLRPCEventBasedParser.m */, + 0707047610114B9400CB7702 /* XMLRPCEventBasedParserDelegate.h */, + 0707047710114B9400CB7702 /* XMLRPCEventBasedParserDelegate.m */, + 07B0C6010E33A659006453B4 /* XMLRPCRequest.h */, + 07B0C6020E33A659006453B4 /* XMLRPCRequest.m */, + 07B0C6030E33A659006453B4 /* XMLRPCResponse.h */, + 07B0C6040E33A659006453B4 /* XMLRPCResponse.m */, + ); + name = Classes; + sourceTree = ""; + }; + 1058C7B0FEA5585E11CA2CBB /* Linked Frameworks */ = { + isa = PBXGroup; + children = ( + 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */, + 0799AF5D0F67266400B71B22 /* SenTestingKit.framework */, + ); + name = "Linked Frameworks"; + sourceTree = ""; + }; + 1058C7B2FEA5585E11CA2CBB /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 0867D6A5FE840307C02AAC07 /* AppKit.framework */, + D2F7E79907B2D74100F64583 /* CoreData.framework */, + 0867D69BFE84028FC02AAC07 /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + 32C88DFF0371C24200C91783 /* Other Sources */ = { + isa = PBXGroup; + children = ( + 0799AF2F0F67258600B71B22 /* Unit Tests */, + 07B0C6160E33A672006453B4 /* XMLRPC.pch */, + ); + name = "Other Sources"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 903B0DB212F7574800BD6E09 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 903B0DC212F7581200BD6E09 /* NSStringAdditions.h in Headers */, + 903B0DC412F7581200BD6E09 /* XMLRPCConnectionDelegate.h in Headers */, + 903B0DC512F7581200BD6E09 /* XMLRPC.h in Headers */, + 903B0DC612F7581200BD6E09 /* XMLRPCConnection.h in Headers */, + 903B0DC812F7581200BD6E09 /* XMLRPCConnectionManager.h in Headers */, + 2DCADEDB1529E24300B47A4F /* XMLRPCEncoder.h in Headers */, + 903B0DCA12F7581200BD6E09 /* XMLRPCDefaultEncoder.h in Headers */, + 903B0DCC12F7581200BD6E09 /* XMLRPCEventBasedParser.h in Headers */, + 903B0DCE12F7581200BD6E09 /* XMLRPCEventBasedParserDelegate.h in Headers */, + 903B0DD012F7581200BD6E09 /* XMLRPCRequest.h in Headers */, + 903B0DD212F7581200BD6E09 /* XMLRPCResponse.h in Headers */, + 903B0DD412F7581F00BD6E09 /* XMLRPC.pch in Headers */, + 033836841527905D00EF8E8A /* NSData+Base64.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 903B0DB512F7574800BD6E09 /* libXMLRPC */ = { + isa = PBXNativeTarget; + buildConfigurationList = 903B0DB912F7577B00BD6E09 /* Build configuration list for PBXNativeTarget "libXMLRPC" */; + buildPhases = ( + 903B0DB212F7574800BD6E09 /* Headers */, + 903B0DB312F7574800BD6E09 /* Sources */, + 903B0DB412F7574800BD6E09 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = libXMLRPC; + productName = iOSXMLRPC; + productReference = 903B0DB612F7574800BD6E09 /* libXMLRPC.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 0867D690FE84028FC02AAC07 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0440; + }; + buildConfigurationList = 1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "XMLRPC" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 0867D691FE84028FC02AAC07 /* XMLRPC */; + productRefGroup = 034768DFFF38A50411DB9C8B /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 903B0DB512F7574800BD6E09 /* libXMLRPC */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 903B0DB312F7574800BD6E09 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 903B0DC312F7581200BD6E09 /* NSStringAdditions.m in Sources */, + 903B0DC712F7581200BD6E09 /* XMLRPCConnection.m in Sources */, + 903B0DC912F7581200BD6E09 /* XMLRPCConnectionManager.m in Sources */, + 903B0DCB12F7581200BD6E09 /* XMLRPCDefaultEncoder.m in Sources */, + 903B0DCD12F7581200BD6E09 /* XMLRPCEventBasedParser.m in Sources */, + 903B0DCF12F7581200BD6E09 /* XMLRPCEventBasedParserDelegate.m in Sources */, + 903B0DD112F7581200BD6E09 /* XMLRPCRequest.m in Sources */, + 903B0DD312F7581200BD6E09 /* XMLRPCResponse.m in Sources */, + 033836861527905D00EF8E8A /* NSData+Base64.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 0759A6F11143495E000DFE98 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 0759A6F21143495E000DFE98 /* English */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 1DEB91B308733DA50010E9CD /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 07127C5A0F4266F4009C7476 /* CommonRelease.xcconfig */; + buildSettings = { + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); + ONLY_ACTIVE_ARCH = NO; + OTHER_LDFLAGS = "-ObjC"; + SDKROOT = iphoneos; + VALID_ARCHS = "armv6 armv7"; + }; + name = Release; + }; + 903B0DB812F7574900BD6E09 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + IPHONEOS_DEPLOYMENT_TARGET = 4.0; + PRODUCT_NAME = XMLRPC; + PUBLIC_HEADERS_FOLDER_PATH = /headers/; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + ZERO_LINK = NO; + }; + name = Release; + }; + D3554ED915CA7E4500478841 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 07127C590F4266F4009C7476 /* CommonDevelopment.xcconfig */; + buildSettings = { + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); + ONLY_ACTIVE_ARCH = NO; + OTHER_LDFLAGS = "-ObjC"; + SDKROOT = iphoneos; + VALID_ARCHS = "armv6 armv7"; + }; + name = Debug; + }; + D3554EDB15CA7E4500478841 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + IPHONEOS_DEPLOYMENT_TARGET = 4.0; + PRODUCT_NAME = XMLRPC; + PUBLIC_HEADERS_FOLDER_PATH = /headers/; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + D3554EDD15CA7E5600478841 /* Distribution */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 07127C5A0F4266F4009C7476 /* CommonRelease.xcconfig */; + buildSettings = { + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); + ONLY_ACTIVE_ARCH = NO; + OTHER_LDFLAGS = "-ObjC"; + SDKROOT = iphoneos; + VALID_ARCHS = "armv6 armv7"; + }; + name = Distribution; + }; + D3554EDF15CA7E5600478841 /* Distribution */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + IPHONEOS_DEPLOYMENT_TARGET = 4.0; + PRODUCT_NAME = XMLRPC; + PUBLIC_HEADERS_FOLDER_PATH = /headers/; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + ZERO_LINK = NO; + }; + name = Distribution; + }; + D3554EE115CA7E6000478841 /* DistributionAdhoc */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 07127C5A0F4266F4009C7476 /* CommonRelease.xcconfig */; + buildSettings = { + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); + ONLY_ACTIVE_ARCH = NO; + OTHER_LDFLAGS = "-ObjC"; + SDKROOT = iphoneos; + VALID_ARCHS = "armv6 armv7"; + }; + name = DistributionAdhoc; + }; + D3554EE315CA7E6000478841 /* DistributionAdhoc */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + IPHONEOS_DEPLOYMENT_TARGET = 4.0; + PRODUCT_NAME = XMLRPC; + PUBLIC_HEADERS_FOLDER_PATH = /headers/; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + ZERO_LINK = NO; + }; + name = DistributionAdhoc; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "XMLRPC" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D3554ED915CA7E4500478841 /* Debug */, + 1DEB91B308733DA50010E9CD /* Release */, + D3554EDD15CA7E5600478841 /* Distribution */, + D3554EE115CA7E6000478841 /* DistributionAdhoc */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 903B0DB912F7577B00BD6E09 /* Build configuration list for PBXNativeTarget "libXMLRPC" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D3554EDB15CA7E4500478841 /* Debug */, + 903B0DB812F7574900BD6E09 /* Release */, + D3554EDF15CA7E5600478841 /* Distribution */, + D3554EE315CA7E6000478841 /* DistributionAdhoc */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 0867D690FE84028FC02AAC07 /* Project object */; +} diff --git a/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/xcuserdata/ydiorcet.xcuserdatad/xcschemes/xcschememanagement.plist b/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/xcuserdata/ydiorcet.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 000000000..a941b5698 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/xcuserdata/ydiorcet.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,26 @@ + + + + + SchemeUserState + + SuppressBuildableAutocreation + + 0799AF020F6721FF00B71B22 + + primary + + + 8DC2EF4F0486A6940098B216 + + primary + + + 903B0DB512F7574800BD6E09 + + primary + + + + + diff --git a/Classes/Utils/XMLRPC/XMLRPCConnection.h b/Classes/Utils/XMLRPC/XMLRPCConnection.h new file mode 100755 index 000000000..d84186dd9 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCConnection.h @@ -0,0 +1,33 @@ +#import +#import "XMLRPCConnectionDelegate.h" + +@class XMLRPCConnectionManager, XMLRPCRequest, XMLRPCResponse; + +@interface XMLRPCConnection : NSObject { + XMLRPCConnectionManager *myManager; + XMLRPCRequest *myRequest; + NSString *myIdentifier; + NSMutableData *myData; + NSURLConnection *myConnection; + id myDelegate; +} + +- (id)initWithXMLRPCRequest: (XMLRPCRequest *)request delegate: (id)delegate manager: (XMLRPCConnectionManager *)manager; + +#pragma mark - + ++ (XMLRPCResponse *)sendSynchronousXMLRPCRequest: (XMLRPCRequest *)request error: (NSError **)error; + +#pragma mark - + +- (NSString *)identifier; + +#pragma mark - + +- (id)delegate; + +#pragma mark - + +- (void)cancel; + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCConnection.m b/Classes/Utils/XMLRPC/XMLRPCConnection.m new file mode 100755 index 000000000..a7d17a505 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCConnection.m @@ -0,0 +1,214 @@ +#import "XMLRPCConnection.h" +#import "XMLRPCConnectionManager.h" +#import "XMLRPCRequest.h" +#import "XMLRPCResponse.h" +#import "NSStringAdditions.h" + +@interface XMLRPCConnection (XMLRPCConnectionPrivate) + +- (void)connection: (NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response; + +- (void)connection: (NSURLConnection *)connection didReceiveData: (NSData *)data; + +- (void)connection:(NSURLConnection *)connection + didSendBodyData:(NSInteger)bytesWritten + totalBytesWritten:(NSInteger)totalBytesWritten +totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite; + +- (void)connection: (NSURLConnection *)connection didFailWithError: (NSError *)error; + +#pragma mark - + +- (BOOL)connection: (NSURLConnection *)connection canAuthenticateAgainstProtectionSpace: (NSURLProtectionSpace *)protectionSpace; + +- (void)connection: (NSURLConnection *)connection didReceiveAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge; + +- (void)connection: (NSURLConnection *)connection didCancelAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge; + +- (void)connectionDidFinishLoading: (NSURLConnection *)connection; + +@end + +#pragma mark - + +@implementation XMLRPCConnection + +- (id)initWithXMLRPCRequest: (XMLRPCRequest *)request delegate: (id)delegate manager: (XMLRPCConnectionManager *)manager { + self = [super init]; + if (self) { +#if ! __has_feature(objc_arc) + myManager = [manager retain]; + myRequest = [request retain]; + myIdentifier = [[NSString stringByGeneratingUUID] retain]; +#else + myManager = manager; + myRequest = request; + myIdentifier = [NSString stringByGeneratingUUID]; +#endif + myData = [[NSMutableData alloc] init]; + + myConnection = [[NSURLConnection alloc] initWithRequest: [request request] delegate: self]; + +#if ! __has_feature(objc_arc) + myDelegate = [delegate retain]; +#else + myDelegate = delegate; +#endif + + if (myConnection) { + NSLog(@"The connection, %@, has been established!", myIdentifier); + } else { + NSLog(@"The connection, %@, could not be established!", myIdentifier); +#if ! __has_feature(objc_arc) + [self release]; +#endif + return nil; + } + } + + return self; +} + +#pragma mark - + ++ (XMLRPCResponse *)sendSynchronousXMLRPCRequest: (XMLRPCRequest *)request error: (NSError **)error { + NSHTTPURLResponse *response = nil; +#if ! __has_feature(objc_arc) + NSData *data = [[[NSURLConnection sendSynchronousRequest: [request request] returningResponse: &response error: error] retain] autorelease]; +#else + NSData *data = [NSURLConnection sendSynchronousRequest: [request request] returningResponse: &response error: error]; +#endif + + if (response) { + NSInteger statusCode = [response statusCode]; + + if ((statusCode < 400) && data) { +#if ! __has_feature(objc_arc) + return [[[XMLRPCResponse alloc] initWithData: data] autorelease]; +#else + return [[XMLRPCResponse alloc] initWithData: data]; +#endif + } + } + + return nil; +} + +#pragma mark - + +- (NSString *)identifier { +#if ! __has_feature(objc_arc) + return [[myIdentifier retain] autorelease]; +#else + return myIdentifier; +#endif +} + +#pragma mark - + +- (id)delegate { + return myDelegate; +} + +#pragma mark - + +- (void)cancel { + [myConnection cancel]; +} + +#pragma mark - + +- (void)dealloc { +#if ! __has_feature(objc_arc) + [myManager release]; + [myRequest release]; + [myIdentifier release]; + [myData release]; + [myConnection release]; + [myDelegate release]; + + [super dealloc]; +#endif +} + +@end + +#pragma mark - + +@implementation XMLRPCConnection (XMLRPCConnectionPrivate) + +- (void)connection: (NSURLConnection *)connection didReceiveResponse: (NSURLResponse *)response { + if([response respondsToSelector: @selector(statusCode)]) { + int statusCode = [(NSHTTPURLResponse *)response statusCode]; + + if(statusCode >= 400) { + NSError *error = [NSError errorWithDomain: @"HTTP" code: statusCode userInfo: nil]; + + [myDelegate request: myRequest didFailWithError: error]; + } else if (statusCode == 304) { + [myManager closeConnectionForIdentifier: myIdentifier]; + } + } + + [myData setLength: 0]; +} + +- (void)connection: (NSURLConnection *)connection didReceiveData: (NSData *)data { + [myData appendData: data]; +} + +- (void)connection:(NSURLConnection *)connection + didSendBodyData:(NSInteger)bytesWritten + totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite +{ + if ([myDelegate respondsToSelector:@selector(request:didSendBodyData:)]) { + float percent = totalBytesWritten / (float)totalBytesExpectedToWrite; + [myDelegate request:myRequest didSendBodyData:percent]; + } +} + +- (void)connection: (NSURLConnection *)connection didFailWithError: (NSError *)error { +#if ! __has_feature(objc_arc) + XMLRPCRequest *request = [[myRequest retain] autorelease]; +#else + XMLRPCRequest *request = myRequest; +#endif + + NSLog(@"The connection, %@, failed with the following error: %@", myIdentifier, [error localizedDescription]); + + [myDelegate request: request didFailWithError: error]; + + [myManager closeConnectionForIdentifier: myIdentifier]; +} + +#pragma mark - + +- (BOOL)connection: (NSURLConnection *)connection canAuthenticateAgainstProtectionSpace: (NSURLProtectionSpace *)protectionSpace { + return [myDelegate request: myRequest canAuthenticateAgainstProtectionSpace: protectionSpace]; +} + +- (void)connection: (NSURLConnection *)connection didReceiveAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge { + [myDelegate request: myRequest didReceiveAuthenticationChallenge: challenge]; +} + +- (void)connection: (NSURLConnection *)connection didCancelAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge { + [myDelegate request: myRequest didCancelAuthenticationChallenge: challenge]; +} + +- (void)connectionDidFinishLoading: (NSURLConnection *)connection { + if (myData && ([myData length] > 0)) { +#if ! __has_feature(objc_arc) + XMLRPCResponse *response = [[[XMLRPCResponse alloc] initWithData: myData] autorelease]; + XMLRPCRequest *request = [[myRequest retain] autorelease]; +#else + XMLRPCResponse *response = [[XMLRPCResponse alloc] initWithData: myData]; + XMLRPCRequest *request = myRequest; +#endif + + [myDelegate request: request didReceiveResponse: response]; + } + + [myManager closeConnectionForIdentifier: myIdentifier]; +} + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCConnectionDelegate.h b/Classes/Utils/XMLRPC/XMLRPCConnectionDelegate.h new file mode 100755 index 000000000..4c1e7d2c3 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCConnectionDelegate.h @@ -0,0 +1,27 @@ +#import + +@class XMLRPCConnection, XMLRPCRequest, XMLRPCResponse; + +@protocol XMLRPCConnectionDelegate + +@required +- (void)request: (XMLRPCRequest *)request didReceiveResponse: (XMLRPCResponse *)response; + +@optional +- (void)request: (XMLRPCRequest *)request didSendBodyData: (float)percent; + +@required +- (void)request: (XMLRPCRequest *)request didFailWithError: (NSError *)error; + +#pragma mark - + +@required +- (BOOL)request: (XMLRPCRequest *)request canAuthenticateAgainstProtectionSpace: (NSURLProtectionSpace *)protectionSpace; + +@required +- (void)request: (XMLRPCRequest *)request didReceiveAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge; + +@required +- (void)request: (XMLRPCRequest *)request didCancelAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge; + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCConnectionManager.h b/Classes/Utils/XMLRPC/XMLRPCConnectionManager.h new file mode 100755 index 000000000..ae3a6f23b --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCConnectionManager.h @@ -0,0 +1,32 @@ +#import +#import "XMLRPCConnectionDelegate.h" + +@class XMLRPCConnection, XMLRPCRequest; + +@interface XMLRPCConnectionManager : NSObject { + NSMutableDictionary *myConnections; +} + ++ (XMLRPCConnectionManager *)sharedManager; + +#pragma mark - + +- (NSString *)spawnConnectionWithXMLRPCRequest: (XMLRPCRequest *)request delegate: (id)delegate; + +#pragma mark - + +- (NSArray *)activeConnectionIdentifiers; + +- (int)numberOfActiveConnections; + +#pragma mark - + +- (XMLRPCConnection *)connectionForIdentifier: (NSString *)identifier; + +#pragma mark - + +- (void)closeConnectionForIdentifier: (NSString *)identifier; + +- (void)closeConnections; + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCConnectionManager.m b/Classes/Utils/XMLRPC/XMLRPCConnectionManager.m new file mode 100755 index 000000000..ada3678c0 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCConnectionManager.m @@ -0,0 +1,115 @@ +#import "XMLRPCConnectionManager.h" +#import "XMLRPCConnection.h" +#import "XMLRPCRequest.h" + +@implementation XMLRPCConnectionManager + +static XMLRPCConnectionManager *sharedInstance = nil; + +- (id)init { + self = [super init]; + if (self) { + myConnections = [[NSMutableDictionary alloc] init]; + } + + return self; +} + +#pragma mark - + ++ (id)allocWithZone: (NSZone *)zone { + @synchronized(self) { + if (!sharedInstance) { + sharedInstance = [super allocWithZone: zone]; + + return sharedInstance; + } + } + + return nil; +} + +#pragma mark - + ++ (XMLRPCConnectionManager *)sharedManager { + @synchronized(self) { + if (!sharedInstance) { + sharedInstance = [[self alloc] init]; + } + } + + return sharedInstance; +} + +#pragma mark - + +- (NSString *)spawnConnectionWithXMLRPCRequest: (XMLRPCRequest *)request delegate: (id)delegate { + XMLRPCConnection *newConnection = [[XMLRPCConnection alloc] initWithXMLRPCRequest: request delegate: delegate manager: self]; +#if ! __has_feature(objc_arc) + NSString *identifier = [[[newConnection identifier] retain] autorelease]; +#else + NSString *identifier = [newConnection identifier]; +#endif + + [myConnections setObject: newConnection forKey: identifier]; + +#if ! __has_feature(objc_arc) + [newConnection release]; +#endif + + return identifier; +} + +#pragma mark - + +- (NSArray *)activeConnectionIdentifiers { + return [myConnections allKeys]; +} + +- (int)numberOfActiveConnections { + return [myConnections count]; +} + +#pragma mark - + +- (XMLRPCConnection *)connectionForIdentifier: (NSString *)identifier { + return [myConnections objectForKey: identifier]; +} + +#pragma mark - + +- (void)closeConnectionForIdentifier: (NSString *)identifier { + XMLRPCConnection *selectedConnection = [self connectionForIdentifier: identifier]; + + if (selectedConnection) { + [selectedConnection cancel]; + + [myConnections removeObjectForKey: identifier]; + } +} + +- (void)closeConnections { + [[myConnections allValues] makeObjectsPerformSelector: @selector(cancel)]; + + [myConnections removeAllObjects]; +} + +#pragma mark - + +- (void)finalize { + [self closeConnections]; + + [super finalize]; +} + +#pragma mark - + +- (void)dealloc { + [self closeConnections]; +#if ! __has_feature(objc_arc) + [myConnections release]; + [super dealloc]; +#endif +} + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCDefaultEncoder.h b/Classes/Utils/XMLRPC/XMLRPCDefaultEncoder.h new file mode 100755 index 000000000..b620f8c0b --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCDefaultEncoder.h @@ -0,0 +1,8 @@ +#import +#import "XMLRPCEncoder.h" + +@interface XMLRPCDefaultEncoder : NSObject { + NSString *myMethod; + NSArray *myParameters; +} +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCDefaultEncoder.m b/Classes/Utils/XMLRPC/XMLRPCDefaultEncoder.m new file mode 100755 index 000000000..16296047e --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCDefaultEncoder.m @@ -0,0 +1,253 @@ +#import "XMLRPCDefaultEncoder.h" +#import "NSStringAdditions.h" +#import "NSData+Base64.h" + +@interface XMLRPCDefaultEncoder (XMLRPCEncoderPrivate) + +- (NSString *)valueTag: (NSString *)tag value: (NSString *)value; + +#pragma mark - + +- (NSString *)replaceTarget: (NSString *)target withValue: (NSString *)value inString: (NSString *)string; + +#pragma mark - + +- (NSString *)encodeObject: (id)object; + +#pragma mark - + +- (NSString *)encodeArray: (NSArray *)array; + +- (NSString *)encodeDictionary: (NSDictionary *)dictionary; + +#pragma mark - + +- (NSString *)encodeBoolean: (CFBooleanRef)boolean; + +- (NSString *)encodeNumber: (NSNumber *)number; + +- (NSString *)encodeString: (NSString *)string omitTag: (BOOL)omitTag; + +- (NSString *)encodeDate: (NSDate *)date; + +- (NSString *)encodeData: (NSData *)data; + +@end + +#pragma mark - + +@implementation XMLRPCDefaultEncoder + +- (id)init { + self = [super init]; + if (self) { + myMethod = [[NSString alloc] init]; + myParameters = [[NSArray alloc] init]; + } + + return self; +} + +#pragma mark - + +- (NSString *)encode { + NSMutableString *buffer = [NSMutableString stringWithString: @""]; + + [buffer appendFormat: @"%@", [self encodeString: myMethod omitTag: YES]]; + + [buffer appendString: @""]; + + if (myParameters) { + NSEnumerator *enumerator = [myParameters objectEnumerator]; + id parameter = nil; + + while ((parameter = [enumerator nextObject])) { + [buffer appendString: @""]; + [buffer appendString: [self encodeObject: parameter]]; + [buffer appendString: @""]; + } + } + + [buffer appendString: @""]; + + [buffer appendString: @""]; + + return buffer; +} + +#pragma mark - + +- (void)setMethod: (NSString *)method withParameters: (NSArray *)parameters { +#if ! __has_feature(objc_arc) + if (myMethod) { + [myMethod release]; + } + + if (!method) { + myMethod = nil; + } else { + myMethod = [method retain]; + } + + if (myParameters) { + [myParameters release]; + } + + if (!parameters) { + myParameters = nil; + } else { + myParameters = [parameters retain]; + } +#else + myMethod = method; + myParameters = parameters; +#endif +} + +#pragma mark - + +- (NSString *)method { + return myMethod; +} + +- (NSArray *)parameters { + return myParameters; +} + +#pragma mark - + +- (void)dealloc { +#if ! __has_feature(objc_arc) + [myMethod release]; + [myParameters release]; + + [super dealloc]; +#endif +} + +@end + +#pragma mark - + +@implementation XMLRPCDefaultEncoder (XMLRPCEncoderPrivate) + +- (NSString *)valueTag: (NSString *)tag value: (NSString *)value { + return [NSString stringWithFormat: @"<%@>%@", tag, value, tag]; +} + +#pragma mark - + +- (NSString *)replaceTarget: (NSString *)target withValue: (NSString *)value inString: (NSString *)string { + return [[string componentsSeparatedByString: target] componentsJoinedByString: value]; +} + +#pragma mark - + +- (NSString *)encodeObject: (id)object { + if (!object) { + return nil; + } + + if ([object isKindOfClass: [NSArray class]]) { + return [self encodeArray: object]; + } else if ([object isKindOfClass: [NSDictionary class]]) { + return [self encodeDictionary: object]; + } else if (((/*__bridge_retained*/ CFBooleanRef)object == kCFBooleanTrue) || ((/*__bridge_retained*/ CFBooleanRef)object == kCFBooleanFalse)) { + return [self encodeBoolean: (CFBooleanRef)object]; + } else if ([object isKindOfClass: [NSNumber class]]) { + return [self encodeNumber: object]; + } else if ([object isKindOfClass: [NSString class]]) { + return [self encodeString: object omitTag: NO]; + } else if ([object isKindOfClass: [NSDate class]]) { + return [self encodeDate: object]; + } else if ([object isKindOfClass: [NSData class]]) { + return [self encodeData: object]; + } else { + return [self encodeString: object omitTag: NO]; + } +} + +#pragma mark - + +- (NSString *)encodeArray: (NSArray *)array { + NSMutableString *buffer = [NSMutableString string]; + NSEnumerator *enumerator = [array objectEnumerator]; + + [buffer appendString: @""]; + + id object = nil; + + while (object = [enumerator nextObject]) { + [buffer appendString: [self encodeObject: object]]; + } + + [buffer appendString: @""]; + + return (NSString *)buffer; +} + +- (NSString *)encodeDictionary: (NSDictionary *)dictionary { + NSMutableString * buffer = [NSMutableString string]; + NSEnumerator *enumerator = [dictionary keyEnumerator]; + + [buffer appendString: @""]; + + NSString *key = nil; + NSObject *val; + + while (key = [enumerator nextObject]) { + [buffer appendString: @""]; + [buffer appendFormat: @"%@", [self encodeString: key omitTag: YES]]; + + val = [dictionary objectForKey: key]; + if (val != [NSNull null]) { + [buffer appendString: [self encodeObject: val]]; + } else { + [buffer appendString:@""]; + } + + [buffer appendString: @""]; + } + + [buffer appendString: @""]; + + return (NSString *)buffer; +} + +#pragma mark - + +- (NSString *)encodeBoolean: (CFBooleanRef)boolean { + if (boolean == kCFBooleanTrue) { + return [self valueTag: @"boolean" value: @"1"]; + } else { + return [self valueTag: @"boolean" value: @"0"]; + } +} + +- (NSString *)encodeNumber: (NSNumber *)number { + NSString *numberType = [NSString stringWithCString: [number objCType] encoding: NSUTF8StringEncoding]; + + if ([numberType isEqualToString: @"d"]) { + return [self valueTag: @"double" value: [number stringValue]]; + } else { + return [self valueTag: @"i4" value: [number stringValue]]; + } +} + +- (NSString *)encodeString: (NSString *)string omitTag: (BOOL)omitTag { + return omitTag ? [string escapedString] : [self valueTag: @"string" value: [string escapedString]]; +} + +- (NSString *)encodeDate: (NSDate *)date { + unsigned components = kCFCalendarUnitYear | kCFCalendarUnitMonth | kCFCalendarUnitDay | kCFCalendarUnitHour | kCFCalendarUnitMinute | kCFCalendarUnitSecond; + NSDateComponents *dateComponents = [[NSCalendar currentCalendar] components: components fromDate: date]; + NSString *buffer = [NSString stringWithFormat: @"%.4d%.2d%.2dT%.2d:%.2d:%.2d", [dateComponents year], [dateComponents month], [dateComponents day], [dateComponents hour], [dateComponents minute], [dateComponents second], nil]; + + return [self valueTag: @"dateTime.iso8601" value: buffer]; +} + +- (NSString *)encodeData: (NSData *)data { + return [self valueTag: @"base64" value: [data base64EncodedString]]; +} + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCEncoder.h b/Classes/Utils/XMLRPC/XMLRPCEncoder.h new file mode 100755 index 000000000..14a596824 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCEncoder.h @@ -0,0 +1,15 @@ +#import + +@protocol XMLRPCEncoder +- (NSString *)encode; + +#pragma mark - + +- (void)setMethod: (NSString *)method withParameters: (NSArray *)parameters; +#pragma mark - + +- (NSString *)method; + +- (NSArray *)parameters; + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCEventBasedParser.h b/Classes/Utils/XMLRPC/XMLRPCEventBasedParser.h new file mode 100755 index 000000000..1d43d70d5 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCEventBasedParser.h @@ -0,0 +1,27 @@ +#import + +@class XMLRPCEventBasedParserDelegate; + +@interface XMLRPCEventBasedParser : NSObject { + NSXMLParser *myParser; + XMLRPCEventBasedParserDelegate *myParserDelegate; + BOOL isFault; +} + +- (id)initWithData: (NSData *)data; + +#pragma mark - + +- (id)parse; + +- (void)abortParsing; + +#pragma mark - + +- (NSError *)parserError; + +#pragma mark - + +- (BOOL)isFault; + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCEventBasedParser.m b/Classes/Utils/XMLRPC/XMLRPCEventBasedParser.m new file mode 100755 index 000000000..b044c91fa --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCEventBasedParser.m @@ -0,0 +1,81 @@ +#import "XMLRPCEventBasedParser.h" +#import "XMLRPCEventBasedParserDelegate.h" + +@implementation XMLRPCEventBasedParser + +- (id)initWithData: (NSData *)data { + if (!data) { + return nil; + } + + if (self = [self init]) { + myParser = [[NSXMLParser alloc] initWithData: data]; + myParserDelegate = nil; + isFault = NO; + } + + return self; +} + +#pragma mark - + +- (id)parse { + [myParser setDelegate: self]; + + [myParser parse]; + + if ([myParser parserError]) { + return nil; + } + + return [myParserDelegate elementValue]; +} + +- (void)abortParsing { + [myParser abortParsing]; +} + +#pragma mark - + +- (NSError *)parserError { + return [myParser parserError]; +} + +#pragma mark - + +- (BOOL)isFault { + return isFault; +} + +#pragma mark - + +- (void)dealloc { +#if ! __has_feature(objc_arc) + [myParser release]; + [myParserDelegate release]; + + [super dealloc]; +#endif +} + +@end + +#pragma mark - + +@implementation XMLRPCEventBasedParser (NSXMLParserDelegate) + +- (void)parser: (NSXMLParser *)parser didStartElement: (NSString *)element namespaceURI: (NSString *)namespaceURI qualifiedName: (NSString *)qualifiedName attributes: (NSDictionary *)attributes { + if ([element isEqualToString: @"fault"]) { + isFault = YES; + } else if ([element isEqualToString: @"value"]) { + myParserDelegate = [[XMLRPCEventBasedParserDelegate alloc] initWithParent: nil]; + + [myParser setDelegate: myParserDelegate]; + } +} + +- (void)parser: (NSXMLParser *)parser parseErrorOccurred: (NSError *)parseError { + [self abortParsing]; +} + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCEventBasedParserDelegate.h b/Classes/Utils/XMLRPC/XMLRPCEventBasedParserDelegate.h new file mode 100755 index 000000000..08d963577 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCEventBasedParserDelegate.h @@ -0,0 +1,52 @@ +#import + +typedef enum { + XMLRPCElementTypeArray, + XMLRPCElementTypeDictionary, + XMLRPCElementTypeMember, + XMLRPCElementTypeName, + XMLRPCElementTypeInteger, + XMLRPCElementTypeDouble, + XMLRPCElementTypeBoolean, + XMLRPCElementTypeString, + XMLRPCElementTypeDate, + XMLRPCElementTypeData +} XMLRPCElementType; + +#pragma mark - + +@interface XMLRPCEventBasedParserDelegate : NSObject { + XMLRPCEventBasedParserDelegate *myParent; + NSMutableArray *myChildren; + XMLRPCElementType myElementType; + NSString *myElementKey; + id myElementValue; +} + +- (id)initWithParent: (XMLRPCEventBasedParserDelegate *)parent; + +#pragma mark - + +- (void)setParent: (XMLRPCEventBasedParserDelegate *)parent; + +- (XMLRPCEventBasedParserDelegate *)parent; + +#pragma mark - + +- (void)setElementType: (XMLRPCElementType)elementType; + +- (XMLRPCElementType)elementType; + +#pragma mark - + +- (void)setElementKey: (NSString *)elementKey; + +- (NSString *)elementKey; + +#pragma mark - + +- (void)setElementValue: (id)elementValue; + +- (id)elementValue; + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCEventBasedParserDelegate.m b/Classes/Utils/XMLRPC/XMLRPCEventBasedParserDelegate.m new file mode 100755 index 000000000..54f020fe5 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCEventBasedParserDelegate.m @@ -0,0 +1,352 @@ +#import "XMLRPCEventBasedParserDelegate.h" +#import "NSData+Base64.h" + +@interface XMLRPCEventBasedParserDelegate (XMLRPCEventBasedParserDelegatePrivate) + +- (BOOL)isDictionaryElementType: (XMLRPCElementType)elementType; + +#pragma mark - + +- (void)addElementValueToParent; + +#pragma mark - + +- (NSDate *)parseDateString: (NSString *)dateString withFormat: (NSString *)format; + +#pragma mark - + +- (NSNumber *)parseInteger: (NSString *)value; + +- (NSNumber *)parseDouble: (NSString *)value; + +- (NSNumber *)parseBoolean: (NSString *)value; + +- (NSString *)parseString: (NSString *)value; + +- (NSDate *)parseDate: (NSString *)value; + +- (NSData *)parseData: (NSString *)value; + +@end + +#pragma mark - + +@implementation XMLRPCEventBasedParserDelegate + +- (id)initWithParent: (XMLRPCEventBasedParserDelegate *)parent { + self = [super init]; + if (self) { + myParent = parent; + myChildren = [[NSMutableArray alloc] initWithCapacity: 1]; + myElementType = XMLRPCElementTypeString; + myElementKey = nil; + myElementValue = [[NSMutableString alloc] init]; + } + + return self; +} + +#pragma mark - + +- (void)setParent: (XMLRPCEventBasedParserDelegate *)parent { +#if ! __has_feature(objc_arc) + [parent retain]; + [myParent release]; +#endif + + myParent = parent; +} + +- (XMLRPCEventBasedParserDelegate *)parent { + return myParent; +} + +#pragma mark - + +- (void)setElementType: (XMLRPCElementType)elementType { + myElementType = elementType; +} + +- (XMLRPCElementType)elementType { + return myElementType; +} + +#pragma mark - + +- (void)setElementKey: (NSString *)elementKey { +#if ! __has_feature(objc_arc) + [elementKey retain]; + [myElementKey release]; +#endif + + myElementKey = elementKey; +} + +- (NSString *)elementKey { + return myElementKey; +} + +#pragma mark - + +- (void)setElementValue: (id)elementValue { +#if ! __has_feature(objc_arc) + [elementValue retain]; + [myElementValue release]; +#endif + + myElementValue = elementValue; +} + +- (id)elementValue { + return myElementValue; +} + +#pragma mark - + +- (void)dealloc { +#if ! __has_feature(objc_arc) + [myChildren release]; + [myElementKey release]; + [myElementValue release]; + + [super dealloc]; +#endif +} + +@end + +#pragma mark - + +@implementation XMLRPCEventBasedParserDelegate (NSXMLParserDelegate) + +- (void)parser: (NSXMLParser *)parser didStartElement: (NSString *)element namespaceURI: (NSString *)namespaceURI qualifiedName: (NSString *)qualifiedName attributes: (NSDictionary *)attributes { + if ([element isEqualToString: @"value"] || [element isEqualToString: @"member"] || [element isEqualToString: @"name"]) { + XMLRPCEventBasedParserDelegate *parserDelegate = [[XMLRPCEventBasedParserDelegate alloc] initWithParent: self]; + + if ([element isEqualToString: @"member"]) { + [parserDelegate setElementType: XMLRPCElementTypeMember]; + } else if ([element isEqualToString: @"name"]) { + [parserDelegate setElementType: XMLRPCElementTypeName]; + } + + [myChildren addObject: parserDelegate]; + + [parser setDelegate: parserDelegate]; +#if ! __has_feature(objc_arc) + [parserDelegate release]; +#endif + return; + } + + if ([element isEqualToString: @"array"]) { + NSMutableArray *array = [[NSMutableArray alloc] init]; + + [self setElementValue: array]; +#if ! __has_feature(objc_arc) + [array release]; +#endif + [self setElementType: XMLRPCElementTypeArray]; + } else if ([element isEqualToString: @"struct"]) { + NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init]; + + [self setElementValue: dictionary]; +#if ! __has_feature(objc_arc) + [dictionary release]; +#endif + [self setElementType: XMLRPCElementTypeDictionary]; + } else if ([element isEqualToString: @"int"] || [element isEqualToString: @"i4"]) { + [self setElementType: XMLRPCElementTypeInteger]; + } else if ([element isEqualToString: @"double"]) { + [self setElementType: XMLRPCElementTypeDouble]; + } else if ([element isEqualToString: @"boolean"]) { + [self setElementType: XMLRPCElementTypeBoolean]; + } else if ([element isEqualToString: @"string"]) { + [self setElementType: XMLRPCElementTypeString]; + } else if ([element isEqualToString: @"dateTime.iso8601"]) { + [self setElementType: XMLRPCElementTypeDate]; + } else if ([element isEqualToString: @"base64"]) { + [self setElementType: XMLRPCElementTypeData]; + } +} + +- (void)parser: (NSXMLParser *)parser didEndElement: (NSString *)element namespaceURI: (NSString *)namespaceURI qualifiedName: (NSString *)qualifiedName { + if ([element isEqualToString: @"value"] || [element isEqualToString: @"member"] || [element isEqualToString: @"name"]) { + NSString *elementValue = nil; + + if ((myElementType != XMLRPCElementTypeArray) && ![self isDictionaryElementType: myElementType]) { + elementValue = [self parseString: myElementValue]; +#if ! __has_feature(objc_arc) + [myElementValue release]; +#endif + myElementValue = nil; + } + + switch (myElementType) { + case XMLRPCElementTypeInteger: + myElementValue = [self parseInteger: elementValue]; +#if ! __has_feature(objc_arc) + [myElementValue retain]; +#endif + break; + case XMLRPCElementTypeDouble: + myElementValue = [self parseDouble: elementValue]; +#if ! __has_feature(objc_arc) + [myElementValue retain]; +#endif + break; + case XMLRPCElementTypeBoolean: + myElementValue = [self parseBoolean: elementValue]; +#if ! __has_feature(objc_arc) + [myElementValue retain]; +#endif + break; + case XMLRPCElementTypeString: + case XMLRPCElementTypeName: + myElementValue = elementValue; +#if ! __has_feature(objc_arc) + [myElementValue retain]; +#endif + break; + case XMLRPCElementTypeDate: + myElementValue = [self parseDate: elementValue]; +#if ! __has_feature(objc_arc) + [myElementValue retain]; +#endif + break; + case XMLRPCElementTypeData: + myElementValue = [self parseData: elementValue]; +#if ! __has_feature(objc_arc) + [myElementValue retain]; +#endif + break; + default: + break; + } + + if (myParent && myElementValue) { + [self addElementValueToParent]; + } + + [parser setDelegate: myParent]; + } +} + +- (void)parser: (NSXMLParser *)parser foundCharacters: (NSString *)string { + if ((myElementType == XMLRPCElementTypeArray) || [self isDictionaryElementType: myElementType]) { + return; + } + + if (!myElementValue) { + myElementValue = [[NSMutableString alloc] initWithString: string]; + } else { + [myElementValue appendString: string]; + } +} + +- (void)parser: (NSXMLParser *)parser parseErrorOccurred: (NSError *)parseError { + [parser abortParsing]; +} + +@end + +#pragma mark - + +@implementation XMLRPCEventBasedParserDelegate (XMLRPCEventBasedParserDelegatePrivate) + +- (BOOL)isDictionaryElementType: (XMLRPCElementType)elementType { + if ((myElementType == XMLRPCElementTypeDictionary) || (myElementType == XMLRPCElementTypeMember)) { + return YES; + } + + return NO; +} + +#pragma mark - + +- (void)addElementValueToParent { + id parentElementValue = [myParent elementValue]; + + switch ([myParent elementType]) { + case XMLRPCElementTypeArray: + [parentElementValue addObject: myElementValue]; + + break; + case XMLRPCElementTypeDictionary: + if ([myElementValue isEqual:[NSNull null]]) { + [parentElementValue removeObjectForKey:myElementKey]; + } else { + [parentElementValue setObject: myElementValue forKey: myElementKey]; + } + + break; + case XMLRPCElementTypeMember: + if (myElementType == XMLRPCElementTypeName) { + [myParent setElementKey: myElementValue]; + } else { + [myParent setElementValue: myElementValue]; + } + + break; + default: + break; + } +} + +#pragma mark - + +- (NSDate *)parseDateString: (NSString *)dateString withFormat: (NSString *)format { + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; + NSDate *result = nil; + + [dateFormatter setDateFormat: format]; + + result = [dateFormatter dateFromString: dateString]; +#if ! __has_feature(objc_arc) + [dateFormatter release]; +#endif + return result; +} + +#pragma mark - + +- (NSNumber *)parseInteger: (NSString *)value { + return [NSNumber numberWithInteger: [value integerValue]]; +} + +- (NSNumber *)parseDouble: (NSString *)value { + return [NSNumber numberWithDouble: [value doubleValue]]; +} + +- (NSNumber *)parseBoolean: (NSString *)value { + if ([value isEqualToString: @"1"]) { + return [NSNumber numberWithBool: YES]; + } + + return [NSNumber numberWithBool: NO]; +} + +- (NSString *)parseString: (NSString *)value { + return [value stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]]; +} + +- (NSDate *)parseDate: (NSString *)value { + NSDate *result = nil; + + result = [self parseDateString: value withFormat: @"yyyyMMdd'T'HH:mm:ss"]; + + if (!result) { + result = [self parseDateString: value withFormat: @"yyyy'-'MM'-'dd'T'HH:mm:ss"]; + } + + if (!result) { + result = (NSDate *)[NSNull null]; + } + + return result; +} + +- (NSData *)parseData: (NSString *)value { + return [NSData dataFromBase64String: value]; +} + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCRequest.h b/Classes/Utils/XMLRPC/XMLRPCRequest.h new file mode 100755 index 000000000..250dfb975 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCRequest.h @@ -0,0 +1,51 @@ +#import + +#import "XMLRPCEncoder.h" + +@interface XMLRPCRequest : NSObject { + NSMutableURLRequest *myRequest; + id myXMLEncoder; +} + +- (id)initWithURL: (NSURL *)URL; + +#pragma mark - + +- (void)setURL: (NSURL *)URL; + +- (NSURL *)URL; + +#pragma mark - + +- (void)setUserAgent: (NSString *)userAgent; + +- (NSString *)userAgent; + +#pragma mark - +- (void)setEncoder: (id) encoder; + +- (void)setMethod: (NSString *)method; + +- (void)setMethod: (NSString *)method withParameter: (id)parameter; + +- (void)setMethod: (NSString *)method withParameters: (NSArray *)parameters; + +#pragma mark - + +- (NSString *)method; + +- (NSArray *)parameters; + +#pragma mark - + +- (NSString *)body; + +#pragma mark - + +- (NSURLRequest *)request; + +#pragma mark - + +- (void)setValue: (NSString *)value forHTTPHeaderField: (NSString *)header; + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCRequest.m b/Classes/Utils/XMLRPC/XMLRPCRequest.m new file mode 100755 index 000000000..825823977 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCRequest.m @@ -0,0 +1,165 @@ +#import "XMLRPCRequest.h" +#import "XMLRPCEncoder.h" +#import "XMLRPCDefaultEncoder.h" + +@implementation XMLRPCRequest + +- (id)initWithURL: (NSURL *)URL withEncoder: (id)encoder { + self = [super init]; + if (self) { + if (URL) { + myRequest = [[NSMutableURLRequest alloc] initWithURL: URL]; + } else { + myRequest = [[NSMutableURLRequest alloc] init]; + } + + myXMLEncoder = encoder; +#if ! __has_feature(objc_arc) + [myXMLEncoder retain]; +#endif + } + + return self; +} + +- (id)initWithURL: (NSURL *)URL { +#if ! __has_feature(objc_arc) + return [self initWithURL:URL withEncoder:[[[XMLRPCDefaultEncoder alloc] init] autorelease]]; +#else + return [self initWithURL:URL withEncoder:[[XMLRPCDefaultEncoder alloc] init]]; +#endif +} + +#pragma mark - + +- (void)setURL: (NSURL *)URL { + [myRequest setURL: URL]; +} + +- (NSURL *)URL { + return [myRequest URL]; +} + +#pragma mark - + +- (void)setUserAgent: (NSString *)userAgent { + if (![self userAgent]) { + [myRequest addValue: userAgent forHTTPHeaderField: @"User-Agent"]; + } else { + [myRequest setValue: userAgent forHTTPHeaderField: @"User-Agent"]; + } +} + +- (NSString *)userAgent { + return [myRequest valueForHTTPHeaderField: @"User-Agent"]; +} + +#pragma mark - + +- (void)setEncoder:(id)encoder { + //Copy the old method and parameters to the new encoder. + NSString *method = [myXMLEncoder method]; + NSArray *parameters = [myXMLEncoder parameters]; +#if ! __has_feature(objc_arc) + [myXMLEncoder release]; + myXMLEncoder = [encoder retain]; +#else + myXMLEncoder = encoder; +#endif + [myXMLEncoder setMethod:method withParameters:parameters]; +} + +- (void)setMethod: (NSString *)method { + [myXMLEncoder setMethod: method withParameters: nil]; +} + +- (void)setMethod: (NSString *)method withParameter: (id)parameter { + NSArray *parameters = nil; + + if (parameter) { + parameters = [NSArray arrayWithObject: parameter]; + } + + [myXMLEncoder setMethod: method withParameters: parameters]; +} + +- (void)setMethod: (NSString *)method withParameters: (NSArray *)parameters { + [myXMLEncoder setMethod: method withParameters: parameters]; +} + +#pragma mark - + +- (NSString *)method { + return [myXMLEncoder method]; +} + +- (NSArray *)parameters { + return [myXMLEncoder parameters]; +} + +#pragma mark - + +- (NSString *)body { + return [myXMLEncoder encode]; +} + +#pragma mark - + +- (NSURLRequest *)request { + NSData *content = [[self body] dataUsingEncoding: NSUTF8StringEncoding]; + NSNumber *contentLength = [NSNumber numberWithInt: [content length]]; + + if (!myRequest) { + return nil; + } + + [myRequest setHTTPMethod: @"POST"]; + + if (![myRequest valueForHTTPHeaderField: @"Content-Type"]) { + [myRequest addValue: @"text/xml" forHTTPHeaderField: @"Content-Type"]; + } else { + [myRequest setValue: @"text/xml" forHTTPHeaderField: @"Content-Type"]; + } + + if (![myRequest valueForHTTPHeaderField: @"Content-Length"]) { + [myRequest addValue: [contentLength stringValue] forHTTPHeaderField: @"Content-Length"]; + } else { + [myRequest setValue: [contentLength stringValue] forHTTPHeaderField: @"Content-Length"]; + } + + if (![myRequest valueForHTTPHeaderField: @"Accept"]) { + [myRequest addValue: @"text/xml" forHTTPHeaderField: @"Accept"]; + } else { + [myRequest setValue: @"text/xml" forHTTPHeaderField: @"Accept"]; + } + + if (![self userAgent]) { + NSString *userAgent = [[NSUserDefaults standardUserDefaults] objectForKey:@"UserAgent"]; + if (userAgent) { + [self setUserAgent:userAgent]; + } + } + + [myRequest setHTTPBody: content]; + + return (NSURLRequest *)myRequest; +} + +#pragma mark - + +- (void)setValue: (NSString *)value forHTTPHeaderField: (NSString *)header { + [myRequest setValue: value forHTTPHeaderField: header]; +} + +#pragma mark - + +- (void)dealloc { +#if ! __has_feature(objc_arc) + [myRequest release]; + [myXMLEncoder release]; + + [super dealloc]; +#endif +} + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCResponse.h b/Classes/Utils/XMLRPC/XMLRPCResponse.h new file mode 100755 index 000000000..a5509323b --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCResponse.h @@ -0,0 +1,33 @@ +#import + +@class XMLRPCDecoder; + +@interface XMLRPCResponse : NSObject { + NSString *myBody; + id myObject; + BOOL isFault; +} + +- (id)initWithData: (NSData *)data; + +#pragma mark - + +- (BOOL)isFault; + +- (NSNumber *)faultCode; + +- (NSString *)faultString; + +#pragma mark - + +- (id)object; + +#pragma mark - + +- (NSString *)body; + +#pragma mark - + +- (NSString *)description; + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCResponse.m b/Classes/Utils/XMLRPC/XMLRPCResponse.m new file mode 100755 index 000000000..38b84678b --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCResponse.m @@ -0,0 +1,97 @@ +#import "XMLRPCResponse.h" +#import "XMLRPCEventBasedParser.h" + +@implementation XMLRPCResponse + +- (id)initWithData: (NSData *)data { + if (!data) { + return nil; + } + + self = [super init]; + if (self) { + XMLRPCEventBasedParser *parser = [[XMLRPCEventBasedParser alloc] initWithData: data]; + + if (!parser) { +#if ! __has_feature(objc_arc) + [self release]; +#endif + return nil; + } + + myBody = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]; + myObject = [parser parse]; +#if ! __has_feature(objc_arc) + [myObject retain]; +#endif + + isFault = [parser isFault]; + +#if ! __has_feature(objc_arc) + [parser release]; +#endif + } + + return self; +} + +#pragma mark - + +- (BOOL)isFault { + return isFault; +} + +- (NSNumber *)faultCode { + if (isFault) { + return [myObject objectForKey: @"faultCode"]; + } + + return nil; +} + +- (NSString *)faultString { + if (isFault) { + return [myObject objectForKey: @"faultString"]; + } + + return nil; +} + +#pragma mark - + +- (id)object { + return myObject; +} + +#pragma mark - + +- (NSString *)body { + return myBody; +} + +#pragma mark - + +- (NSString *)description { + NSMutableString *msg = [NSMutableString stringWithCapacity:128]; + [msg appendFormat:@"[body=%@", myBody]; + if (isFault) { + [msg appendFormat:@", fault[%@]='%@'", [self faultCode], [self faultString]]; + } else { + [msg appendFormat:@", obj=%@", myObject]; + } + [msg appendString:@"]"]; + return msg; +} + +#pragma mark - + +- (void)dealloc { +#if ! __has_feature(objc_arc) + [myBody release]; + [myObject release]; + + [super dealloc]; +#endif +} + +@end diff --git a/Classes/WizardViewController.h b/Classes/WizardViewController.h index 0326f5b07..bbb3fc9a7 100644 --- a/Classes/WizardViewController.h +++ b/Classes/WizardViewController.h @@ -18,17 +18,22 @@ */ #import - +#import #import "UICompositeViewController.h" -@interface WizardViewController : UIViewController { - UIView *contentView; +@interface WizardViewController : UIViewController { + UIScrollView *contentView; UIView *welcomeView; UIView *choiceView; UIView *createAccountView; UIView *connectAccountView; UIView *externalAccountView; + UIView *validateAccountView; + + UIView *waitView; + UIView *currentView; + UITextField *activeTextField; UIButton *backButton; UIButton *startButton; @@ -43,6 +48,9 @@ @property (nonatomic, retain) IBOutlet UIView *createAccountView; @property (nonatomic, retain) IBOutlet UIView *connectAccountView; @property (nonatomic, retain) IBOutlet UIView *externalAccountView; +@property (nonatomic, retain) IBOutlet UIView *validateAccountView; + +@property (nonatomic, retain) IBOutlet UIView *waitView; @property (nonatomic, retain) IBOutlet UIButton *backButton; @property (nonatomic, retain) IBOutlet UIButton *startButton; @@ -54,5 +62,10 @@ - (IBAction)onCreateAccountClick:(id)sender; - (IBAction)onConnectAccountClick:(id)sender; - (IBAction)onExternalAccountClick:(id)sender; +- (IBAction)onCheckValidationClick:(id)sender; + +- (IBAction)onSignInClick:(id)sender; +- (IBAction)onSignInExternalClick:(id)sender; +- (IBAction)onRegisterClick:(id)sender; @end diff --git a/Classes/WizardViewController.m b/Classes/WizardViewController.m index 3f452c51d..82defa8c5 100644 --- a/Classes/WizardViewController.m +++ b/Classes/WizardViewController.m @@ -18,13 +18,14 @@ */ #import "WizardViewController.h" - -#import - #import "LinphoneManager.h" - #import "PhoneMainView.h" +#import +#import +#import +#import + typedef enum _ViewElement { ViewElement_Username = 100, ViewElement_Password = 101, @@ -44,21 +45,33 @@ typedef enum _ViewElement { @synthesize createAccountView; @synthesize connectAccountView; @synthesize externalAccountView; +@synthesize validateAccountView; + +@synthesize waitView; @synthesize backButton; @synthesize startButton; +static int LINPHONE_WIZARD_MIN_PASSWORD_LENGTH = 6; +static int LINPHONE_WIZARD_MIN_USERNAME_LENGTH = 4; +static NSString *LINPHONE_WIZARD_URL = @"https://www.linphone.org/wizard.php"; +static NSString *LINPHONE_WIZARD_DOMAIN = @"sip.linphone.org"; + + #pragma mark - Lifecycle Functions - (id)init { self = [super initWithNibName:@"WizardViewController" bundle:[NSBundle mainBundle]]; if (self != nil) { self->historyViews = [[NSMutableArray alloc] init]; + self->currentView = nil; } return self; } - (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; + [contentView release]; [welcomeView release]; @@ -66,6 +79,9 @@ typedef enum _ViewElement { [createAccountView release]; [connectAccountView release]; [externalAccountView release]; + [validateAccountView release]; + + [waitView release]; [backButton release]; [startButton release]; @@ -89,7 +105,7 @@ static UICompositeViewDescription *compositeDescription = nil; tabBar:nil tabBarEnabled:false fullscreen:false - landscapeMode:false + landscapeMode:[LinphoneManager runningOnIpad] portraitMode:true]; } return compositeDescription; @@ -100,11 +116,67 @@ static UICompositeViewDescription *compositeDescription = nil; - (void)viewDidLoad { [super viewDidLoad]; - [self changeView:welcomeView back:FALSE animation:FALSE]; + [self resetWizard]; } -#pragma mark - +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(registrationUpdateEvent:) + name:@"LinphoneRegistrationUpdate" + object:nil]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(keyboardWillShow:) + name:UIKeyboardWillShowNotification + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(keyboardWillHide:) + name:UIKeyboardWillHideNotification + object:nil]; +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + [[NSNotificationCenter defaultCenter] removeObserver:self + name:@"LinphoneRegistrationUpdate" + object:nil]; + + + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIKeyboardWillShowNotification + object:nil]; + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIKeyboardWillHideNotification + object:nil]; +} + + +#pragma mark - + ++ (void)cleanTextField:(UIView*)view { + if([view isKindOfClass:[UITextField class]]) { + [(UITextField*)view setText:@""]; + } else { + for(UIView *subview in view.subviews) { + [WizardViewController cleanTextField:subview]; + } + } +} + +- (void)resetWizard { + [self clearProxyConfig]; + [WizardViewController cleanTextField:welcomeView]; + [WizardViewController cleanTextField:choiceView]; + [WizardViewController cleanTextField:createAccountView]; + [WizardViewController cleanTextField:connectAccountView]; + [WizardViewController cleanTextField:externalAccountView]; + [WizardViewController cleanTextField:validateAccountView]; + [self changeView:welcomeView back:FALSE animation:FALSE]; + [waitView setHidden:TRUE]; +} + (UIView*)findTextField:(ViewElement)tag view:(UIView*)view { for(UIView *child in [view subviews]) { @@ -133,7 +205,12 @@ static UICompositeViewDescription *compositeDescription = nil; return nil; } +- (void)clearHistory { + [historyViews removeAllObjects]; +} + - (void)changeView:(UIView *)view back:(BOOL)back animation:(BOOL)animation { + // Change toolbar buttons following view if (view == welcomeView) { [startButton setHidden:false]; [backButton setHidden:true]; @@ -142,6 +219,13 @@ static UICompositeViewDescription *compositeDescription = nil; [backButton setHidden:false]; } + if (view == validateAccountView) { + [backButton setEnabled:FALSE]; + } else { + [backButton setEnabled:TRUE]; + } + + // Animation if(animation) { CATransition* trans = [CATransition animation]; [trans setType:kCATransitionPush]; @@ -155,16 +239,101 @@ static UICompositeViewDescription *compositeDescription = nil; [contentView.layer addAnimation:trans forKey:@"Transition"]; } - NSArray *childs = [contentView subviews]; - if([childs count]> 0) { - UIView *childView = [childs objectAtIndex:0]; + // Stack current view + if(currentView != nil) { if(!back) - [historyViews addObject:childView]; - [childView removeFromSuperview]; + [historyViews addObject:currentView]; + [currentView removeFromSuperview]; } - [contentView addSubview:view]; + // Set current view + currentView = view; + [contentView insertSubview:view atIndex:0]; + [view setFrame:[contentView bounds]]; + [contentView setContentSize:[view bounds].size]; +} + +- (void)clearProxyConfig { + [[LinphoneManager instance].settingsStore setObject:@"" forKey:@"username_preference"]; + [[LinphoneManager instance].settingsStore setObject:@"" forKey:@"password_preference"]; + [[LinphoneManager instance].settingsStore setObject:@"" forKey:@"domain_preference"]; + [[LinphoneManager instance].settingsStore synchronize]; +} + +- (void)addProxyConfig:(NSString*)username password:(NSString*)password domain:(NSString*)domain { + [[LinphoneManager instance].settingsStore setObject:username forKey:@"username_preference"]; + [[LinphoneManager instance].settingsStore setObject:password forKey:@"password_preference"]; + [[LinphoneManager instance].settingsStore setObject:domain forKey:@"domain_preference"]; + [[LinphoneManager instance].settingsStore synchronize]; +} + +- (void)checkUserExist:(NSString*)username { + [LinphoneLogger log:LinphoneLoggerDebug format:@"XMLRPC check_account %@", username]; + NSURL *URL = [NSURL URLWithString: LINPHONE_WIZARD_URL]; + XMLRPCRequest *request = [[XMLRPCRequest alloc] initWithURL: URL]; + [request setMethod: @"check_account" withParameters:[NSArray arrayWithObjects:username, nil]]; + + XMLRPCConnectionManager *manager = [XMLRPCConnectionManager sharedManager]; + [manager spawnConnectionWithXMLRPCRequest: request delegate: self]; + + [request release]; + [waitView setHidden:false]; +} + +- (void)createAccount:(NSString*)identity password:(NSString*)password email:(NSString*)email { + NSString *useragent = [LinphoneManager getUserAgent]; + [LinphoneLogger log:LinphoneLoggerDebug format:@"XMLRPC create_account_with_useragent %@ %@ %@ %@", identity, password, email, useragent]; + + NSURL *URL = [NSURL URLWithString: LINPHONE_WIZARD_URL]; + XMLRPCRequest *request = [[XMLRPCRequest alloc] initWithURL: URL]; + [request setMethod: @"create_account_with_useragent" withParameters:[NSArray arrayWithObjects:identity, password, email, useragent, nil]]; + + XMLRPCConnectionManager *manager = [XMLRPCConnectionManager sharedManager]; + [manager spawnConnectionWithXMLRPCRequest: request delegate: self]; + + [request release]; + [waitView setHidden:false]; +} + +- (void)checkAccountValidation:(NSString*)identity { + [LinphoneLogger log:LinphoneLoggerDebug format:@"XMLRPC check_account_validated %@", identity]; + + NSURL *URL = [NSURL URLWithString: LINPHONE_WIZARD_URL]; + XMLRPCRequest *request = [[XMLRPCRequest alloc] initWithURL: URL]; + [request setMethod: @"check_account_validated" withParameters:[NSArray arrayWithObjects:identity, nil]]; + + XMLRPCConnectionManager *manager = [XMLRPCConnectionManager sharedManager]; + [manager spawnConnectionWithXMLRPCRequest: request delegate: self]; + + [request release]; + [waitView setHidden:false]; +} + +- (void)registrationUpdate:(LinphoneRegistrationState)state { + switch (state) { + case LinphoneRegistrationOk: { + [[LinphoneManager instance].settingsStore setBool:false forKey:@"enable_first_login_view_preference"]; + [waitView setHidden:true]; + [[PhoneMainView instance] changeCurrentView:[DialerViewController compositeViewDescription]]; + break; + } + case LinphoneRegistrationNone: + case LinphoneRegistrationCleared: { + [waitView setHidden:true]; + break; + } + case LinphoneRegistrationFailed: { + [waitView setHidden:true]; + break; + } + case LinphoneRegistrationProgress: { + [waitView setHidden:false]; + break; + } + default: + break; + } } @@ -175,6 +344,10 @@ static UICompositeViewDescription *compositeDescription = nil; return YES; } +- (void)textFieldDidBeginEditing:(UITextField *)textField { + activeTextField = textField; +} + #pragma mark - Action Functions @@ -206,4 +379,214 @@ static UICompositeViewDescription *compositeDescription = nil; [self changeView:externalAccountView back:FALSE animation:TRUE]; } +- (IBAction)onCheckValidationClick:(id)sender { + NSString *username = [self findTextField:ViewElement_Username].text; + [self checkAccountValidation:[NSString stringWithFormat:@"%@@%@", username, LINPHONE_WIZARD_DOMAIN]]; +} + +- (IBAction)onSignInExternalClick:(id)sender { + [self.waitView setHidden:false]; + NSString *username = [self findTextField:ViewElement_Username].text; + NSString *password = [self findTextField:ViewElement_Password].text; + NSString *domain = [self findTextField:ViewElement_Domain].text; + [self addProxyConfig:username password:password domain:domain]; +} + +- (IBAction)onSignInClick:(id)sender { + [self.waitView setHidden:false]; + NSString *username = [self findTextField:ViewElement_Username].text; + NSString *password = [self findTextField:ViewElement_Password].text; + [self addProxyConfig:username password:password domain:LINPHONE_WIZARD_DOMAIN]; +} + +- (IBAction)onRegisterClick:(id)sender { + NSString *username = [self findTextField:ViewElement_Username].text; + NSString *password = [self findTextField:ViewElement_Password].text; + NSString *password2 = [self findTextField:ViewElement_Password2].text; + NSString *email = [self findTextField:ViewElement_Email].text; + NSMutableString *errors = [NSMutableString string]; + + if ([username length] < LINPHONE_WIZARD_MIN_USERNAME_LENGTH) { + [errors appendString:[NSString stringWithFormat:@"The username is too short (minimum %d characters).\n", LINPHONE_WIZARD_MIN_USERNAME_LENGTH]]; + } + + if ([password length] < LINPHONE_WIZARD_MIN_PASSWORD_LENGTH) { + [errors appendString:[NSString stringWithFormat:@"The password is too short (minimum %d characters).\n", LINPHONE_WIZARD_MIN_PASSWORD_LENGTH]]; + } + + if (![password2 isEqualToString:password]) { + [errors appendString:@"The passwords are different.\n"]; + } + + NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", @".+@.+\\.[A-Za-z]{2}[A-Za-z]*"]; + if(![emailTest evaluateWithObject:email]) { + [errors appendString:@"The email is invalid.\n"]; + } + + if([errors length]) { + UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Check error",nil) + message:[errors substringWithRange:NSMakeRange(0, [errors length] - 1)] + delegate:nil + cancelButtonTitle:NSLocalizedString(@"Continue",nil) + otherButtonTitles:nil,nil]; + [errorView show]; + [errorView release]; + } else { + [self checkUserExist:username]; + } +} + + +#pragma mark - Event Functions + +- (void)registrationUpdateEvent:(NSNotification*)notif { + [self registrationUpdate:[[notif.userInfo objectForKey: @"state"] intValue]]; +} + +#pragma mark - Keyboard Event Functions + +- (void)keyboardWillHide:(NSNotification *)notif { + //CGRect beginFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue]; + //CGRect endFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; + UIViewAnimationCurve curve = [[[notif userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]; + NSTimeInterval duration = [[[notif userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]; + [UIView beginAnimations:@"resize" context:nil]; + [UIView setAnimationDuration:duration]; + [UIView setAnimationCurve:curve]; + [UIView setAnimationBeginsFromCurrentState:TRUE]; + + // Move view + UIEdgeInsets inset = {0,0,0,0}; + [contentView setContentInset:inset]; + [contentView setScrollIndicatorInsets:inset]; + [contentView setShowsVerticalScrollIndicator:FALSE]; + + [UIView commitAnimations]; +} + +- (void)keyboardWillShow:(NSNotification *)notif { + //CGRect beginFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue]; + CGRect endFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; + UIViewAnimationCurve curve = [[[notif userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]; + NSTimeInterval duration = [[[notif userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]; + [UIView beginAnimations:@"resize" context:nil]; + [UIView setAnimationDuration:duration]; + [UIView setAnimationCurve:curve]; + [UIView setAnimationBeginsFromCurrentState:TRUE]; + + if(UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) { + int width = endFrame.size.height; + endFrame.size.height = endFrame.size.width; + endFrame.size.width = width; + } + + // Change inset + { + UIEdgeInsets inset = {0,0,0,0}; + CGRect frame = [contentView frame]; + CGRect rect = [PhoneMainView instance].view.bounds; + CGPoint pos = {frame.size.width, frame.size.height}; + CGPoint gPos = [contentView convertPoint:pos toView:[UIApplication sharedApplication].keyWindow.rootViewController.view]; // Bypass IOS bug on landscape mode + inset.bottom = -(rect.size.height - gPos.y - endFrame.size.height); + if(inset.bottom < 0) inset.bottom = 0; + + [contentView setContentInset:inset]; + [contentView setScrollIndicatorInsets:inset]; + CGRect fieldFrame = activeTextField.frame; + fieldFrame.origin.y += fieldFrame.size.height; + [contentView scrollRectToVisible:fieldFrame animated:TRUE]; + [contentView setShowsVerticalScrollIndicator:TRUE]; + } + [UIView commitAnimations]; +} + + +#pragma mark - XMLRPCConnectionDelegate Functions + +- (void)request: (XMLRPCRequest *)request didReceiveResponse: (XMLRPCResponse *)response { + [LinphoneLogger log:LinphoneLoggerDebug format:@"XMLRPC %@: %@", [request method], [response body]]; + [waitView setHidden:true]; + if ([response isFault]) { + NSString *errorString = [NSString stringWithFormat:@"Can't create account: Communication issue (%@)", [response faultString]]; + UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Communication issue",nil) + message:errorString + delegate:nil + cancelButtonTitle:NSLocalizedString(@"Continue",nil) + otherButtonTitles:nil,nil]; + [errorView show]; + [errorView release]; + } else { + if([[request method] isEqualToString:@"check_account"]) { + if([response object] == [NSNumber numberWithInt:1]) { + UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Check issue",nil) + message:@"Username already exists" + delegate:nil + cancelButtonTitle:NSLocalizedString(@"Continue",nil) + otherButtonTitles:nil,nil]; + [errorView show]; + [errorView release]; + } else { + NSString *username = [self findTextField:ViewElement_Username].text; + NSString *password = [self findTextField:ViewElement_Password].text; + NSString *email = [self findTextField:ViewElement_Email].text; + [self createAccount:[NSString stringWithFormat:@"%@@%@", username, LINPHONE_WIZARD_DOMAIN] password:password email:email]; + } + } else if([[request method] isEqualToString:@"create_account_with_useragent"]) { + if([response object] == [NSNumber numberWithInt:0]) { + NSString *username = [self findTextField:ViewElement_Username].text; + NSString *password = [self findTextField:ViewElement_Password].text; + [self changeView:validateAccountView back:FALSE animation:TRUE]; + [self findTextField:ViewElement_Username].text = username; + [self findTextField:ViewElement_Password].text = password; + } else { + UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Account creation issue",nil) + message:@"Can't create the account. Please try again." + delegate:nil + cancelButtonTitle:NSLocalizedString(@"Continue",nil) + otherButtonTitles:nil,nil]; + [errorView show]; + [errorView release]; + } + } else if([[request method] isEqualToString:@"check_account_validated"]) { + if([response object] == [NSNumber numberWithInt:1]) { + NSString *username = [self findTextField:ViewElement_Username].text; + NSString *password = [self findTextField:ViewElement_Password].text; + [self addProxyConfig:username password:password domain:LINPHONE_WIZARD_DOMAIN]; + } else { + UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Account validation issue",nil) + message:@"Your account is not validate yet." + delegate:nil + cancelButtonTitle:NSLocalizedString(@"Continue",nil) + otherButtonTitles:nil,nil]; + [errorView show]; + [errorView release]; + } + } + } +} + +- (void)request: (XMLRPCRequest *)request didFailWithError: (NSError *)error { + NSString *errorString = [NSString stringWithFormat:@"Can't create account: Communication issue (%@)", [error localizedDescription]]; + UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Communication issue",nil) + message:errorString + delegate:nil + cancelButtonTitle:NSLocalizedString(@"Continue",nil) + otherButtonTitles:nil,nil]; + [errorView show]; + [errorView release]; + [waitView setHidden:true]; +} + +- (BOOL)request: (XMLRPCRequest *)request canAuthenticateAgainstProtectionSpace: (NSURLProtectionSpace *)protectionSpace { + return FALSE; +} + +- (void)request: (XMLRPCRequest *)request didReceiveAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge { + +} + +- (void)request: (XMLRPCRequest *)request didCancelAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge { + +} + @end diff --git a/Classes/WizardViewController.xib b/Classes/WizardViewController.xib index 4ea29b5c0..9d175e6d6 100644 --- a/Classes/WizardViewController.xib +++ b/Classes/WizardViewController.xib @@ -3,20 +3,22 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 - IBUITextField + IBProxyObject + IBUIActivityIndicatorView IBUIButton IBUIImageView - IBUIView IBUILabel - IBProxyObject + IBUIScrollView + IBUITextField + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -38,28 +40,27 @@ 292 - + - 292 + 268 {320, 394} - + _NS:9 - - 3 - MCAwAA - - NO + YES + YES IBCocoaTouchFramework + NO + NO - 274 + 266 - 292 + 294 {160, 77} @@ -75,15 +76,15 @@ 3 MC41AA - + NSImage setup_cancel_over.png - + NSImage setup_cancel_disabled.png - + NSImage setup_cancel_default.png @@ -99,7 +100,7 @@ - 292 + 291 {{160, 0}, {160, 77}} @@ -112,15 +113,11 @@ NO NO - + NSImage setup_start_over.png - - NSImage - setup_start_disabled.png - - + NSImage setup_start_default.png @@ -129,10 +126,11 @@ - -2147483356 + -2147483357 {{160, 0}, {160, 77}} + _NS:9 NO IBCocoaTouchFramework @@ -141,15 +139,15 @@ NO NO - + NSImage setup_back_over.png - + NSImage setup_back_disabled.png - + NSImage setup_back_default.png @@ -162,25 +160,58 @@ _NS:9 - + + 3 + MCAwAA + + IBCocoaTouchFramework + + + + -2147483374 + + + + 292 + {{141, 212}, {37, 37}} + + + + _NS:9 + NO + IBCocoaTouchFramework + NO + YES + 0 + + + {320, 460} + + + + _NS:9 + + 3 + MSAwLjUAA + IBCocoaTouchFramework {320, 460} - + _NS:9 IBCocoaTouchFramework - 292 + 274 - 274 + 311 {{60, 80}, {201, 129}} @@ -195,10 +226,11 @@ - 292 - {{40, 313}, {240, 44}} + 282 + {{40, 290}, {240, 44}} + _NS:9 NO YES @@ -213,7 +245,7 @@ 0 10 - 2 + 0 1 1 @@ -224,9 +256,10 @@ 12 16 + NO - {320, 460} + {320, 394} @@ -236,11 +269,11 @@ - 292 + 274 - 274 + 311 {{31, 50}, {258, 24}} @@ -255,7 +288,7 @@ - 292 + 319 {{33, 141}, {255, 50}} @@ -289,7 +322,7 @@ - 292 + 319 {{33, 205}, {255, 50}} @@ -310,10 +343,11 @@ - 292 + 319 {{33, 269}, {255, 50}} + _NS:9 NO IBCocoaTouchFramework @@ -329,7 +363,7 @@ - {320, 460} + {320, 394} @@ -339,11 +373,11 @@ - 292 + 274 - 274 + 311 {{31, 50}, {258, 24}} @@ -355,7 +389,7 @@ - 292 + 298 {{39, 80}, {240, 44}} @@ -372,14 +406,15 @@ 0 10 - 2 + 0 1 + NO - 292 + 319 {{32, 140}, {255, 31}} @@ -420,7 +455,7 @@ - 292 + 319 {{32, 185}, {255, 31}} @@ -450,7 +485,7 @@ - 292 + 319 {{32, 230}, {255, 31}} @@ -480,7 +515,7 @@ - 292 + 319 {{32, 275}, {255, 31}} @@ -488,7 +523,7 @@ _NS:9 NO YES - 104 + 103 IBCocoaTouchFramework 0 @@ -509,10 +544,11 @@ - 292 + 287 {{33, 330}, {255, 50}} + _NS:9 NO IBCocoaTouchFramework @@ -535,7 +571,7 @@ - {320, 460} + {320, 394} @@ -545,11 +581,11 @@ - 292 + 274 - 274 + 311 {{31, 50}, {258, 24}} @@ -561,7 +597,7 @@ - 292 + 298 {{40, 80}, {240, 44}} @@ -578,17 +614,19 @@ 0 10 - 2 + 0 1 + NO - 292 + 287 {{32, 330}, {255, 50}} + _NS:9 NO IBCocoaTouchFramework @@ -605,7 +643,7 @@ - 292 + 319 {{32, 185}, {255, 31}} @@ -635,7 +673,7 @@ - 292 + 319 {{32, 140}, {255, 31}} @@ -663,7 +701,7 @@ - {320, 460} + {320, 394} @@ -673,11 +711,11 @@ - 292 + 274 - 274 + 311 {{31, 50}, {258, 24}} @@ -689,7 +727,7 @@ - 292 + 298 {{40, 80}, {240, 44}} @@ -706,14 +744,15 @@ 0 10 - 2 + 0 1 + NO - 292 + 319 {{33, 140}, {255, 31}} @@ -742,7 +781,7 @@ - 292 + 319 {{33, 185}, {255, 31}} @@ -772,7 +811,7 @@ - 292 + 319 {{33, 230}, {255, 31}} @@ -780,7 +819,7 @@ _NS:9 NO YES - 103 + 104 IBCocoaTouchFramework 0 @@ -801,10 +840,11 @@ - 292 + 287 {{34, 330}, {255, 50}} + _NS:9 NO IBCocoaTouchFramework @@ -820,7 +860,7 @@ - {320, 460} + {320, 394} @@ -828,6 +868,136 @@ IBCocoaTouchFramework + + + 274 + + + + 311 + {{31, 50}, {258, 24}} + + + + _NS:9 + NO + IBCocoaTouchFramework + + + + + 298 + {{40, 80}, {240, 44}} + + + + _NS:9 + NO + YES + 7 + 200 + NO + IBCocoaTouchFramework + Your account is created. Please check your mails in order to validate your account. + + + 0 + 10 + 0 + 1 + + + NO + + + + 287 + {{32, 330}, {255, 50}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + Check validation + + + + + + + + + + -2147483329 + {{32, 185}, {255, 31}} + + + + _NS:9 + NO + YES + 101 + IBCocoaTouchFramework + 0 + + Password + + 3 + MAA + + + YES + 17 + + YES + IBCocoaTouchFramework + + + + + + + + -2147483329 + {{32, 140}, {255, 31}} + + + + _NS:9 + NO + YES + 100 + IBCocoaTouchFramework + 0 + + Username + + 3 + MAA + + + YES + 17 + + IBCocoaTouchFramework + + + + + + + {320, 394} + + + + _NS:9 + + IBCocoaTouchFramework + @@ -863,14 +1033,6 @@ 28 - - - contentView - - - - 29 - choiceView @@ -903,6 +1065,30 @@ 72 + + + waitView + + + + 96 + + + + contentView + + + + 99 + + + + validateAccountView + + + + 112 + onStartClick: @@ -981,6 +1167,24 @@ 88 + + + onSignInExternalClick: + + + 7 + + 115 + + + + onSignInClick: + + + 7 + + 116 + delegate @@ -1021,6 +1225,15 @@ 83 + + + onRegisterClick: + + + 7 + + 113 + delegate @@ -1029,6 +1242,31 @@ 84 + + + onCheckValidationClick: + + + 7 + + 114 + + + + delegate + + + + 109 + + + + delegate + + + + 110 + @@ -1053,18 +1291,12 @@ 12 - + + - - 13 - - - - contentView - 14 @@ -1098,8 +1330,8 @@ 21 - + welcomeView @@ -1128,30 +1360,12 @@ choiceView - - 36 - - - createAccountButton - 37 titleImage - - 38 - - - connectAccountButton - - - 39 - - - externalAccountButton - 44 @@ -1302,6 +1516,88 @@ emailField + + 39 + + + externalAccountButton + + + 38 + + + connectAccountButton + + + 36 + + + createAccountButton + + + 91 + + + + + + waitView + + + 90 + + + activityIndicatorView + + + 98 + + + contentView + + + 101 + + + + + + + + + + validateAccountView + + + 103 + + + checkValidationButton + + + 105 + + + label + + + 107 + + + titleImage + + + 104 + + + usernameField + + + 106 + + + passwordField + @@ -1309,15 +1605,21 @@ 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 + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1353,12 +1655,15 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 88 + 116 @@ -1368,9 +1673,13 @@ id id + id id id id + id + id + id id @@ -1382,6 +1691,10 @@ onCancelClick: id + + onCheckValidationClick: + id + onConnectAccountClick: id @@ -1394,6 +1707,18 @@ onExternalAccountClick: id + + onRegisterClick: + id + + + onSignInClick: + id + + + onSignInExternalClick: + id + onStartClick: id @@ -1407,6 +1732,8 @@ UIView UIView UIButton + UIView + UIView UIView @@ -1438,6 +1765,14 @@ startButton UIButton + + validateAccountView + UIView + + + waitView + UIView + welcomeView UIView @@ -1461,7 +1796,7 @@ {550, 101} {550, 101} - {16, 16} + {542, 88} {320, 154} {320, 154} {320, 154} @@ -1469,11 +1804,10 @@ {320, 154} {320, 154} {320, 154} - {320, 154} {320, 154} {516, 48} {402, 258} - 1181 + 1498 diff --git a/README b/README index 096cfdadb..7bb193edd 100644 --- a/README +++ b/README @@ -8,9 +8,11 @@ BUILD PREQUISITES Linphone for iPhone depends on liblinphone sdk. This SDK is generated from makefiles and shell scripts. You must first install both xcode with iPhone OS SDK and MacPorts (www.macports.org) for these scripts to work. +Make sure that /opt/local/bin (macport tools) arrives first in your PATH env variable, so that the macport tools are taken in place of the versions brought by Apple in /usr/bin. Otherwise the build will fail with obscure errors. + Once xccode and macports are installed, open a terminal and install the required build-time tools with: - $ sudo port install nawk coreutils automake autoconf libtool intltool wget pkgconfig cmake yasm doxygen + $ sudo port install coreutils automake autoconf libtool intltool wget pkgconfig cmake gmake yasm grep doxygen Install gas-preprosessor.pl (http://github.com/yuvi/gas-preprocessor/ ) to be copied into /opt/local/bin : diff --git a/Resources/add_call_default~ipad.png b/Resources/add_call_default~ipad.png new file mode 100644 index 000000000..a3ddce2f2 Binary files /dev/null and b/Resources/add_call_default~ipad.png differ diff --git a/Resources/add_call_disabled~ipad.png b/Resources/add_call_disabled~ipad.png new file mode 100644 index 000000000..374aacc0b Binary files /dev/null and b/Resources/add_call_disabled~ipad.png differ diff --git a/Resources/add_call_over~ipad.png b/Resources/add_call_over~ipad.png new file mode 100644 index 000000000..24fdabed5 Binary files /dev/null and b/Resources/add_call_over~ipad.png differ diff --git a/Resources/add_contact_default~ipad.png b/Resources/add_contact_default~ipad.png new file mode 100644 index 000000000..82611c172 Binary files /dev/null and b/Resources/add_contact_default~ipad.png differ diff --git a/Resources/add_contact_disabled~ipad.png b/Resources/add_contact_disabled~ipad.png new file mode 100644 index 000000000..ff863911b Binary files /dev/null and b/Resources/add_contact_disabled~ipad.png differ diff --git a/Resources/add_contact_over~ipad.png b/Resources/add_contact_over~ipad.png new file mode 100644 index 000000000..4eb38dddd Binary files /dev/null and b/Resources/add_contact_over~ipad.png differ diff --git a/Resources/back_default~ipad.png b/Resources/back_default~ipad.png new file mode 100644 index 000000000..3dad47eb4 Binary files /dev/null and b/Resources/back_default~ipad.png differ diff --git a/Resources/back_disabled~ipad.png b/Resources/back_disabled~ipad.png new file mode 100644 index 000000000..da4d42006 Binary files /dev/null and b/Resources/back_disabled~ipad.png differ diff --git a/Resources/back_over~ipad.png b/Resources/back_over~ipad.png new file mode 100644 index 000000000..4dea8f4c8 Binary files /dev/null and b/Resources/back_over~ipad.png differ diff --git a/Resources/background_top~ipad.png b/Resources/background_top~ipad.png new file mode 100644 index 000000000..23f494369 Binary files /dev/null and b/Resources/background_top~ipad.png differ diff --git a/Resources/backspace_default~ipad.png b/Resources/backspace_default~ipad.png new file mode 100644 index 000000000..274330951 Binary files /dev/null and b/Resources/backspace_default~ipad.png differ diff --git a/Resources/backspace_disabled~ipad.png b/Resources/backspace_disabled~ipad.png new file mode 100644 index 000000000..825232600 Binary files /dev/null and b/Resources/backspace_disabled~ipad.png differ diff --git a/Resources/backspace_over~ipad.png b/Resources/backspace_over~ipad.png new file mode 100644 index 000000000..95e2137e7 Binary files /dev/null and b/Resources/backspace_over~ipad.png differ diff --git a/Resources/call_default~ipad.png b/Resources/call_default~ipad.png new file mode 100644 index 000000000..bbfa08f38 Binary files /dev/null and b/Resources/call_default~ipad.png differ diff --git a/Resources/call_disabled~ipad.png b/Resources/call_disabled~ipad.png new file mode 100644 index 000000000..f178ee9a2 Binary files /dev/null and b/Resources/call_disabled~ipad.png differ diff --git a/Resources/call_over~ipad.png b/Resources/call_over~ipad.png new file mode 100644 index 000000000..f03e156d6 Binary files /dev/null and b/Resources/call_over~ipad.png differ diff --git a/Resources/chat_default_landscape~ipad.png b/Resources/chat_default_landscape~ipad.png new file mode 100644 index 000000000..e9c14df72 Binary files /dev/null and b/Resources/chat_default_landscape~ipad.png differ diff --git a/Resources/chat_default~ipad.png b/Resources/chat_default~ipad.png new file mode 100644 index 000000000..09e2acd5a Binary files /dev/null and b/Resources/chat_default~ipad.png differ diff --git a/Resources/chat_field.9.png b/Resources/chat_field.9.png new file mode 100644 index 000000000..3303c1d28 Binary files /dev/null and b/Resources/chat_field.9.png differ diff --git a/Resources/chat_field.9@x2.png b/Resources/chat_field.9@x2.png new file mode 100644 index 000000000..614626e89 Binary files /dev/null and b/Resources/chat_field.9@x2.png differ diff --git a/Resources/chat_over_landscape~ipad.png b/Resources/chat_over_landscape~ipad.png new file mode 100644 index 000000000..e58933823 Binary files /dev/null and b/Resources/chat_over_landscape~ipad.png differ diff --git a/Resources/chat_over~ipad.png b/Resources/chat_over~ipad.png new file mode 100644 index 000000000..c6ff510b2 Binary files /dev/null and b/Resources/chat_over~ipad.png differ diff --git a/Resources/chat_selected_landscape~ipad.png b/Resources/chat_selected_landscape~ipad.png new file mode 100644 index 000000000..68df46139 Binary files /dev/null and b/Resources/chat_selected_landscape~ipad.png differ diff --git a/Resources/chat_selected~ipad.png b/Resources/chat_selected~ipad.png new file mode 100644 index 000000000..ac50aa1f7 Binary files /dev/null and b/Resources/chat_selected~ipad.png differ diff --git a/Resources/conference_default_landscape~ipad.png b/Resources/conference_default_landscape~ipad.png new file mode 100644 index 000000000..12f4072e6 Binary files /dev/null and b/Resources/conference_default_landscape~ipad.png differ diff --git a/Resources/conference_default~ipad.png b/Resources/conference_default~ipad.png new file mode 100644 index 000000000..12f4072e6 Binary files /dev/null and b/Resources/conference_default~ipad.png differ diff --git a/Resources/conference_over_landscape~ipad.png b/Resources/conference_over_landscape~ipad.png new file mode 100644 index 000000000..edc71a961 Binary files /dev/null and b/Resources/conference_over_landscape~ipad.png differ diff --git a/Resources/conference_over~ipad.png b/Resources/conference_over~ipad.png new file mode 100644 index 000000000..edc71a961 Binary files /dev/null and b/Resources/conference_over~ipad.png differ diff --git a/Resources/contact_edit_background.png b/Resources/contact_edit_background.png deleted file mode 100644 index 9f98bc469..000000000 Binary files a/Resources/contact_edit_background.png and /dev/null differ diff --git a/Resources/contacts_default_landscape~ipad.png b/Resources/contacts_default_landscape~ipad.png new file mode 100644 index 000000000..c2a18a84f Binary files /dev/null and b/Resources/contacts_default_landscape~ipad.png differ diff --git a/Resources/contacts_default~ipad.png b/Resources/contacts_default~ipad.png new file mode 100644 index 000000000..4c754a33b Binary files /dev/null and b/Resources/contacts_default~ipad.png differ diff --git a/Resources/contacts_over_landscape~ipad.png b/Resources/contacts_over_landscape~ipad.png new file mode 100644 index 000000000..d9fa24f10 Binary files /dev/null and b/Resources/contacts_over_landscape~ipad.png differ diff --git a/Resources/contacts_over~ipad.png b/Resources/contacts_over~ipad.png new file mode 100644 index 000000000..af9886500 Binary files /dev/null and b/Resources/contacts_over~ipad.png differ diff --git a/Resources/contacts_selected_landscape~ipad.png b/Resources/contacts_selected_landscape~ipad.png new file mode 100644 index 000000000..a392db350 Binary files /dev/null and b/Resources/contacts_selected_landscape~ipad.png differ diff --git a/Resources/contacts_selected~ipad.png b/Resources/contacts_selected~ipad.png new file mode 100644 index 000000000..397f71f8c Binary files /dev/null and b/Resources/contacts_selected~ipad.png differ diff --git a/Resources/dialer_address_background_landscape~ipad.png b/Resources/dialer_address_background_landscape~ipad.png new file mode 100644 index 000000000..21bc36a51 Binary files /dev/null and b/Resources/dialer_address_background_landscape~ipad.png differ diff --git a/Resources/dialer_address_background~ipad.png b/Resources/dialer_address_background~ipad.png new file mode 100644 index 000000000..302d82d5d Binary files /dev/null and b/Resources/dialer_address_background~ipad.png differ diff --git a/Resources/dialer_alt_back_default_landscape~ipad.png b/Resources/dialer_alt_back_default_landscape~ipad.png new file mode 100644 index 000000000..969dec7af Binary files /dev/null and b/Resources/dialer_alt_back_default_landscape~ipad.png differ diff --git a/Resources/dialer_alt_back_default~ipad.png b/Resources/dialer_alt_back_default~ipad.png new file mode 100644 index 000000000..969dec7af Binary files /dev/null and b/Resources/dialer_alt_back_default~ipad.png differ diff --git a/Resources/dialer_alt_back_over_landscape~ipad.png b/Resources/dialer_alt_back_over_landscape~ipad.png new file mode 100644 index 000000000..a2105442f Binary files /dev/null and b/Resources/dialer_alt_back_over_landscape~ipad.png differ diff --git a/Resources/dialer_alt_back_over~ipad.png b/Resources/dialer_alt_back_over~ipad.png new file mode 100644 index 000000000..a2105442f Binary files /dev/null and b/Resources/dialer_alt_back_over~ipad.png differ diff --git a/Resources/dialer_alt_default_landscape~ipad.png b/Resources/dialer_alt_default_landscape~ipad.png new file mode 100644 index 000000000..335163e0f Binary files /dev/null and b/Resources/dialer_alt_default_landscape~ipad.png differ diff --git a/Resources/dialer_alt_default~ipad.png b/Resources/dialer_alt_default~ipad.png new file mode 100644 index 000000000..335163e0f Binary files /dev/null and b/Resources/dialer_alt_default~ipad.png differ diff --git a/Resources/dialer_alt_over_landscape~ipad.png b/Resources/dialer_alt_over_landscape~ipad.png new file mode 100644 index 000000000..117a8614a Binary files /dev/null and b/Resources/dialer_alt_over_landscape~ipad.png differ diff --git a/Resources/dialer_alt_over~ipad.png b/Resources/dialer_alt_over~ipad.png new file mode 100644 index 000000000..117a8614a Binary files /dev/null and b/Resources/dialer_alt_over~ipad.png differ diff --git a/Resources/hangup_default_landscape~ipad.png b/Resources/hangup_default_landscape~ipad.png new file mode 100644 index 000000000..0c88f12d7 Binary files /dev/null and b/Resources/hangup_default_landscape~ipad.png differ diff --git a/Resources/hangup_default~ipad.png b/Resources/hangup_default~ipad.png new file mode 100644 index 000000000..0c88f12d7 Binary files /dev/null and b/Resources/hangup_default~ipad.png differ diff --git a/Resources/hangup_over_landscape~ipad.png b/Resources/hangup_over_landscape~ipad.png new file mode 100644 index 000000000..00fd688b6 Binary files /dev/null and b/Resources/hangup_over_landscape~ipad.png differ diff --git a/Resources/hangup_over~ipad.png b/Resources/hangup_over~ipad.png new file mode 100644 index 000000000..00fd688b6 Binary files /dev/null and b/Resources/hangup_over~ipad.png differ diff --git a/Resources/history_default_landscape~ipad.png b/Resources/history_default_landscape~ipad.png new file mode 100644 index 000000000..62eaaab9f Binary files /dev/null and b/Resources/history_default_landscape~ipad.png differ diff --git a/Resources/history_default~ipad.png b/Resources/history_default~ipad.png new file mode 100644 index 000000000..ad31bf9b8 Binary files /dev/null and b/Resources/history_default~ipad.png differ diff --git a/Resources/history_details_bar_background.png b/Resources/history_details_bar_background.png deleted file mode 100644 index e3638e197..000000000 Binary files a/Resources/history_details_bar_background.png and /dev/null differ diff --git a/Resources/history_over_landscape~ipad.png b/Resources/history_over_landscape~ipad.png new file mode 100644 index 000000000..bdd2b7ea8 Binary files /dev/null and b/Resources/history_over_landscape~ipad.png differ diff --git a/Resources/history_over~ipad.png b/Resources/history_over~ipad.png new file mode 100644 index 000000000..54944e122 Binary files /dev/null and b/Resources/history_over~ipad.png differ diff --git a/Resources/history_selected_landscape~ipad.png b/Resources/history_selected_landscape~ipad.png new file mode 100644 index 000000000..d45616b41 Binary files /dev/null and b/Resources/history_selected_landscape~ipad.png differ diff --git a/Resources/history_selected~ipad.png b/Resources/history_selected~ipad.png new file mode 100644 index 000000000..e880fb325 Binary files /dev/null and b/Resources/history_selected~ipad.png differ diff --git a/Resources/micro_off_default_landscape~ipad.png b/Resources/micro_off_default_landscape~ipad.png new file mode 100644 index 000000000..6512dee9d Binary files /dev/null and b/Resources/micro_off_default_landscape~ipad.png differ diff --git a/Resources/micro_off_default~ipad.png b/Resources/micro_off_default~ipad.png new file mode 100644 index 000000000..6512dee9d Binary files /dev/null and b/Resources/micro_off_default~ipad.png differ diff --git a/Resources/micro_off_disabled_landscape~ipad.png b/Resources/micro_off_disabled_landscape~ipad.png new file mode 100644 index 000000000..4e69a2135 Binary files /dev/null and b/Resources/micro_off_disabled_landscape~ipad.png differ diff --git a/Resources/micro_off_disabled~ipad.png b/Resources/micro_off_disabled~ipad.png new file mode 100644 index 000000000..4e69a2135 Binary files /dev/null and b/Resources/micro_off_disabled~ipad.png differ diff --git a/Resources/micro_off_over_landscape~ipad.png b/Resources/micro_off_over_landscape~ipad.png new file mode 100644 index 000000000..b9230d6e4 Binary files /dev/null and b/Resources/micro_off_over_landscape~ipad.png differ diff --git a/Resources/micro_off_over~ipad.png b/Resources/micro_off_over~ipad.png new file mode 100644 index 000000000..b9230d6e4 Binary files /dev/null and b/Resources/micro_off_over~ipad.png differ diff --git a/Resources/micro_on_default_landscape~ipad.png b/Resources/micro_on_default_landscape~ipad.png new file mode 100644 index 000000000..e1677a4fd Binary files /dev/null and b/Resources/micro_on_default_landscape~ipad.png differ diff --git a/Resources/micro_on_default~ipad.png b/Resources/micro_on_default~ipad.png new file mode 100644 index 000000000..e1677a4fd Binary files /dev/null and b/Resources/micro_on_default~ipad.png differ diff --git a/Resources/micro_on_disabled_landscape~ipad.png b/Resources/micro_on_disabled_landscape~ipad.png new file mode 100644 index 000000000..f8e3c49c3 Binary files /dev/null and b/Resources/micro_on_disabled_landscape~ipad.png differ diff --git a/Resources/micro_on_disabled~ipad.png b/Resources/micro_on_disabled~ipad.png new file mode 100644 index 000000000..f8e3c49c3 Binary files /dev/null and b/Resources/micro_on_disabled~ipad.png differ diff --git a/Resources/micro_on_over_landscape~ipad.png b/Resources/micro_on_over_landscape~ipad.png new file mode 100644 index 000000000..585fb8aa3 Binary files /dev/null and b/Resources/micro_on_over_landscape~ipad.png differ diff --git a/Resources/micro_on_over~ipad.png b/Resources/micro_on_over~ipad.png new file mode 100644 index 000000000..585fb8aa3 Binary files /dev/null and b/Resources/micro_on_over~ipad.png differ diff --git a/Resources/options_add_default_landscape~ipad.png b/Resources/options_add_default_landscape~ipad.png new file mode 100644 index 000000000..f3aa84165 Binary files /dev/null and b/Resources/options_add_default_landscape~ipad.png differ diff --git a/Resources/options_add_default~ipad.png b/Resources/options_add_default~ipad.png new file mode 100644 index 000000000..f3aa84165 Binary files /dev/null and b/Resources/options_add_default~ipad.png differ diff --git a/Resources/options_add_disabled_landscape~ipad.png b/Resources/options_add_disabled_landscape~ipad.png new file mode 100644 index 000000000..60874af11 Binary files /dev/null and b/Resources/options_add_disabled_landscape~ipad.png differ diff --git a/Resources/options_add_disabled~ipad.png b/Resources/options_add_disabled~ipad.png new file mode 100644 index 000000000..60874af11 Binary files /dev/null and b/Resources/options_add_disabled~ipad.png differ diff --git a/Resources/options_add_over_landscape~ipad.png b/Resources/options_add_over_landscape~ipad.png new file mode 100644 index 000000000..59caf0945 Binary files /dev/null and b/Resources/options_add_over_landscape~ipad.png differ diff --git a/Resources/options_add_over~ipad.png b/Resources/options_add_over~ipad.png new file mode 100644 index 000000000..59caf0945 Binary files /dev/null and b/Resources/options_add_over~ipad.png differ diff --git a/Resources/options_default_landscape~ipad.png b/Resources/options_default_landscape~ipad.png new file mode 100644 index 000000000..891847836 Binary files /dev/null and b/Resources/options_default_landscape~ipad.png differ diff --git a/Resources/options_default~ipad.png b/Resources/options_default~ipad.png new file mode 100644 index 000000000..891847836 Binary files /dev/null and b/Resources/options_default~ipad.png differ diff --git a/Resources/options_disabled_landscape~ipad.png b/Resources/options_disabled_landscape~ipad.png new file mode 100644 index 000000000..9927bc551 Binary files /dev/null and b/Resources/options_disabled_landscape~ipad.png differ diff --git a/Resources/options_disabled~ipad.png b/Resources/options_disabled~ipad.png new file mode 100644 index 000000000..9927bc551 Binary files /dev/null and b/Resources/options_disabled~ipad.png differ diff --git a/Resources/options_over_landscape~ipad.png b/Resources/options_over_landscape~ipad.png new file mode 100644 index 000000000..e69476a04 Binary files /dev/null and b/Resources/options_over_landscape~ipad.png differ diff --git a/Resources/options_over~ipad.png b/Resources/options_over~ipad.png new file mode 100644 index 000000000..e69476a04 Binary files /dev/null and b/Resources/options_over~ipad.png differ diff --git a/Resources/options_selected_landscape~ipad.png b/Resources/options_selected_landscape~ipad.png new file mode 100644 index 000000000..69e81213d Binary files /dev/null and b/Resources/options_selected_landscape~ipad.png differ diff --git a/Resources/options_selected~ipad.png b/Resources/options_selected~ipad.png new file mode 100644 index 000000000..69e81213d Binary files /dev/null and b/Resources/options_selected~ipad.png differ diff --git a/Resources/options_transfer_default_landscape~ipad.png b/Resources/options_transfer_default_landscape~ipad.png new file mode 100644 index 000000000..113291d4f Binary files /dev/null and b/Resources/options_transfer_default_landscape~ipad.png differ diff --git a/Resources/options_transfer_default~ipad.png b/Resources/options_transfer_default~ipad.png new file mode 100644 index 000000000..113291d4f Binary files /dev/null and b/Resources/options_transfer_default~ipad.png differ diff --git a/Resources/options_transfer_disabled_landscape~ipad.png b/Resources/options_transfer_disabled_landscape~ipad.png new file mode 100644 index 000000000..322d744c4 Binary files /dev/null and b/Resources/options_transfer_disabled_landscape~ipad.png differ diff --git a/Resources/options_transfer_disabled~ipad.png b/Resources/options_transfer_disabled~ipad.png new file mode 100644 index 000000000..322d744c4 Binary files /dev/null and b/Resources/options_transfer_disabled~ipad.png differ diff --git a/Resources/options_transfer_over_landscape~ipad.png b/Resources/options_transfer_over_landscape~ipad.png new file mode 100644 index 000000000..31bb2a738 Binary files /dev/null and b/Resources/options_transfer_over_landscape~ipad.png differ diff --git a/Resources/options_transfer_over~ipad.png b/Resources/options_transfer_over~ipad.png new file mode 100644 index 000000000..31bb2a738 Binary files /dev/null and b/Resources/options_transfer_over~ipad.png differ diff --git a/Resources/pause_off_default_landscape~ipad.png b/Resources/pause_off_default_landscape~ipad.png new file mode 100644 index 000000000..c7d17c130 Binary files /dev/null and b/Resources/pause_off_default_landscape~ipad.png differ diff --git a/Resources/pause_off_default~ipad.png b/Resources/pause_off_default~ipad.png new file mode 100644 index 000000000..c7d17c130 Binary files /dev/null and b/Resources/pause_off_default~ipad.png differ diff --git a/Resources/pause_off_over_landscape~ipad.png b/Resources/pause_off_over_landscape~ipad.png new file mode 100644 index 000000000..72cfef5e2 Binary files /dev/null and b/Resources/pause_off_over_landscape~ipad.png differ diff --git a/Resources/pause_off_over~ipad.png b/Resources/pause_off_over~ipad.png new file mode 100644 index 000000000..72cfef5e2 Binary files /dev/null and b/Resources/pause_off_over~ipad.png differ diff --git a/Resources/pause_on_default_landscape~ipad.png b/Resources/pause_on_default_landscape~ipad.png new file mode 100644 index 000000000..2aba53412 Binary files /dev/null and b/Resources/pause_on_default_landscape~ipad.png differ diff --git a/Resources/pause_on_default~ipad.png b/Resources/pause_on_default~ipad.png new file mode 100644 index 000000000..2aba53412 Binary files /dev/null and b/Resources/pause_on_default~ipad.png differ diff --git a/Resources/pause_on_over_landscape~ipad.png b/Resources/pause_on_over_landscape~ipad.png new file mode 100644 index 000000000..60eb8a551 Binary files /dev/null and b/Resources/pause_on_over_landscape~ipad.png differ diff --git a/Resources/pause_on_over~ipad.png b/Resources/pause_on_over~ipad.png new file mode 100644 index 000000000..60eb8a551 Binary files /dev/null and b/Resources/pause_on_over~ipad.png differ diff --git a/Resources/rootca.pem b/Resources/rootca.pem index cb25772cd..16f4fe95b 100644 --- a/Resources/rootca.pem +++ b/Resources/rootca.pem @@ -3963,3 +3963,27 @@ IR9NmXmd4c8nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSy i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ O+7ETPTsJ3xCwnR8gooJybQDJbw= -----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh +MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE +YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 +MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo +ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg +MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN +ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA +PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w +wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi +EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY +avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ +YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE +sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h +/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 +IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD +ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy +OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P +TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER +dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf +ReYNnyicsbkqWletNw+vHX/bvZ8= +-----END CERTIFICATE----- diff --git a/Resources/settings_bar_background.png b/Resources/settings_bar_background.png deleted file mode 100644 index e3638e197..000000000 Binary files a/Resources/settings_bar_background.png and /dev/null differ diff --git a/Resources/settings_default_landscape~ipad.png b/Resources/settings_default_landscape~ipad.png new file mode 100644 index 000000000..b19d0ba3b Binary files /dev/null and b/Resources/settings_default_landscape~ipad.png differ diff --git a/Resources/settings_default~ipad.png b/Resources/settings_default~ipad.png new file mode 100644 index 000000000..0000e2465 Binary files /dev/null and b/Resources/settings_default~ipad.png differ diff --git a/Resources/settings_over_landscape~ipad.png b/Resources/settings_over_landscape~ipad.png new file mode 100644 index 000000000..62cf3141d Binary files /dev/null and b/Resources/settings_over_landscape~ipad.png differ diff --git a/Resources/settings_over~ipad.png b/Resources/settings_over~ipad.png new file mode 100644 index 000000000..0e93432ee Binary files /dev/null and b/Resources/settings_over~ipad.png differ diff --git a/Resources/settings_selected_landscape~ipad.png b/Resources/settings_selected_landscape~ipad.png new file mode 100644 index 000000000..de988d97a Binary files /dev/null and b/Resources/settings_selected_landscape~ipad.png differ diff --git a/Resources/settings_selected~ipad.png b/Resources/settings_selected~ipad.png new file mode 100644 index 000000000..b1f1a1092 Binary files /dev/null and b/Resources/settings_selected~ipad.png differ diff --git a/Resources/speaker_off_default_landscape~ipad.png b/Resources/speaker_off_default_landscape~ipad.png new file mode 100644 index 000000000..7c6cbd752 Binary files /dev/null and b/Resources/speaker_off_default_landscape~ipad.png differ diff --git a/Resources/speaker_off_default~ipad.png b/Resources/speaker_off_default~ipad.png new file mode 100644 index 000000000..7c6cbd752 Binary files /dev/null and b/Resources/speaker_off_default~ipad.png differ diff --git a/Resources/speaker_off_disabled_landscape~ipad.png b/Resources/speaker_off_disabled_landscape~ipad.png new file mode 100644 index 000000000..3eb0f62bb Binary files /dev/null and b/Resources/speaker_off_disabled_landscape~ipad.png differ diff --git a/Resources/speaker_off_disabled~ipad.png b/Resources/speaker_off_disabled~ipad.png new file mode 100644 index 000000000..3eb0f62bb Binary files /dev/null and b/Resources/speaker_off_disabled~ipad.png differ diff --git a/Resources/speaker_off_over_landscape~ipad.png b/Resources/speaker_off_over_landscape~ipad.png new file mode 100644 index 000000000..b2f3a9316 Binary files /dev/null and b/Resources/speaker_off_over_landscape~ipad.png differ diff --git a/Resources/speaker_off_over~ipad.png b/Resources/speaker_off_over~ipad.png new file mode 100644 index 000000000..b2f3a9316 Binary files /dev/null and b/Resources/speaker_off_over~ipad.png differ diff --git a/Resources/speaker_on_default_landscape~ipad.png b/Resources/speaker_on_default_landscape~ipad.png new file mode 100644 index 000000000..120aa0058 Binary files /dev/null and b/Resources/speaker_on_default_landscape~ipad.png differ diff --git a/Resources/speaker_on_default~ipad.png b/Resources/speaker_on_default~ipad.png new file mode 100644 index 000000000..120aa0058 Binary files /dev/null and b/Resources/speaker_on_default~ipad.png differ diff --git a/Resources/speaker_on_disabled_landscape~ipad.png b/Resources/speaker_on_disabled_landscape~ipad.png new file mode 100644 index 000000000..6fa314087 Binary files /dev/null and b/Resources/speaker_on_disabled_landscape~ipad.png differ diff --git a/Resources/speaker_on_disabled~ipad.png b/Resources/speaker_on_disabled~ipad.png new file mode 100644 index 000000000..6fa314087 Binary files /dev/null and b/Resources/speaker_on_disabled~ipad.png differ diff --git a/Resources/speaker_on_over_landscape~ipad.png b/Resources/speaker_on_over_landscape~ipad.png new file mode 100644 index 000000000..bb8277584 Binary files /dev/null and b/Resources/speaker_on_over_landscape~ipad.png differ diff --git a/Resources/speaker_on_over~ipad.png b/Resources/speaker_on_over~ipad.png new file mode 100644 index 000000000..bb8277584 Binary files /dev/null and b/Resources/speaker_on_over~ipad.png differ diff --git a/Resources/statebar_background_landscape~ipad.png b/Resources/statebar_background_landscape~ipad.png new file mode 100644 index 000000000..3cef78053 Binary files /dev/null and b/Resources/statebar_background_landscape~ipad.png differ diff --git a/Resources/statebar_background~ipad.png b/Resources/statebar_background~ipad.png new file mode 100644 index 000000000..a9ba49f10 Binary files /dev/null and b/Resources/statebar_background~ipad.png differ diff --git a/Resources/contact_bar_background.png b/Resources/toolsbar_background.png similarity index 100% rename from Resources/contact_bar_background.png rename to Resources/toolsbar_background.png diff --git a/Resources/transfer_call_default~ipad.png b/Resources/transfer_call_default~ipad.png new file mode 100644 index 000000000..cd2b3579c Binary files /dev/null and b/Resources/transfer_call_default~ipad.png differ diff --git a/Resources/transfer_call_disabled~ipad.png b/Resources/transfer_call_disabled~ipad.png new file mode 100644 index 000000000..948d87cd2 Binary files /dev/null and b/Resources/transfer_call_disabled~ipad.png differ diff --git a/Resources/transfer_call_over~ipad.png b/Resources/transfer_call_over~ipad.png new file mode 100644 index 000000000..94a1faa9f Binary files /dev/null and b/Resources/transfer_call_over~ipad.png differ diff --git a/Resources/transfer_default~ipad.png b/Resources/transfer_default~ipad.png new file mode 100644 index 000000000..2f5813ee1 Binary files /dev/null and b/Resources/transfer_default~ipad.png differ diff --git a/Resources/transfer_over~ipad.png b/Resources/transfer_over~ipad.png new file mode 100644 index 000000000..8e5edebad Binary files /dev/null and b/Resources/transfer_over~ipad.png differ diff --git a/Resources/video_off_default_landscape~ipad.png b/Resources/video_off_default_landscape~ipad.png new file mode 100644 index 000000000..eacab0085 Binary files /dev/null and b/Resources/video_off_default_landscape~ipad.png differ diff --git a/Resources/video_off_default~ipad.png b/Resources/video_off_default~ipad.png new file mode 100644 index 000000000..eacab0085 Binary files /dev/null and b/Resources/video_off_default~ipad.png differ diff --git a/Resources/video_off_disabled_landscape~ipad.png b/Resources/video_off_disabled_landscape~ipad.png new file mode 100644 index 000000000..327a67cd4 Binary files /dev/null and b/Resources/video_off_disabled_landscape~ipad.png differ diff --git a/Resources/video_off_disabled~ipad.png b/Resources/video_off_disabled~ipad.png new file mode 100644 index 000000000..327a67cd4 Binary files /dev/null and b/Resources/video_off_disabled~ipad.png differ diff --git a/Resources/video_off_over_landscape~ipad.png b/Resources/video_off_over_landscape~ipad.png new file mode 100644 index 000000000..5b9598b10 Binary files /dev/null and b/Resources/video_off_over_landscape~ipad.png differ diff --git a/Resources/video_off_over~ipad.png b/Resources/video_off_over~ipad.png new file mode 100644 index 000000000..5b9598b10 Binary files /dev/null and b/Resources/video_off_over~ipad.png differ diff --git a/Resources/video_on_default_landscape~ipad.png b/Resources/video_on_default_landscape~ipad.png new file mode 100644 index 000000000..a85287600 Binary files /dev/null and b/Resources/video_on_default_landscape~ipad.png differ diff --git a/Resources/video_on_default~ipad.png b/Resources/video_on_default~ipad.png new file mode 100644 index 000000000..a85287600 Binary files /dev/null and b/Resources/video_on_default~ipad.png differ diff --git a/Resources/video_on_disabled_landscape~ipad.png b/Resources/video_on_disabled_landscape~ipad.png new file mode 100644 index 000000000..35c27a72a Binary files /dev/null and b/Resources/video_on_disabled_landscape~ipad.png differ diff --git a/Resources/video_on_disabled~ipad.png b/Resources/video_on_disabled~ipad.png new file mode 100644 index 000000000..35c27a72a Binary files /dev/null and b/Resources/video_on_disabled~ipad.png differ diff --git a/Resources/video_on_over_landscape~ipad.png b/Resources/video_on_over_landscape~ipad.png new file mode 100644 index 000000000..3d04d5423 Binary files /dev/null and b/Resources/video_on_over_landscape~ipad.png differ diff --git a/Resources/video_on_over~ipad.png b/Resources/video_on_over~ipad.png new file mode 100644 index 000000000..3d04d5423 Binary files /dev/null and b/Resources/video_on_over~ipad.png differ diff --git a/Settings/InAppSettings.bundle/Advanced.plist b/Settings/InAppSettings.bundle/Advanced.plist index 6bec34682..13eecede9 100644 --- a/Settings/InAppSettings.bundle/Advanced.plist +++ b/Settings/InAppSettings.bundle/Advanced.plist @@ -16,13 +16,25 @@ DefaultValue - + auto Key - landscape_preference + rotation_preference Title - Landscape + Rotation + Titles + + Automatic + Portrait + Landscape + Type - PSToggleSwitchSpecifier + PSMultiValueSpecifier + Values + + auto + portrait + landscape + DefaultValue diff --git a/linphone-Info.plist b/linphone-Info.plist index 01a6528d1..47e802da1 100644 --- a/linphone-Info.plist +++ b/linphone-Info.plist @@ -62,5 +62,19 @@ UIRequiresPersistentWiFi + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationLandscapeRight + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationPortrait + diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index aefde0570..8b94f3e2e 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -114,7 +114,6 @@ 22F2508E107141E100AC9B3F /* DialerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22F2508C107141E100AC9B3F /* DialerViewController.m */; }; 22F2508F107141E100AC9B3F /* DialerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22F2508D107141E100AC9B3F /* DialerViewController.xib */; }; 22F254811073D99800AC9B3F /* ringback.wav in Resources */ = {isa = PBXBuildFile; fileRef = 22F254801073D99800AC9B3F /* ringback.wav */; }; - 22F51EF6107FA66500F98953 /* untitled.plist in Resources */ = {isa = PBXBuildFile; fileRef = 22F51EF5107FA66500F98953 /* untitled.plist */; }; 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; }; 340751971506459A00B89C47 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 340751961506459A00B89C47 /* CoreTelephony.framework */; }; 34075199150645A300B89C47 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 340751961506459A00B89C47 /* CoreTelephony.framework */; }; @@ -123,7 +122,6 @@ 341FCA8E149798210084BC26 /* linphonerc-ipad in Resources */ = {isa = PBXBuildFile; fileRef = 341FCA8D149798210084BC26 /* linphonerc-ipad */; }; 34216F401547EBCD00EA9777 /* VideoZoomHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */; }; 34216F411547EBCD00EA9777 /* VideoZoomHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */; }; - 3422AA5014975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */; }; 344ABDE81484E723007420B6 /* libzrtpcpp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDE71484E723007420B6 /* libzrtpcpp.a */; }; 344ABDF114850AE9007420B6 /* libc++.1.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDEF14850AE9007420B6 /* libc++.1.dylib */; settings = {ATTRIBUTES = (Weak, ); }; }; 344ABDF214850AE9007420B6 /* libstdc++.6.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDF014850AE9007420B6 /* libstdc++.6.dylib */; settings = {ATTRIBUTES = (Weak, ); }; }; @@ -140,6 +138,18 @@ C9C8254915AE204D00D493FA /* transfer_call_over.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254215AE204D00D493FA /* transfer_call_over.png */; }; C9C8254C15AE207B00D493FA /* options_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254B15AE207B00D493FA /* options_selected.png */; }; C9C8254F15AE256100D493FA /* transfer_call_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254E15AE256100D493FA /* transfer_call_disabled.png */; }; + D306BC0515CFF2A000FDB80F /* GDataXMLNode.m in Sources */ = {isa = PBXBuildFile; fileRef = D34BD60F15C136D70070C209 /* GDataXMLNode.m */; }; + D306BC0615CFF2A100FDB80F /* GDataXMLNode.m in Sources */ = {isa = PBXBuildFile; fileRef = D34BD60F15C136D70070C209 /* GDataXMLNode.m */; }; + D306BC0C15CFF79E00FDB80F /* castel_icon_57.png in Resources */ = {isa = PBXBuildFile; fileRef = D306BC0715CFF79E00FDB80F /* castel_icon_57.png */; }; + D306BC0D15CFF79E00FDB80F /* castel_icon_57.png in Resources */ = {isa = PBXBuildFile; fileRef = D306BC0715CFF79E00FDB80F /* castel_icon_57.png */; }; + D306BC0E15CFF79E00FDB80F /* castel_icon_72.png in Resources */ = {isa = PBXBuildFile; fileRef = D306BC0815CFF79E00FDB80F /* castel_icon_72.png */; }; + D306BC0F15CFF79E00FDB80F /* castel_icon_72.png in Resources */ = {isa = PBXBuildFile; fileRef = D306BC0815CFF79E00FDB80F /* castel_icon_72.png */; }; + D306BC1015CFF79E00FDB80F /* more_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D306BC0915CFF79E00FDB80F /* more_default.png */; }; + D306BC1115CFF79E00FDB80F /* more_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D306BC0915CFF79E00FDB80F /* more_default.png */; }; + D306BC1215CFF79E00FDB80F /* more_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D306BC0A15CFF79E00FDB80F /* more_over.png */; }; + D306BC1315CFF79E00FDB80F /* more_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D306BC0A15CFF79E00FDB80F /* more_over.png */; }; + D306BC1415CFF79E00FDB80F /* more_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D306BC0B15CFF79E00FDB80F /* more_selected.png */; }; + D306BC1515CFF79E00FDB80F /* more_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D306BC0B15CFF79E00FDB80F /* more_selected.png */; }; D3119E7215B6A4710005D4A4 /* contacts_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3119E7015B6A4710005D4A4 /* contacts_back_default.png */; }; D3119E7415B6A4710005D4A4 /* contacts_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3119E7115B6A4710005D4A4 /* contacts_back_over.png */; }; D3128FE115AABC7E00A2147A /* ContactDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3128FDF15AABC7E00A2147A /* ContactDetailsViewController.m */; }; @@ -213,8 +223,6 @@ D347347A1580DDF1003C7B8C /* PhoneMainView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D34734791580DDF1003C7B8C /* PhoneMainView.xib */; }; D347347E1580E5F8003C7B8C /* history_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D347347C1580E5F8003C7B8C /* history_default.png */; }; D347347F1580E5F8003C7B8C /* history_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D347347D1580E5F8003C7B8C /* history_selected.png */; }; - D34BD61015C136D70070C209 /* GDataXMLNode.m in Sources */ = {isa = PBXBuildFile; fileRef = D34BD60F15C136D70070C209 /* GDataXMLNode.m */; }; - D34BD61115C136D70070C209 /* GDataXMLNode.m in Sources */ = {isa = PBXBuildFile; fileRef = D34BD60F15C136D70070C209 /* GDataXMLNode.m */; }; D34BD61515C13B7B0070C209 /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = D32B6E2E15A5C0AC0033019F /* libsqlite3.dylib */; }; D34BD61815C13D0B0070C209 /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB911475562600DEE054 /* liblinphone.a */; }; D34BD61915C13D0B0070C209 /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB8F147555C800DEE054 /* libmediastreamer.a */; }; @@ -291,7 +299,6 @@ D34BD66015C13DB60070C209 /* conference_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0815BD8DED008ED271 /* conference_over_landscape.png */; }; D34BD66115C13DB60070C209 /* contact_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE715AABE4E00A2147A /* contact_back_default.png */; }; D34BD66215C13DB60070C209 /* contact_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE815AABE4E00A2147A /* contact_back_over.png */; }; - D34BD66315C13DB60070C209 /* contact_bar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D378906915AC37C800BD776C /* contact_bar_background.png */; }; D34BD66415C13DB60070C209 /* contact_cancel_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F3615B011AF00420DAC /* contact_cancel_default.png */; }; D34BD66515C13DB60070C209 /* contact_cancel_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F3715B011AF00420DAC /* contact_cancel_over.png */; }; D34BD66615C13DB60070C209 /* contact_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE915AABE4E00A2147A /* contact_edit_default.png */; }; @@ -354,9 +361,6 @@ D34BD69F15C13DB70070C209 /* led_disconnected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A70158A45AF001C6B0B /* led_disconnected.png */; }; D34BD6A015C13DB70070C209 /* led_error.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5D158A4446001C6B0B /* led_error.png */; }; D34BD6A115C13DB70070C209 /* led_inprogress.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A6F158A45AF001C6B0B /* led_inprogress.png */; }; - D34BD6A215C13DB70070C209 /* (null) in Resources */ = {isa = PBXBuildFile; }; - D34BD6A415C13DB70070C209 /* (null) in Resources */ = {isa = PBXBuildFile; }; - D34BD6A515C13DB70070C209 /* (null) in Resources */ = {isa = PBXBuildFile; }; D34BD6A615C13DB70070C209 /* linphonerc in Resources */ = {isa = PBXBuildFile; fileRef = 2274550710700509006EC466 /* linphonerc */; }; D34BD6A715C13DB70070C209 /* linphonerc-ipad in Resources */ = {isa = PBXBuildFile; fileRef = 341FCA8D149798210084BC26 /* linphonerc-ipad */; }; D34BD6A815C13DB70070C209 /* list_delete_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5416159858A80037DC6B /* list_delete_default.png */; }; @@ -489,7 +493,6 @@ D34BD72915C13DD40070C209 /* FirstLoginViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2218A92412FBE1340088A667 /* FirstLoginViewController.xib */; }; D34BD72A15C13DD40070C209 /* HistoryDetailsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = C90FAA7815AF54E6002091CB /* HistoryDetailsViewController.xib */; }; D34BD72B15C13DD40070C209 /* HistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3EB2158738FA006C0DE4 /* HistoryViewController.xib */; }; - D34BD72C15C13DD40070C209 /* InCallViewController-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */; }; D34BD72D15C13DD40070C209 /* InCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EEB1582021700336684 /* InCallViewController.xib */; }; D34BD72E15C13DD40070C209 /* IncomingCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF015986B72005F9CAB /* IncomingCallViewController.xib */; }; D34BD72F15C13DD40070C209 /* LinphoneApp.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F9115824D3500336684 /* LinphoneApp.xib */; }; @@ -509,7 +512,6 @@ D34BD73F15C13DF40070C209 /* UIStateBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35498201587716B000081D8 /* UIStateBar.xib */; }; D34BD74015C13E110070C209 /* InAppSettings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D34F6F9D1594D3FB0095705B /* InAppSettings.bundle */; }; D34BD74115C13E250070C209 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2214783B1386A2030020F8B8 /* Localizable.strings */; }; - D34BD74215C13E350070C209 /* untitled.plist in Resources */ = {isa = PBXBuildFile; fileRef = 22F51EF5107FA66500F98953 /* untitled.plist */; }; D34BD74315C13ED70070C209 /* DialerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22F2508D107141E100AC9B3F /* DialerViewController.xib */; }; D34F6F9E1594D3FB0095705B /* InAppSettings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D34F6F9D1594D3FB0095705B /* InAppSettings.bundle */; }; D350F20E15A43BB100149E54 /* WizardViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D350F20C15A43BB100149E54 /* WizardViewController.m */; }; @@ -577,9 +579,6 @@ D378906515AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */; }; D378906615AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */; }; D378906715AC373B00BD776C /* ContactDetailsLabelViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D378906415AC373B00BD776C /* ContactDetailsLabelViewController.xib */; }; - D378906A15AC37C800BD776C /* contact_bar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D378906915AC37C800BD776C /* contact_bar_background.png */; }; - D378907515AC448A00BD776C /* UIView+ModalStack.m in Sources */ = {isa = PBXBuildFile; fileRef = D378907415AC448A00BD776C /* UIView+ModalStack.m */; }; - D378907615AC448A00BD776C /* UIView+ModalStack.m in Sources */ = {isa = PBXBuildFile; fileRef = D378907415AC448A00BD776C /* UIView+ModalStack.m */; }; D37B96B715A1A6F20005CCD2 /* call_state_delete_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B515A1A6F20005CCD2 /* call_state_delete_default.png */; }; D37B96B915A1A6F20005CCD2 /* call_state_delete_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B615A1A6F20005CCD2 /* call_state_delete_over.png */; }; D37C638E15AAD251009D0BAC /* contact_number_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D37C638C15AAD251009D0BAC /* contact_number_over.png */; }; @@ -656,15 +655,21 @@ D3A55FBC15877E5E003FD403 /* UIContactCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A55FBB15877E5E003FD403 /* UIContactCell.m */; }; D3A55FBD15877E5E003FD403 /* UIContactCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A55FBB15877E5E003FD403 /* UIContactCell.m */; }; D3A55FBF15877E69003FD403 /* UIContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A55FBE15877E69003FD403 /* UIContactCell.xib */; }; + D3A74E5915C68162001500B9 /* toolsbar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74E5815C68162001500B9 /* toolsbar_background.png */; }; + D3A74E5A15C68162001500B9 /* toolsbar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74E5815C68162001500B9 /* toolsbar_background.png */; }; + D3A74ED815C69392001500B9 /* chat_over~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74E7115C69392001500B9 /* chat_over~ipad.png */; }; + D3A74ED915C69392001500B9 /* chat_over~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74E7115C69392001500B9 /* chat_over~ipad.png */; }; + D3A74EDE15C69392001500B9 /* conference_default~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74E7415C69392001500B9 /* conference_default~ipad.png */; }; + D3A74EDF15C69392001500B9 /* conference_default~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74E7415C69392001500B9 /* conference_default~ipad.png */; }; + D3A74F5B15C6AA0B001500B9 /* chat_field.9.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74F5A15C6AA0B001500B9 /* chat_field.9.png */; }; + D3A74F5C15C6AA0B001500B9 /* chat_field.9.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74F5A15C6AA0B001500B9 /* chat_field.9.png */; }; + D3A74F5E15C6ADA9001500B9 /* chat_field.9@x2.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74F5D15C6ADA9001500B9 /* chat_field.9@x2.png */; }; + D3A74F5F15C6ADA9001500B9 /* chat_field.9@x2.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74F5D15C6ADA9001500B9 /* chat_field.9@x2.png */; }; D3A8BB7B15A6CC3200F96BE5 /* chat_bubble_outgoing.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7615A6CC3200F96BE5 /* chat_bubble_outgoing.png */; }; D3A8BB7D15A6CC3200F96BE5 /* chat_bubble_incoming.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7715A6CC3200F96BE5 /* chat_bubble_incoming.png */; }; D3A8BB7F15A6CC3200F96BE5 /* setup_back_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7815A6CC3200F96BE5 /* setup_back_disabled.png */; }; D3A8BB8115A6CC3200F96BE5 /* setup_cancel_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7915A6CC3200F96BE5 /* setup_cancel_disabled.png */; }; D3A8BB8315A6CC3200F96BE5 /* setup_start_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7A15A6CC3200F96BE5 /* setup_start_disabled.png */; }; - D3B82A0215C18A710036C93E /* history_details_bar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B82A0015C18A710036C93E /* history_details_bar_background.png */; }; - D3B82A0315C18A710036C93E /* history_details_bar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B82A0015C18A710036C93E /* history_details_bar_background.png */; }; - D3B82A0415C18A710036C93E /* settings_bar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B82A0115C18A710036C93E /* settings_bar_background.png */; }; - D3B82A0515C18A710036C93E /* settings_bar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B82A0115C18A710036C93E /* settings_bar_background.png */; }; D3B9A3DF15A58C450096EA4E /* chat_field.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DA15A58C440096EA4E /* chat_field.png */; }; D3B9A3E115A58C450096EA4E /* chat_ok_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DB15A58C440096EA4E /* chat_ok_default.png */; }; D3B9A3E315A58C450096EA4E /* chat_ok_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DC15A58C440096EA4E /* chat_ok_over.png */; }; @@ -779,8 +784,6 @@ D3F26BF915986DAD005F9CAB /* history_ok_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF615986DAD005F9CAB /* history_ok_over.png */; }; D3F26BFC15987083005F9CAB /* header_incoming.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BFB15987083005F9CAB /* header_incoming.png */; }; D3F34F301599B008005BE94F /* avatar_shadow.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F34F2F1599B008005BE94F /* avatar_shadow.png */; }; - D3F34F351599C354005BE94F /* UIModalViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F34F341599C354005BE94F /* UIModalViewController.m */; }; - D3F34F361599C354005BE94F /* UIModalViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F34F341599C354005BE94F /* UIModalViewController.m */; }; D3F795DD15A5831C0077328B /* chat_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F795DB15A5831C0077328B /* chat_back_default.png */; }; D3F795DF15A5831C0077328B /* chat_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F795DC15A5831C0077328B /* chat_back_over.png */; }; D3F7998115BD32370018C273 /* TPMultiLayoutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F7998015BD32370018C273 /* TPMultiLayoutViewController.m */; }; @@ -834,18 +837,12 @@ D3F83F8E15822ABE00336684 /* PhoneMainView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83F8D15822ABD00336684 /* PhoneMainView.m */; }; D3F83F8F15822ABE00336684 /* PhoneMainView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83F8D15822ABD00336684 /* PhoneMainView.m */; }; D3F83F9215824D3600336684 /* LinphoneApp.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F9115824D3500336684 /* LinphoneApp.xib */; }; - D3F9A9A515AEBA460045320F /* castel_icon_57.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F9A9A315AEBA460045320F /* castel_icon_57.png */; }; - D3F9A9A715AEBA460045320F /* castel_icon_72.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F9A9A415AEBA460045320F /* castel_icon_72.png */; }; - D3F9A9AA15AEBAB00045320F /* accept_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F9A9A915AEBAB00045320F /* accept_disabled.png */; }; - D3F9A9AF15AEBC060045320F /* more_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F9A9AC15AEBC060045320F /* more_default.png */; }; - D3F9A9B115AEBC060045320F /* more_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F9A9AD15AEBC060045320F /* more_over.png */; }; - D3F9A9B315AEBC060045320F /* more_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F9A9AE15AEBC060045320F /* more_selected.png */; }; - D3F9A9B615AEBD2D0045320F /* contact_edit_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F9A9B515AEBD2D0045320F /* contact_edit_background.png */; }; + D3F9A9A515AEBA460045320F /* (null) in Resources */ = {isa = PBXBuildFile; }; + D3F9A9A715AEBA460045320F /* (null) in Resources */ = {isa = PBXBuildFile; }; + D3F9A9AF15AEBC060045320F /* (null) in Resources */ = {isa = PBXBuildFile; }; + D3F9A9B115AEBC060045320F /* (null) in Resources */ = {isa = PBXBuildFile; }; + D3F9A9B315AEBC060045320F /* (null) in Resources */ = {isa = PBXBuildFile; }; D3F9A9DB15AEEB940045320F /* history_notification.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F9A9DA15AEEB940045320F /* history_notification.png */; }; - D3F9A9E215AF100D0045320F /* TPKeyboardAvoidingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9DF15AF100D0045320F /* TPKeyboardAvoidingScrollView.m */; }; - D3F9A9E315AF100D0045320F /* TPKeyboardAvoidingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9DF15AF100D0045320F /* TPKeyboardAvoidingScrollView.m */; }; - D3F9A9E415AF100D0045320F /* TPKeyboardAvoidingTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9E115AF100D0045320F /* TPKeyboardAvoidingTableView.m */; }; - D3F9A9E515AF100D0045320F /* TPKeyboardAvoidingTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9E115AF100D0045320F /* TPKeyboardAvoidingTableView.m */; }; D3F9A9EE15AF277E0045320F /* UACellBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9ED15AF277D0045320F /* UACellBackgroundView.m */; }; D3F9A9EF15AF277E0045320F /* UACellBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9ED15AF277D0045320F /* UACellBackgroundView.m */; }; D3FF9F7F15BFDE1A00EBD584 /* dialer_alt_button_options_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F5115B0265600420DAC /* dialer_alt_button_options_default.png */; }; @@ -855,6 +852,27 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + D3554ED015CA79AA00478841 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D3554EC515CA79A900478841 /* XMLRPC.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 903B0DB612F7574800BD6E09; + remoteInfo = libXMLRPC; + }; + D3554ED415CA79B900478841 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D3554EC515CA79A900478841 /* XMLRPC.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 903B0DB512F7574800BD6E09; + remoteInfo = libXMLRPC; + }; + D3554ED615CA79C000478841 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D3554EC515CA79A900478841 /* XMLRPC.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 903B0DB512F7574800BD6E09; + remoteInfo = libXMLRPC; + }; D3B90E1815C2CB5800F64F8C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D3B90E1115C2CB5700F64F8C /* NinePatch.xcodeproj */; @@ -1158,7 +1176,6 @@ 22F2508C107141E100AC9B3F /* DialerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = DialerViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 22F2508D107141E100AC9B3F /* DialerViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = DialerViewController.xib; sourceTree = ""; }; 22F254801073D99800AC9B3F /* ringback.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = ringback.wav; path = "liblinphone-sdk/apple-darwin/share/sounds/linphone/ringback.wav"; sourceTree = ""; }; - 22F51EF5107FA66500F98953 /* untitled.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = untitled.plist; sourceTree = ""; }; 288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 32CA4F630368D1EE00C91783 /* linphone_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = linphone_Prefix.pch; sourceTree = ""; }; @@ -1169,7 +1186,6 @@ 341FCA8D149798210084BC26 /* linphonerc-ipad */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "linphonerc-ipad"; sourceTree = ""; }; 34216F3E1547EBCD00EA9777 /* VideoZoomHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VideoZoomHandler.h; path = LinphoneUI/VideoZoomHandler.h; sourceTree = ""; }; 34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VideoZoomHandler.m; path = LinphoneUI/VideoZoomHandler.m; sourceTree = ""; }; - 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "InCallViewController-ipad.xib"; sourceTree = ""; }; 344ABDE71484E723007420B6 /* libzrtpcpp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libzrtpcpp.a; path = "liblinphone-sdk/apple-darwin/lib/libzrtpcpp.a"; sourceTree = ""; }; 344ABDEF14850AE9007420B6 /* libc++.1.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libc++.1.dylib"; path = "usr/lib/libc++.1.dylib"; sourceTree = SDKROOT; }; 344ABDF014850AE9007420B6 /* libstdc++.6.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.6.dylib"; path = "usr/lib/libstdc++.6.dylib"; sourceTree = SDKROOT; }; @@ -1188,6 +1204,11 @@ C9C8254215AE204D00D493FA /* transfer_call_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = transfer_call_over.png; path = Resources/transfer_call_over.png; sourceTree = ""; }; C9C8254B15AE207B00D493FA /* options_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_selected.png; path = Resources/options_selected.png; sourceTree = ""; }; C9C8254E15AE256100D493FA /* transfer_call_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = transfer_call_disabled.png; path = Resources/transfer_call_disabled.png; sourceTree = ""; }; + D306BC0715CFF79E00FDB80F /* castel_icon_57.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = castel_icon_57.png; path = Resources/castel_icon_57.png; sourceTree = ""; }; + D306BC0815CFF79E00FDB80F /* castel_icon_72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = castel_icon_72.png; path = Resources/castel_icon_72.png; sourceTree = ""; }; + D306BC0915CFF79E00FDB80F /* more_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = more_default.png; path = Resources/more_default.png; sourceTree = ""; }; + D306BC0A15CFF79E00FDB80F /* more_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = more_over.png; path = Resources/more_over.png; sourceTree = ""; }; + D306BC0B15CFF79E00FDB80F /* more_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = more_selected.png; path = Resources/more_selected.png; sourceTree = ""; }; D3119E7015B6A4710005D4A4 /* contacts_back_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_back_default.png; path = Resources/contacts_back_default.png; sourceTree = ""; }; D3119E7115B6A4710005D4A4 /* contacts_back_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_back_over.png; path = Resources/contacts_back_over.png; sourceTree = ""; }; D3128FDE15AABC7E00A2147A /* ContactDetailsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactDetailsViewController.h; sourceTree = ""; }; @@ -1254,6 +1275,48 @@ D32B9DFB15A2F131000B6DEC /* FastAddressBook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FastAddressBook.m; path = Utils/FastAddressBook.m; sourceTree = ""; }; D32D5AA515ADE5D9008593F3 /* button_alert_background_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = button_alert_background_default.png; path = Resources/button_alert_background_default.png; sourceTree = ""; }; D32D5AA615ADE5D9008593F3 /* button_alert_background_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = button_alert_background_over.png; path = Resources/button_alert_background_over.png; sourceTree = ""; }; + D339888C15C6DD1600CAF1E4 /* conference_default_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "conference_default_landscape~ipad.png"; path = "Resources/conference_default_landscape~ipad.png"; sourceTree = ""; }; + D339888D15C6DD1600CAF1E4 /* conference_over_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "conference_over_landscape~ipad.png"; path = "Resources/conference_over_landscape~ipad.png"; sourceTree = ""; }; + D339888E15C6DD1600CAF1E4 /* dialer_alt_default_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer_alt_default_landscape~ipad.png"; path = "Resources/dialer_alt_default_landscape~ipad.png"; sourceTree = ""; }; + D339888F15C6DD1600CAF1E4 /* dialer_alt_over_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer_alt_over_landscape~ipad.png"; path = "Resources/dialer_alt_over_landscape~ipad.png"; sourceTree = ""; }; + D339889015C6DD1600CAF1E4 /* hangup_default_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "hangup_default_landscape~ipad.png"; path = "Resources/hangup_default_landscape~ipad.png"; sourceTree = ""; }; + D339889115C6DD1600CAF1E4 /* hangup_over_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "hangup_over_landscape~ipad.png"; path = "Resources/hangup_over_landscape~ipad.png"; sourceTree = ""; }; + D339889215C6DD1600CAF1E4 /* micro_off_default_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "micro_off_default_landscape~ipad.png"; path = "Resources/micro_off_default_landscape~ipad.png"; sourceTree = ""; }; + D339889315C6DD1600CAF1E4 /* micro_off_disabled_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "micro_off_disabled_landscape~ipad.png"; path = "Resources/micro_off_disabled_landscape~ipad.png"; sourceTree = ""; }; + D339889415C6DD1600CAF1E4 /* micro_off_over_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "micro_off_over_landscape~ipad.png"; path = "Resources/micro_off_over_landscape~ipad.png"; sourceTree = ""; }; + D339889515C6DD1600CAF1E4 /* micro_on_default_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "micro_on_default_landscape~ipad.png"; path = "Resources/micro_on_default_landscape~ipad.png"; sourceTree = ""; }; + D339889615C6DD1600CAF1E4 /* micro_on_disabled_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "micro_on_disabled_landscape~ipad.png"; path = "Resources/micro_on_disabled_landscape~ipad.png"; sourceTree = ""; }; + D339889715C6DD1600CAF1E4 /* micro_on_over_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "micro_on_over_landscape~ipad.png"; path = "Resources/micro_on_over_landscape~ipad.png"; sourceTree = ""; }; + D339889815C6DD1600CAF1E4 /* options_add_default_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "options_add_default_landscape~ipad.png"; path = "Resources/options_add_default_landscape~ipad.png"; sourceTree = ""; }; + D339889915C6DD1600CAF1E4 /* options_add_disabled_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "options_add_disabled_landscape~ipad.png"; path = "Resources/options_add_disabled_landscape~ipad.png"; sourceTree = ""; }; + D339889A15C6DD1600CAF1E4 /* options_add_over_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "options_add_over_landscape~ipad.png"; path = "Resources/options_add_over_landscape~ipad.png"; sourceTree = ""; }; + D339889B15C6DD1600CAF1E4 /* options_default_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "options_default_landscape~ipad.png"; path = "Resources/options_default_landscape~ipad.png"; sourceTree = ""; }; + D339889C15C6DD1600CAF1E4 /* options_disabled_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "options_disabled_landscape~ipad.png"; path = "Resources/options_disabled_landscape~ipad.png"; sourceTree = ""; }; + D339889D15C6DD1600CAF1E4 /* options_over_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "options_over_landscape~ipad.png"; path = "Resources/options_over_landscape~ipad.png"; sourceTree = ""; }; + D339889E15C6DD1600CAF1E4 /* options_selected_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "options_selected_landscape~ipad.png"; path = "Resources/options_selected_landscape~ipad.png"; sourceTree = ""; }; + D339889F15C6DD1600CAF1E4 /* options_transfer_default_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "options_transfer_default_landscape~ipad.png"; path = "Resources/options_transfer_default_landscape~ipad.png"; sourceTree = ""; }; + D33988A015C6DD1600CAF1E4 /* options_transfer_disabled_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "options_transfer_disabled_landscape~ipad.png"; path = "Resources/options_transfer_disabled_landscape~ipad.png"; sourceTree = ""; }; + D33988A115C6DD1600CAF1E4 /* options_transfer_over_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "options_transfer_over_landscape~ipad.png"; path = "Resources/options_transfer_over_landscape~ipad.png"; sourceTree = ""; }; + D33988A215C6DD1600CAF1E4 /* pause_off_default_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "pause_off_default_landscape~ipad.png"; path = "Resources/pause_off_default_landscape~ipad.png"; sourceTree = ""; }; + D33988A315C6DD1600CAF1E4 /* pause_off_over_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "pause_off_over_landscape~ipad.png"; path = "Resources/pause_off_over_landscape~ipad.png"; sourceTree = ""; }; + D33988A415C6DD1600CAF1E4 /* pause_on_default_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "pause_on_default_landscape~ipad.png"; path = "Resources/pause_on_default_landscape~ipad.png"; sourceTree = ""; }; + D33988A515C6DD1600CAF1E4 /* pause_on_over_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "pause_on_over_landscape~ipad.png"; path = "Resources/pause_on_over_landscape~ipad.png"; sourceTree = ""; }; + D33988A615C6DD1600CAF1E4 /* speaker_off_default_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "speaker_off_default_landscape~ipad.png"; path = "Resources/speaker_off_default_landscape~ipad.png"; sourceTree = ""; }; + D33988A715C6DD1600CAF1E4 /* speaker_off_disabled_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "speaker_off_disabled_landscape~ipad.png"; path = "Resources/speaker_off_disabled_landscape~ipad.png"; sourceTree = ""; }; + D33988A815C6DD1600CAF1E4 /* speaker_off_over_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "speaker_off_over_landscape~ipad.png"; path = "Resources/speaker_off_over_landscape~ipad.png"; sourceTree = ""; }; + D33988A915C6DD1600CAF1E4 /* speaker_on_default_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "speaker_on_default_landscape~ipad.png"; path = "Resources/speaker_on_default_landscape~ipad.png"; sourceTree = ""; }; + D33988AA15C6DD1600CAF1E4 /* speaker_on_disabled_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "speaker_on_disabled_landscape~ipad.png"; path = "Resources/speaker_on_disabled_landscape~ipad.png"; sourceTree = ""; }; + D33988AB15C6DD1600CAF1E4 /* speaker_on_over_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "speaker_on_over_landscape~ipad.png"; path = "Resources/speaker_on_over_landscape~ipad.png"; sourceTree = ""; }; + D33988AC15C6DD1600CAF1E4 /* transfer_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "transfer_default~ipad.png"; path = "Resources/transfer_default~ipad.png"; sourceTree = ""; }; + D33988AD15C6DD1600CAF1E4 /* transfer_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "transfer_over~ipad.png"; path = "Resources/transfer_over~ipad.png"; sourceTree = ""; }; + D33988AE15C6DD1600CAF1E4 /* video_off_default_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video_off_default_landscape~ipad.png"; path = "Resources/video_off_default_landscape~ipad.png"; sourceTree = ""; }; + D33988AF15C6DD1600CAF1E4 /* video_off_disabled_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video_off_disabled_landscape~ipad.png"; path = "Resources/video_off_disabled_landscape~ipad.png"; sourceTree = ""; }; + D33988B015C6DD1600CAF1E4 /* video_off_over_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video_off_over_landscape~ipad.png"; path = "Resources/video_off_over_landscape~ipad.png"; sourceTree = ""; }; + D33988B115C6DD1600CAF1E4 /* video_on_default_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video_on_default_landscape~ipad.png"; path = "Resources/video_on_default_landscape~ipad.png"; sourceTree = ""; }; + D33988B215C6DD1600CAF1E4 /* video_on_disabled_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video_on_disabled_landscape~ipad.png"; path = "Resources/video_on_disabled_landscape~ipad.png"; sourceTree = ""; }; + D33988B315C6DD1600CAF1E4 /* video_on_over_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video_on_over_landscape~ipad.png"; path = "Resources/video_on_over_landscape~ipad.png"; sourceTree = ""; }; + D339890415C6E16F00CAF1E4 /* dialer_alt_back_default_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer_alt_back_default_landscape~ipad.png"; path = "Resources/dialer_alt_back_default_landscape~ipad.png"; sourceTree = ""; }; + D339890515C6E16F00CAF1E4 /* dialer_alt_back_over_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer_alt_back_over_landscape~ipad.png"; path = "Resources/dialer_alt_back_over_landscape~ipad.png"; sourceTree = ""; }; D3432A5C158A4446001C6B0B /* led_connected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = led_connected.png; path = Resources/led_connected.png; sourceTree = ""; }; D3432A5D158A4446001C6B0B /* led_error.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = led_error.png; path = Resources/led_error.png; sourceTree = ""; }; D3432A5E158A4446001C6B0B /* call_quality_indicator_0.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_quality_indicator_0.png; path = Resources/call_quality_indicator_0.png; sourceTree = ""; }; @@ -1298,6 +1361,7 @@ D354981E1587716B000081D8 /* UIStateBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIStateBar.h; sourceTree = ""; }; D354981F1587716B000081D8 /* UIStateBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIStateBar.m; sourceTree = ""; }; D35498201587716B000081D8 /* UIStateBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIStateBar.xib; sourceTree = ""; }; + D3554EC515CA79A900478841 /* XMLRPC.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = XMLRPC.xcodeproj; path = Utils/XMLRPC/XMLRPC.xcodeproj; sourceTree = ""; }; D35860D515B549B500513429 /* Utils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Utils.m; path = Utils/Utils.m; sourceTree = ""; }; D35E757515931E5D0066B1C1 /* switch_camera_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = switch_camera_default.png; path = Resources/switch_camera_default.png; sourceTree = ""; }; D35E757615931E5D0066B1C1 /* switch_camera_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = switch_camera_over.png; path = Resources/switch_camera_over.png; sourceTree = ""; }; @@ -1335,9 +1399,6 @@ D378906215AC373B00BD776C /* ContactDetailsLabelViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactDetailsLabelViewController.h; sourceTree = ""; }; D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactDetailsLabelViewController.m; sourceTree = ""; }; D378906415AC373B00BD776C /* ContactDetailsLabelViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ContactDetailsLabelViewController.xib; sourceTree = ""; }; - D378906915AC37C800BD776C /* contact_bar_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_bar_background.png; path = Resources/contact_bar_background.png; sourceTree = ""; }; - D378907415AC448A00BD776C /* UIView+ModalStack.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+ModalStack.m"; sourceTree = ""; }; - D378907715AC44A300BD776C /* UIView+ModalStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+ModalStack.h"; sourceTree = ""; }; D37B96B515A1A6F20005CCD2 /* call_state_delete_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_state_delete_default.png; path = Resources/call_state_delete_default.png; sourceTree = ""; }; D37B96B615A1A6F20005CCD2 /* call_state_delete_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_state_delete_over.png; path = Resources/call_state_delete_over.png; sourceTree = ""; }; D37C638C15AAD251009D0BAC /* contact_number_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_number_over.png; path = Resources/contact_number_over.png; sourceTree = ""; }; @@ -1413,6 +1474,95 @@ D3A55FBA15877E5E003FD403 /* UIContactCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIContactCell.h; sourceTree = ""; }; D3A55FBB15877E5E003FD403 /* UIContactCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIContactCell.m; sourceTree = ""; }; D3A55FBE15877E69003FD403 /* UIContactCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIContactCell.xib; sourceTree = ""; }; + D3A74E5815C68162001500B9 /* toolsbar_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = toolsbar_background.png; path = Resources/toolsbar_background.png; sourceTree = ""; }; + D3A74E5B15C6922A001500B9 /* UIMainBar~ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "UIMainBar~ipad.xib"; sourceTree = ""; }; + D3A74E5E15C69391001500B9 /* add_call_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add_call_default~ipad.png"; path = "Resources/add_call_default~ipad.png"; sourceTree = ""; }; + D3A74E5F15C69391001500B9 /* add_call_disabled~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add_call_disabled~ipad.png"; path = "Resources/add_call_disabled~ipad.png"; sourceTree = ""; }; + D3A74E6015C69391001500B9 /* add_call_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add_call_over~ipad.png"; path = "Resources/add_call_over~ipad.png"; sourceTree = ""; }; + D3A74E6115C69391001500B9 /* add_contact_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add_contact_default~ipad.png"; path = "Resources/add_contact_default~ipad.png"; sourceTree = ""; }; + D3A74E6215C69392001500B9 /* add_contact_disabled~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add_contact_disabled~ipad.png"; path = "Resources/add_contact_disabled~ipad.png"; sourceTree = ""; }; + D3A74E6315C69392001500B9 /* add_contact_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add_contact_over~ipad.png"; path = "Resources/add_contact_over~ipad.png"; sourceTree = ""; }; + D3A74E6415C69392001500B9 /* back_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "back_default~ipad.png"; path = "Resources/back_default~ipad.png"; sourceTree = ""; }; + D3A74E6515C69392001500B9 /* back_disabled~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "back_disabled~ipad.png"; path = "Resources/back_disabled~ipad.png"; sourceTree = ""; }; + D3A74E6615C69392001500B9 /* back_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "back_over~ipad.png"; path = "Resources/back_over~ipad.png"; sourceTree = ""; }; + D3A74E6715C69392001500B9 /* background_top~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "background_top~ipad.png"; path = "Resources/background_top~ipad.png"; sourceTree = ""; }; + D3A74E6815C69392001500B9 /* backspace_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "backspace_default~ipad.png"; path = "Resources/backspace_default~ipad.png"; sourceTree = ""; }; + D3A74E6915C69392001500B9 /* backspace_disabled~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "backspace_disabled~ipad.png"; path = "Resources/backspace_disabled~ipad.png"; sourceTree = ""; }; + D3A74E6A15C69392001500B9 /* backspace_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "backspace_over~ipad.png"; path = "Resources/backspace_over~ipad.png"; sourceTree = ""; }; + D3A74E6B15C69392001500B9 /* call_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "call_default~ipad.png"; path = "Resources/call_default~ipad.png"; sourceTree = ""; }; + D3A74E6C15C69392001500B9 /* call_disabled~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "call_disabled~ipad.png"; path = "Resources/call_disabled~ipad.png"; sourceTree = ""; }; + D3A74E6D15C69392001500B9 /* call_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "call_over~ipad.png"; path = "Resources/call_over~ipad.png"; sourceTree = ""; }; + D3A74E6E15C69392001500B9 /* chat_default_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "chat_default_landscape~ipad.png"; path = "Resources/chat_default_landscape~ipad.png"; sourceTree = ""; }; + D3A74E6F15C69392001500B9 /* chat_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "chat_default~ipad.png"; path = "Resources/chat_default~ipad.png"; sourceTree = ""; }; + D3A74E7015C69392001500B9 /* chat_over_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "chat_over_landscape~ipad.png"; path = "Resources/chat_over_landscape~ipad.png"; sourceTree = ""; }; + D3A74E7115C69392001500B9 /* chat_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "chat_over~ipad.png"; path = "Resources/chat_over~ipad.png"; sourceTree = ""; }; + D3A74E7215C69392001500B9 /* chat_selected_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "chat_selected_landscape~ipad.png"; path = "Resources/chat_selected_landscape~ipad.png"; sourceTree = ""; }; + D3A74E7315C69392001500B9 /* chat_selected~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "chat_selected~ipad.png"; path = "Resources/chat_selected~ipad.png"; sourceTree = ""; }; + D3A74E7415C69392001500B9 /* conference_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "conference_default~ipad.png"; path = "Resources/conference_default~ipad.png"; sourceTree = ""; }; + D3A74E7515C69392001500B9 /* conference_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "conference_over~ipad.png"; path = "Resources/conference_over~ipad.png"; sourceTree = ""; }; + D3A74E7615C69392001500B9 /* contacts_default_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "contacts_default_landscape~ipad.png"; path = "Resources/contacts_default_landscape~ipad.png"; sourceTree = ""; }; + D3A74E7715C69392001500B9 /* contacts_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "contacts_default~ipad.png"; path = "Resources/contacts_default~ipad.png"; sourceTree = ""; }; + D3A74E7815C69392001500B9 /* contacts_over_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "contacts_over_landscape~ipad.png"; path = "Resources/contacts_over_landscape~ipad.png"; sourceTree = ""; }; + D3A74E7915C69392001500B9 /* contacts_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "contacts_over~ipad.png"; path = "Resources/contacts_over~ipad.png"; sourceTree = ""; }; + D3A74E7A15C69392001500B9 /* contacts_selected_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "contacts_selected_landscape~ipad.png"; path = "Resources/contacts_selected_landscape~ipad.png"; sourceTree = ""; }; + D3A74E7B15C69392001500B9 /* contacts_selected~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "contacts_selected~ipad.png"; path = "Resources/contacts_selected~ipad.png"; sourceTree = ""; }; + D3A74E7C15C69392001500B9 /* dialer_address_background_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer_address_background_landscape~ipad.png"; path = "Resources/dialer_address_background_landscape~ipad.png"; sourceTree = ""; }; + D3A74E7D15C69392001500B9 /* dialer_address_background~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer_address_background~ipad.png"; path = "Resources/dialer_address_background~ipad.png"; sourceTree = ""; }; + D3A74E7E15C69392001500B9 /* dialer_alt_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer_alt_default~ipad.png"; path = "Resources/dialer_alt_default~ipad.png"; sourceTree = ""; }; + D3A74E7F15C69392001500B9 /* dialer_alt_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer_alt_over~ipad.png"; path = "Resources/dialer_alt_over~ipad.png"; sourceTree = ""; }; + D3A74E8015C69392001500B9 /* hangup_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "hangup_default~ipad.png"; path = "Resources/hangup_default~ipad.png"; sourceTree = ""; }; + D3A74E8115C69392001500B9 /* hangup_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "hangup_over~ipad.png"; path = "Resources/hangup_over~ipad.png"; sourceTree = ""; }; + D3A74E8215C69392001500B9 /* history_default_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history_default_landscape~ipad.png"; path = "Resources/history_default_landscape~ipad.png"; sourceTree = ""; }; + D3A74E8315C69392001500B9 /* history_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history_default~ipad.png"; path = "Resources/history_default~ipad.png"; sourceTree = ""; }; + D3A74E8415C69392001500B9 /* history_over_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history_over_landscape~ipad.png"; path = "Resources/history_over_landscape~ipad.png"; sourceTree = ""; }; + D3A74E8515C69392001500B9 /* history_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history_over~ipad.png"; path = "Resources/history_over~ipad.png"; sourceTree = ""; }; + D3A74E8615C69392001500B9 /* history_selected_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history_selected_landscape~ipad.png"; path = "Resources/history_selected_landscape~ipad.png"; sourceTree = ""; }; + D3A74E8715C69392001500B9 /* history_selected~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history_selected~ipad.png"; path = "Resources/history_selected~ipad.png"; sourceTree = ""; }; + D3A74E8815C69392001500B9 /* micro_off_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "micro_off_default~ipad.png"; path = "Resources/micro_off_default~ipad.png"; sourceTree = ""; }; + D3A74E8915C69392001500B9 /* micro_off_disabled~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "micro_off_disabled~ipad.png"; path = "Resources/micro_off_disabled~ipad.png"; sourceTree = ""; }; + D3A74E8A15C69392001500B9 /* micro_off_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "micro_off_over~ipad.png"; path = "Resources/micro_off_over~ipad.png"; sourceTree = ""; }; + D3A74E8B15C69392001500B9 /* micro_on_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "micro_on_default~ipad.png"; path = "Resources/micro_on_default~ipad.png"; sourceTree = ""; }; + D3A74E8C15C69392001500B9 /* micro_on_disabled~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "micro_on_disabled~ipad.png"; path = "Resources/micro_on_disabled~ipad.png"; sourceTree = ""; }; + D3A74E8D15C69392001500B9 /* micro_on_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "micro_on_over~ipad.png"; path = "Resources/micro_on_over~ipad.png"; sourceTree = ""; }; + D3A74E8E15C69392001500B9 /* options_add_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "options_add_default~ipad.png"; path = "Resources/options_add_default~ipad.png"; sourceTree = ""; }; + D3A74E8F15C69392001500B9 /* options_add_disabled~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "options_add_disabled~ipad.png"; path = "Resources/options_add_disabled~ipad.png"; sourceTree = ""; }; + D3A74E9015C69392001500B9 /* options_add_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "options_add_over~ipad.png"; path = "Resources/options_add_over~ipad.png"; sourceTree = ""; }; + D3A74E9115C69392001500B9 /* options_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "options_default~ipad.png"; path = "Resources/options_default~ipad.png"; sourceTree = ""; }; + D3A74E9215C69392001500B9 /* options_disabled~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "options_disabled~ipad.png"; path = "Resources/options_disabled~ipad.png"; sourceTree = ""; }; + D3A74E9315C69392001500B9 /* options_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "options_over~ipad.png"; path = "Resources/options_over~ipad.png"; sourceTree = ""; }; + D3A74E9415C69392001500B9 /* options_selected~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "options_selected~ipad.png"; path = "Resources/options_selected~ipad.png"; sourceTree = ""; }; + D3A74E9515C69392001500B9 /* options_transfer_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "options_transfer_default~ipad.png"; path = "Resources/options_transfer_default~ipad.png"; sourceTree = ""; }; + D3A74E9615C69392001500B9 /* options_transfer_disabled~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "options_transfer_disabled~ipad.png"; path = "Resources/options_transfer_disabled~ipad.png"; sourceTree = ""; }; + D3A74E9715C69392001500B9 /* options_transfer_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "options_transfer_over~ipad.png"; path = "Resources/options_transfer_over~ipad.png"; sourceTree = ""; }; + D3A74E9815C69392001500B9 /* pause_off_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "pause_off_default~ipad.png"; path = "Resources/pause_off_default~ipad.png"; sourceTree = ""; }; + D3A74E9915C69392001500B9 /* pause_off_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "pause_off_over~ipad.png"; path = "Resources/pause_off_over~ipad.png"; sourceTree = ""; }; + D3A74E9A15C69392001500B9 /* pause_on_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "pause_on_default~ipad.png"; path = "Resources/pause_on_default~ipad.png"; sourceTree = ""; }; + D3A74E9B15C69392001500B9 /* pause_on_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "pause_on_over~ipad.png"; path = "Resources/pause_on_over~ipad.png"; sourceTree = ""; }; + D3A74E9C15C69392001500B9 /* settings_default_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "settings_default_landscape~ipad.png"; path = "Resources/settings_default_landscape~ipad.png"; sourceTree = ""; }; + D3A74E9D15C69392001500B9 /* settings_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "settings_default~ipad.png"; path = "Resources/settings_default~ipad.png"; sourceTree = ""; }; + D3A74E9E15C69392001500B9 /* settings_over_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "settings_over_landscape~ipad.png"; path = "Resources/settings_over_landscape~ipad.png"; sourceTree = ""; }; + D3A74E9F15C69392001500B9 /* settings_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "settings_over~ipad.png"; path = "Resources/settings_over~ipad.png"; sourceTree = ""; }; + D3A74EA015C69392001500B9 /* settings_selected_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "settings_selected_landscape~ipad.png"; path = "Resources/settings_selected_landscape~ipad.png"; sourceTree = ""; }; + D3A74EA115C69392001500B9 /* settings_selected~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "settings_selected~ipad.png"; path = "Resources/settings_selected~ipad.png"; sourceTree = ""; }; + D3A74EA215C69392001500B9 /* speaker_off_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "speaker_off_default~ipad.png"; path = "Resources/speaker_off_default~ipad.png"; sourceTree = ""; }; + D3A74EA315C69392001500B9 /* speaker_off_disabled~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "speaker_off_disabled~ipad.png"; path = "Resources/speaker_off_disabled~ipad.png"; sourceTree = ""; }; + D3A74EA415C69392001500B9 /* speaker_off_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "speaker_off_over~ipad.png"; path = "Resources/speaker_off_over~ipad.png"; sourceTree = ""; }; + D3A74EA515C69392001500B9 /* speaker_on_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "speaker_on_default~ipad.png"; path = "Resources/speaker_on_default~ipad.png"; sourceTree = ""; }; + D3A74EA615C69392001500B9 /* speaker_on_disabled~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "speaker_on_disabled~ipad.png"; path = "Resources/speaker_on_disabled~ipad.png"; sourceTree = ""; }; + D3A74EA715C69392001500B9 /* speaker_on_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "speaker_on_over~ipad.png"; path = "Resources/speaker_on_over~ipad.png"; sourceTree = ""; }; + D3A74EA815C69392001500B9 /* statebar_background_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "statebar_background_landscape~ipad.png"; path = "Resources/statebar_background_landscape~ipad.png"; sourceTree = ""; }; + D3A74EA915C69392001500B9 /* statebar_background~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "statebar_background~ipad.png"; path = "Resources/statebar_background~ipad.png"; sourceTree = ""; }; + D3A74EAA15C69392001500B9 /* transfer_call_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "transfer_call_default~ipad.png"; path = "Resources/transfer_call_default~ipad.png"; sourceTree = ""; }; + D3A74EAB15C69392001500B9 /* transfer_call_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "transfer_call_over~ipad.png"; path = "Resources/transfer_call_over~ipad.png"; sourceTree = ""; }; + D3A74EAC15C69392001500B9 /* video_off_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video_off_default~ipad.png"; path = "Resources/video_off_default~ipad.png"; sourceTree = ""; }; + D3A74EAD15C69392001500B9 /* video_off_disabled~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video_off_disabled~ipad.png"; path = "Resources/video_off_disabled~ipad.png"; sourceTree = ""; }; + D3A74EAE15C69392001500B9 /* video_off_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video_off_over~ipad.png"; path = "Resources/video_off_over~ipad.png"; sourceTree = ""; }; + D3A74EAF15C69392001500B9 /* video_on_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video_on_default~ipad.png"; path = "Resources/video_on_default~ipad.png"; sourceTree = ""; }; + D3A74EB015C69392001500B9 /* video_on_disabled~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video_on_disabled~ipad.png"; path = "Resources/video_on_disabled~ipad.png"; sourceTree = ""; }; + D3A74EB115C69392001500B9 /* video_on_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video_on_over~ipad.png"; path = "Resources/video_on_over~ipad.png"; sourceTree = ""; }; + D3A74F5A15C6AA0B001500B9 /* chat_field.9.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_field.9.png; path = Resources/chat_field.9.png; sourceTree = ""; }; + D3A74F5D15C6ADA9001500B9 /* chat_field.9@x2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "chat_field.9@x2.png"; path = "Resources/chat_field.9@x2.png"; sourceTree = ""; }; + D3A74F6015C6B03B001500B9 /* DialerViewController~ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "DialerViewController~ipad.xib"; sourceTree = ""; }; D3A8BB6E15A6C7D500F96BE5 /* UIChatRoomCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIChatRoomCell.h; sourceTree = ""; }; D3A8BB6F15A6C7D500F96BE5 /* UIChatRoomCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIChatRoomCell.m; sourceTree = ""; }; D3A8BB7315A6C81A00F96BE5 /* UIChatRoomCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIChatRoomCell.xib; sourceTree = ""; }; @@ -1421,9 +1571,10 @@ D3A8BB7815A6CC3200F96BE5 /* setup_back_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = setup_back_disabled.png; path = Resources/setup_back_disabled.png; sourceTree = ""; }; D3A8BB7915A6CC3200F96BE5 /* setup_cancel_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = setup_cancel_disabled.png; path = Resources/setup_cancel_disabled.png; sourceTree = ""; }; D3A8BB7A15A6CC3200F96BE5 /* setup_start_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = setup_start_disabled.png; path = Resources/setup_start_disabled.png; sourceTree = ""; }; + D3ACB09615C6D0F700E15894 /* UICallBar~ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "UICallBar~ipad.xib"; sourceTree = ""; }; + D3ACB09915C6D59500E15894 /* dialer_alt_back_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer_alt_back_default~ipad.png"; path = "Resources/dialer_alt_back_default~ipad.png"; sourceTree = ""; }; + D3ACB09A15C6D59500E15894 /* dialer_alt_back_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer_alt_back_over~ipad.png"; path = "Resources/dialer_alt_back_over~ipad.png"; sourceTree = ""; }; D3B829FC15C148C90036C93E /* castel.xsd */ = {isa = PBXFileReference; lastKnownFileType = text; path = castel.xsd; sourceTree = ""; }; - D3B82A0015C18A710036C93E /* history_details_bar_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_details_bar_background.png; path = Resources/history_details_bar_background.png; sourceTree = ""; }; - D3B82A0115C18A710036C93E /* settings_bar_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = settings_bar_background.png; path = Resources/settings_bar_background.png; sourceTree = ""; }; D3B90E1115C2CB5700F64F8C /* NinePatch.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = NinePatch.xcodeproj; path = Utils/NinePatch/NinePatch.xcodeproj; sourceTree = ""; }; D3B9A3DA15A58C440096EA4E /* chat_field.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_field.png; path = Resources/chat_field.png; sourceTree = ""; }; D3B9A3DB15A58C440096EA4E /* chat_ok_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_ok_default.png; path = Resources/chat_ok_default.png; sourceTree = ""; }; @@ -1547,8 +1698,6 @@ D3F26BF615986DAD005F9CAB /* history_ok_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_ok_over.png; path = Resources/history_ok_over.png; sourceTree = ""; }; D3F26BFB15987083005F9CAB /* header_incoming.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = header_incoming.png; path = Resources/header_incoming.png; sourceTree = ""; }; D3F34F2F1599B008005BE94F /* avatar_shadow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = avatar_shadow.png; path = Resources/avatar_shadow.png; sourceTree = ""; }; - D3F34F331599C354005BE94F /* UIModalViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIModalViewController.h; sourceTree = ""; }; - D3F34F341599C354005BE94F /* UIModalViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIModalViewController.m; sourceTree = ""; }; D3F795D315A582800077328B /* ChatRoomViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChatRoomViewController.h; sourceTree = ""; }; D3F795D415A582800077328B /* ChatRoomViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChatRoomViewController.m; sourceTree = ""; }; D3F795D515A582800077328B /* ChatRoomViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ChatRoomViewController.xib; sourceTree = ""; }; @@ -1605,18 +1754,7 @@ D3F83F8C158229C500336684 /* PhoneMainView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PhoneMainView.h; sourceTree = ""; }; D3F83F8D15822ABD00336684 /* PhoneMainView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PhoneMainView.m; sourceTree = ""; }; D3F83F9115824D3500336684 /* LinphoneApp.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LinphoneApp.xib; sourceTree = ""; }; - D3F9A9A315AEBA460045320F /* castel_icon_57.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = castel_icon_57.png; path = Resources/castel_icon_57.png; sourceTree = ""; }; - D3F9A9A415AEBA460045320F /* castel_icon_72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = castel_icon_72.png; path = Resources/castel_icon_72.png; sourceTree = ""; }; - D3F9A9A915AEBAB00045320F /* accept_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = accept_disabled.png; path = Resources/accept_disabled.png; sourceTree = ""; }; - D3F9A9AC15AEBC060045320F /* more_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = more_default.png; path = Resources/more_default.png; sourceTree = ""; }; - D3F9A9AD15AEBC060045320F /* more_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = more_over.png; path = Resources/more_over.png; sourceTree = ""; }; - D3F9A9AE15AEBC060045320F /* more_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = more_selected.png; path = Resources/more_selected.png; sourceTree = ""; }; - D3F9A9B515AEBD2D0045320F /* contact_edit_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_edit_background.png; path = Resources/contact_edit_background.png; sourceTree = ""; }; D3F9A9DA15AEEB940045320F /* history_notification.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_notification.png; path = Resources/history_notification.png; sourceTree = ""; }; - D3F9A9DE15AF100D0045320F /* TPKeyboardAvoidingScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TPKeyboardAvoidingScrollView.h; path = Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.h; sourceTree = ""; }; - D3F9A9DF15AF100D0045320F /* TPKeyboardAvoidingScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TPKeyboardAvoidingScrollView.m; path = Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.m; sourceTree = ""; }; - D3F9A9E015AF100D0045320F /* TPKeyboardAvoidingTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TPKeyboardAvoidingTableView.h; path = Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.h; sourceTree = ""; }; - D3F9A9E115AF100D0045320F /* TPKeyboardAvoidingTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TPKeyboardAvoidingTableView.m; path = Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.m; sourceTree = ""; }; D3F9A9EC15AF277D0045320F /* UACellBackgroundView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UACellBackgroundView.h; path = Utils/UACellBackgroundView/UACellBackgroundView.h; sourceTree = ""; }; D3F9A9ED15AF277D0045320F /* UACellBackgroundView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = UACellBackgroundView.m; path = Utils/UACellBackgroundView/UACellBackgroundView.m; sourceTree = ""; }; /* End PBXFileReference section */ @@ -1758,6 +1896,7 @@ 22F2508B107141E100AC9B3F /* DialerViewController.h */, 22F2508C107141E100AC9B3F /* DialerViewController.m */, 22F2508D107141E100AC9B3F /* DialerViewController.xib */, + D3A74F6015C6B03B001500B9 /* DialerViewController~ipad.xib */, 2218A92212FBE1340088A667 /* FirstLoginViewController.h */, 2218A92312FBE1340088A667 /* FirstLoginViewController.m */, 2218A92412FBE1340088A667 /* FirstLoginViewController.xib */, @@ -1771,7 +1910,6 @@ D3ED3EB2158738FA006C0DE4 /* HistoryViewController.xib */, D31AAF5C159B3919002C6B02 /* InCallTableViewController.h */, D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */, - 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */, D3F83EE91582021700336684 /* InCallViewController.h */, D3F83EEA1582021700336684 /* InCallViewController.m */, D3F83EEB1582021700336684 /* InCallViewController.xib */, @@ -2014,6 +2152,7 @@ D326483B1588950F00930C67 /* UICallBar.h */, D326483C1588950F00930C67 /* UICallBar.m */, D326483D1588950F00930C67 /* UICallBar.xib */, + D3ACB09615C6D0F700E15894 /* UICallBar~ipad.xib */, 2214EB7812F846B1002A5394 /* UICallButton.h */, 2214EB7912F846B1002A5394 /* UICallButton.m */, D36C43C4158F2E5A0048BA40 /* UICallCell.h */, @@ -2060,10 +2199,9 @@ D3ED3E841586291B006C0DE4 /* UIMainBar.h */, D3ED3E851586291B006C0DE4 /* UIMainBar.m */, D3ED3E861586291C006C0DE4 /* UIMainBar.xib */, + D3A74E5B15C6922A001500B9 /* UIMainBar~ipad.xib */, 2214EBF112F86360002A5394 /* UIMicroButton.h */, 2214EBF212F86360002A5394 /* UIMicroButton.m */, - D3F34F331599C354005BE94F /* UIModalViewController.h */, - D3F34F341599C354005BE94F /* UIModalViewController.m */, D36FB2D31589EF7C0036F6F2 /* UIPauseButton.h */, D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */, 22968A5D12F875C600588287 /* UISpeakerButton.h */, @@ -2079,8 +2217,6 @@ D32460E5159D9AAD00BA7F3A /* UITransparentView.m */, 340751E5150F38FC00B89C47 /* UIVideoButton.h */, 340751E6150F38FD00B89C47 /* UIVideoButton.m */, - D378907715AC44A300BD776C /* UIView+ModalStack.h */, - D378907415AC448A00BD776C /* UIView+ModalStack.m */, ); path = LinphoneUI; sourceTree = ""; @@ -2215,7 +2351,6 @@ 70E542F413E147EB002BA2C0 /* QuartzCore.framework */, 22744043106F33FC006EC466 /* Security.framework */, 2264B6D111200342002C2C53 /* SystemConfiguration.framework */, - 22F51EF5107FA66500F98953 /* untitled.plist */, 080E96DDFE201D6D7F000001 /* Classes */, 29B97323FDCFA39411CA2CEA /* Frameworks */, 220FAC77107654FC0068D98F /* include */, @@ -2241,32 +2376,47 @@ isa = PBXGroup; children = ( D3F83F741582253100336684 /* accept_default.png */, - D3F9A9A915AEBAB00045320F /* accept_disabled.png */, D3F83F751582253100336684 /* accept_over.png */, D3D6A39B159B0EEF005F692C /* add_call_default.png */, + D3A74E5E15C69391001500B9 /* add_call_default~ipad.png */, D3D6A39C159B0EEF005F692C /* add_call_disabled.png */, + D3A74E5F15C69391001500B9 /* add_call_disabled~ipad.png */, D3D6A39D159B0EEF005F692C /* add_call_over.png */, + D3A74E6015C69391001500B9 /* add_call_over~ipad.png */, D3ED3E6715861A53006C0DE4 /* add_contact_default.png */, + D3A74E6115C69391001500B9 /* add_contact_default~ipad.png */, D3ED3E6815861A53006C0DE4 /* add_contact_disabled.png */, + D3A74E6215C69392001500B9 /* add_contact_disabled~ipad.png */, D3ED3E6915861A53006C0DE4 /* add_contact_over.png */, + D3A74E6315C69392001500B9 /* add_contact_over~ipad.png */, D3F34F2F1599B008005BE94F /* avatar_shadow.png */, D3D14E7B15A711700074A527 /* avatar_shadow_small.png */, D31B4B261598A390002E6C72 /* avatar_unknown.png */, D31B4B271598A390002E6C72 /* avatar_unknown_small.png */, D3211BBB159CBFD60098460B /* back_default.png */, + D3A74E6415C69392001500B9 /* back_default~ipad.png */, D3211BBC159CBFD60098460B /* back_disabled.png */, + D3A74E6515C69392001500B9 /* back_disabled~ipad.png */, D3211BBD159CBFD60098460B /* back_over.png */, + D3A74E6615C69392001500B9 /* back_over~ipad.png */, D3ED3E401585FB4A006C0DE4 /* background.png */, + D3A74E6715C69392001500B9 /* background_top~ipad.png */, D3ED3E7615861B1B006C0DE4 /* backspace_default.png */, + D3A74E6815C69392001500B9 /* backspace_default~ipad.png */, D35E758815932DE60066B1C1 /* backspace_disabled.png */, + D3A74E6915C69392001500B9 /* backspace_disabled~ipad.png */, D3ED3E7715861B1B006C0DE4 /* backspace_over.png */, + D3A74E6A15C69392001500B9 /* backspace_over~ipad.png */, D32D5AA515ADE5D9008593F3 /* button_alert_background_default.png */, D32D5AA615ADE5D9008593F3 /* button_alert_background_over.png */, D35406F515A47E9E007E7E81 /* button_background_default.png */, D35406F615A47E9E007E7E81 /* button_background_over.png */, D3ED3E7015861ABD006C0DE4 /* call_default.png */, + D3A74E6B15C69392001500B9 /* call_default~ipad.png */, D35E758C15934F360066B1C1 /* call_disabled.png */, + D3A74E6C15C69392001500B9 /* call_disabled~ipad.png */, D3ED3E7115861ABD006C0DE4 /* call_over.png */, + D3A74E6D15C69392001500B9 /* call_over~ipad.png */, D3432A5E158A4446001C6B0B /* call_quality_indicator_0.png */, D3432A5F158A4446001C6B0B /* call_quality_indicator_1.png */, D3432A60158A4446001C6B0B /* call_quality_indicator_2.png */, @@ -2284,8 +2434,8 @@ D31C9C8F158A1C1000756B45 /* call_status_outgoing.png */, D3E84F1715B00F4100420DAC /* cancel_default.png */, D3E84F1815B00F4100420DAC /* cancel_over.png */, - D3F9A9A315AEBA460045320F /* castel_icon_57.png */, - D3F9A9A415AEBA460045320F /* castel_icon_72.png */, + D306BC0715CFF79E00FDB80F /* castel_icon_57.png */, + D306BC0815CFF79E00FDB80F /* castel_icon_72.png */, D36C43CC158F2F370048BA40 /* cell_call.png */, D3211BB8159C8A820098460B /* cell_call_first.png */, D38D14AD15A30B3D008497E8 /* cell_call_first_highlight.png */, @@ -2300,26 +2450,36 @@ D389363815A6D53200A3A3AA /* chat_bubble_outgoing.9.png */, D3A8BB7615A6CC3200F96BE5 /* chat_bubble_outgoing.png */, D38327F11580FE3A00FA0D23 /* chat_default.png */, + D3A74E6E15C69392001500B9 /* chat_default_landscape~ipad.png */, + D3A74E6F15C69392001500B9 /* chat_default~ipad.png */, D3EA53FF159852080037DC6B /* chat_edit_default.png */, D3EA5400159852080037DC6B /* chat_edit_over.png */, + D3A74F5A15C6AA0B001500B9 /* chat_field.9.png */, + D3A74F5D15C6ADA9001500B9 /* chat_field.9@x2.png */, D3B9A3DA15A58C440096EA4E /* chat_field.png */, D3B9A3DB15A58C440096EA4E /* chat_ok_default.png */, D3B9A3DC15A58C440096EA4E /* chat_ok_over.png */, D38327FF158100E400FA0D23 /* chat_over.png */, + D3A74E7015C69392001500B9 /* chat_over_landscape~ipad.png */, + D3A74E7115C69392001500B9 /* chat_over~ipad.png */, D38327F21580FE3A00FA0D23 /* chat_selected.png */, + D3A74E7215C69392001500B9 /* chat_selected_landscape~ipad.png */, + D3A74E7315C69392001500B9 /* chat_selected~ipad.png */, D3B9A3DD15A58C440096EA4E /* chat_send_default.png */, D32B6E2315A5B2020033019F /* chat_send_disabled.png */, D3B9A3DE15A58C450096EA4E /* chat_send_over.png */, D31AAF61159B5B6E002C6B02 /* conference_default.png */, D3C31A0715BD8DED008ED271 /* conference_default_landscape.png */, + D339888C15C6DD1600CAF1E4 /* conference_default_landscape~ipad.png */, + D3A74E7415C69392001500B9 /* conference_default~ipad.png */, D31AAF62159B5B6E002C6B02 /* conference_over.png */, D3C31A0815BD8DED008ED271 /* conference_over_landscape.png */, + D339888D15C6DD1600CAF1E4 /* conference_over_landscape~ipad.png */, + D3A74E7515C69392001500B9 /* conference_over~ipad.png */, D3128FE715AABE4E00A2147A /* contact_back_default.png */, D3128FE815AABE4E00A2147A /* contact_back_over.png */, - D378906915AC37C800BD776C /* contact_bar_background.png */, D3E84F3615B011AF00420DAC /* contact_cancel_default.png */, D3E84F3715B011AF00420DAC /* contact_cancel_over.png */, - D3F9A9B515AEBD2D0045320F /* contact_edit_background.png */, D3128FE915AABE4E00A2147A /* contact_edit_default.png */, D3128FEA15AABE4E00A2147A /* contact_edit_over.png */, D37C638D15AAD251009D0BAC /* contact_number.png */, @@ -2333,43 +2493,64 @@ D3119E7015B6A4710005D4A4 /* contacts_back_default.png */, D3119E7115B6A4710005D4A4 /* contacts_back_over.png */, D38327EB1580FE3A00FA0D23 /* contacts_default.png */, + D3A74E7615C69392001500B9 /* contacts_default_landscape~ipad.png */, + D3A74E7715C69392001500B9 /* contacts_default~ipad.png */, D354980515875534000081D8 /* contacts_linphone_default.png */, D354980415875534000081D8 /* contacts_linphone_selected.png */, D38327FC158100E400FA0D23 /* contacts_over.png */, + D3A74E7815C69392001500B9 /* contacts_over_landscape~ipad.png */, + D3A74E7915C69392001500B9 /* contacts_over~ipad.png */, D38327EC1580FE3A00FA0D23 /* contacts_selected.png */, + D3A74E7A15C69392001500B9 /* contacts_selected_landscape~ipad.png */, + D3A74E7B15C69392001500B9 /* contacts_selected~ipad.png */, D32B6E2B15A5C0800033019F /* database.sqlite */, D3F83F761582253100336684 /* decline_default.png */, D3F83F771582253100336684 /* decline_over.png */, D3ED3E441585FB8C006C0DE4 /* dialer_address_background.png */, + D3A74E7C15C69392001500B9 /* dialer_address_background_landscape~ipad.png */, + D3A74E7D15C69392001500B9 /* dialer_address_background~ipad.png */, D3E84F1B15B00F4100420DAC /* dialer_alt_back_default.png */, D3C31A0915BD8DED008ED271 /* dialer_alt_back_default_landscape.png */, + D339890415C6E16F00CAF1E4 /* dialer_alt_back_default_landscape~ipad.png */, + D3ACB09915C6D59500E15894 /* dialer_alt_back_default~ipad.png */, D3E84F1C15B00F4100420DAC /* dialer_alt_back_over.png */, D3C31A0A15BD8DED008ED271 /* dialer_alt_back_over_landscape.png */, + D339890515C6E16F00CAF1E4 /* dialer_alt_back_over_landscape~ipad.png */, + D3ACB09A15C6D59500E15894 /* dialer_alt_back_over~ipad.png */, D3E84F1D15B00F4100420DAC /* dialer_alt_background.png */, D3E84F5115B0265600420DAC /* dialer_alt_button_options_default.png */, D3E84F5215B0265600420DAC /* dialer_alt_button_options_over.png */, D36C43CF158F2F370048BA40 /* dialer_alt_default.png */, D3C31A0B15BD8DED008ED271 /* dialer_alt_default_landscape.png */, + D339888E15C6DD1600CAF1E4 /* dialer_alt_default_landscape~ipad.png */, + D3A74E7E15C69392001500B9 /* dialer_alt_default~ipad.png */, D36C43D0158F2F370048BA40 /* dialer_alt_over.png */, D3C31A0C15BD8DED008ED271 /* dialer_alt_over_landscape.png */, + D339888F15C6DD1600CAF1E4 /* dialer_alt_over_landscape~ipad.png */, + D3A74E7F15C69392001500B9 /* dialer_alt_over~ipad.png */, D38327ED1580FE3A00FA0D23 /* dialer_default.png */, D38327EE1580FE3A00FA0D23 /* dialer_over.png */, D3C2814A15A2D38D0098AA42 /* dialer_selected.png */, D350F21715A43D3400149E54 /* field_background.png */, D3F83EFA158205A100336684 /* hangup_default.png */, D3C31A0D15BD8DED008ED271 /* hangup_default_landscape.png */, + D339889015C6DD1600CAF1E4 /* hangup_default_landscape~ipad.png */, + D3A74E8015C69392001500B9 /* hangup_default~ipad.png */, D3F83EFB158205A100336684 /* hangup_over.png */, D3C31A0E15BD8DED008ED271 /* hangup_over_landscape.png */, + D339889115C6DD1600CAF1E4 /* hangup_over_landscape~ipad.png */, + D3A74E8115C69392001500B9 /* hangup_over~ipad.png */, D36C43CE158F2F370048BA40 /* header_conference.png */, D3F26BFB15987083005F9CAB /* header_incoming.png */, D3ED3E9315872EF1006C0DE4 /* history_all_default.png */, D3ED3E9215872EF1006C0DE4 /* history_all_selected.png */, D347347C1580E5F8003C7B8C /* history_default.png */, + D3A74E8215C69392001500B9 /* history_default_landscape~ipad.png */, + D3A74E8315C69392001500B9 /* history_default~ipad.png */, D3157A8815B4466F00DD8C4C /* history_details_add_default.png */, D3157A8915B4466F00DD8C4C /* history_details_add_over.png */, D3157A8E15B446CB00DD8C4C /* history_details_back_default.png */, D3157A8F15B446CB00DD8C4C /* history_details_back_over.png */, - D3B82A0015C18A710036C93E /* history_details_bar_background.png */, D3ED3E9415872EF1006C0DE4 /* history_edit_default.png */, D3ED3E9515872EF1006C0DE4 /* history_edit_over.png */, D3ED3E9715872EF1006C0DE4 /* history_missed_default.png */, @@ -2378,7 +2559,11 @@ D3F26BF515986DAD005F9CAB /* history_ok_default.png */, D3F26BF615986DAD005F9CAB /* history_ok_over.png */, D38327FD158100E400FA0D23 /* history_over.png */, + D3A74E8415C69392001500B9 /* history_over_landscape~ipad.png */, + D3A74E8515C69392001500B9 /* history_over~ipad.png */, D347347D1580E5F8003C7B8C /* history_selected.png */, + D3A74E8615C69392001500B9 /* history_selected_landscape~ipad.png */, + D3A74E8715C69392001500B9 /* history_selected~ipad.png */, D3432A5C158A4446001C6B0B /* led_connected.png */, D3432A70158A45AF001C6B0B /* led_disconnected.png */, D3432A5D158A4446001C6B0B /* led_error.png */, @@ -2392,19 +2577,31 @@ D354981915876FE7000081D8 /* list_details_over.png */, D3F83EF4158205A100336684 /* micro_off_default.png */, D3C31A0F15BD8DED008ED271 /* micro_off_default_landscape.png */, + D339889215C6DD1600CAF1E4 /* micro_off_default_landscape~ipad.png */, + D3A74E8815C69392001500B9 /* micro_off_default~ipad.png */, D35EA76115A2DF8D003E025D /* micro_off_disabled.png */, D3C31A1015BD8DED008ED271 /* micro_off_disabled_landscape.png */, + D339889315C6DD1600CAF1E4 /* micro_off_disabled_landscape~ipad.png */, + D3A74E8915C69392001500B9 /* micro_off_disabled~ipad.png */, D3F83EF5158205A100336684 /* micro_off_over.png */, D3C31A1115BD8DED008ED271 /* micro_off_over_landscape.png */, + D339889415C6DD1600CAF1E4 /* micro_off_over_landscape~ipad.png */, + D3A74E8A15C69392001500B9 /* micro_off_over~ipad.png */, D3F83EF6158205A100336684 /* micro_on_default.png */, D3C31A1215BD8DED008ED271 /* micro_on_default_landscape.png */, + D339889515C6DD1600CAF1E4 /* micro_on_default_landscape~ipad.png */, + D3A74E8B15C69392001500B9 /* micro_on_default~ipad.png */, D35EA76215A2DF8D003E025D /* micro_on_disabled.png */, D3C31A1315BD8DED008ED271 /* micro_on_disabled_landscape.png */, + D339889615C6DD1600CAF1E4 /* micro_on_disabled_landscape~ipad.png */, + D3A74E8C15C69392001500B9 /* micro_on_disabled~ipad.png */, D3F83EF7158205A100336684 /* micro_on_over.png */, - D3F9A9AC15AEBC060045320F /* more_default.png */, - D3F9A9AD15AEBC060045320F /* more_over.png */, - D3F9A9AE15AEBC060045320F /* more_selected.png */, D3C31A1415BD8DED008ED271 /* micro_on_over_landscape.png */, + D339889715C6DD1600CAF1E4 /* micro_on_over_landscape~ipad.png */, + D3A74E8D15C69392001500B9 /* micro_on_over~ipad.png */, + D306BC0915CFF79E00FDB80F /* more_default.png */, + D306BC0A15CFF79E00FDB80F /* more_over.png */, + D306BC0B15CFF79E00FDB80F /* more_selected.png */, D3F83F3C1582223B00336684 /* numpad_eight_default.png */, D3F83F3D1582223B00336684 /* numpad_eight_over.png */, D3F83F361582223B00336684 /* numpad_five_default.png */, @@ -2433,41 +2630,74 @@ 2237D4081084D7A9001383EE /* oldphone-mono.wav */, D3196D3015A321E2007FEEBA /* options_add_default.png */, D3C31A1515BD8DED008ED271 /* options_add_default_landscape.png */, + D339889815C6DD1600CAF1E4 /* options_add_default_landscape~ipad.png */, + D3A74E8E15C69392001500B9 /* options_add_default~ipad.png */, C9C8253F15AE204D00D493FA /* options_add_disabled.png */, D3C31A1615BD8DED008ED271 /* options_add_disabled_landscape.png */, + D339889915C6DD1600CAF1E4 /* options_add_disabled_landscape~ipad.png */, + D3A74E8F15C69392001500B9 /* options_add_disabled~ipad.png */, D3196D3115A321E2007FEEBA /* options_add_over.png */, D3C31A1715BD8DED008ED271 /* options_add_over_landscape.png */, + D339889A15C6DD1600CAF1E4 /* options_add_over_landscape~ipad.png */, + D3A74E9015C69392001500B9 /* options_add_over~ipad.png */, D3D6A3A8159B0EFE005F692C /* options_default.png */, D3C31A1815BD8DED008ED271 /* options_default_landscape.png */, + D339889B15C6DD1600CAF1E4 /* options_default_landscape~ipad.png */, + D3A74E9115C69392001500B9 /* options_default~ipad.png */, D3D6A3A9159B0EFE005F692C /* options_disabled.png */, D3C31A1915BD8DED008ED271 /* options_disabled_landscape.png */, + D339889C15C6DD1600CAF1E4 /* options_disabled_landscape~ipad.png */, + D3A74E9215C69392001500B9 /* options_disabled~ipad.png */, D3D6A3AA159B0EFE005F692C /* options_over.png */, D3C31A1A15BD8DED008ED271 /* options_over_landscape.png */, + D339889D15C6DD1600CAF1E4 /* options_over_landscape~ipad.png */, + D3A74E9315C69392001500B9 /* options_over~ipad.png */, C9C8254B15AE207B00D493FA /* options_selected.png */, D3C31A1B15BD8DED008ED271 /* options_selected_landscape.png */, + D339889E15C6DD1600CAF1E4 /* options_selected_landscape~ipad.png */, + D3A74E9415C69392001500B9 /* options_selected~ipad.png */, D3196D3215A321E3007FEEBA /* options_transfer_default.png */, D3C31A1C15BD8DED008ED271 /* options_transfer_default_landscape.png */, + D339889F15C6DD1600CAF1E4 /* options_transfer_default_landscape~ipad.png */, + D3A74E9515C69392001500B9 /* options_transfer_default~ipad.png */, C9C8254015AE204D00D493FA /* options_transfer_disabled.png */, D3C31A1D15BD8DED008ED271 /* options_transfer_disabled_landscape.png */, + D33988A015C6DD1600CAF1E4 /* options_transfer_disabled_landscape~ipad.png */, + D3A74E9615C69392001500B9 /* options_transfer_disabled~ipad.png */, D3196D3315A321E3007FEEBA /* options_transfer_over.png */, D3C31A1E15BD8DED008ED271 /* options_transfer_over_landscape.png */, + D33988A115C6DD1600CAF1E4 /* options_transfer_over_landscape~ipad.png */, + D3A74E9715C69392001500B9 /* options_transfer_over~ipad.png */, D3F83EF8158205A100336684 /* pause_off_default.png */, D3C31A1F15BD8DED008ED271 /* pause_off_default_landscape.png */, + D33988A215C6DD1600CAF1E4 /* pause_off_default_landscape~ipad.png */, + D3A74E9815C69392001500B9 /* pause_off_default~ipad.png */, D3F83EF9158205A100336684 /* pause_off_over.png */, D3C31A2015BD8DED008ED271 /* pause_off_over_landscape.png */, + D33988A315C6DD1600CAF1E4 /* pause_off_over_landscape~ipad.png */, + D3A74E9915C69392001500B9 /* pause_off_over~ipad.png */, D36C43E7158F3F7E0048BA40 /* pause_on_default.png */, D3C31A2115BD8DED008ED271 /* pause_on_default_landscape.png */, + D33988A415C6DD1600CAF1E4 /* pause_on_default_landscape~ipad.png */, + D3A74E9A15C69392001500B9 /* pause_on_default~ipad.png */, D36C43E8158F3F7E0048BA40 /* pause_on_over.png */, D3C31A2215BD8DED008ED271 /* pause_on_over_landscape.png */, + D33988A515C6DD1600CAF1E4 /* pause_on_over_landscape~ipad.png */, + D3A74E9B15C69392001500B9 /* pause_on_over~ipad.png */, 22F254801073D99800AC9B3F /* ringback.wav */, 70571E1913FABCB000CDD3C2 /* rootca.pem */, D3D6A3A5159B0EFE005F692C /* security_ko.png */, D3D6A3A7159B0EFE005F692C /* security_ok.png */, D3D6A3A6159B0EFE005F692C /* security_pending.png */, - D3B82A0115C18A710036C93E /* settings_bar_background.png */, D38327EF1580FE3A00FA0D23 /* settings_default.png */, + D3A74E9C15C69392001500B9 /* settings_default_landscape~ipad.png */, + D3A74E9D15C69392001500B9 /* settings_default~ipad.png */, D38327FE158100E400FA0D23 /* settings_over.png */, + D3A74E9E15C69392001500B9 /* settings_over_landscape~ipad.png */, + D3A74E9F15C69392001500B9 /* settings_over~ipad.png */, D38327F01580FE3A00FA0D23 /* settings_selected.png */, + D3A74EA015C69392001500B9 /* settings_selected_landscape~ipad.png */, + D3A74EA115C69392001500B9 /* settings_selected~ipad.png */, D350F21315A43D3400149E54 /* setup_back_default.png */, D3A8BB7815A6CC3200F96BE5 /* setup_back_disabled.png */, D350F21415A43D3400149E54 /* setup_back_over.png */, @@ -2481,38 +2711,69 @@ D350F21B15A43D3400149E54 /* setup_welcome_logo.png */, D3F83EFC158205A100336684 /* speaker_off_default.png */, D3C31A2315BD8DED008ED271 /* speaker_off_default_landscape.png */, + D33988A615C6DD1600CAF1E4 /* speaker_off_default_landscape~ipad.png */, + D3A74EA215C69392001500B9 /* speaker_off_default~ipad.png */, D365AA7915A2DE7500CAFE3F /* speaker_off_disabled.png */, D3C31A2415BD8DED008ED271 /* speaker_off_disabled_landscape.png */, + D33988A715C6DD1600CAF1E4 /* speaker_off_disabled_landscape~ipad.png */, + D3A74EA315C69392001500B9 /* speaker_off_disabled~ipad.png */, D3F83EFD158205A100336684 /* speaker_off_over.png */, D3C31A2515BD8DED008ED271 /* speaker_off_over_landscape.png */, + D33988A815C6DD1600CAF1E4 /* speaker_off_over_landscape~ipad.png */, + D3A74EA415C69392001500B9 /* speaker_off_over~ipad.png */, D3F83EFE158205A100336684 /* speaker_on_default.png */, D3C31A2615BD8DED008ED271 /* speaker_on_default_landscape.png */, + D33988A915C6DD1600CAF1E4 /* speaker_on_default_landscape~ipad.png */, + D3A74EA515C69392001500B9 /* speaker_on_default~ipad.png */, D365AA7A15A2DE7500CAFE3F /* speaker_on_disabled.png */, D3C31A2715BD8DED008ED271 /* speaker_on_disabled_landscape.png */, + D33988AA15C6DD1600CAF1E4 /* speaker_on_disabled_landscape~ipad.png */, + D3A74EA615C69392001500B9 /* speaker_on_disabled~ipad.png */, D3F83EFF158205A100336684 /* speaker_on_over.png */, D3C31A2815BD8DED008ED271 /* speaker_on_over_landscape.png */, + D33988AB15C6DD1600CAF1E4 /* speaker_on_over_landscape~ipad.png */, + D3A74EA715C69392001500B9 /* speaker_on_over~ipad.png */, D3ED3E511585FFFD006C0DE4 /* statebar_background.png */, D3C31A2915BD8DED008ED271 /* statebar_background_landscape.png */, + D3A74EA815C69392001500B9 /* statebar_background_landscape~ipad.png */, + D3A74EA915C69392001500B9 /* statebar_background~ipad.png */, D35E757515931E5D0066B1C1 /* switch_camera_default.png */, D35E757615931E5D0066B1C1 /* switch_camera_over.png */, + D3A74E5815C68162001500B9 /* toolsbar_background.png */, D3C714B2159DB84400705B8E /* toy-mono.wav */, C9C8254115AE204D00D493FA /* transfer_call_default.png */, + D3A74EAA15C69392001500B9 /* transfer_call_default~ipad.png */, C9C8254E15AE256100D493FA /* transfer_call_disabled.png */, C9C8254215AE204D00D493FA /* transfer_call_over.png */, + D3A74EAB15C69392001500B9 /* transfer_call_over~ipad.png */, D3C31A2A15BD8DED008ED271 /* transfer_default_landscape.png */, + D33988AC15C6DD1600CAF1E4 /* transfer_default~ipad.png */, D3C31A2B15BD8DED008ED271 /* transfer_over_landscape.png */, + D33988AD15C6DD1600CAF1E4 /* transfer_over~ipad.png */, D3F83F00158205A100336684 /* video_off_default.png */, D3C31A2C15BD8DED008ED271 /* video_off_default_landscape.png */, + D33988AE15C6DD1600CAF1E4 /* video_off_default_landscape~ipad.png */, + D3A74EAC15C69392001500B9 /* video_off_default~ipad.png */, D37295DA158B3C9600D2C0C7 /* video_off_disabled.png */, D3C31A2D15BD8DED008ED271 /* video_off_disabled_landscape.png */, + D33988AF15C6DD1600CAF1E4 /* video_off_disabled_landscape~ipad.png */, + D3A74EAD15C69392001500B9 /* video_off_disabled~ipad.png */, D3F83F01158205A100336684 /* video_off_over.png */, D3C31A2E15BD8DED008ED271 /* video_off_over_landscape.png */, + D33988B015C6DD1600CAF1E4 /* video_off_over_landscape~ipad.png */, + D3A74EAE15C69392001500B9 /* video_off_over~ipad.png */, D3F83F02158205A100336684 /* video_on_default.png */, D3C31A2F15BD8DED008ED271 /* video_on_default_landscape.png */, + D33988B115C6DD1600CAF1E4 /* video_on_default_landscape~ipad.png */, + D3A74EAF15C69392001500B9 /* video_on_default~ipad.png */, D377BBF915A19DA6002B696B /* video_on_disabled.png */, D3C31A3015BD8DED008ED271 /* video_on_disabled_landscape.png */, + D33988B215C6DD1600CAF1E4 /* video_on_disabled_landscape~ipad.png */, + D3A74EB015C69392001500B9 /* video_on_disabled~ipad.png */, D3F83F03158205A100336684 /* video_on_over.png */, D3C31A3115BD8DED008ED271 /* video_on_over_landscape.png */, + D33988B315C6DD1600CAF1E4 /* video_on_over_landscape~ipad.png */, + D3A74EB115C69392001500B9 /* video_on_over~ipad.png */, ); name = Resources; sourceTree = ""; @@ -2541,11 +2802,11 @@ D3B90E1115C2CB5700F64F8C /* NinePatch.xcodeproj */, D326483615887D5200930C67 /* OrderedDictionary.h */, D326483715887D5200930C67 /* OrderedDictionary.m */, - D3F9A9DD15AF0FFE0045320F /* TPKeyboardAvoiding */, D3F7997E15BD31EC0018C273 /* TPMultiLayoutViewController */, D3F9A9EB15AF27620045320F /* UACellBackgroundView */, C9B3A6FD15B485DB006F52EE /* Utils.h */, D35860D515B549B500513429 /* Utils.m */, + D3554EC515CA79A900478841 /* XMLRPC.xcodeproj */, ); name = Utils; sourceTree = ""; @@ -2568,6 +2829,14 @@ name = GDataXML; sourceTree = ""; }; + D3554EC615CA79A900478841 /* Products */ = { + isa = PBXGroup; + children = ( + D3554ED115CA79AA00478841 /* libXMLRPC.a */, + ); + name = Products; + sourceTree = ""; + }; D3807FB615C28940005BE9BC /* DCRoundSwitch */ = { isa = PBXGroup; children = ( @@ -2681,17 +2950,6 @@ name = TPMultiLayoutViewController; sourceTree = ""; }; - D3F9A9DD15AF0FFE0045320F /* TPKeyboardAvoiding */ = { - isa = PBXGroup; - children = ( - D3F9A9DE15AF100D0045320F /* TPKeyboardAvoidingScrollView.h */, - D3F9A9DF15AF100D0045320F /* TPKeyboardAvoidingScrollView.m */, - D3F9A9E015AF100D0045320F /* TPKeyboardAvoidingTableView.h */, - D3F9A9E115AF100D0045320F /* TPKeyboardAvoidingTableView.m */, - ); - name = TPKeyboardAvoiding; - sourceTree = ""; - }; D3F9A9EB15AF27620045320F /* UACellBackgroundView */ = { isa = PBXGroup; children = ( @@ -2716,6 +2974,7 @@ buildRules = ( ); dependencies = ( + D3554ED515CA79B900478841 /* PBXTargetDependency */, D3B90E1B15C2CBC800F64F8C /* PBXTargetDependency */, ); name = linphone; @@ -2735,6 +2994,7 @@ buildRules = ( ); dependencies = ( + D3554ED715CA79C000478841 /* PBXTargetDependency */, D3B90E1D15C2CBCD00F64F8C /* PBXTargetDependency */, ); name = "linphone-no-gpl-thirdparties"; @@ -2768,6 +3028,10 @@ ProductGroup = D3B90E1215C2CB5700F64F8C /* Products */; ProjectRef = D3B90E1115C2CB5700F64F8C /* NinePatch.xcodeproj */; }, + { + ProductGroup = D3554EC615CA79A900478841 /* Products */; + ProjectRef = D3554EC515CA79A900478841 /* XMLRPC.xcodeproj */; + }, ); projectRoot = ""; targets = ( @@ -2778,6 +3042,13 @@ /* End PBXProject section */ /* Begin PBXReferenceProxy section */ + D3554ED115CA79AA00478841 /* libXMLRPC.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libXMLRPC.a; + remoteRef = D3554ED015CA79AA00478841 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; D3B90E1915C2CB5800F64F8C /* libNinePatch.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -2795,7 +3066,6 @@ 2274550810700509006EC466 /* linphonerc in Resources */, 22F2508F107141E100AC9B3F /* DialerViewController.xib in Resources */, 22F254811073D99800AC9B3F /* ringback.wav in Resources */, - 22F51EF6107FA66500F98953 /* untitled.plist in Resources */, 2237D4091084D7A9001383EE /* oldphone-mono.wav in Resources */, 22E0A823111C44E100B04932 /* ConsoleViewController.xib in Resources */, 2245F78A1201D38000C4179D /* MoreViewController.xib in Resources */, @@ -2803,7 +3073,6 @@ 2218A92612FBE1340088A667 /* FirstLoginViewController.xib in Resources */, 2214783D1386A2030020F8B8 /* Localizable.strings in Resources */, 70571E1A13FABCB000CDD3C2 /* rootca.pem in Resources */, - 3422AA5014975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */, 341FCA8E149798210084BC26 /* linphonerc-ipad in Resources */, D347347A1580DDF1003C7B8C /* PhoneMainView.xib in Resources */, D347347E1580E5F8003C7B8C /* history_default.png in Resources */, @@ -3014,7 +3283,6 @@ D3C6526B15AC228A0092A874 /* contact_ok_default.png in Resources */, D3C6526D15AC228A0092A874 /* contact_ok_over.png in Resources */, D378906715AC373B00BD776C /* ContactDetailsLabelViewController.xib in Resources */, - D378906A15AC37C800BD776C /* contact_bar_background.png in Resources */, D3E8F68815ADE05B0065A226 /* UIContactDetailsFooter.xib in Resources */, D32D5AA715ADE5D9008593F3 /* button_alert_background_default.png in Resources */, D32D5AA915ADE5D9008593F3 /* button_alert_background_over.png in Resources */, @@ -3024,13 +3292,11 @@ C9C8254915AE204D00D493FA /* transfer_call_over.png in Resources */, C9C8254C15AE207B00D493FA /* options_selected.png in Resources */, C9C8254F15AE256100D493FA /* transfer_call_disabled.png in Resources */, - D3F9A9A515AEBA460045320F /* castel_icon_57.png in Resources */, - D3F9A9A715AEBA460045320F /* castel_icon_72.png in Resources */, - D3F9A9AA15AEBAB00045320F /* accept_disabled.png in Resources */, - D3F9A9AF15AEBC060045320F /* more_default.png in Resources */, - D3F9A9B115AEBC060045320F /* more_over.png in Resources */, - D3F9A9B315AEBC060045320F /* more_selected.png in Resources */, - D3F9A9B615AEBD2D0045320F /* contact_edit_background.png in Resources */, + D3F9A9A515AEBA460045320F /* (null) in Resources */, + D3F9A9A715AEBA460045320F /* (null) in Resources */, + D3F9A9AF15AEBC060045320F /* (null) in Resources */, + D3F9A9B115AEBC060045320F /* (null) in Resources */, + D3F9A9B315AEBC060045320F /* (null) in Resources */, C90FAA7B15AF54E6002091CB /* HistoryDetailsViewController.xib in Resources */, D3F9A9DB15AEEB940045320F /* history_notification.png in Resources */, D3E84F1E15B00F4100420DAC /* cancel_default.png in Resources */, @@ -3091,8 +3357,16 @@ D3C31A8615BD8DED008ED271 /* video_on_over_landscape.png in Resources */, D3FF9F7F15BFDE1A00EBD584 /* dialer_alt_button_options_default.png in Resources */, D3FF9F8015BFDE1A00EBD584 /* dialer_alt_button_options_over.png in Resources */, - D3B82A0215C18A710036C93E /* history_details_bar_background.png in Resources */, - D3B82A0415C18A710036C93E /* settings_bar_background.png in Resources */, + D3A74E5915C68162001500B9 /* toolsbar_background.png in Resources */, + D3A74ED815C69392001500B9 /* chat_over~ipad.png in Resources */, + D3A74EDE15C69392001500B9 /* conference_default~ipad.png in Resources */, + D3A74F5B15C6AA0B001500B9 /* chat_field.9.png in Resources */, + D3A74F5E15C6ADA9001500B9 /* chat_field.9@x2.png in Resources */, + D306BC0C15CFF79E00FDB80F /* castel_icon_57.png in Resources */, + D306BC0E15CFF79E00FDB80F /* castel_icon_72.png in Resources */, + D306BC1015CFF79E00FDB80F /* more_default.png in Resources */, + D306BC1215CFF79E00FDB80F /* more_over.png in Resources */, + D306BC1415CFF79E00FDB80F /* more_selected.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3131,7 +3405,6 @@ D34BD72915C13DD40070C209 /* FirstLoginViewController.xib in Resources */, D34BD72A15C13DD40070C209 /* HistoryDetailsViewController.xib in Resources */, D34BD72B15C13DD40070C209 /* HistoryViewController.xib in Resources */, - D34BD72C15C13DD40070C209 /* InCallViewController-ipad.xib in Resources */, D34BD72D15C13DD40070C209 /* InCallViewController.xib in Resources */, D34BD72E15C13DD40070C209 /* IncomingCallViewController.xib in Resources */, D34BD72F15C13DD40070C209 /* LinphoneApp.xib in Resources */, @@ -3198,7 +3471,6 @@ D34BD66015C13DB60070C209 /* conference_over_landscape.png in Resources */, D34BD66115C13DB60070C209 /* contact_back_default.png in Resources */, D34BD66215C13DB60070C209 /* contact_back_over.png in Resources */, - D34BD66315C13DB60070C209 /* contact_bar_background.png in Resources */, D34BD66415C13DB60070C209 /* contact_cancel_default.png in Resources */, D34BD66515C13DB60070C209 /* contact_cancel_over.png in Resources */, D34BD66615C13DB60070C209 /* contact_edit_default.png in Resources */, @@ -3261,9 +3533,6 @@ D34BD69F15C13DB70070C209 /* led_disconnected.png in Resources */, D34BD6A015C13DB70070C209 /* led_error.png in Resources */, D34BD6A115C13DB70070C209 /* led_inprogress.png in Resources */, - D34BD6A215C13DB70070C209 /* (null) in Resources */, - D34BD6A415C13DB70070C209 /* (null) in Resources */, - D34BD6A515C13DB70070C209 /* (null) in Resources */, D34BD6A615C13DB70070C209 /* linphonerc in Resources */, D34BD6A715C13DB70070C209 /* linphonerc-ipad in Resources */, D34BD6A815C13DB70070C209 /* list_delete_default.png in Resources */, @@ -3391,10 +3660,17 @@ D34BD72215C13DB70070C209 /* video_on_over_landscape.png in Resources */, D34BD74015C13E110070C209 /* InAppSettings.bundle in Resources */, D34BD74115C13E250070C209 /* Localizable.strings in Resources */, - D34BD74215C13E350070C209 /* untitled.plist in Resources */, D34BD74315C13ED70070C209 /* DialerViewController.xib in Resources */, - D3B82A0315C18A710036C93E /* history_details_bar_background.png in Resources */, - D3B82A0515C18A710036C93E /* settings_bar_background.png in Resources */, + D3A74E5A15C68162001500B9 /* toolsbar_background.png in Resources */, + D3A74ED915C69392001500B9 /* chat_over~ipad.png in Resources */, + D3A74EDF15C69392001500B9 /* conference_default~ipad.png in Resources */, + D3A74F5C15C6AA0B001500B9 /* chat_field.9.png in Resources */, + D3A74F5F15C6ADA9001500B9 /* chat_field.9@x2.png in Resources */, + D306BC0D15CFF79E00FDB80F /* castel_icon_57.png in Resources */, + D306BC0F15CFF79E00FDB80F /* castel_icon_72.png in Resources */, + D306BC1115CFF79E00FDB80F /* more_default.png in Resources */, + D306BC1315CFF79E00FDB80F /* more_over.png in Resources */, + D306BC1515CFF79E00FDB80F /* more_selected.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3444,7 +3720,6 @@ D3EA53FD159850E80037DC6B /* LinphoneManager.m in Sources */, D3F26BF115986B73005F9CAB /* IncomingCallViewController.m in Sources */, D31B4B21159876C0002E6C72 /* UICompositeViewController.m in Sources */, - D3F34F351599C354005BE94F /* UIModalViewController.m in Sources */, D31AAF5E159B3919002C6B02 /* InCallTableViewController.m in Sources */, D3211BB0159C4EF10098460B /* UIConferenceHeader.m in Sources */, D32460E6159D9AAD00BA7F3A /* UITransparentView.m in Sources */, @@ -3458,15 +3733,11 @@ D37C639B15AADEF6009D0BAC /* ContactDetailsTableViewController.m in Sources */, D3C6526715AC1A8F0092A874 /* UIEditableTableViewCell.m in Sources */, D378906515AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */, - D378907515AC448A00BD776C /* UIView+ModalStack.m in Sources */, D3E8F68615ADE05B0065A226 /* UIContactDetailsFooter.m in Sources */, C90FAA7915AF54E6002091CB /* HistoryDetailsViewController.m in Sources */, - D3F9A9E215AF100D0045320F /* TPKeyboardAvoidingScrollView.m in Sources */, - D3F9A9E415AF100D0045320F /* TPKeyboardAvoidingTableView.m in Sources */, D3F9A9EE15AF277E0045320F /* UACellBackgroundView.m in Sources */, D35860D615B549B500513429 /* Utils.m in Sources */, D3F7998115BD32370018C273 /* TPMultiLayoutViewController.m in Sources */, - D34BD61015C136D70070C209 /* GDataXMLNode.m in Sources */, D3807FBF15C28940005BE9BC /* DCRoundSwitch.m in Sources */, D3807FC115C28940005BE9BC /* DCRoundSwitchKnobLayer.m in Sources */, D3807FC315C28940005BE9BC /* DCRoundSwitchOutlineLayer.m in Sources */, @@ -3487,6 +3758,7 @@ D380800215C2894A005BE9BC /* IASKTextField.m in Sources */, D380800515C28A7A005BE9BC /* UILinphone.m in Sources */, D380801315C299D0005BE9BC /* ColorSpaceUtilites.m in Sources */, + D306BC0515CFF2A000FDB80F /* GDataXMLNode.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3533,7 +3805,6 @@ D3EA53FE159850E80037DC6B /* LinphoneManager.m in Sources */, D3F26BF215986B73005F9CAB /* IncomingCallViewController.m in Sources */, D31B4B22159876C0002E6C72 /* UICompositeViewController.m in Sources */, - D3F34F361599C354005BE94F /* UIModalViewController.m in Sources */, D31AAF5F159B3919002C6B02 /* InCallTableViewController.m in Sources */, D3211BB1159C4EF10098460B /* UIConferenceHeader.m in Sources */, D32460E7159D9AAD00BA7F3A /* UITransparentView.m in Sources */, @@ -3547,15 +3818,11 @@ D37C639C15AADEF6009D0BAC /* ContactDetailsTableViewController.m in Sources */, D3C6526815AC1A8F0092A874 /* UIEditableTableViewCell.m in Sources */, D378906615AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */, - D378907615AC448A00BD776C /* UIView+ModalStack.m in Sources */, D3E8F68715ADE05B0065A226 /* UIContactDetailsFooter.m in Sources */, C90FAA7A15AF54E6002091CB /* HistoryDetailsViewController.m in Sources */, - D3F9A9E315AF100D0045320F /* TPKeyboardAvoidingScrollView.m in Sources */, - D3F9A9E515AF100D0045320F /* TPKeyboardAvoidingTableView.m in Sources */, D3F9A9EF15AF277E0045320F /* UACellBackgroundView.m in Sources */, D35860D715B549B500513429 /* Utils.m in Sources */, D3F7998215BD32370018C273 /* TPMultiLayoutViewController.m in Sources */, - D34BD61115C136D70070C209 /* GDataXMLNode.m in Sources */, D3807FC015C28940005BE9BC /* DCRoundSwitch.m in Sources */, D3807FC215C28940005BE9BC /* DCRoundSwitchKnobLayer.m in Sources */, D3807FC415C28940005BE9BC /* DCRoundSwitchOutlineLayer.m in Sources */, @@ -3576,12 +3843,23 @@ D380800315C2894A005BE9BC /* IASKTextField.m in Sources */, D380800615C28A7A005BE9BC /* UILinphone.m in Sources */, D380801415C299D0005BE9BC /* ColorSpaceUtilites.m in Sources */, + D306BC0615CFF2A100FDB80F /* GDataXMLNode.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + D3554ED515CA79B900478841 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = libXMLRPC; + targetProxy = D3554ED415CA79B900478841 /* PBXContainerItemProxy */; + }; + D3554ED715CA79C000478841 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = libXMLRPC; + targetProxy = D3554ED615CA79C000478841 /* PBXContainerItemProxy */; + }; D3B90E1B15C2CBC800F64F8C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = NinePatch; @@ -3610,12 +3888,9 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", - armv6, - ); COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; + GCC_C_LANGUAGE_STANDARD = c99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -3626,8 +3901,6 @@ HAVE_X264, HAVE_SILK, ); - GCC_THUMB_SUPPORT = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( submodules/linphone/coreapi, submodules/linphone/mediastreamer2/include, @@ -3638,44 +3911,51 @@ submodules/externals/exosip/include, submodules/externals/speex/include, classes/Utils/NinePatch/, + classes/Utils/XMLRPC/, /usr/include/libxml2, ); INFOPLIST_FILE = "linphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 4.0; LIBRARY_SEARCH_PATHS = ( "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", ); + LINK_WITH_STANDARD_LIBRARIES = YES; ORDER_FILE = ""; OTHER_LDFLAGS = ( "-force_load", "$(BUILT_PRODUCTS_DIR)/libNinePatch.a", + "-force_load", + "$(BUILT_PRODUCTS_DIR)/libXMLRPC.a", "-Objc", "-lxml2", ); PRODUCT_NAME = castel; SDKROOT = iphoneos; SKIP_INSTALL = NO; - STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 1; }; name = Debug; }; 228B19A61302902F00F154D3 /* DistributionAdhoc */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); CODE_SIGN_IDENTITY = "iPhone Distribution: jehan monnier"; - GCC_C_LANGUAGE_STANDARD = c99; + GCC_THUMB_SUPPORT = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ""; - IPHONEOS_DEPLOYMENT_TARGET = 3.1; + IPHONEOS_DEPLOYMENT_TARGET = 4.0; LIBRARY_SEARCH_PATHS = ""; - LINK_WITH_STANDARD_LIBRARIES = YES; PROVISIONING_PROFILE = "B8ED8915-B69D-40DA-9B89-1700C44B156B"; SDKROOT = iphoneos; + STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = DistributionAdhoc; }; @@ -3683,14 +3963,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", - armv6, - ); - CODE_SIGN_ENTITLEMENTS = untitled.plist; - CODE_SIGN_IDENTITY = "iPhone Distribution: jehan monnier"; + CODE_SIGN_ENTITLEMENTS = ""; COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; + GCC_C_LANGUAGE_STANDARD = c99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = s; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -3701,8 +3977,6 @@ HAVE_X264, HAVE_SILK, ); - GCC_THUMB_SUPPORT = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( submodules/linphone/coreapi, submodules/linphone/mediastreamer2/include, @@ -3713,28 +3987,28 @@ submodules/externals/exosip/include, submodules/externals/speex/include, classes/Utils/NinePatch/, + classes/Utils/XMLRPC/, /usr/include/libxml2, ); INFOPLIST_FILE = "linphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 4.0; LIBRARY_SEARCH_PATHS = ( "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", ); + LINK_WITH_STANDARD_LIBRARIES = YES; ORDER_FILE = ""; OTHER_LDFLAGS = ( "-force_load", "$(BUILT_PRODUCTS_DIR)/libNinePatch.a", + "-force_load", + "$(BUILT_PRODUCTS_DIR)/libXMLRPC.a", "-Objc", "-lxml2", ); PRODUCT_NAME = castel; - PROVISIONING_PROFILE = "FF266D15-2709-4CF8-8B8E-C919C6A9F57B"; - SDKROOT = iphoneos; SKIP_INSTALL = NO; - STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 1; }; name = DistributionAdhoc; }; @@ -3742,13 +4016,9 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", - armv6, - ); - CODE_SIGN_IDENTITY = "iPhone Developer"; COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; + GCC_C_LANGUAGE_STANDARD = c99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -3757,8 +4027,6 @@ IN_LINPHONE, VIDEO_ENABLED, ); - GCC_THUMB_SUPPORT = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( submodules/linphone/coreapi, submodules/linphone/mediastreamer2/include, @@ -3769,27 +4037,28 @@ submodules/externals/exosip/include, submodules/externals/speex/include, classes/Utils/NinePatch/, + classes/Utils/XMLRPC/, /usr/include/libxml2, ); INFOPLIST_FILE = "linphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 4.0; LIBRARY_SEARCH_PATHS = ( "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", ); + LINK_WITH_STANDARD_LIBRARIES = YES; ORDER_FILE = ""; OTHER_LDFLAGS = ( "-force_load", "$(BUILT_PRODUCTS_DIR)/libNinePatch.a", + "-force_load", + "$(BUILT_PRODUCTS_DIR)/libXMLRPC.a", "-Objc", "-lxml2", ); PRODUCT_NAME = "castel-no-gpl-thirdparties"; - PROVISIONING_PROFILE = ""; - SDKROOT = iphoneos; - STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; - TARGETED_DEVICE_FAMILY = "1,2"; + SKIP_INSTALL = NO; + TARGETED_DEVICE_FAMILY = 1; }; name = Debug; }; @@ -3797,13 +4066,9 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", - armv6, - ); - CODE_SIGN_IDENTITY = "iPhone Developer"; COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; + GCC_C_LANGUAGE_STANDARD = c99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = s; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -3812,8 +4077,6 @@ IN_LINPHONE, VIDEO_ENABLED, ); - GCC_THUMB_SUPPORT = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( submodules/linphone/coreapi, submodules/linphone/mediastreamer2/include, @@ -3824,28 +4087,28 @@ submodules/externals/exosip/include, submodules/externals/speex/include, classes/Utils/NinePatch/, + classes/Utils/XMLRPC/, /usr/include/libxml2, - NinePatch, ); INFOPLIST_FILE = "linphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 4.0; LIBRARY_SEARCH_PATHS = ( "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", ); + LINK_WITH_STANDARD_LIBRARIES = YES; ORDER_FILE = ""; OTHER_LDFLAGS = ( "-force_load", "$(BUILT_PRODUCTS_DIR)/libNinePatch.a", + "-force_load", + "$(BUILT_PRODUCTS_DIR)/libXMLRPC.a", "-Objc", "-lxml2", ); PRODUCT_NAME = "castel-no-gpl-thirdparties"; - PROVISIONING_PROFILE = ""; - SDKROOT = iphoneos; - STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; - TARGETED_DEVICE_FAMILY = "1,2"; + SKIP_INSTALL = NO; + TARGETED_DEVICE_FAMILY = 1; }; name = Release; }; @@ -3853,14 +4116,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", - armv6, - ); - CODE_SIGN_ENTITLEMENTS = untitled.plist; - CODE_SIGN_IDENTITY = "iPhone Distribution: jehan monnier"; + CODE_SIGN_ENTITLEMENTS = ""; COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; + GCC_C_LANGUAGE_STANDARD = c99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = s; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -3869,8 +4128,6 @@ IN_LINPHONE, VIDEO_ENABLED, ); - GCC_THUMB_SUPPORT = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( submodules/linphone/coreapi, submodules/linphone/mediastreamer2/include, @@ -3881,27 +4138,28 @@ submodules/externals/exosip/include, submodules/externals/speex/include, classes/Utils/NinePatch/, + classes/Utils/XMLRPC/, /usr/include/libxml2, ); INFOPLIST_FILE = "linphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 4.0; LIBRARY_SEARCH_PATHS = ( "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", ); + LINK_WITH_STANDARD_LIBRARIES = YES; ORDER_FILE = ""; OTHER_LDFLAGS = ( "-force_load", "$(BUILT_PRODUCTS_DIR)/libNinePatch.a", + "-force_load", + "$(BUILT_PRODUCTS_DIR)/libXMLRPC.a", "-Objc", "-lxml2", ); PRODUCT_NAME = "castel-no-gpl-thirdparties"; - PROVISIONING_PROFILE = "075921BC-C7D8-42E1-B864-F05FD9BF841C"; - SDKROOT = iphoneos; - STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; - TARGETED_DEVICE_FAMILY = "1,2"; + SKIP_INSTALL = NO; + TARGETED_DEVICE_FAMILY = 1; }; name = Distribution; }; @@ -3909,14 +4167,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", - armv6, - ); - CODE_SIGN_ENTITLEMENTS = untitled.plist; - CODE_SIGN_IDENTITY = "iPhone Distribution: jehan monnier"; + CODE_SIGN_ENTITLEMENTS = ""; COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; + GCC_C_LANGUAGE_STANDARD = c99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = s; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -3925,8 +4179,6 @@ IN_LINPHONE, VIDEO_ENABLED, ); - GCC_THUMB_SUPPORT = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( submodules/linphone/coreapi, submodules/linphone/mediastreamer2/include, @@ -3937,44 +4189,50 @@ submodules/externals/exosip/include, submodules/externals/speex/include, classes/Utils/NinePatch/, + classes/Utils/XMLRPC/, /usr/include/libxml2, ); INFOPLIST_FILE = "linphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 4.0; LIBRARY_SEARCH_PATHS = ( "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", ); + LINK_WITH_STANDARD_LIBRARIES = YES; ORDER_FILE = ""; OTHER_LDFLAGS = ( "-force_load", "$(BUILT_PRODUCTS_DIR)/libNinePatch.a", + "-force_load", + "$(BUILT_PRODUCTS_DIR)/libXMLRPC.a", "-Objc", "-lxml2", ); PRODUCT_NAME = "castel-no-gpl-thirdparties"; - PROVISIONING_PROFILE = "7EBE410C-11B9-4346-9977-2C3BEE43ED16"; - SDKROOT = iphoneos; - STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; - TARGETED_DEVICE_FAMILY = "1,2"; + SKIP_INSTALL = NO; + TARGETED_DEVICE_FAMILY = 1; }; name = DistributionAdhoc; }; 22F3D55513CC3C9100A0DA02 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); CODE_SIGN_IDENTITY = "iPhone Developer"; - GCC_C_LANGUAGE_STANDARD = c99; + GCC_THUMB_SUPPORT = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ""; - IPHONEOS_DEPLOYMENT_TARGET = 3.1; + IPHONEOS_DEPLOYMENT_TARGET = 4.0; LIBRARY_SEARCH_PATHS = ""; - LINK_WITH_STANDARD_LIBRARIES = YES; PROVISIONING_PROFILE = ""; SDKROOT = iphoneos; + STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; }; @@ -3982,13 +4240,9 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", - armv6, - ); - CODE_SIGN_IDENTITY = "iPhone Developer"; COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; + GCC_C_LANGUAGE_STANDARD = c99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = s; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -3999,8 +4253,6 @@ HAVE_X264, HAVE_SILK, ); - GCC_THUMB_SUPPORT = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( submodules/linphone/coreapi, submodules/linphone/mediastreamer2/include, @@ -4011,45 +4263,50 @@ submodules/externals/exosip/include, submodules/externals/speex/include, classes/Utils/NinePatch/, + classes/Utils/XMLRPC/, /usr/include/libxml2, ); INFOPLIST_FILE = "linphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 4.0; LIBRARY_SEARCH_PATHS = ( "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", ); + LINK_WITH_STANDARD_LIBRARIES = YES; ORDER_FILE = ""; OTHER_LDFLAGS = ( "-force_load", "$(BUILT_PRODUCTS_DIR)/libNinePatch.a", + "-force_load", + "$(BUILT_PRODUCTS_DIR)/libXMLRPC.a", "-Objc", "-lxml2", ); PRODUCT_NAME = castel; - PROVISIONING_PROFILE = ""; - SDKROOT = iphoneos; SKIP_INSTALL = NO; - STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 1; }; name = Release; }; 22F51EE7107FA53D00F98953 /* Distribution */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); CODE_SIGN_IDENTITY = "iPhone Distribution: jehan monnier"; - GCC_C_LANGUAGE_STANDARD = c99; + GCC_THUMB_SUPPORT = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ""; - IPHONEOS_DEPLOYMENT_TARGET = 3.1; + IPHONEOS_DEPLOYMENT_TARGET = 4.0; LIBRARY_SEARCH_PATHS = ""; - LINK_WITH_STANDARD_LIBRARIES = YES; PROVISIONING_PROFILE = "075921BC-C7D8-42E1-B864-F05FD9BF841C"; SDKROOT = iphoneos; + STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Distribution; }; @@ -4057,13 +4314,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", - armv6, - ); - CODE_SIGN_ENTITLEMENTS = untitled.plist; + CODE_SIGN_ENTITLEMENTS = ""; COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; + GCC_C_LANGUAGE_STANDARD = c99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = s; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -4074,8 +4328,6 @@ HAVE_X264, HAVE_SILK, ); - GCC_THUMB_SUPPORT = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( submodules/linphone/coreapi, submodules/linphone/mediastreamer2/include, @@ -4086,44 +4338,50 @@ submodules/externals/exosip/include, submodules/externals/speex/include, classes/Utils/NinePatch/, + classes/Utils/XMLRPC/, /usr/include/libxml2, ); INFOPLIST_FILE = "linphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 4.0; LIBRARY_SEARCH_PATHS = ( "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", ); + LINK_WITH_STANDARD_LIBRARIES = YES; ORDER_FILE = ""; OTHER_LDFLAGS = ( "-force_load", "$(BUILT_PRODUCTS_DIR)/libNinePatch.a", + "-force_load", + "$(BUILT_PRODUCTS_DIR)/libXMLRPC.a", "-Objc", "-lxml2", ); PRODUCT_NAME = castel; - SDKROOT = iphoneos; SKIP_INSTALL = NO; - STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = 1; }; name = Distribution; }; C01FCF4F08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); CODE_SIGN_IDENTITY = "iPhone Developer"; - GCC_C_LANGUAGE_STANDARD = c99; + GCC_THUMB_SUPPORT = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ""; - IPHONEOS_DEPLOYMENT_TARGET = 3.1; + IPHONEOS_DEPLOYMENT_TARGET = 4.0; LIBRARY_SEARCH_PATHS = ""; - LINK_WITH_STANDARD_LIBRARIES = YES; PROVISIONING_PROFILE = ""; SDKROOT = iphoneos; + STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; diff --git a/main.m b/main.m index ecec28813..1535f7764 100644 --- a/main.m +++ b/main.m @@ -25,4 +25,3 @@ int main(int argc, char *argv[]) { [pool release]; return retVal; } - diff --git a/submodules/linphone b/submodules/linphone index 771cff425..e6ef8b45a 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 771cff42526e5758e1a16f1faf1bcc87549a7f96 +Subproject commit e6ef8b45a4d109f06b452276061303c0e2173dda