forked from mirrors/linphone-iphone
Merge branch 'new_ui' of git://git.linphone.org/linphone-iphone into castel
Conflicts: linphone.xcodeproj/project.pbxproj
This commit is contained in:
commit
022ef3235e
24 changed files with 393 additions and 472 deletions
35
Classes/ContactDetailsImagePickerController.h
Normal file
35
Classes/ContactDetailsImagePickerController.h
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
/* ContactDetailsImagePickerController.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 "UICompositeViewController.h"
|
||||
|
||||
@protocol ContactDetailsImagePickerDelegate <NSObject>
|
||||
|
||||
- (void)changeContactImage:(UIImage*)image;
|
||||
|
||||
@end
|
||||
|
||||
@interface ContactDetailsImagePickerController : UIImagePickerController <UICompositeViewDelegate, UINavigationControllerDelegate, UIImagePickerControllerDelegate> {
|
||||
@private
|
||||
id<ContactDetailsImagePickerDelegate> imagePickerDelegate;
|
||||
}
|
||||
|
||||
@property (nonatomic, retain) id<ContactDetailsImagePickerDelegate> imagePickerDelegate;
|
||||
|
||||
@end
|
||||
82
Classes/ContactDetailsImagePickerController.m
Normal file
82
Classes/ContactDetailsImagePickerController.m
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
/* ContactDetailsImagePickerController.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 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 "ContactDetailsImagePickerController.h"
|
||||
#import "PhoneMainView.h"
|
||||
|
||||
@implementation ContactDetailsImagePickerController
|
||||
|
||||
@synthesize imagePickerDelegate;
|
||||
|
||||
|
||||
#pragma mark - UICompositeViewDelegate Functions
|
||||
|
||||
static UICompositeViewDescription *compositeDescription = nil;
|
||||
|
||||
+ (UICompositeViewDescription *)compositeViewDescription {
|
||||
if(compositeDescription == nil) {
|
||||
compositeDescription = [[UICompositeViewDescription alloc] init:@"ContactDetailsImage"
|
||||
content:@"ContactDetailsImagePickerController"
|
||||
stateBar:nil
|
||||
stateBarEnabled:false
|
||||
tabBar:@"UIMainBar"
|
||||
tabBarEnabled:true
|
||||
fullscreen:false
|
||||
landscapeMode:[LinphoneManager runningOnIpad]
|
||||
portraitMode:true];
|
||||
}
|
||||
return compositeDescription;
|
||||
}
|
||||
|
||||
|
||||
#pragma mark - ViewController Functions
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
[self setDelegate:self];
|
||||
}
|
||||
|
||||
|
||||
#pragma mark -
|
||||
|
||||
- (void)dismiss {
|
||||
if([[[PhoneMainView instance] currentView] equal:[ContactDetailsImagePickerController compositeViewDescription]]) {
|
||||
[[PhoneMainView instance] popCurrentView];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#pragma mark - UIImagePickerControllerDelegate Functions
|
||||
|
||||
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
|
||||
UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
|
||||
if(image == nil) {
|
||||
image = [info objectForKey:UIImagePickerControllerOriginalImage];
|
||||
}
|
||||
if(image != nil) {
|
||||
[imagePickerDelegate changeContactImage:image];
|
||||
}
|
||||
[self dismiss];
|
||||
}
|
||||
|
||||
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
|
||||
[self dismiss];
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
@ -64,7 +64,7 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
tabBar:@"UIMainBar"
|
||||
tabBarEnabled:true
|
||||
fullscreen:false
|
||||
landscapeMode:true
|
||||
landscapeMode:[LinphoneManager runningOnIpad]
|
||||
portraitMode:true];
|
||||
}
|
||||
return compositeDescription;
|
||||
|
|
@ -79,6 +79,7 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
#pragma mark - Property Functions
|
||||
|
||||
- (void)setDataList:(NSDictionary *)adatalist {
|
||||
|
|
|
|||
|
|
@ -500,7 +500,7 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C
|
|||
/* MODIFICATION disable chat
|
||||
} else {
|
||||
// Go to Chat room view
|
||||
[[PhoneMainView instance] popToView:[ChatViewController compositeViewDescription]];
|
||||
[[PhoneMainView instance] popToView:[ChatViewController compositeViewDescription]]; // Got to Chat and push ChatRoom
|
||||
ChatRoomViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ChatRoomViewController compositeViewDescription] push:TRUE], ChatRoomViewController);
|
||||
if(controller != nil) {
|
||||
[controller setRemoteAddress:dest];
|
||||
|
|
|
|||
|
|
@ -82,22 +82,30 @@ int __aeabi_idiv(int a, int b) {
|
|||
}
|
||||
}
|
||||
|
||||
- (void)applicationDidEnterBackground:(UIApplication *)application{
|
||||
[LinphoneLogger logc:LinphoneLoggerLog format:"applicationDidEnterBackground"];
|
||||
if(![LinphoneManager isLcReady]) return;
|
||||
[[LinphoneManager instance] enterBackgroundMode];
|
||||
}
|
||||
|
||||
- (void)applicationWillResignActive:(UIApplication *)application {
|
||||
[LinphoneLogger logc:LinphoneLoggerLog format:"applicationWillResignActive"];
|
||||
if(![LinphoneManager isLcReady]) return;
|
||||
LinphoneCore* lc = [LinphoneManager getLc];
|
||||
LinphoneCall* call = linphone_core_get_current_call(lc);
|
||||
if (call == NULL)
|
||||
return;
|
||||
|
||||
|
||||
if (call){
|
||||
/* save call context */
|
||||
LinphoneManager* instance = [LinphoneManager instance];
|
||||
instance->currentCallContextBeforeGoingBackground.call = call;
|
||||
instance->currentCallContextBeforeGoingBackground.cameraIsEnabled = linphone_call_camera_enabled(call);
|
||||
|
||||
/* save call context */
|
||||
LinphoneManager* instance = [LinphoneManager instance];
|
||||
instance->currentCallContextBeforeGoingBackground.call = call;
|
||||
instance->currentCallContextBeforeGoingBackground.cameraIsEnabled = linphone_call_camera_enabled(call);
|
||||
|
||||
const LinphoneCallParams* params = linphone_call_get_current_params(call);
|
||||
if (linphone_call_params_video_enabled(params)) {
|
||||
linphone_call_enable_camera(call, false);
|
||||
}
|
||||
const LinphoneCallParams* params = linphone_call_get_current_params(call);
|
||||
if (linphone_call_params_video_enabled(params)) {
|
||||
linphone_call_enable_camera(call, false);
|
||||
}
|
||||
}
|
||||
|
||||
if (![[LinphoneManager instance] resignActive]) {
|
||||
// destroying eventHandler if app cannot go in background.
|
||||
|
|
@ -111,7 +119,8 @@ int __aeabi_idiv(int a, int b) {
|
|||
|
||||
}
|
||||
|
||||
- (void)applicationDidBecomeActive:(UIApplication *)application {
|
||||
- (void)applicationDidBecomeActive:(UIApplication *)application {
|
||||
[LinphoneLogger logc:LinphoneLoggerLog format:"applicationDidBecomeActive"];
|
||||
[self startApplication];
|
||||
|
||||
[[LinphoneManager instance] becomeActive];
|
||||
|
|
@ -121,19 +130,19 @@ int __aeabi_idiv(int a, int b) {
|
|||
|
||||
LinphoneCore* lc = [LinphoneManager getLc];
|
||||
LinphoneCall* call = linphone_core_get_current_call(lc);
|
||||
if (call == NULL)
|
||||
return;
|
||||
|
||||
LinphoneManager* instance = [LinphoneManager instance];
|
||||
if (call == instance->currentCallContextBeforeGoingBackground.call) {
|
||||
const LinphoneCallParams* params = linphone_call_get_current_params(call);
|
||||
if (linphone_call_params_video_enabled(params)) {
|
||||
linphone_call_enable_camera(
|
||||
if (call){
|
||||
LinphoneManager* instance = [LinphoneManager instance];
|
||||
if (call == instance->currentCallContextBeforeGoingBackground.call) {
|
||||
const LinphoneCallParams* params = linphone_call_get_current_params(call);
|
||||
if (linphone_call_params_video_enabled(params)) {
|
||||
linphone_call_enable_camera(
|
||||
call,
|
||||
instance->currentCallContextBeforeGoingBackground.cameraIsEnabled);
|
||||
}
|
||||
instance->currentCallContextBeforeGoingBackground.call = 0;
|
||||
}
|
||||
}
|
||||
instance->currentCallContextBeforeGoingBackground.call = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -185,6 +194,20 @@ int __aeabi_idiv(int a, int b) {
|
|||
- (void)applicationWillTerminate:(UIApplication *)application {
|
||||
}
|
||||
|
||||
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
|
||||
[self startApplication];
|
||||
if([LinphoneManager isLcReady]) {
|
||||
if([[url scheme] isEqualToString:@"sip"]) {
|
||||
// Go to ChatRoom view
|
||||
DialerViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[DialerViewController compositeViewDescription]], DialerViewController);
|
||||
if(controller != nil) {
|
||||
[controller setAddress:[url absoluteString]];
|
||||
}
|
||||
}
|
||||
}
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
|
||||
[LinphoneLogger log:LinphoneLoggerDebug format:@"PushNotification: Receive %@", userInfo];
|
||||
NSDictionary *aps = [userInfo objectForKey:@"aps"];
|
||||
|
|
|
|||
|
|
@ -362,7 +362,8 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
|
|||
for(int i = 0; i < [tokenData length]; ++i) {
|
||||
[tokenString appendFormat:@"%02X", (unsigned int)tokenBuffer[i]];
|
||||
}
|
||||
// NSLocalizedString(@"IC_MSG", nil); // Fake
|
||||
// NSLocalizedString(@"IC_MSG", nil); // Fake for genstrings
|
||||
// NSLocalizedString(@"IM_MSG", nil); // Fake for genstrings
|
||||
NSString *params = [NSString stringWithFormat:@"APN-TOK=%@;APN-MSG=IM_MSG;APN-CAL=IC_MSG;APN-CAL-SND=ring.caf;APN-MSG-SND=msg.caf", tokenString];
|
||||
linphone_proxy_config_set_contact_parameters(proxyCfg, [params UTF8String]);
|
||||
}
|
||||
|
|
@ -376,9 +377,9 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
|
|||
}
|
||||
|
||||
- (BOOL)synchronize {
|
||||
if (![LinphoneManager isLcReady]) return YES;
|
||||
LinphoneCore *lc=[LinphoneManager getLc];
|
||||
|
||||
if (lc==NULL) return YES;
|
||||
BOOL account_changed;
|
||||
|
||||
account_changed=[self valueChangedForKey:@"username_preference"]
|
||||
|
|
|
|||
|
|
@ -108,6 +108,7 @@ typedef struct _LinphoneManagerSounds {
|
|||
- (void)destroyLibLinphone;
|
||||
- (BOOL)resignActive;
|
||||
- (void)becomeActive;
|
||||
- (BOOL)enterBackgroundMode;
|
||||
|
||||
+ (void)kickOffNetworkConnection;
|
||||
- (void)setupNetworkReachabilityCallback;
|
||||
|
|
|
|||
|
|
@ -712,7 +712,8 @@ static LinphoneCoreVTable linphonec_vtable = {
|
|||
else
|
||||
ms_set_cpu_count(1);
|
||||
|
||||
settingsStore = [[LinphoneCoreSettingsStore alloc] init];
|
||||
if (!settingsStore)
|
||||
settingsStore = [[LinphoneCoreSettingsStore alloc] init];
|
||||
|
||||
[LinphoneLogger logc:LinphoneLoggerWarning format:"Linphone [%s] started on [%s]"
|
||||
,linphone_core_get_version()
|
||||
|
|
@ -730,10 +731,12 @@ static LinphoneCoreVTable linphonec_vtable = {
|
|||
[mIterateTimer invalidate];
|
||||
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
|
||||
[audioSession setDelegate:nil];
|
||||
#if 0
|
||||
if (settingsStore != nil) {
|
||||
[settingsStore release];
|
||||
settingsStore = nil;
|
||||
}
|
||||
#endif
|
||||
if (theLinphoneCore != nil) { //just in case application terminate before linphone core initialization
|
||||
[LinphoneLogger logc:LinphoneLoggerLog format:"Destroy linphonecore"];
|
||||
linphone_core_destroy(theLinphoneCore);
|
||||
|
|
@ -749,19 +752,19 @@ static LinphoneCoreVTable linphonec_vtable = {
|
|||
- (BOOL)resignActive {
|
||||
if ([[LinphoneManager instance] settingsStore] != Nil)
|
||||
[[[LinphoneManager instance] settingsStore] synchronize];
|
||||
return [self enterBackgroundMode];
|
||||
linphone_core_stop_dtmf_stream(theLinphoneCore);
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (BOOL)enterBackgroundMode {
|
||||
LinphoneProxyConfig* proxyCfg;
|
||||
linphone_core_get_default_proxy(theLinphoneCore, &proxyCfg);
|
||||
linphone_core_stop_dtmf_stream(theLinphoneCore);
|
||||
|
||||
if (proxyCfg && [settingsStore boolForKey:@"backgroundmode_preference"]) {
|
||||
|
||||
if (proxyCfg && [[NSUserDefaults standardUserDefaults] boolForKey:@"backgroundmode_preference"]) {
|
||||
//For registration register
|
||||
linphone_core_refresh_registers(theLinphoneCore);
|
||||
|
||||
|
||||
//wait for registration answer
|
||||
int i=0;
|
||||
while (!linphone_proxy_config_is_registered(proxyCfg) && i++<40 ) {
|
||||
|
|
|
|||
|
|
@ -20,9 +20,6 @@
|
|||
#import "UICallBar.h"
|
||||
#import "LinphoneManager.h"
|
||||
#import "PhoneMainView.h"
|
||||
|
||||
#import "CPAnimationSequence.h"
|
||||
#import "CPAnimationStep.h"
|
||||
#import "Utils.h"
|
||||
|
||||
#include "linphonecore.h"
|
||||
|
|
@ -340,29 +337,55 @@
|
|||
}
|
||||
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark -
|
||||
|
||||
- (void)showAnimation:(NSString*)animationID target:(UIView*)target completion:(void (^)(BOOL finished))completion {
|
||||
CGRect frame = [target frame];
|
||||
int original_y = frame.origin.y;
|
||||
frame.origin.y = [[self view] frame].size.height;
|
||||
[target setFrame:frame];
|
||||
[target setHidden:FALSE];
|
||||
[UIView animateWithDuration:0.5
|
||||
delay:0.0
|
||||
options:UIViewAnimationOptionCurveEaseOut
|
||||
animations:^{
|
||||
CGRect frame = [target frame];
|
||||
frame.origin.y = original_y;
|
||||
[target setFrame:frame];
|
||||
}
|
||||
completion:^(BOOL finished){
|
||||
CGRect frame = [target frame];
|
||||
frame.origin.y = original_y;
|
||||
[target setFrame:frame];
|
||||
completion(finished);
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)hideAnimation:(NSString*)animationID target:(UIView*)target completion:(void (^)(BOOL finished))completion {
|
||||
CGRect frame = [target frame];
|
||||
int original_y = frame.origin.y;
|
||||
[UIView animateWithDuration:0.5
|
||||
delay:0.0
|
||||
options:UIViewAnimationOptionCurveEaseIn
|
||||
animations:^{
|
||||
CGRect frame = [target frame];
|
||||
frame.origin.y = [[self view] frame].size.height;
|
||||
[target setFrame:frame];
|
||||
}
|
||||
completion:^(BOOL finished){
|
||||
CGRect frame = [target frame];
|
||||
frame.origin.y = original_y;
|
||||
[target setHidden:TRUE];
|
||||
[target setFrame:frame];
|
||||
completion(finished);
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)showPad:(BOOL)animated {
|
||||
[dialerButton setOn];
|
||||
if([padView isHidden]) {
|
||||
if(animated) {
|
||||
CGRect frame = [padView frame];
|
||||
int original_y = frame.origin.y;
|
||||
frame.origin.y = [[self view] frame].size.height;
|
||||
[padView setFrame:frame];
|
||||
[padView setHidden:FALSE];
|
||||
CPAnimationSequence* move = [[CPAnimationSequence sequenceWithSteps:
|
||||
[[CPAnimationStep after:0.0
|
||||
for:0.5
|
||||
options:UIViewAnimationOptionCurveEaseOut
|
||||
animate:^{
|
||||
CGRect frame = [padView frame];
|
||||
frame.origin.y = original_y;
|
||||
[padView setFrame:frame];
|
||||
}] autorelease],
|
||||
nil
|
||||
] autorelease];
|
||||
[move run];
|
||||
[self showAnimation:@"show" target:padView completion:^(BOOL finished){}];
|
||||
} else {
|
||||
[padView setHidden:FALSE];
|
||||
}
|
||||
|
|
@ -373,28 +396,7 @@
|
|||
[dialerButton setOff];
|
||||
if(![padView isHidden]) {
|
||||
if(animated) {
|
||||
CGRect frame = [padView frame];
|
||||
int original_y = frame.origin.y;
|
||||
|
||||
CPAnimationSequence* move = [[CPAnimationSequence sequenceWithSteps:
|
||||
[[CPAnimationStep after:0.0
|
||||
for:0.5
|
||||
options:UIViewAnimationOptionCurveEaseIn
|
||||
animate:^{
|
||||
CGRect frame = [padView frame];
|
||||
frame.origin.y = [[self view] frame].size.height;
|
||||
[padView setFrame:frame];
|
||||
}] autorelease],
|
||||
[[CPAnimationStep after:0.0
|
||||
animate:^{
|
||||
CGRect frame = [padView frame];
|
||||
frame.origin.y = original_y;
|
||||
[padView setHidden:TRUE];
|
||||
[padView setFrame:frame];
|
||||
}] autorelease],
|
||||
nil
|
||||
] autorelease];
|
||||
[move run];
|
||||
[self hideAnimation:@"hide" target:padView completion:^(BOOL finished){}];
|
||||
} else {
|
||||
[padView setHidden:TRUE];
|
||||
}
|
||||
|
|
@ -405,23 +407,7 @@
|
|||
[optionsButton setOn];
|
||||
if([optionsView isHidden]) {
|
||||
if(animated) {
|
||||
CGRect frame = [optionsView frame];
|
||||
int original_y = frame.origin.y;
|
||||
frame.origin.y = [[self view] frame].size.height;
|
||||
[optionsView setFrame:frame];
|
||||
[optionsView setHidden:FALSE];
|
||||
CPAnimationSequence* move = [[CPAnimationSequence sequenceWithSteps:
|
||||
[[CPAnimationStep after:0.0
|
||||
for:0.5
|
||||
options:UIViewAnimationOptionCurveEaseOut
|
||||
animate:^{
|
||||
CGRect frame = [optionsView frame];
|
||||
frame.origin.y = original_y;
|
||||
[optionsView setFrame:frame];
|
||||
}] autorelease],
|
||||
nil
|
||||
] autorelease];
|
||||
[move run];
|
||||
[self showAnimation:@"show" target:optionsView completion:^(BOOL finished){}];
|
||||
} else {
|
||||
[optionsView setHidden:FALSE];
|
||||
}
|
||||
|
|
@ -432,28 +418,7 @@
|
|||
[optionsButton setOff];
|
||||
if(![optionsView isHidden]) {
|
||||
if(animated) {
|
||||
CGRect frame = [optionsView frame];
|
||||
int original_y = frame.origin.y;
|
||||
|
||||
CPAnimationSequence* move = [[CPAnimationSequence sequenceWithSteps:
|
||||
[[CPAnimationStep after:0.0
|
||||
for:0.5
|
||||
options:UIViewAnimationOptionCurveEaseIn
|
||||
animate:^{
|
||||
CGRect frame = [optionsView frame];
|
||||
frame.origin.y = [[self view] frame].size.height;
|
||||
[optionsView setFrame:frame];
|
||||
}] autorelease],
|
||||
[[CPAnimationStep after:0.0
|
||||
animate:^{
|
||||
CGRect frame = [optionsView frame];
|
||||
frame.origin.y = original_y;
|
||||
[optionsView setHidden:TRUE];
|
||||
[optionsView setFrame:frame];
|
||||
}] autorelease],
|
||||
nil
|
||||
] autorelease];
|
||||
[move run];
|
||||
[self hideAnimation:@"hide" target:optionsView completion:^(BOOL finished){}];
|
||||
} else {
|
||||
[optionsView setHidden:TRUE];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,9 +20,10 @@
|
|||
#import <UIKit/UIKit.h>
|
||||
#import <AddressBook/AddressBook.h>
|
||||
|
||||
#import "ContactDetailsImagePickerController.h"
|
||||
#import "ContactDetailsDelegate.h"
|
||||
|
||||
@interface UIContactDetailsHeader : UIViewController<UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate> {
|
||||
@interface UIContactDetailsHeader : UIViewController<UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate, ContactDetailsImagePickerDelegate> {
|
||||
UILabel *addressLabel;
|
||||
UIImageView *avatarImage;
|
||||
UIView *normalView;
|
||||
|
|
@ -45,7 +46,9 @@
|
|||
@property (nonatomic, retain) IBOutlet UITableView *tableView;
|
||||
@property (nonatomic, retain) IBOutlet id<ContactDetailsDelegate> contactDetailsDelegate;
|
||||
|
||||
@property(nonatomic,getter=isEditing) BOOL editing;
|
||||
@property(nonatomic,getter=isEditing) BOOL editing;
|
||||
|
||||
- (IBAction)onAvatarClick:(id)event;
|
||||
|
||||
+ (CGFloat)height:(BOOL)editing;
|
||||
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
#import "UIEditableTableViewCell.h"
|
||||
#import "FastAddressBook.h"
|
||||
#import "UILinphone.h"
|
||||
#import "PhoneMainView.h"
|
||||
|
||||
@implementation UIContactDetailsHeader
|
||||
|
||||
|
|
@ -231,6 +232,40 @@
|
|||
}
|
||||
|
||||
|
||||
#pragma mark - Action Functions
|
||||
|
||||
- (IBAction)onAvatarClick:(id)event {
|
||||
if(self.isEditing) {
|
||||
ContactDetailsImagePickerController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ContactDetailsImagePickerController compositeViewDescription] push:TRUE], ContactDetailsImagePickerController);
|
||||
if(controller != nil) {
|
||||
[controller setAllowsEditing:TRUE];
|
||||
[controller setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
|
||||
[controller setImagePickerDelegate:self];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#pragma mark - ContactDetailsImagePickerDelegate Functions
|
||||
|
||||
- (void)changeContactImage:(UIImage*)image {
|
||||
NSError* error = NULL;
|
||||
if(!ABPersonRemoveImageData(contact, (CFErrorRef*)error)) {
|
||||
[LinphoneLogger log:LinphoneLoggerLog format:@"Can't add entry: %@", [error localizedDescription]];
|
||||
}
|
||||
NSData *dataRef = UIImagePNGRepresentation(image);
|
||||
CFDataRef cfdata = CFDataCreate(NULL,[dataRef bytes], [dataRef length]);
|
||||
|
||||
if(!ABPersonSetImageData(contact, cfdata, (CFErrorRef*)error)) {
|
||||
[LinphoneLogger log:LinphoneLoggerLog format:@"Can't add entry: %@", [error localizedDescription]];
|
||||
}
|
||||
|
||||
CFRelease(cfdata);
|
||||
|
||||
[self update];
|
||||
}
|
||||
|
||||
|
||||
#pragma mark - UITableViewDelegate Functions
|
||||
|
||||
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
</object>
|
||||
<array key="IBDocument.IntegratedClassDependencies">
|
||||
<string>IBProxyObject</string>
|
||||
<string>IBUIButton</string>
|
||||
<string>IBUIImageView</string>
|
||||
<string>IBUILabel</string>
|
||||
<string>IBUITableView</string>
|
||||
|
|
@ -58,7 +59,7 @@
|
|||
<string key="NSFrame">{{20, 6}, {65, 65}}</string>
|
||||
<reference key="NSSuperview" ref="1033790597"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="959860357"/>
|
||||
<reference key="NSNextKeyView" ref="854571707"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<bool key="IBUIUserInteractionEnabled">NO</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
|
|
@ -67,6 +68,40 @@
|
|||
<string key="NSResourceName">avatar_unknown_small.png</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBUIButton" id="854571707">
|
||||
<reference key="NSNextResponder" ref="1033790597"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<string key="NSFrame">{{20, 6}, {65, 65}}</string>
|
||||
<reference key="NSSuperview" ref="1033790597"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="959860357"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<bool key="IBUIOpaque">NO</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<int key="IBUIContentHorizontalAlignment">0</int>
|
||||
<int key="IBUIContentVerticalAlignment">0</int>
|
||||
<object class="NSColor" key="IBUIHighlightedTitleColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MQA</bytes>
|
||||
</object>
|
||||
<object class="NSColor" key="IBUINormalTitleColor">
|
||||
<int key="NSColorSpace">1</int>
|
||||
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
|
||||
</object>
|
||||
<object class="NSColor" key="IBUINormalTitleShadowColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MC41AA</bytes>
|
||||
</object>
|
||||
<object class="IBUIFontDescription" key="IBUIFontDescription">
|
||||
<int key="type">2</int>
|
||||
<double key="pointSize">15</double>
|
||||
</object>
|
||||
<object class="NSFont" key="IBUIFont">
|
||||
<string key="NSName">Helvetica-Bold</string>
|
||||
<double key="NSSize">15</double>
|
||||
<int key="NSfFlags">16</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBUIView" id="959860357">
|
||||
<reference key="NSNextResponder" ref="1033790597"/>
|
||||
<int key="NSvFlags">290</int>
|
||||
|
|
@ -277,6 +312,15 @@ AAgACAAIAAEAAQABAAE</bytes>
|
|||
</object>
|
||||
<int key="connectionID">19</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchEventConnection" key="connection">
|
||||
<string key="label">onAvatarClick:</string>
|
||||
<reference key="source" ref="854571707"/>
|
||||
<reference key="destination" ref="372490531"/>
|
||||
<int key="IBEventType">7</int>
|
||||
</object>
|
||||
<int key="connectionID">23</int>
|
||||
</object>
|
||||
</array>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<array key="orderedObjects">
|
||||
|
|
@ -305,6 +349,7 @@ AAgACAAIAAEAAQABAAE</bytes>
|
|||
<reference ref="906825234"/>
|
||||
<reference ref="959860357"/>
|
||||
<reference ref="451441616"/>
|
||||
<reference ref="854571707"/>
|
||||
</array>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
|
|
@ -349,6 +394,12 @@ AAgACAAIAAEAAQABAAE</bytes>
|
|||
<reference key="object" ref="579848711"/>
|
||||
<reference key="parent" ref="451441616"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">22</int>
|
||||
<reference key="object" ref="854571707"/>
|
||||
<reference key="parent" ref="1033790597"/>
|
||||
<string key="objectName">avatarButton</string>
|
||||
</object>
|
||||
</array>
|
||||
</object>
|
||||
<dictionary class="NSMutableDictionary" key="flattenedProperties">
|
||||
|
|
@ -359,6 +410,7 @@ AAgACAAIAAEAAQABAAE</bytes>
|
|||
<string key="12.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="13.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="15.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="22.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="4.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="6.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="7.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
|
|
@ -368,13 +420,24 @@ AAgACAAIAAEAAQABAAE</bytes>
|
|||
<nil key="activeLocalization"/>
|
||||
<dictionary class="NSMutableDictionary" key="localizations"/>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">21</int>
|
||||
<int key="maxID">23</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">UIContactDetailsHeader</string>
|
||||
<string key="superclassName">UIViewController</string>
|
||||
<object class="NSMutableDictionary" key="actions">
|
||||
<string key="NS.key.0">onImageClick:</string>
|
||||
<string key="NS.object.0">id</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="actionInfosByName">
|
||||
<string key="NS.key.0">onImageClick:</string>
|
||||
<object class="IBActionInfo" key="NS.object.0">
|
||||
<string key="name">onImageClick:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
</object>
|
||||
<dictionary class="NSMutableDictionary" key="outlets">
|
||||
<string key="addressLabel">UILabel</string>
|
||||
<string key="avatarImage">UIImageView</string>
|
||||
|
|
|
|||
|
|
@ -34,6 +34,8 @@
|
|||
#import "DialerViewController.h"
|
||||
#import "ContactsViewController.h"
|
||||
#import "ContactDetailsViewController.h"
|
||||
#import "ContactDetailsLabelViewController.h"
|
||||
#import "ContactDetailsImagePickerController.h"
|
||||
#import "HistoryViewController.h"
|
||||
#import "HistoryDetailsViewController.h"
|
||||
#import "InCallViewController.h"
|
||||
|
|
|
|||
|
|
@ -526,7 +526,7 @@ static PhoneMainView* phoneMainViewInstance=nil;
|
|||
|
||||
- (UIViewController*)popCurrentView {
|
||||
[LinphoneLogger logc:LinphoneLoggerLog format:"PhoneMainView: Pop view"];
|
||||
if([viewStack count] > 0) {
|
||||
if([viewStack count] > 1) {
|
||||
[viewStack removeLastObject];
|
||||
[self _changeCurrentView:[viewStack lastObject] transition:[PhoneMainView getBackwardTransition] force:TRUE];
|
||||
return [mainViewController getCurrentViewController];
|
||||
|
|
@ -598,7 +598,7 @@ static PhoneMainView* phoneMainViewInstance=nil;
|
|||
UILocalNotification* notif = [[[UILocalNotification alloc] init] autorelease];
|
||||
if (notif) {
|
||||
notif.repeatInterval = 0;
|
||||
notif.alertBody = [NSString stringWithFormat:NSLocalizedString(@"%@ sent you a message",nil), address];
|
||||
notif.alertBody = [NSString stringWithFormat:NSLocalizedString(@"IM_MSG",nil), address];
|
||||
notif.alertAction = NSLocalizedString(@"Show", nil);
|
||||
notif.soundName = @"msg.caf";
|
||||
notif.userInfo = [NSDictionary dictionaryWithObject:[chat remoteContact] forKey:@"chat"];
|
||||
|
|
@ -650,7 +650,7 @@ static PhoneMainView* phoneMainViewInstance=nil;
|
|||
appData->notification = [[UILocalNotification alloc] init];
|
||||
if (appData->notification) {
|
||||
appData->notification.repeatInterval = 0;
|
||||
appData->notification.alertBody =[NSString stringWithFormat:NSLocalizedString(@" %@ is calling you",nil), address];
|
||||
appData->notification.alertBody =[NSString stringWithFormat:NSLocalizedString(@"IC_MSG",nil), address];
|
||||
appData->notification.alertAction = NSLocalizedString(@"Answer", nil);
|
||||
appData->notification.soundName = @"ring.caf";
|
||||
appData->notification.userInfo = [NSDictionary dictionaryWithObject:[NSData dataWithBytes:&call length:sizeof(call)] forKey:@"call"];
|
||||
|
|
|
|||
|
|
@ -1,26 +0,0 @@
|
|||
|
||||
// Created by Yang Meyer on 26.07.11.
|
||||
// Copyright 2011-2012 compeople AG. All rights reserved.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "CPAnimationStep.h"
|
||||
|
||||
/**
|
||||
A CPAnimationSequence defines a sequence of CPAnimationStep objects, which can
|
||||
be `-run` animatedly or non-animatedly.
|
||||
|
||||
CPAnimationSequence implements the Composite design pattern, with CPAnimationStep
|
||||
as the base class.
|
||||
*/
|
||||
@interface CPAnimationSequence : CPAnimationStep
|
||||
|
||||
#pragma mark - constructors
|
||||
|
||||
+ (id) sequenceWithSteps:(CPAnimationStep*)first, ... NS_REQUIRES_NIL_TERMINATION;
|
||||
|
||||
#pragma mark - properties
|
||||
|
||||
/** Animations steps, from first to last. */
|
||||
@property (nonatomic, strong, readonly) NSArray* steps;
|
||||
|
||||
@end
|
||||
|
|
@ -1,84 +0,0 @@
|
|||
|
||||
// Created by Yang Meyer on 26.07.11.
|
||||
// Copyright 2011-2012 compeople AG. All rights reserved.
|
||||
|
||||
#import "CPAnimationSequence.h"
|
||||
|
||||
@interface CPAnimationStep(hidden)
|
||||
- (NSArray*) animationStepArray;
|
||||
@end
|
||||
|
||||
@interface CPAnimationSequence()
|
||||
@property (nonatomic, strong, readwrite) NSArray* steps;
|
||||
@end
|
||||
|
||||
#pragma mark -
|
||||
@implementation CPAnimationSequence
|
||||
|
||||
@synthesize steps;
|
||||
|
||||
#pragma mark - Object lifecycle
|
||||
|
||||
+ (id) sequenceWithSteps:(CPAnimationStep*)first, ... {
|
||||
CPAnimationSequence* instance = [[self alloc] init];
|
||||
if (instance) {
|
||||
NSMutableArray* tempSteps = [[NSMutableArray alloc] initWithCapacity:10];
|
||||
va_list args;
|
||||
va_start(args, first);
|
||||
[tempSteps insertObject:first atIndex:0];
|
||||
CPAnimationStep* aStep;
|
||||
while ((aStep = va_arg(args, CPAnimationStep*))) {
|
||||
[tempSteps insertObject:aStep atIndex:0];
|
||||
}
|
||||
instance.steps = [NSArray arrayWithArray:tempSteps];
|
||||
va_end(args);
|
||||
[tempSteps release];
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
- (void) dealloc {
|
||||
[steps release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
#pragma mark - property override
|
||||
|
||||
- (void) setDelay:(NSTimeInterval)delay {
|
||||
NSAssert(NO, @"Setting a delay on a sequence is undefined and therefore disallowed!");
|
||||
}
|
||||
|
||||
- (void) setDuration:(NSTimeInterval)duration {
|
||||
NSAssert(NO, @"Setting a duration on a sequence is undefined and therefore disallowed!");
|
||||
}
|
||||
|
||||
- (void) setOptions:(UIViewAnimationOptions)options {
|
||||
NSAssert(NO, @"Setting options on a sequence is undefined and therefore disallowed!");
|
||||
}
|
||||
|
||||
#pragma mark - build the sequence
|
||||
|
||||
- (NSArray*) animationStepArray {
|
||||
NSMutableArray* array = [NSMutableArray arrayWithCapacity:[self.steps count]];
|
||||
for (CPAnimationStep* current in self.steps) {
|
||||
[array addObjectsFromArray:[current animationStepArray]];
|
||||
}
|
||||
return array;
|
||||
}
|
||||
|
||||
#pragma mark - pretty-print
|
||||
|
||||
- (NSString*) description {
|
||||
NSMutableString* sequenceBody = [[NSMutableString alloc] initWithCapacity:100*[self.steps count]];
|
||||
for (CPAnimationStep* step in self.steps) {
|
||||
[sequenceBody appendString:[step description]];
|
||||
}
|
||||
// indent
|
||||
[sequenceBody replaceOccurrencesOfString:@"\n"
|
||||
withString:@"\n "
|
||||
options:NSCaseInsensitiveSearch
|
||||
range:NSMakeRange(0, [sequenceBody length])];
|
||||
return [NSString stringWithFormat:@"\n(sequence:%@\n)", sequenceBody];
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
|
||||
// Created by Yang Meyer on 26.07.11.
|
||||
// Copyright 2011 compeople AG. All rights reserved.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
/** Helper type definition for the component. */
|
||||
typedef void (^AnimationStep)(void);
|
||||
|
||||
/**
|
||||
A CPAnimationStep defines a single animation object with a delay, duration, execution block and animation options.
|
||||
*/
|
||||
@interface CPAnimationStep : NSObject
|
||||
|
||||
#pragma mark - constructors
|
||||
|
||||
+ (id) after:(NSTimeInterval)delay
|
||||
animate:(AnimationStep)step;
|
||||
|
||||
+ (id) for:(NSTimeInterval)duration
|
||||
animate:(AnimationStep)step;
|
||||
|
||||
+ (id) after:(NSTimeInterval)delay
|
||||
for:(NSTimeInterval)duration
|
||||
animate:(AnimationStep)step;
|
||||
|
||||
+ (id) after:(NSTimeInterval)delay
|
||||
for:(NSTimeInterval)duration
|
||||
options:(UIViewAnimationOptions)theOptions
|
||||
animate:(AnimationStep)step;
|
||||
|
||||
#pragma mark - properties (normally already set by the constructor)
|
||||
|
||||
@property (nonatomic) NSTimeInterval delay;
|
||||
@property (nonatomic) NSTimeInterval duration;
|
||||
@property (nonatomic, strong) AnimationStep step;
|
||||
@property (nonatomic) UIViewAnimationOptions options;
|
||||
|
||||
#pragma mark - execution
|
||||
|
||||
/** Starts the step execution. */
|
||||
- (void) runAnimated:(BOOL)animated;
|
||||
/** Shortcut for [step runAnimated:YES] */
|
||||
- (void) run;
|
||||
|
||||
@end
|
||||
|
|
@ -1,132 +0,0 @@
|
|||
|
||||
// Created by Yang Meyer on 26.07.11.
|
||||
// Copyright 2011-2012 compeople AG. All rights reserved.
|
||||
|
||||
#import "CPAnimationStep.h"
|
||||
|
||||
@interface CPAnimationStep()
|
||||
/** A temporary reverse queue of animation steps, i.e. from last to first.
|
||||
It is created when the step is run, and is modified during the animation,
|
||||
and is destroyed when the animation finishes. */
|
||||
@property (nonatomic, strong) NSMutableArray* consumableSteps;
|
||||
@end
|
||||
|
||||
@implementation CPAnimationStep
|
||||
|
||||
@synthesize delay, duration, step, options;
|
||||
@synthesize consumableSteps;
|
||||
|
||||
#pragma mark overrides
|
||||
|
||||
|
||||
#pragma mark construction
|
||||
|
||||
+ (id) after:(NSTimeInterval)delay animate:(AnimationStep)step {
|
||||
return [self after:delay for:0.0 options:0 animate:step];
|
||||
}
|
||||
|
||||
+ (id) for:(NSTimeInterval)duration animate:(AnimationStep)step {
|
||||
return [self after:0.0 for:duration options:0 animate:step];
|
||||
}
|
||||
|
||||
+ (id) after:(NSTimeInterval)delay for:(NSTimeInterval)duration animate:(AnimationStep)step {
|
||||
return [self after:delay for:duration options:0 animate:step];
|
||||
}
|
||||
|
||||
+ (id) after:(NSTimeInterval)theDelay
|
||||
for:(NSTimeInterval)theDuration
|
||||
options:(UIViewAnimationOptions)theOptions
|
||||
animate:(AnimationStep)theStep {
|
||||
|
||||
CPAnimationStep* instance = [[self alloc] init];
|
||||
if (instance) {
|
||||
instance.delay = theDelay;
|
||||
instance.duration = theDuration;
|
||||
instance.options = theOptions;
|
||||
instance.step = theStep;
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[step release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
#pragma mark action
|
||||
|
||||
// From http://stackoverflow.com/questions/4007023/blocks-instead-of-performselectorwithobjectafterdelay
|
||||
+ (void) runBlock:(AnimationStep)block afterDelay:(NSTimeInterval)delay {
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC*delay), dispatch_get_current_queue(), block);
|
||||
}
|
||||
|
||||
- (NSArray*) animationStepArray {
|
||||
// subclasses must override this!
|
||||
return [NSArray arrayWithObject:self];
|
||||
}
|
||||
|
||||
- (void) runAnimated:(BOOL)animated {
|
||||
if (!self.consumableSteps) {
|
||||
self.consumableSteps = [[NSMutableArray alloc] initWithArray:[self animationStepArray]];
|
||||
}
|
||||
if (![self.consumableSteps count]) { // recursion anchor
|
||||
[self.consumableSteps release];
|
||||
self.consumableSteps = nil;
|
||||
return; // we're done
|
||||
}
|
||||
void (^completionStep)(BOOL) = ^(BOOL animated){
|
||||
[self.consumableSteps removeLastObject];
|
||||
[self runAnimated:animated]; // recurse!
|
||||
};
|
||||
CPAnimationStep* currentStep = [self.consumableSteps lastObject];
|
||||
// Note: do not animate to short steps
|
||||
if (animated && currentStep.duration >= 0.02) {
|
||||
[UIView animateWithDuration:currentStep.duration
|
||||
delay:currentStep.delay
|
||||
options:currentStep.options
|
||||
animations:currentStep.step
|
||||
completion:^(BOOL finished) {
|
||||
if (finished) {
|
||||
completionStep(TRUE);
|
||||
} else {
|
||||
completionStep(FALSE);
|
||||
}
|
||||
}];
|
||||
} else {
|
||||
void (^execution)(void) = ^{
|
||||
currentStep.step();
|
||||
completionStep(FALSE);
|
||||
};
|
||||
|
||||
if (animated && currentStep.delay) {
|
||||
[CPAnimationStep runBlock:execution afterDelay:currentStep.delay];
|
||||
} else {
|
||||
execution();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void) run {
|
||||
[self runAnimated:YES];
|
||||
}
|
||||
|
||||
#pragma mark - pretty-print
|
||||
|
||||
- (NSString*) description {
|
||||
NSMutableString* result = [[NSMutableString alloc] initWithCapacity:100];
|
||||
[result appendString:@"\n["];
|
||||
if (self.delay > 0.0) {
|
||||
[result appendFormat:@"after:%.1f ", self.delay];
|
||||
}
|
||||
if (self.duration > 0.0) {
|
||||
[result appendFormat:@"for:%.1f ", self.duration];
|
||||
}
|
||||
if (self.options > 0) {
|
||||
[result appendFormat:@"options:%d ", self.options];
|
||||
}
|
||||
[result appendFormat:@"animate:%@", self.step];
|
||||
[result appendString:@"]"];
|
||||
return result;
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
@ -178,12 +178,12 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
[waitView setHidden:TRUE];
|
||||
}
|
||||
|
||||
+ (UIView*)findTextField:(ViewElement)tag view:(UIView*)view {
|
||||
+ (UIView*)findView:(ViewElement)tag view:(UIView*)view {
|
||||
for(UIView *child in [view subviews]) {
|
||||
if([child tag] == tag){
|
||||
return (UITextField*)child;
|
||||
} else {
|
||||
UIView *o = [WizardViewController findTextField:tag view:child];
|
||||
UIView *o = [WizardViewController findView:tag view:child];
|
||||
if(o)
|
||||
return o;
|
||||
}
|
||||
|
|
@ -191,17 +191,17 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
return nil;
|
||||
}
|
||||
|
||||
- (UITextField*)findTextField:(ViewElement)tag {
|
||||
UIView *view = [WizardViewController findTextField:tag view:contentView];
|
||||
if([view isKindOfClass:[UITextField class]])
|
||||
return (UITextField*)view;
|
||||
+ (UITextField*)findTextField:(ViewElement)tag view:(UIView*)view {
|
||||
UIView *aview = [WizardViewController findView:tag view:view];
|
||||
if([aview isKindOfClass:[UITextField class]])
|
||||
return (UITextField*)aview;
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (UILabel*)findLabel:(ViewElement)tag {
|
||||
UIView *view = [WizardViewController findTextField:tag view:contentView];
|
||||
if([view isKindOfClass:[UILabel class]])
|
||||
return (UILabel*)view;
|
||||
+ (UILabel*)findLabel:(ViewElement)tag view:(UIView*)view {
|
||||
UIView *aview = [WizardViewController findView:tag view:view];
|
||||
if([aview isKindOfClass:[UILabel class]])
|
||||
return (UILabel*)aview;
|
||||
return nil;
|
||||
}
|
||||
|
||||
|
|
@ -379,30 +379,30 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
}
|
||||
|
||||
- (IBAction)onCheckValidationClick:(id)sender {
|
||||
NSString *username = [self findTextField:ViewElement_Username].text;
|
||||
NSString *username = [WizardViewController findTextField:ViewElement_Username view:contentView].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;
|
||||
NSString *username = [WizardViewController findTextField:ViewElement_Username view:contentView].text;
|
||||
NSString *password = [WizardViewController findTextField:ViewElement_Password view:contentView].text;
|
||||
NSString *domain = [WizardViewController findTextField:ViewElement_Domain view:contentView].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;
|
||||
NSString *username = [WizardViewController findTextField:ViewElement_Username view:contentView].text;
|
||||
NSString *password = [WizardViewController findTextField:ViewElement_Password view:contentView].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;
|
||||
NSString *username = [WizardViewController findTextField:ViewElement_Username view:contentView].text;
|
||||
NSString *password = [WizardViewController findTextField:ViewElement_Password view:contentView].text;
|
||||
NSString *password2 = [WizardViewController findTextField:ViewElement_Password2 view:contentView].text;
|
||||
NSString *email = [WizardViewController findTextField:ViewElement_Email view:contentView].text;
|
||||
NSMutableString *errors = [NSMutableString string];
|
||||
|
||||
if ([username length] < LINPHONE_WIZARD_MIN_USERNAME_LENGTH) {
|
||||
|
|
@ -503,11 +503,11 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
|
||||
#pragma mark - XMLRPCConnectionDelegate Functions
|
||||
|
||||
- (void)request: (XMLRPCRequest *)request didReceiveResponse: (XMLRPCResponse *)response {
|
||||
- (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:NSLocalizedString(@"Can't create account: Communication issue (%@)", nil), [response faultString]];
|
||||
NSString *errorString = [NSString stringWithFormat:NSLocalizedString(@"Communication issue (%@)", nil), [response faultString]];
|
||||
UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Communication issue",nil)
|
||||
message:errorString
|
||||
delegate:nil
|
||||
|
|
@ -515,7 +515,7 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
otherButtonTitles:nil,nil];
|
||||
[errorView show];
|
||||
[errorView release];
|
||||
} else {
|
||||
} else if([response object] != nil) { //Don't handle if not object: HTTP/Communication Error
|
||||
if([[request method] isEqualToString:@"check_account"]) {
|
||||
if([response object] == [NSNumber numberWithInt:1]) {
|
||||
UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Check issue",nil)
|
||||
|
|
@ -526,18 +526,18 @@ static UICompositeViewDescription *compositeDescription = 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;
|
||||
NSString *username = [WizardViewController findTextField:ViewElement_Username view:contentView].text;
|
||||
NSString *password = [WizardViewController findTextField:ViewElement_Password view:contentView].text;
|
||||
NSString *email = [WizardViewController findTextField:ViewElement_Email view:contentView].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;
|
||||
NSString *username = [WizardViewController findTextField:ViewElement_Username view:contentView].text;
|
||||
NSString *password = [WizardViewController findTextField:ViewElement_Password view:contentView].text;
|
||||
[self changeView:validateAccountView back:FALSE animation:TRUE];
|
||||
[self findTextField:ViewElement_Username].text = username;
|
||||
[self findTextField:ViewElement_Password].text = password;
|
||||
[WizardViewController findTextField:ViewElement_Username view:contentView].text = username;
|
||||
[WizardViewController findTextField:ViewElement_Password view:contentView].text = password;
|
||||
} else {
|
||||
UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Account creation issue",nil)
|
||||
message:NSLocalizedString(@"Can't create the account. Please try again.", nil)
|
||||
|
|
@ -549,8 +549,8 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
}
|
||||
} 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;
|
||||
NSString *username = [WizardViewController findTextField:ViewElement_Username view:contentView].text;
|
||||
NSString *password = [WizardViewController findTextField:ViewElement_Password view:contentView].text;
|
||||
[self addProxyConfig:username password:password domain:LINPHONE_WIZARD_DOMAIN];
|
||||
} else {
|
||||
UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Account validation issue",nil)
|
||||
|
|
@ -565,8 +565,8 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
}
|
||||
}
|
||||
|
||||
- (void)request: (XMLRPCRequest *)request didFailWithError: (NSError *)error {
|
||||
NSString *errorString = [NSString stringWithFormat:NSLocalizedString(@"Can't create account: Communication issue (%@)", nil), [error localizedDescription]];
|
||||
- (void)request:(XMLRPCRequest *)request didFailWithError:(NSError *)error {
|
||||
NSString *errorString = [NSString stringWithFormat:NSLocalizedString(@"Communication issue (%@)", nil), [error localizedDescription]];
|
||||
UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Communication issue", nil)
|
||||
message:errorString
|
||||
delegate:nil
|
||||
|
|
@ -577,15 +577,15 @@ static UICompositeViewDescription *compositeDescription = nil;
|
|||
[waitView setHidden:true];
|
||||
}
|
||||
|
||||
- (BOOL)request: (XMLRPCRequest *)request canAuthenticateAgainstProtectionSpace: (NSURLProtectionSpace *)protectionSpace {
|
||||
- (BOOL)request:(XMLRPCRequest *)request canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
- (void)request: (XMLRPCRequest *)request didReceiveAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge {
|
||||
- (void)request:(XMLRPCRequest *)request didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
|
||||
|
||||
}
|
||||
|
||||
- (void)request: (XMLRPCRequest *)request didCancelAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge {
|
||||
- (void)request:(XMLRPCRequest *)request didCancelAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -401,7 +401,7 @@
|
|||
<int key="IBUITag">200</int>
|
||||
<bool key="IBUIUserInteractionEnabled">NO</bool>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<string key="IBUIText">Enter you username and password with your SIP domain</string>
|
||||
<string key="IBUIText">Enter you username and password with your email address</string>
|
||||
<reference key="IBUITextColor" ref="784405869"/>
|
||||
<nil key="IBUIHighlightedColor"/>
|
||||
<int key="IBUIBaselineAdjustment">0</int>
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -36,7 +36,7 @@
|
|||
<key>Type</key>
|
||||
<string>PSToggleSwitchSpecifier</string>
|
||||
<key>Title</key>
|
||||
<string>Enable RFC DTMF</string>
|
||||
<string>Send inband DTMFs</string>
|
||||
<key>Key</key>
|
||||
<string>rfc_dtmf_preference</string>
|
||||
<key>DefaultValue</key>
|
||||
|
|
@ -46,7 +46,7 @@
|
|||
<key>Type</key>
|
||||
<string>PSToggleSwitchSpecifier</string>
|
||||
<key>Title</key>
|
||||
<string>Enable SIPINFO DTMF</string>
|
||||
<string>Send SIP INFO DTMFs</string>
|
||||
<key>Key</key>
|
||||
<string>sipinfo_dtmf_preference</string>
|
||||
<key>DefaultValue</key>
|
||||
|
|
|
|||
|
|
@ -2,6 +2,17 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleURLTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleURLName</key>
|
||||
<string>org.linphone.phone</string>
|
||||
<key>CFBundleURLSchemes</key>
|
||||
<array>
|
||||
<string>sip</string>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
|
|
|
|||
|
|
@ -542,6 +542,8 @@
|
|||
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 */; };
|
||||
D378AB2A15DCDB4A0098505D /* ContactDetailsImagePickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378AB2915DCDB490098505D /* ContactDetailsImagePickerController.m */; };
|
||||
D378AB2B15DCDB4A0098505D /* ContactDetailsImagePickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378AB2915DCDB490098505D /* ContactDetailsImagePickerController.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 */; };
|
||||
|
|
@ -608,10 +610,6 @@
|
|||
D3832800158100E400FA0D23 /* contacts_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FC158100E400FA0D23 /* contacts_over.png */; };
|
||||
D3832801158100E400FA0D23 /* history_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FD158100E400FA0D23 /* history_over.png */; };
|
||||
D3832802158100E400FA0D23 /* settings_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FE158100E400FA0D23 /* settings_over.png */; };
|
||||
D389362615A6D19800A3A3AA /* CPAnimationSequence.m in Sources */ = {isa = PBXBuildFile; fileRef = D389362315A6D19800A3A3AA /* CPAnimationSequence.m */; };
|
||||
D389362715A6D19800A3A3AA /* CPAnimationSequence.m in Sources */ = {isa = PBXBuildFile; fileRef = D389362315A6D19800A3A3AA /* CPAnimationSequence.m */; };
|
||||
D389362815A6D19800A3A3AA /* CPAnimationStep.m in Sources */ = {isa = PBXBuildFile; fileRef = D389362515A6D19800A3A3AA /* CPAnimationStep.m */; };
|
||||
D389362915A6D19800A3A3AA /* CPAnimationStep.m in Sources */ = {isa = PBXBuildFile; fileRef = D389362515A6D19800A3A3AA /* CPAnimationStep.m */; };
|
||||
D38D14AF15A30B3D008497E8 /* cell_call_first_highlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D38D14AD15A30B3D008497E8 /* cell_call_first_highlight.png */; };
|
||||
D38D14B115A30B3D008497E8 /* cell_call_highlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D38D14AE15A30B3D008497E8 /* cell_call_highlight.png */; };
|
||||
D3A55FBC15877E5E003FD403 /* UIContactCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A55FBB15877E5E003FD403 /* UIContactCell.m */; };
|
||||
|
|
@ -1338,6 +1336,8 @@
|
|||
D378906215AC373B00BD776C /* ContactDetailsLabelViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactDetailsLabelViewController.h; sourceTree = "<group>"; };
|
||||
D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactDetailsLabelViewController.m; sourceTree = "<group>"; };
|
||||
D378906415AC373B00BD776C /* ContactDetailsLabelViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ContactDetailsLabelViewController.xib; sourceTree = "<group>"; };
|
||||
D378AB2815DCDB480098505D /* ContactDetailsImagePickerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactDetailsImagePickerController.h; sourceTree = "<group>"; };
|
||||
D378AB2915DCDB490098505D /* ContactDetailsImagePickerController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactDetailsImagePickerController.m; sourceTree = "<group>"; };
|
||||
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 = "<group>"; };
|
||||
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 = "<group>"; };
|
||||
D37C638C15AAD251009D0BAC /* contact_number_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_number_over.png; path = Resources/contact_number_over.png; sourceTree = "<group>"; };
|
||||
|
|
@ -1404,10 +1404,6 @@
|
|||
D38327FD158100E400FA0D23 /* history_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_over.png; path = Resources/history_over.png; sourceTree = "<group>"; };
|
||||
D38327FE158100E400FA0D23 /* settings_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = settings_over.png; path = Resources/settings_over.png; sourceTree = "<group>"; };
|
||||
D38327FF158100E400FA0D23 /* chat_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_over.png; path = Resources/chat_over.png; sourceTree = "<group>"; };
|
||||
D389362215A6D19800A3A3AA /* CPAnimationSequence.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CPAnimationSequence.h; path = Utils/CPAnimation/CPAnimationSequence.h; sourceTree = "<group>"; };
|
||||
D389362315A6D19800A3A3AA /* CPAnimationSequence.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CPAnimationSequence.m; path = Utils/CPAnimation/CPAnimationSequence.m; sourceTree = "<group>"; };
|
||||
D389362415A6D19800A3A3AA /* CPAnimationStep.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CPAnimationStep.h; path = Utils/CPAnimation/CPAnimationStep.h; sourceTree = "<group>"; };
|
||||
D389362515A6D19800A3A3AA /* CPAnimationStep.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CPAnimationStep.m; path = Utils/CPAnimation/CPAnimationStep.m; sourceTree = "<group>"; };
|
||||
D389363715A6D53200A3A3AA /* chat_bubble_incoming.9.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_bubble_incoming.9.png; path = Resources/chat_bubble_incoming.9.png; sourceTree = "<group>"; };
|
||||
D389363815A6D53200A3A3AA /* chat_bubble_outgoing.9.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_bubble_outgoing.9.png; path = Resources/chat_bubble_outgoing.9.png; sourceTree = "<group>"; };
|
||||
D38D14AD15A30B3D008497E8 /* cell_call_first_highlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cell_call_first_highlight.png; path = Resources/cell_call_first_highlight.png; sourceTree = "<group>"; };
|
||||
|
|
@ -1823,6 +1819,8 @@
|
|||
22E0A81F111C44E100B04932 /* ConsoleViewController.m */,
|
||||
22E0A81E111C44E100B04932 /* ConsoleViewController.xib */,
|
||||
D30BBD1215D3EFEB000F93DD /* ContactDetailsDelegate.h */,
|
||||
D378AB2815DCDB480098505D /* ContactDetailsImagePickerController.h */,
|
||||
D378AB2915DCDB490098505D /* ContactDetailsImagePickerController.m */,
|
||||
D378906215AC373B00BD776C /* ContactDetailsLabelViewController.h */,
|
||||
D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */,
|
||||
D378906415AC373B00BD776C /* ContactDetailsLabelViewController.xib */,
|
||||
|
|
@ -2743,7 +2741,6 @@
|
|||
D34BD60D15C136770070C209 /* GDataXML */,
|
||||
D380801215C299D0005BE9BC /* ColorSpaceUtilites.m */,
|
||||
D380801115C29984005BE9BC /* ColorSpaceUtilities.h */,
|
||||
D38935F715A6D06800A3A3AA /* CPAnimation */,
|
||||
D3807FB615C28940005BE9BC /* DCRoundSwitch */,
|
||||
D32B9DFA15A2F131000B6DEC /* FastAddressBook.h */,
|
||||
D32B9DFB15A2F131000B6DEC /* FastAddressBook.m */,
|
||||
|
|
@ -2863,17 +2860,6 @@
|
|||
path = Views;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D38935F715A6D06800A3A3AA /* CPAnimation */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D389362215A6D19800A3A3AA /* CPAnimationSequence.h */,
|
||||
D389362315A6D19800A3A3AA /* CPAnimationSequence.m */,
|
||||
D389362415A6D19800A3A3AA /* CPAnimationStep.h */,
|
||||
D389362515A6D19800A3A3AA /* CPAnimationStep.m */,
|
||||
);
|
||||
name = CPAnimation;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D398D3031594B0FB00FD553C /* Settings */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
|
@ -3642,8 +3628,6 @@
|
|||
D32460E6159D9AAD00BA7F3A /* UITransparentView.m in Sources */,
|
||||
D32B9DFC15A2F131000B6DEC /* FastAddressBook.m in Sources */,
|
||||
D3196D3E15A32BD8007FEEBA /* UITransferButton.m in Sources */,
|
||||
D389362615A6D19800A3A3AA /* CPAnimationSequence.m in Sources */,
|
||||
D389362815A6D19800A3A3AA /* CPAnimationStep.m in Sources */,
|
||||
D3128FE115AABC7E00A2147A /* ContactDetailsViewController.m in Sources */,
|
||||
D37C639515AADDAF009D0BAC /* UIContactDetailsHeader.m in Sources */,
|
||||
D37C639B15AADEF6009D0BAC /* ContactDetailsTableViewController.m in Sources */,
|
||||
|
|
@ -3674,6 +3658,7 @@
|
|||
D380800215C2894A005BE9BC /* IASKTextField.m in Sources */,
|
||||
D380800515C28A7A005BE9BC /* UILinphone.m in Sources */,
|
||||
D380801315C299D0005BE9BC /* ColorSpaceUtilites.m in Sources */,
|
||||
D378AB2A15DCDB4A0098505D /* ContactDetailsImagePickerController.m in Sources */,
|
||||
D306BC0515CFF2A000FDB80F /* GDataXMLNode.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
|
|
@ -3726,8 +3711,6 @@
|
|||
D32460E7159D9AAD00BA7F3A /* UITransparentView.m in Sources */,
|
||||
D32B9DFD15A2F131000B6DEC /* FastAddressBook.m in Sources */,
|
||||
D3196D3F15A32BD8007FEEBA /* UITransferButton.m in Sources */,
|
||||
D389362715A6D19800A3A3AA /* CPAnimationSequence.m in Sources */,
|
||||
D389362915A6D19800A3A3AA /* CPAnimationStep.m in Sources */,
|
||||
D3128FE215AABC7E00A2147A /* ContactDetailsViewController.m in Sources */,
|
||||
D37C639615AADDAF009D0BAC /* UIContactDetailsHeader.m in Sources */,
|
||||
D37C639C15AADEF6009D0BAC /* ContactDetailsTableViewController.m in Sources */,
|
||||
|
|
@ -3758,6 +3741,7 @@
|
|||
D380800315C2894A005BE9BC /* IASKTextField.m in Sources */,
|
||||
D380800615C28A7A005BE9BC /* UILinphone.m in Sources */,
|
||||
D380801415C299D0005BE9BC /* ColorSpaceUtilites.m in Sources */,
|
||||
D378AB2B15DCDB4A0098505D /* ContactDetailsImagePickerController.m in Sources */,
|
||||
D306BC0615CFF2A100FDB80F /* GDataXMLNode.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue