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
- IBUIView
- IBUIImageView
IBProxyObject
- IBUILabel
- IBUITextField
- IBUITableViewController
- IBUITableView
IBUIButton
+ IBUIImageView
+ IBUILabel
+ IBUITableView
+ IBUITableViewController
+ IBUITextField
+ IBUIView
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
@@ -44,6 +44,21 @@
290
+
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
+
+
+
+ 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
+
+
+ 67239488
+ 2048
+ Text Cell
+
+
+
+ 6
+ System
+ controlBackgroundColor
+
+
+
+
+
+
+
+ value
+ 331
+ 40
+ 1000
+
+
+ 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
+
+
+ 67239488
+ 2048
+ Text Cell
+
+
+
+ 6
+ System
+ controlBackgroundColor
+
+
+
+ 6
+ System
+ controlTextColor
+
+
+
+ 3
+ YES
+
+
+
+ value
+ 319
+ 40
+ 1000
+
+
+ 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