diff --git a/Classes/ContactsViewController.xib b/Classes/ContactsViewController.xib index d95d9e6ab..6b6098c90 100644 --- a/Classes/ContactsViewController.xib +++ b/Classes/ContactsViewController.xib @@ -156,11 +156,10 @@ {{0, 58}, {320, 402}} - _NS:10 - 3 - MQA + 1 + MC45NDExNzY0NzA2IDAuOTY0NzA1ODgyNCAwLjk2NDcwNTg4MjQAA NO YES diff --git a/Classes/DialerViewController.h b/Classes/DialerViewController.h index e5436109a..10fa19e33 100644 --- a/Classes/DialerViewController.h +++ b/Classes/DialerViewController.h @@ -21,10 +21,10 @@ #import "UIEraseButton.h" #import "UICallButton.h" +#import "UITransferButton.h" #import "UIDigitButton.h" @interface DialerViewController : UIViewController { - @private //Buttons UITextField* addressField; @@ -33,6 +33,7 @@ UIEraseButton* eraseButton; UICallButton* callButton; UICallButton* addCallButton; + UITransferButton* transferButton; //Key pad UIDigitButton* oneButton; @@ -47,14 +48,18 @@ UIDigitButton* starButton; UIDigitButton* zeroButton; UIDigitButton* sharpButton; + + BOOL transferMode; } - (void)setAddress:(NSString*) address; +- (void)setTransferMode:(NSNumber*) enable; @property (nonatomic, retain) IBOutlet UITextField* addressField; @property (nonatomic, retain) IBOutlet UIButton* addContactButton; @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 UIEraseButton* eraseButton; @@ -73,7 +78,6 @@ - (IBAction)onAddContactClick: (id) event; - (IBAction)onBackClick: (id) event; -- (IBAction)onAddCallClick: (id) event; - (IBAction)onAddressChange: (id)sender; @end diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index 5c2f9269e..a8774c35f 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -34,6 +34,7 @@ @synthesize addContactButton; @synthesize cancelButton; @synthesize addCallButton; +@synthesize transferButton; @synthesize callButton; @synthesize eraseButton; @@ -53,7 +54,11 @@ #pragma mark - Lifecycle Functions - (id)init { - return [super initWithNibName:@"DialerViewController" bundle:[NSBundle mainBundle]]; + self = [super initWithNibName:@"DialerViewController" bundle:[NSBundle mainBundle]]; + if(self) { + self->transferMode = FALSE; + } + return self; } - (void)dealloc { @@ -63,6 +68,7 @@ [eraseButton release]; [callButton release]; [addCallButton release]; + [transferButton release]; [oneButton release]; [twoButton release]; @@ -93,21 +99,18 @@ - (void)viewDidLoad { [super viewDidLoad]; - [zeroButton initWithNumber:'0' addressField:addressField dtmf:false]; - [oneButton initWithNumber:'1' addressField:addressField dtmf:false]; - [twoButton initWithNumber:'2' addressField:addressField dtmf:false]; - [threeButton initWithNumber:'3' addressField:addressField dtmf:false]; - [fourButton initWithNumber:'4' addressField:addressField dtmf:false]; - [fiveButton initWithNumber:'5' addressField:addressField dtmf:false]; - [sixButton initWithNumber:'6' addressField:addressField dtmf:false]; - [sevenButton initWithNumber:'7' addressField:addressField dtmf:false]; - [eightButton initWithNumber:'8' addressField:addressField dtmf:false]; - [nineButton initWithNumber:'9' addressField:addressField dtmf:false]; - [starButton initWithNumber:'*' addressField:addressField dtmf:false]; - [sharpButton initWithNumber:'#' addressField:addressField dtmf:false]; - [callButton initWithAddress:addressField]; - [addCallButton initWithAddress:addressField]; - [eraseButton initWithAddressField:addressField]; + [zeroButton setDigit:'0']; + [oneButton setDigit:'1']; + [twoButton setDigit:'2']; + [threeButton setDigit:'3']; + [fourButton setDigit:'4']; + [fiveButton setDigit:'5']; + [sixButton setDigit:'6']; + [sevenButton setDigit:'7']; + [eightButton setDigit:'8']; + [nineButton setDigit:'9']; + [starButton setDigit:'*']; + [sharpButton setDigit:'#']; // Set observer [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; @@ -131,7 +134,13 @@ if([LinphoneManager isLcReady]) { LinphoneCore *lc = [LinphoneManager getLc]; if(linphone_core_get_calls_nb(lc) > 0) { - [addCallButton setHidden:false]; + if(transferMode) { + [addCallButton setHidden:true]; + [transferButton setHidden:false]; + } else { + [addCallButton setHidden:false]; + [transferButton setHidden:true]; + } [callButton setHidden:true]; [cancelButton setHidden:false]; [addContactButton setHidden:true]; @@ -140,15 +149,20 @@ [callButton setHidden:false]; [cancelButton setHidden:true]; [addContactButton setHidden:false]; + [transferButton setHidden:true]; } } } - - (void)setAddress:(NSString*) address { [addressField setText:address]; } +- (void)setTransferMode:(NSNumber*) n { + transferMode = [n boolValue]; + [self update]; +} + #pragma mark - UITextFieldDelegate Functions @@ -170,21 +184,19 @@ [[LinphoneManager instance] changeView:PhoneView_InCall]; } -- (IBAction)onAddCallClick: (id) event { - -} - - (IBAction)onAddressChange: (id)sender { if([[addressField text] length] > 0) { [addContactButton setEnabled:TRUE]; [eraseButton setEnabled:TRUE]; [callButton setEnabled:TRUE]; [addCallButton setEnabled:TRUE]; + [transferButton setEnabled:TRUE]; } else { [addContactButton setEnabled:FALSE]; [eraseButton setEnabled:FALSE]; [callButton setEnabled:FALSE]; [addCallButton setEnabled:FALSE]; + [transferButton setEnabled:FALSE]; } } diff --git a/Classes/DialerViewController.xib b/Classes/DialerViewController.xib index 371cd5d74..dfe28c0d4 100644 --- a/Classes/DialerViewController.xib +++ b/Classes/DialerViewController.xib @@ -558,6 +558,37 @@ + + -2147483356 + {{106, 0}, {108, 69}} + + + + _NS:9 + NO + IBCocoaTouchFramework + NO + 0 + 0 + NO + NO + + + NSImage + add_call_over.png + + + NSImage + add_call_disabled.png + + + NSImage + add_call_default.png + + + + + -2147483356 {{106, 0}, {108, 69}} @@ -573,18 +604,9 @@ NO NO - - NSImage - add_call_over.png - - - NSImage - add_call_disabled.png - - - NSImage - add_call_default.png - + + + @@ -800,6 +822,14 @@ 232 + + + transferButton + + + + 253 + delegate @@ -817,6 +847,102 @@ 208 + + + addressField + + + + 242 + + + + addressField + + + + 243 + + + + addressField + + + + 244 + + + + addressField + + + + 245 + + + + addressField + + + + 246 + + + + addressField + + + + 247 + + + + addressField + + + + 248 + + + + addressField + + + + 241 + + + + addressField + + + + 240 + + + + addressField + + + + 249 + + + + addressField + + + + 250 + + + + addressField + + + + 251 + onBackClick: @@ -827,13 +953,20 @@ 233 - - onAddCallClick: + + addressField - - 7 + - 228 + 234 + + + + addressField + + + + 252 @@ -844,6 +977,22 @@ 230 + + + addressField + + + + 235 + + + + addressField + + + + 237 + @@ -1012,6 +1161,7 @@ + toolBar @@ -1046,6 +1196,12 @@ callButton + + 236 + + + transferButton + @@ -1075,6 +1231,9 @@ 224.CustomClassName 224.IBPluginDependency 224.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 236.CustomClassName + 236.IBPluginDependency + 236.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 29.CustomClassName 29.IBPluginDependency 29.IBUIButtonInspectorSelectedStateConfigurationMetadataKey @@ -1139,6 +1298,9 @@ UICallButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UITransferButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1191,7 +1353,7 @@ - 233 + 253 @@ -1203,7 +1365,6 @@ YES YES - onAddCallClick: onAddContactClick: onAddressChange: onBackClick: @@ -1213,24 +1374,18 @@ id id id - id YES YES - onAddCallClick: onAddContactClick: onAddressChange: onBackClick: YES - - onAddCallClick: - id - onAddContactClick: id @@ -1265,6 +1420,7 @@ sixButton starButton threeButton + transferButton twoButton zeroButton @@ -1286,6 +1442,7 @@ UIButton UIButton UIButton + UITransferButton UIButton UIButton @@ -1310,6 +1467,7 @@ sixButton starButton threeButton + transferButton twoButton zeroButton @@ -1379,6 +1537,10 @@ threeButton UIButton + + transferButton + UITransferButton + twoButton UIButton @@ -1405,6 +1567,17 @@ UICallButton UIButton + + addressField + UITextField + + + addressField + + addressField + UITextField + + IBProjectSource ./Classes/UICallButton.h @@ -1413,6 +1586,17 @@ UIDigitButton UILongTouchButton + + addressField + UITextField + + + addressField + + addressField + UITextField + + IBProjectSource ./Classes/UIDigitButton.h @@ -1421,6 +1605,17 @@ UIEraseButton UILongTouchButton + + addressField + UITextField + + + addressField + + addressField + UITextField + + IBProjectSource ./Classes/UIEraseButton.h @@ -1434,6 +1629,25 @@ ./Classes/UILongTouchButton.h + + UITransferButton + UIButton + + addressField + UITextField + + + addressField + + addressField + UITextField + + + + IBProjectSource + ./Classes/UITransferButton.h + + 0 diff --git a/Classes/HistoryViewController.xib b/Classes/HistoryViewController.xib index b08c9fb4d..446e0a4ac 100644 --- a/Classes/HistoryViewController.xib +++ b/Classes/HistoryViewController.xib @@ -160,11 +160,10 @@ {{0, 58}, {320, 402}} - _NS:9 - 3 - MQA + 1 + MC45NDExNzY0NzA2IDAuOTY0NzA1ODgyNCAwLjk2NDcwNTg4MjQAA YES IBCocoaTouchFramework diff --git a/Classes/InCallViewController.xib b/Classes/InCallViewController.xib index 48ce96c59..b72909f8b 100644 --- a/Classes/InCallViewController.xib +++ b/Classes/InCallViewController.xib @@ -12,12 +12,13 @@ YES - IBUITableViewController - IBUITableView - IBUIActivityIndicatorView - IBUIView IBUIButton IBProxyObject + IBUIImageView + IBUIActivityIndicatorView + IBUITableViewController + IBUITableView + IBUIView YES @@ -42,6 +43,24 @@ 274 YES + + + 274 + {320, 460} + + + + _NS:9 + NO + + + + IBCocoaTouchFramework + + NSImage + numpad_background.png + + 292 @@ -103,7 +122,7 @@ {{0, -10}, {320, 480}} - + _NS:418 YES @@ -134,6 +153,7 @@ {85, 33} + _NS:9 NO IBCocoaTouchFramework @@ -307,6 +327,7 @@ + @@ -353,7 +374,7 @@ 160 - camSwitch + videoCameraSwitch 162 @@ -364,6 +385,12 @@ callTableController + + 171 + + + background + @@ -384,6 +411,7 @@ 160.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 162.CustomClassName 162.IBPluginDependency + 171.IBPluginDependency 9.IBPluginDependency @@ -403,6 +431,7 @@ InCallTableViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -417,7 +446,7 @@ - 169 + 171 @@ -553,11 +582,13 @@ YES YES + numpad_background.png switch_camera_default.png switch_camera_over.png YES + {640, 523} {170, 65} {170, 65} diff --git a/Classes/IncomingCallViewController.xib b/Classes/IncomingCallViewController.xib index 69ca84bb3..30cd717ea 100644 --- a/Classes/IncomingCallViewController.xib +++ b/Classes/IncomingCallViewController.xib @@ -37,54 +37,56 @@ 274 + + + 274 + {320, 460} + + + + _NS:9 + NO + + + + IBCocoaTouchFramework + + NSImage + numpad_background.png + + 288 + + + 292 + {{0, 49}, {320, 63}} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + cell_call_first.png + + 292 {320, 68} - + _NS:9 NO IBCocoaTouchFramework NSImage - champ-titre-incoming.png - - - - - 292 - {{0, 47}, {320, 63}} - - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - NO - - 3 - MC41AA - - - NSImage - champ-courbe-autres-numeros.png - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 + header_incoming.png @@ -4585,7 +4587,10 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE IBCocoaTouchFramework 0 0 - + + 3 + MC41AA + NSImage accept_over.png @@ -4594,8 +4599,15 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE NSImage accept_default.png - - + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + @@ -4622,7 +4634,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE decline_default.png - + {{0, 383}, {320, 77}} @@ -4641,7 +4653,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE {{0, 20}, {320, 460}} - + 1 MC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEAA @@ -4710,6 +4722,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE + @@ -4752,10 +4765,10 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - + @@ -4771,12 +4784,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE headerBackground - - 10 - - - otherBackground - 18 @@ -4795,6 +4802,18 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE mask + + 21 + + + addressBackgroundImage + + + 22 + + + background + @@ -4803,11 +4822,11 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 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 @@ -4821,7 +4840,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 20 + 22 @@ -4882,12 +4901,13 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE {320, 154} {320, 154} - {16, 16} + {640, 523} {320, 339} - {640, 125} - {640, 135} + {640, 125} {320, 154} {320, 154} + {640, 135} + {640, 523} 1181 diff --git a/Classes/LinphoneUI/UICallBar.h b/Classes/LinphoneUI/UICallBar.h index 6bc9c0f1b..ac8019936 100644 --- a/Classes/LinphoneUI/UICallBar.h +++ b/Classes/LinphoneUI/UICallBar.h @@ -35,6 +35,9 @@ UIButton* optionsButton; UIHangUpButton* hangupButton; UIView* padView; + UIView* optionsView; + UIButton* optionsAddButton; + UIButton* optionsTransferButton; //Key pad UIDigitButton* oneButton; @@ -59,6 +62,10 @@ @property (nonatomic, retain) IBOutlet UIButton* optionsButton; @property (nonatomic, retain) IBOutlet UIHangUpButton* hangupButton; @property (nonatomic, retain) IBOutlet UIView* padView; +@property (nonatomic, retain) IBOutlet UIView* optionsView; + +@property (nonatomic, retain) IBOutlet UIButton* optionsAddButton; +@property (nonatomic, retain) IBOutlet UIButton* optionsTransferButton; @property (nonatomic, retain) IBOutlet UIButton* oneButton; @property (nonatomic, retain) IBOutlet UIButton* twoButton; @@ -74,6 +81,8 @@ @property (nonatomic, retain) IBOutlet UIButton* sharpButton; - (IBAction)onOptionsClick:(id)sender; +- (IBAction)onOptionsTransferClick:(id)sender; +- (IBAction)onOptionsAddClick:(id)sender; - (IBAction)onConferenceClick:(id)sender; - (IBAction)onPadClick:(id)sender; diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index 2efde062e..4e0b4d8b7 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -35,7 +35,12 @@ @synthesize speakerButton; @synthesize optionsButton; @synthesize hangupButton; + +@synthesize optionsAddButton; +@synthesize optionsTransferButton; + @synthesize padView; +@synthesize optionsView; @synthesize oneButton; @synthesize twoButton; @@ -65,6 +70,9 @@ [speakerButton release]; [optionsButton release]; + [optionsAddButton release]; + [optionsTransferButton release]; + [oneButton release]; [twoButton release]; [threeButton release]; @@ -78,6 +86,9 @@ [zeroButton release]; [sharpButton release]; + [padView release]; + [optionsView release]; + [[NSNotificationCenter defaultCenter] removeObserver:self]; [super dealloc]; @@ -89,18 +100,30 @@ - (void)viewDidLoad { [pauseButton setType:UIPauseButtonType_CurrentCall call:nil]; - [zeroButton initWithNumber:'0' addressField:nil dtmf:true]; - [oneButton initWithNumber:'1' addressField:nil dtmf:true]; - [twoButton initWithNumber:'2' addressField:nil dtmf:true]; - [threeButton initWithNumber:'3' addressField:nil dtmf:true]; - [fourButton initWithNumber:'4' addressField:nil dtmf:true]; - [fiveButton initWithNumber:'5' addressField:nil dtmf:true]; - [sixButton initWithNumber:'6' addressField:nil dtmf:true]; - [sevenButton initWithNumber:'7' addressField:nil dtmf:true]; - [eightButton initWithNumber:'8' addressField:nil dtmf:true]; - [nineButton initWithNumber:'9' addressField:nil dtmf:true]; - [starButton initWithNumber:'*' addressField:nil dtmf:true]; - [sharpButton initWithNumber:'#' addressField:nil dtmf:true]; + [zeroButton setDigit:'0']; + [zeroButton setDtmf:true]; + [oneButton setDigit:'1']; + [oneButton setDtmf:true]; + [twoButton setDigit:'2']; + [twoButton setDtmf:true]; + [threeButton setDigit:'3']; + [threeButton setDtmf:true]; + [fourButton setDigit:'4']; + [fourButton setDtmf:true]; + [fiveButton setDigit:'5']; + [fiveButton setDtmf:true]; + [sixButton setDigit:'6']; + [sixButton setDtmf:true]; + [sevenButton setDigit:'7']; + [sevenButton setDtmf:true]; + [eightButton setDigit:'8']; + [eightButton setDtmf:true]; + [nineButton setDigit:'9']; + [nineButton setDtmf:true]; + [starButton setDigit:'*']; + [starButton setDtmf:true]; + [sharpButton setDigit:'#']; + [sharpButton setDtmf:true]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; @@ -141,13 +164,7 @@ //LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; - // check LinphoneCore is initialized - LinphoneCore* lc = nil; - if([LinphoneManager isLcReady]) - lc = [LinphoneManager getLc]; - - //TODO - //[LinphoneManager set:mergeCalls hidden:!pause.hidden withName:"MERGE button" andReason:"call count"]; + LinphoneCore* lc = [LinphoneManager getLc]; [speakerButton update]; [microButton update]; @@ -155,6 +172,8 @@ [videoButton update]; [hangupButton update]; + + // Show Pause/Conference button following call count if(linphone_core_get_calls_nb(lc) > 1) { if(![pauseButton isHidden]) { [pauseButton setHidden:true]; @@ -167,16 +186,29 @@ } } - if(linphone_core_get_current_call(lc) == NULL) { + // 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)) { + [optionsTransferButton setEnabled:FALSE]; + } else { + [optionsTransferButton setEnabled:TRUE]; + } + switch(state) { LinphoneCallEnd: LinphoneCallError: LinphoneCallIncoming: LinphoneCallOutgoing: [self hidePad]; + [self hideOptions]; default: break; } @@ -193,7 +225,10 @@ [padView setFrame:frame]; [padView setHidden:FALSE]; CPAnimationSequence* move = [[CPAnimationSequence sequenceWithSteps: - [[CPAnimationStep for:0.5 animate:^{ + [[CPAnimationStep after:0.0 + for:0.5 + options:UIViewAnimationOptionCurveEaseOut + animate:^{ CGRect frame = [padView frame]; frame.origin.y = original_y; [padView setFrame:frame]; @@ -210,12 +245,16 @@ int original_y = frame.origin.y; CPAnimationSequence* move = [[CPAnimationSequence sequenceWithSteps: - [[CPAnimationStep for:0.5 animate:^{ + [[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:^{ + [[CPAnimationStep after:0.0 + animate:^{ CGRect frame = [padView frame]; frame.origin.y = original_y; [padView setHidden:TRUE]; @@ -227,6 +266,55 @@ } } +- (void)showOptions{ + if([optionsView isHidden]) { + 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]; + } +} + +- (void)hideOptions{ + if(![optionsView isHidden]) { + 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]; + } +} + #pragma mark - Action Functions @@ -238,15 +326,38 @@ } } -- (IBAction)onOptionsClick:(id)sender { +- (IBAction)onOptionsTransferClick:(id)sender { + [self hideOptions]; // Go to dialer view NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: [[[NSArray alloc] initWithObjects: @"", nil] autorelease] , @"setAddress:", + [[[NSArray alloc] initWithObjects: [NSNumber numberWithInt: TRUE], nil] autorelease] + , @"setTransferMode:", nil] autorelease]; [[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict]; } +- (IBAction)onOptionsAddClick:(id)sender { + [self hideOptions]; + // Go to dialer view + NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: + [[[NSArray alloc] initWithObjects: @"", nil] autorelease] + , @"setAddress:", + [[[NSArray alloc] initWithObjects: [NSNumber numberWithInt: FALSE], nil] autorelease] + , @"setTransferMode:", + nil] autorelease]; + [[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict]; +} + +- (IBAction)onOptionsClick:(id)sender { + if([optionsView isHidden]) { + [self showOptions]; + } else { + [self hideOptions]; + } +} + - (IBAction)onConferenceClick:(id)sender { linphone_core_add_all_to_conference([LinphoneManager getLc]); } diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/UICallBar.xib index 5773c1431..0936438fe 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -42,6 +42,7 @@ {{0, 335}, {320, 125}} + _NS:9 1 @@ -377,6 +378,81 @@ IBCocoaTouchFramework + + + -2147483356 + + + + 292 + {80, 67} + + + + _NS:9 + NO + + Add call + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + options_transfer_over.png + + + NSImage + options_transfer_default.png + + + 2 + 15 + + + + + + 292 + {{0, 58}, {80, 75}} + + + + _NS:9 + NO + + Add call + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + options_add_over.png + + + NSImage + options_add_default.png + + + + + + {{240, 201}, {80, 134}} + + + + _NS:9 + + 3 + MCAwAA + + IBCocoaTouchFramework + 292 @@ -415,10 +491,7 @@ NSImage video_off_default.png - - 2 - 15 - + @@ -526,6 +599,10 @@ NSImage options_over.png + + NSImage + options_disabled.png + NSImage options_default.png @@ -628,7 +705,7 @@ {{215, 67}, {105, 68}} - + _NS:9 NO @@ -656,10 +733,7 @@ _NS:9 - - 3 - MCAwAA - + IBCocoaTouchFramework @@ -843,6 +917,30 @@ 86 + + + optionsView + + + + 92 + + + + optionsAddButton + + + + 96 + + + + optionsTransferButton + + + + 97 + onPadClick: @@ -878,6 +976,42 @@ 28 + + + onOptionsClick: + + + 7 + + 89 + + + + onOptionsAddClick: + + + 7 + + 93 + + + + onOptionsClick: + + + 7 + + 91 + + + + onOptionsTransferClick: + + + 7 + + 98 + @@ -905,6 +1039,7 @@ + callTabBar @@ -1079,6 +1214,28 @@ # + + 87 + + + + + + + optionsView + + + 88 + + + optionsAddButton + + + 90 + + + optionsTansferButton + @@ -1087,7 +1244,7 @@ UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UIMicroButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1146,15 +1303,20 @@ UIPauseButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UISpeakerButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + - 86 + 98 @@ -1163,7 +1325,9 @@ UIViewController id + id id + id id @@ -1171,10 +1335,18 @@ onConferenceClick: id + + onOptionsAddClick: + id + onOptionsClick: id + + onOptionsTransferClick: + id + onPadClick: id @@ -1189,7 +1361,10 @@ UIMicroButton UIButton UIButton + UIButton UIButton + UIButton + UIView UIView UIPauseButton UIButton @@ -1235,10 +1410,22 @@ oneButton UIButton + + optionsAddButton + UIButton + optionsButton UIButton + + optionsTransferButton + UIButton + + + optionsView + UIView + padView UIView @@ -1292,6 +1479,17 @@ UIDigitButton UILongTouchButton + + addressField + UITextField + + + addressField + + addressField + UITextField + + IBProjectSource ./Classes/UIDigitButton.h @@ -1417,8 +1615,13 @@ {220, 113} {220, 113} {220, 113} + {160, 134} + {160, 134} {160, 134} + {160, 134} {160, 134} + {16, 16} + {16, 16} {209, 136} {209, 136} {209, 136} diff --git a/Classes/LinphoneUI/UICallButton.h b/Classes/LinphoneUI/UICallButton.h index 5fc1547fb..955d9a4ee 100644 --- a/Classes/LinphoneUI/UICallButton.h +++ b/Classes/LinphoneUI/UICallButton.h @@ -22,11 +22,9 @@ @interface UICallButton : UIButton { @private - UITextField* mAddress; + UITextField* addressField; } --(void) initWithAddress:(UITextField*) address; -+(void) enableTransforMode:(BOOL) enable; -+(BOOL) transforModeEnabled; +@property (nonatomic, retain) IBOutlet UITextField* addressField; @end diff --git a/Classes/LinphoneUI/UICallButton.m b/Classes/LinphoneUI/UICallButton.m index 56d34fd18..12d647da7 100644 --- a/Classes/LinphoneUI/UICallButton.m +++ b/Classes/LinphoneUI/UICallButton.m @@ -19,38 +19,49 @@ #import "UICallButton.h" #import "LinphoneManager.h" -#import "CoreTelephony/CTCallCenter.h" + +#import @implementation UICallButton -static BOOL transferMode = NO; +@synthesize addressField; #pragma mark - Lifecycle Functions --(void) initWithAddress:(UITextField*) address{ - mAddress=[address retain]; - transferMode = NO; - [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; +- (void)initUICallButton { + [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; } +- (id)init { + self = [super init]; + if (self) { + [self initUICallButton]; + } + return self; +} + +- (id)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initUICallButton]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (self) { + [self initUICallButton]; + } + return self; +} + - (void)dealloc { + [addressField release]; + [super dealloc]; - [mAddress release]; - } - -#pragma mark - Statics Functions - -+(void) enableTransforMode:(BOOL) enable { - transferMode = enable; -} - -+(BOOL) transforModeEnabled { - return transferMode; -} - - #pragma mark - -(void) touchUp:(id) sender { @@ -86,14 +97,9 @@ static BOOL transferMode = NO; linphone_core_get_default_proxy([LinphoneManager getLc],&proxyCfg); LinphoneCallParams* lcallParams = linphone_core_create_default_call_parameters([LinphoneManager getLc]); - if ([mAddress.text length] == 0) return; //just return - if ([mAddress.text hasPrefix:@"sip:"]) { - if (transferMode) { - linphone_core_transfer_call([LinphoneManager getLc], linphone_core_get_current_call([LinphoneManager getLc]), [mAddress.text cStringUsingEncoding:[NSString defaultCStringEncoding]]); - } else { - linphone_core_invite_with_params([LinphoneManager getLc],[mAddress.text cStringUsingEncoding:[NSString defaultCStringEncoding]],lcallParams); - } - [UICallButton enableTransforMode:NO]; + if ([addressField.text length] == 0) return; //just return + if ([addressField.text hasPrefix:@"sip:"]) { + linphone_core_invite_with_params([LinphoneManager getLc],[addressField.text cStringUsingEncoding:[NSString defaultCStringEncoding]],lcallParams); } else if ( proxyCfg==nil){ UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Invalid sip address",nil) message:NSLocalizedString(@"Either configure a SIP proxy server from settings prior to place a call or use a valid sip address (I.E sip:john@example.net)",nil) @@ -104,7 +110,7 @@ static BOOL transferMode = NO; [error release]; } else { char normalizedUserName[256]; - NSString* toUserName = [NSString stringWithString:[mAddress text]]; + NSString* toUserName = [NSString stringWithString:[addressField text]]; NSString* lDisplayName = [[LinphoneManager instance] getDisplayNameFromAddressBook:toUserName andUpdateCallLog:nil]; linphone_proxy_config_normalize_number(proxyCfg,[toUserName cStringUsingEncoding:[NSString defaultCStringEncoding]],normalizedUserName,sizeof(normalizedUserName)); @@ -113,20 +119,14 @@ static BOOL transferMode = NO; linphone_address_set_display_name(tmpAddress,(lDisplayName)?[lDisplayName cStringUsingEncoding:[NSString defaultCStringEncoding]]:nil); - if (transferMode) { - linphone_core_transfer_call([LinphoneManager getLc], linphone_core_get_current_call([LinphoneManager getLc]), normalizedUserName); - } else { - linphone_core_invite_address_with_params([LinphoneManager getLc],tmpAddress,lcallParams) ; - } + linphone_core_invite_address_with_params([LinphoneManager getLc],tmpAddress,lcallParams) ; linphone_address_destroy(tmpAddress); } linphone_call_params_destroy(lcallParams); - [UICallButton enableTransforMode:NO]; } else if (linphone_core_inc_invite_pending([LinphoneManager getLc])) { linphone_core_accept_call([LinphoneManager getLc],linphone_core_get_current_call([LinphoneManager getLc])); } - } @end diff --git a/Classes/LinphoneUI/UICallCell.m b/Classes/LinphoneUI/UICallCell.m index 49800f98f..083b7ba3a 100644 --- a/Classes/LinphoneUI/UICallCell.m +++ b/Classes/LinphoneUI/UICallCell.m @@ -117,21 +117,17 @@ return 54; } -- (void)startBlinkAnimation:(NSString *)animationID target:(UIView *)target -{ +- (void)startBlinkAnimation:(NSString *)animationID target:(UIView *)target { [UIView animateWithDuration:1.0 delay: 0.0 - options: ([target alpha] == 1.0f)? UIViewAnimationOptionCurveEaseIn: UIViewAnimationOptionCurveEaseOut + options: UIViewAnimationOptionRepeat | + UIViewAnimationOptionAutoreverse | + UIViewAnimationOptionAllowUserInteraction | + UIViewAnimationOptionCurveEaseIn animations:^{ - if([target alpha] == 1.0f) - [target setAlpha:0.0f]; - else [target setAlpha:1.0f]; } completion:^(BOOL finished){ - if(finished) { - [self startBlinkAnimation: animationID target:target]; - } }]; } diff --git a/Classes/LinphoneUI/UIContactCell.xib b/Classes/LinphoneUI/UIContactCell.xib index f31f32511..0b24a4a60 100644 --- a/Classes/LinphoneUI/UIContactCell.xib +++ b/Classes/LinphoneUI/UIContactCell.xib @@ -78,7 +78,6 @@ {{75, 0}, {200, 44}} - _NS:328 NO YES @@ -109,14 +108,10 @@ {320, 44} - _NS:9 - + 3 - MQA - - 2 - + MCAwAA IBCocoaTouchFramework @@ -126,7 +121,6 @@ {320, 44} - _NS:9 NO IBCocoaTouchFramework @@ -141,8 +135,8 @@ {320, 44} - _NS:9 + NO IBCocoaTouchFramework diff --git a/Classes/LinphoneUI/UIDigitButton.h b/Classes/LinphoneUI/UIDigitButton.h index bb4cf415e..65f2d20a5 100644 --- a/Classes/LinphoneUI/UIDigitButton.h +++ b/Classes/LinphoneUI/UIDigitButton.h @@ -24,16 +24,13 @@ @interface UIDigitButton : UILongTouchButton { @private - char mDigit; - UITextField* mAddress; - - bool sendDtmfDuringCall; - + char digit; + bool dtmf; + UITextField* addressField; } --(void) initWithNumber:(char)digit ; --(void) initWithNumber:(char)digit addressField:(UITextField*) address dtmf:(bool)send; - -@property bool sendDtmfDuringCall; +@property (nonatomic, retain) IBOutlet UITextField* addressField; +@property char digit; +@property bool dtmf; @end diff --git a/Classes/LinphoneUI/UIDigitButton.m b/Classes/LinphoneUI/UIDigitButton.m index 7136b6cfc..a93fc5080 100644 --- a/Classes/LinphoneUI/UIDigitButton.m +++ b/Classes/LinphoneUI/UIDigitButton.m @@ -23,39 +23,59 @@ @implementation UIDigitButton -@synthesize sendDtmfDuringCall; +@synthesize dtmf; +@synthesize digit; +@synthesize addressField; #pragma mark - Lifecycle Functions -- (void)initWithNumber:(char)digit { - [self initWithNumber:digit addressField:nil dtmf:true]; -} - -- (void)initWithNumber:(char)digit addressField:(UITextField*) address dtmf:(bool)sendDtmf{ - sendDtmfDuringCall = sendDtmf; - mDigit=digit; - mAddress=address?[address retain]:nil; +- (void)initUIDigitButton { + self->dtmf = FALSE; [self addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown]; [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside|UIControlEventTouchUpOutside]; } +- (id)init { + self = [super init]; + if (self) { + [self initUIDigitButton]; + } + return self; +} + +- (id)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initUIDigitButton]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (self) { + [self initUIDigitButton]; + } + return self; +} + - (void)dealloc { [super dealloc]; - [mAddress release]; + [addressField release]; } #pragma mark - Actions Functions - (void)touchDown:(id) sender { - if (mAddress && (!sendDtmfDuringCall || !linphone_core_in_call([LinphoneManager getLc]))) { - NSString* newAddress = [NSString stringWithFormat:@"%@%c",mAddress.text,mDigit]; - [mAddress setText:newAddress]; - linphone_core_play_dtmf([LinphoneManager getLc], mDigit, -1); + if (addressField && (!dtmf || !linphone_core_in_call([LinphoneManager getLc]))) { + NSString* newAddress = [NSString stringWithFormat:@"%@%c",addressField.text, digit]; + [addressField setText:newAddress]; + linphone_core_play_dtmf([LinphoneManager getLc], digit, -1); } else { - linphone_core_send_dtmf([LinphoneManager getLc], mDigit); - linphone_core_play_dtmf([LinphoneManager getLc], mDigit, 100); + linphone_core_send_dtmf([LinphoneManager getLc], digit); + linphone_core_play_dtmf([LinphoneManager getLc], digit, 100); } } @@ -70,10 +90,10 @@ } - (void)onLongTouch { - if (mDigit == '0') { - NSString* newAddress = [[mAddress.text substringToIndex: [mAddress.text length]-1] stringByAppendingString:@"+"]; - [mAddress setText:newAddress]; - [mAddress sendActionsForControlEvents:UIControlEventEditingChanged]; + if (digit == '0') { + NSString* newAddress = [[addressField.text substringToIndex: [addressField.text length]-1] stringByAppendingString:@"+"]; + [addressField setText:newAddress]; + [addressField sendActionsForControlEvents:UIControlEventEditingChanged]; } } diff --git a/Classes/LinphoneUI/UIEraseButton.h b/Classes/LinphoneUI/UIEraseButton.h index 44eebd84e..0e9e2af51 100644 --- a/Classes/LinphoneUI/UIEraseButton.h +++ b/Classes/LinphoneUI/UIEraseButton.h @@ -23,8 +23,9 @@ @interface UIEraseButton : UILongTouchButton { @private - UITextField* mAddress; - + UITextField* addressField; } --(void) initWithAddressField:(UITextField*) address; + +@property (nonatomic, retain) IBOutlet UITextField* addressField; + @end diff --git a/Classes/LinphoneUI/UIEraseButton.m b/Classes/LinphoneUI/UIEraseButton.m index 5a4b58e22..9b4e96eb4 100644 --- a/Classes/LinphoneUI/UIEraseButton.m +++ b/Classes/LinphoneUI/UIEraseButton.m @@ -22,23 +22,49 @@ @implementation UIEraseButton +@synthesize addressField; + + #pragma mark - Lifecycle Functions --(void) initWithAddressField:(UITextField*) address { - mAddress = address; +- (void)initUIEraseButton { [self addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown]; } -- (void)dealloc { - [super dealloc]; +- (id)init { + self = [super init]; + if (self) { + [self initUIEraseButton]; + } + return self; } +- (id)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initUIEraseButton]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (self) { + [self initUIEraseButton]; + } + return self; +} + +- (void)dealloc { + [super dealloc]; + [addressField release]; +} #pragma mark - Action Functions -(void) touchDown:(id) sender { - if ([mAddress.text length] > 0) { - [mAddress setText:[mAddress.text substringToIndex:[mAddress.text length]-1]]; + if ([addressField.text length] > 0) { + [addressField setText:[addressField.text substringToIndex:[addressField.text length]-1]]; } } @@ -49,7 +75,7 @@ } - (void)onLongTouch { - [mAddress setText:@""]; + [addressField setText:@""]; } @end diff --git a/Classes/LinphoneUI/UIHistoryCell.xib b/Classes/LinphoneUI/UIHistoryCell.xib index c978fbc8e..bba065224 100644 --- a/Classes/LinphoneUI/UIHistoryCell.xib +++ b/Classes/LinphoneUI/UIHistoryCell.xib @@ -129,7 +129,6 @@ {{276, 0}, {44, 44}} - _NS:9 NO IBCocoaTouchFramework @@ -158,12 +157,9 @@ _NS:9 - + 3 - MQA - - 2 - + MCAwAA IBCocoaTouchFramework @@ -173,7 +169,6 @@ {320, 44} - _NS:9 NO IBCocoaTouchFramework @@ -189,6 +184,7 @@ _NS:9 + NO IBCocoaTouchFramework diff --git a/Classes/LinphoneUI/UITransferButton.h b/Classes/LinphoneUI/UITransferButton.h new file mode 100644 index 000000000..f6178358e --- /dev/null +++ b/Classes/LinphoneUI/UITransferButton.h @@ -0,0 +1,29 @@ +/* UITransferButton.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 + +@interface UITransferButton : UIButton { +@private + UITextField* addressField; +} + +@property (nonatomic, retain) IBOutlet UITextField* addressField; + +@end diff --git a/Classes/LinphoneUI/UITransferButton.m b/Classes/LinphoneUI/UITransferButton.m new file mode 100644 index 000000000..6a105db9b --- /dev/null +++ b/Classes/LinphoneUI/UITransferButton.m @@ -0,0 +1,131 @@ +/* UITransferButton.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 "UITransferButton.h" +#import "LinphoneManager.h" + +#import + +@implementation UITransferButton + +@synthesize addressField; + +#pragma mark - Lifecycle Functions + +- (void)initUICallButton { + [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; +} + +- (id)init { + self = [super init]; + if (self) { + [self initUICallButton]; + } + return self; +} + +- (id)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initUICallButton]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (self) { + [self initUICallButton]; + } + return self; +} + +- (void)dealloc { + [addressField release]; + + [super dealloc]; +} + +#pragma mark - + +-(void) touchUp:(id) sender { + if (!linphone_core_is_network_reachabled([LinphoneManager getLc])) { + UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Network Error",nil) + message:NSLocalizedString(@"There is no network connection available, enable WIFI or WWAN prior to place a call",nil) + delegate:nil + cancelButtonTitle:NSLocalizedString(@"Continue",nil) + otherButtonTitles:nil]; + [error show]; + [error release]; + return; + } + + CTCallCenter* ct = [[CTCallCenter alloc] init]; + if ([ct.currentCalls count] > 0) { + ms_error("GSM call in progress, cancelling outgoing SIP call request"); + UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Cannot make call",nil) + message:NSLocalizedString(@"Please terminate GSM call",nil) + delegate:nil + cancelButtonTitle:NSLocalizedString(@"Continue",nil) + otherButtonTitles:nil]; + [error show]; + [error release]; + [ct release]; + return; + } + [ct release]; + + if (TRUE /*!linphone_core_in_call([LinphoneManager getLc])*/) { + LinphoneProxyConfig* proxyCfg; + //get default proxy + linphone_core_get_default_proxy([LinphoneManager getLc],&proxyCfg); + LinphoneCallParams* lcallParams = linphone_core_create_default_call_parameters([LinphoneManager getLc]); + + if ([addressField.text length] == 0) return; //just return + if ([addressField.text hasPrefix:@"sip:"]) { + linphone_core_transfer_call([LinphoneManager getLc], linphone_core_get_current_call([LinphoneManager getLc]), [addressField.text cStringUsingEncoding:[NSString defaultCStringEncoding]]); + } else if ( proxyCfg==nil){ + UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Invalid sip address",nil) + message:NSLocalizedString(@"Either configure a SIP proxy server from settings prior to place a call or use a valid sip address (I.E sip:john@example.net)",nil) + delegate:nil + cancelButtonTitle:NSLocalizedString(@"Continue",nil) + otherButtonTitles:nil]; + [error show]; + [error release]; + } else { + char normalizedUserName[256]; + NSString* toUserName = [NSString stringWithString:[addressField text]]; + NSString* lDisplayName = [[LinphoneManager instance] getDisplayNameFromAddressBook:toUserName andUpdateCallLog:nil]; + + linphone_proxy_config_normalize_number(proxyCfg,[toUserName cStringUsingEncoding:[NSString defaultCStringEncoding]],normalizedUserName,sizeof(normalizedUserName)); + LinphoneAddress* tmpAddress = linphone_address_new(linphone_core_get_identity([LinphoneManager getLc])); + linphone_address_set_username(tmpAddress,normalizedUserName); + linphone_address_set_display_name(tmpAddress,(lDisplayName)?[lDisplayName cStringUsingEncoding:[NSString defaultCStringEncoding]]:nil); + + + linphone_core_transfer_call([LinphoneManager getLc], linphone_core_get_current_call([LinphoneManager getLc]), normalizedUserName); + + linphone_address_destroy(tmpAddress); + } + linphone_call_params_destroy(lcallParams); + } else if (linphone_core_inc_invite_pending([LinphoneManager getLc])) { + linphone_core_accept_call([LinphoneManager getLc],linphone_core_get_current_call([LinphoneManager getLc])); + } +} + +@end diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 8d9e26959..43be2d8cd 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -259,9 +259,7 @@ case LinphoneCallConnected: case LinphoneCallUpdated: { - if ([[LinphoneManager instance] currentView] != PhoneView_InCall) { - [[LinphoneManager instance] changeView:PhoneView_InCall]; - } + [[LinphoneManager instance] changeView:PhoneView_InCall]; break; } case LinphoneCallUpdatedByRemote: @@ -270,9 +268,7 @@ const LinphoneCallParams* remote = linphone_call_get_remote_params(call); if (linphone_call_params_video_enabled(current) && !linphone_call_params_video_enabled(remote)) { - if ([[LinphoneManager instance] currentView] != PhoneView_InCall) { - [[LinphoneManager instance] changeView:PhoneView_InCall]; - } + [[LinphoneManager instance] changeView:PhoneView_InCall]; } break; } @@ -284,32 +280,27 @@ { [self dismissIncomingCall:call]; if (canHideInCallView) { - if ([[LinphoneManager instance] currentView] != PhoneView_Dialer) { - // Go to dialer view - NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: - [[[NSArray alloc] initWithObjects: @"", nil] autorelease] - , @"setAddress:", - nil] autorelease]; - [[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict]; - } + // Go to dialer view + NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: + [[[NSArray alloc] initWithObjects: @"", nil] autorelease] + , @"setAddress:", + [[[NSArray alloc] initWithObjects: [NSNumber numberWithInt: FALSE], nil] autorelease] + , @"setTransferMode:", + nil] autorelease]; + [[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict]; } else { - if ([[LinphoneManager instance] currentView] != PhoneView_InCall) { - [[LinphoneManager instance] changeView:PhoneView_InCall]; - } + [[LinphoneManager instance] changeView:PhoneView_InCall]; } break; } case LinphoneCallStreamsRunning: { - if ([[LinphoneManager instance] currentView] != PhoneView_InCall) { - [[LinphoneManager instance] changeView:PhoneView_InCall]; - } + [[LinphoneManager instance] changeView:PhoneView_InCall]; break; } default: break; } - } diff --git a/Classes/Utils/CPAnimationStep.m b/Classes/Utils/CPAnimationStep.m index ba99bbfd9..4ad40220f 100755 --- a/Classes/Utils/CPAnimationStep.m +++ b/Classes/Utils/CPAnimationStep.m @@ -74,7 +74,7 @@ self.consumableSteps = nil; return; // we're done } - AnimationStep completionStep = ^{ + void (^completionStep)(BOOL) = ^(BOOL animated){ [self.consumableSteps removeLastObject]; [self runAnimated:animated]; // recurse! }; @@ -87,13 +87,15 @@ animations:currentStep.step completion:^(BOOL finished) { if (finished) { - completionStep(); - } + completionStep(TRUE); + } else { + completionStep(FALSE); + } }]; } else { void (^execution)(void) = ^{ currentStep.step(); - completionStep(); + completionStep(FALSE); }; if (animated && currentStep.delay) { diff --git a/Resources/contacts_all_default.png b/Resources/contacts_all_default.png index 18e7eebd4..d062ce11c 100644 Binary files a/Resources/contacts_all_default.png and b/Resources/contacts_all_default.png differ diff --git a/Resources/contacts_all_selected.png b/Resources/contacts_all_selected.png index d062ce11c..18e7eebd4 100644 Binary files a/Resources/contacts_all_selected.png and b/Resources/contacts_all_selected.png differ diff --git a/Resources/contacts_linphone_default.png b/Resources/contacts_linphone_default.png index 9d240afeb..0a75d15f0 100644 Binary files a/Resources/contacts_linphone_default.png and b/Resources/contacts_linphone_default.png differ diff --git a/Resources/contacts_linphone_selected.png b/Resources/contacts_linphone_selected.png index 0a75d15f0..9d240afeb 100644 Binary files a/Resources/contacts_linphone_selected.png and b/Resources/contacts_linphone_selected.png differ diff --git a/Resources/history_all_default.png b/Resources/history_all_default.png index fe9f61f2f..9790cc945 100644 Binary files a/Resources/history_all_default.png and b/Resources/history_all_default.png differ diff --git a/Resources/history_all_selected.png b/Resources/history_all_selected.png index 9790cc945..fe9f61f2f 100644 Binary files a/Resources/history_all_selected.png and b/Resources/history_all_selected.png differ diff --git a/Resources/history_missed_default.png b/Resources/history_missed_default.png index 0f2f99b4e..cb413d997 100644 Binary files a/Resources/history_missed_default.png and b/Resources/history_missed_default.png differ diff --git a/Resources/history_missed_selected.png b/Resources/history_missed_selected.png index cb413d997..0f2f99b4e 100644 Binary files a/Resources/history_missed_selected.png and b/Resources/history_missed_selected.png differ diff --git a/Resources/options_add_default.png b/Resources/options_add_default.png new file mode 100644 index 000000000..9466db7a0 Binary files /dev/null and b/Resources/options_add_default.png differ diff --git a/Resources/options_add_over.png b/Resources/options_add_over.png new file mode 100644 index 000000000..efbda4690 Binary files /dev/null and b/Resources/options_add_over.png differ diff --git a/Resources/options_transfer_default.png b/Resources/options_transfer_default.png new file mode 100644 index 000000000..0fb0981f9 Binary files /dev/null and b/Resources/options_transfer_default.png differ diff --git a/Resources/options_transfer_over.png b/Resources/options_transfer_over.png new file mode 100644 index 000000000..019918329 Binary files /dev/null and b/Resources/options_transfer_over.png differ diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 7b6a1fd9a..0765ea3eb 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -155,6 +155,16 @@ 70E542F513E147EB002BA2C0 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F413E147EB002BA2C0 /* QuartzCore.framework */; }; D3196D2D15A3199D007FEEBA /* list_hightlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D2C15A3199D007FEEBA /* list_hightlight.png */; }; D3196D2E15A3199D007FEEBA /* list_hightlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D2C15A3199D007FEEBA /* list_hightlight.png */; }; + D3196D3415A321E3007FEEBA /* options_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3015A321E2007FEEBA /* options_add_default.png */; }; + D3196D3515A321E3007FEEBA /* options_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3015A321E2007FEEBA /* options_add_default.png */; }; + D3196D3615A321E3007FEEBA /* options_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3115A321E2007FEEBA /* options_add_over.png */; }; + D3196D3715A321E3007FEEBA /* options_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3115A321E2007FEEBA /* options_add_over.png */; }; + D3196D3815A321E3007FEEBA /* options_transfer_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3215A321E3007FEEBA /* options_transfer_default.png */; }; + D3196D3915A321E3007FEEBA /* options_transfer_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3215A321E3007FEEBA /* options_transfer_default.png */; }; + D3196D3A15A321E3007FEEBA /* options_transfer_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3315A321E3007FEEBA /* options_transfer_over.png */; }; + D3196D3B15A321E3007FEEBA /* options_transfer_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3315A321E3007FEEBA /* options_transfer_over.png */; }; + D3196D3E15A32BD8007FEEBA /* UITransferButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D3196D3D15A32BD8007FEEBA /* UITransferButton.m */; }; + D3196D3F15A32BD8007FEEBA /* UITransferButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D3196D3D15A32BD8007FEEBA /* UITransferButton.m */; }; D31AAF5E159B3919002C6B02 /* InCallTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */; }; D31AAF5F159B3919002C6B02 /* InCallTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */; }; D31AAF63159B5B6F002C6B02 /* conference_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF61159B5B6E002C6B02 /* conference_default.png */; }; @@ -240,14 +250,14 @@ D35497FF15875372000081D8 /* ContactsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35497FC15875372000081D8 /* ContactsViewController.m */; }; D354980015875372000081D8 /* ContactsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35497FD15875372000081D8 /* ContactsViewController.xib */; }; D354980115875372000081D8 /* ContactsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35497FD15875372000081D8 /* ContactsViewController.xib */; }; - D354980615875534000081D8 /* contacts_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980215875534000081D8 /* contacts_all_default.png */; }; - D354980715875534000081D8 /* contacts_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980215875534000081D8 /* contacts_all_default.png */; }; - D354980815875534000081D8 /* contacts_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980315875534000081D8 /* contacts_all_selected.png */; }; - D354980915875534000081D8 /* contacts_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980315875534000081D8 /* contacts_all_selected.png */; }; - D354980A15875534000081D8 /* contacts_linphone_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980415875534000081D8 /* contacts_linphone_default.png */; }; - D354980B15875534000081D8 /* contacts_linphone_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980415875534000081D8 /* contacts_linphone_default.png */; }; - D354980C15875534000081D8 /* contacts_linphone_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980515875534000081D8 /* contacts_linphone_selected.png */; }; - D354980D15875534000081D8 /* contacts_linphone_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980515875534000081D8 /* contacts_linphone_selected.png */; }; + D354980615875534000081D8 /* contacts_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980215875534000081D8 /* contacts_all_selected.png */; }; + D354980715875534000081D8 /* contacts_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980215875534000081D8 /* contacts_all_selected.png */; }; + D354980815875534000081D8 /* contacts_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980315875534000081D8 /* contacts_all_default.png */; }; + D354980915875534000081D8 /* contacts_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980315875534000081D8 /* contacts_all_default.png */; }; + D354980A15875534000081D8 /* contacts_linphone_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980415875534000081D8 /* contacts_linphone_selected.png */; }; + D354980B15875534000081D8 /* contacts_linphone_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980415875534000081D8 /* contacts_linphone_selected.png */; }; + D354980C15875534000081D8 /* contacts_linphone_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980515875534000081D8 /* contacts_linphone_default.png */; }; + D354980D15875534000081D8 /* contacts_linphone_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980515875534000081D8 /* contacts_linphone_default.png */; }; D354981015875608000081D8 /* contacts_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980E15875608000081D8 /* contacts_add_default.png */; }; D354981115875608000081D8 /* contacts_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980E15875608000081D8 /* contacts_add_default.png */; }; D354981215875608000081D8 /* contacts_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980F15875608000081D8 /* contacts_add_over.png */; }; @@ -455,18 +465,18 @@ D3ED3E881586291E006C0DE4 /* UIMainBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3E851586291B006C0DE4 /* UIMainBar.m */; }; D3ED3E891586291E006C0DE4 /* UIMainBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E861586291C006C0DE4 /* UIMainBar.xib */; }; D3ED3E8A1586291E006C0DE4 /* UIMainBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E861586291C006C0DE4 /* UIMainBar.xib */; }; - D3ED3E9815872EF1006C0DE4 /* history_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9215872EF1006C0DE4 /* history_all_default.png */; }; - D3ED3E9915872EF1006C0DE4 /* history_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9215872EF1006C0DE4 /* history_all_default.png */; }; - D3ED3E9A15872EF1006C0DE4 /* history_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9315872EF1006C0DE4 /* history_all_selected.png */; }; - D3ED3E9B15872EF1006C0DE4 /* history_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9315872EF1006C0DE4 /* history_all_selected.png */; }; + D3ED3E9815872EF1006C0DE4 /* history_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9215872EF1006C0DE4 /* history_all_selected.png */; }; + D3ED3E9915872EF1006C0DE4 /* history_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9215872EF1006C0DE4 /* history_all_selected.png */; }; + D3ED3E9A15872EF1006C0DE4 /* history_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9315872EF1006C0DE4 /* history_all_default.png */; }; + D3ED3E9B15872EF1006C0DE4 /* history_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9315872EF1006C0DE4 /* history_all_default.png */; }; D3ED3E9C15872EF1006C0DE4 /* history_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9415872EF1006C0DE4 /* history_edit_default.png */; }; D3ED3E9D15872EF1006C0DE4 /* history_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9415872EF1006C0DE4 /* history_edit_default.png */; }; D3ED3E9E15872EF1006C0DE4 /* history_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9515872EF1006C0DE4 /* history_edit_over.png */; }; D3ED3E9F15872EF1006C0DE4 /* history_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9515872EF1006C0DE4 /* history_edit_over.png */; }; - D3ED3EA015872EF1006C0DE4 /* history_missed_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9615872EF1006C0DE4 /* history_missed_default.png */; }; - D3ED3EA115872EF1006C0DE4 /* history_missed_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9615872EF1006C0DE4 /* history_missed_default.png */; }; - D3ED3EA215872EF1006C0DE4 /* history_missed_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9715872EF1006C0DE4 /* history_missed_selected.png */; }; - D3ED3EA315872EF1006C0DE4 /* history_missed_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9715872EF1006C0DE4 /* history_missed_selected.png */; }; + D3ED3EA015872EF1006C0DE4 /* history_missed_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9615872EF1006C0DE4 /* history_missed_selected.png */; }; + D3ED3EA115872EF1006C0DE4 /* history_missed_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9615872EF1006C0DE4 /* history_missed_selected.png */; }; + D3ED3EA215872EF1006C0DE4 /* history_missed_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9715872EF1006C0DE4 /* history_missed_default.png */; }; + D3ED3EA315872EF1006C0DE4 /* history_missed_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9715872EF1006C0DE4 /* history_missed_default.png */; }; D3ED3EA71587334E006C0DE4 /* HistoryTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EA51587334C006C0DE4 /* HistoryTableViewController.m */; }; D3ED3EA81587334E006C0DE4 /* HistoryTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EA51587334C006C0DE4 /* HistoryTableViewController.m */; }; D3ED3EB3158738FB006C0DE4 /* HistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3EB2158738FA006C0DE4 /* HistoryViewController.xib */; }; @@ -897,6 +907,12 @@ 70E542F413E147EB002BA2C0 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 8D1107310486CEB800E47090 /* linphone-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "linphone-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; D3196D2C15A3199D007FEEBA /* list_hightlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = list_hightlight.png; path = Resources/list_hightlight.png; sourceTree = ""; }; + D3196D3015A321E2007FEEBA /* options_add_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_add_default.png; path = Resources/options_add_default.png; sourceTree = ""; }; + D3196D3115A321E2007FEEBA /* options_add_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_add_over.png; path = Resources/options_add_over.png; sourceTree = ""; }; + D3196D3215A321E3007FEEBA /* options_transfer_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_transfer_default.png; path = Resources/options_transfer_default.png; sourceTree = ""; }; + D3196D3315A321E3007FEEBA /* options_transfer_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_transfer_over.png; path = Resources/options_transfer_over.png; sourceTree = ""; }; + D3196D3C15A32BD7007FEEBA /* UITransferButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UITransferButton.h; sourceTree = ""; }; + D3196D3D15A32BD8007FEEBA /* UITransferButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UITransferButton.m; sourceTree = ""; }; D31AAF5C159B3919002C6B02 /* InCallTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InCallTableViewController.h; sourceTree = ""; }; D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InCallTableViewController.m; sourceTree = ""; }; D31AAF61159B5B6E002C6B02 /* conference_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = conference_default.png; path = Resources/conference_default.png; sourceTree = ""; }; @@ -954,10 +970,10 @@ D35497FB15875372000081D8 /* ContactsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactsViewController.h; sourceTree = ""; }; D35497FC15875372000081D8 /* ContactsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactsViewController.m; sourceTree = ""; }; D35497FD15875372000081D8 /* ContactsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ContactsViewController.xib; sourceTree = ""; }; - D354980215875534000081D8 /* contacts_all_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_all_default.png; path = Resources/contacts_all_default.png; sourceTree = ""; }; - D354980315875534000081D8 /* contacts_all_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_all_selected.png; path = Resources/contacts_all_selected.png; sourceTree = ""; }; - D354980415875534000081D8 /* contacts_linphone_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_linphone_default.png; path = Resources/contacts_linphone_default.png; sourceTree = ""; }; - D354980515875534000081D8 /* contacts_linphone_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_linphone_selected.png; path = Resources/contacts_linphone_selected.png; sourceTree = ""; }; + D354980215875534000081D8 /* contacts_all_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_all_selected.png; path = Resources/contacts_all_selected.png; sourceTree = ""; }; + D354980315875534000081D8 /* contacts_all_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_all_default.png; path = Resources/contacts_all_default.png; sourceTree = ""; }; + D354980415875534000081D8 /* contacts_linphone_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_linphone_selected.png; path = Resources/contacts_linphone_selected.png; sourceTree = ""; }; + D354980515875534000081D8 /* contacts_linphone_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_linphone_default.png; path = Resources/contacts_linphone_default.png; sourceTree = ""; }; D354980E15875608000081D8 /* contacts_add_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_add_default.png; path = Resources/contacts_add_default.png; sourceTree = ""; }; D354980F15875608000081D8 /* contacts_add_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_add_over.png; path = Resources/contacts_add_over.png; sourceTree = ""; }; D3549814158761CF000081D8 /* ContactsTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactsTableViewController.h; sourceTree = ""; }; @@ -1097,12 +1113,12 @@ D3ED3E841586291B006C0DE4 /* UIMainBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIMainBar.h; sourceTree = ""; }; D3ED3E851586291B006C0DE4 /* UIMainBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIMainBar.m; sourceTree = ""; }; D3ED3E861586291C006C0DE4 /* UIMainBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIMainBar.xib; sourceTree = ""; }; - D3ED3E9215872EF1006C0DE4 /* history_all_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_all_default.png; path = Resources/history_all_default.png; sourceTree = ""; }; - D3ED3E9315872EF1006C0DE4 /* history_all_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_all_selected.png; path = Resources/history_all_selected.png; sourceTree = ""; }; + D3ED3E9215872EF1006C0DE4 /* history_all_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_all_selected.png; path = Resources/history_all_selected.png; sourceTree = ""; }; + D3ED3E9315872EF1006C0DE4 /* history_all_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_all_default.png; path = Resources/history_all_default.png; sourceTree = ""; }; D3ED3E9415872EF1006C0DE4 /* history_edit_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_edit_default.png; path = Resources/history_edit_default.png; sourceTree = ""; }; D3ED3E9515872EF1006C0DE4 /* history_edit_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_edit_over.png; path = Resources/history_edit_over.png; sourceTree = ""; }; - D3ED3E9615872EF1006C0DE4 /* history_missed_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_missed_default.png; path = Resources/history_missed_default.png; sourceTree = ""; }; - D3ED3E9715872EF1006C0DE4 /* history_missed_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_missed_selected.png; path = Resources/history_missed_selected.png; sourceTree = ""; }; + D3ED3E9615872EF1006C0DE4 /* history_missed_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_missed_selected.png; path = Resources/history_missed_selected.png; sourceTree = ""; }; + D3ED3E9715872EF1006C0DE4 /* history_missed_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_missed_default.png; path = Resources/history_missed_default.png; sourceTree = ""; }; D3ED3EA41587334B006C0DE4 /* HistoryTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryTableViewController.h; sourceTree = ""; }; D3ED3EA51587334C006C0DE4 /* HistoryTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryTableViewController.m; sourceTree = ""; }; D3ED3EB2158738FA006C0DE4 /* HistoryViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryViewController.xib; sourceTree = ""; }; @@ -1601,6 +1617,8 @@ D32648431588F6FB00930C67 /* UIToggleButton.m */, 340751E5150F38FC00B89C47 /* UIVideoButton.h */, 340751E6150F38FD00B89C47 /* UIVideoButton.m */, + D3196D3C15A32BD7007FEEBA /* UITransferButton.h */, + D3196D3D15A32BD8007FEEBA /* UITransferButton.m */, ); path = LinphoneUI; sourceTree = ""; @@ -1760,7 +1778,6 @@ 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( - D3196D2C15A3199D007FEEBA /* list_hightlight.png */, D3F83F741582253100336684 /* accept_default.png */, D3F83F751582253100336684 /* accept_over.png */, D3D6A39B159B0EEF005F692C /* add_call_default.png */, @@ -1814,11 +1831,11 @@ D31AAF62159B5B6E002C6B02 /* conference_over.png */, D354980E15875608000081D8 /* contacts_add_default.png */, D354980F15875608000081D8 /* contacts_add_over.png */, - D354980215875534000081D8 /* contacts_all_default.png */, - D354980315875534000081D8 /* contacts_all_selected.png */, + D354980215875534000081D8 /* contacts_all_selected.png */, + D354980315875534000081D8 /* contacts_all_default.png */, D38327EB1580FE3A00FA0D23 /* contacts_default.png */, - D354980415875534000081D8 /* contacts_linphone_default.png */, - D354980515875534000081D8 /* contacts_linphone_selected.png */, + D354980415875534000081D8 /* contacts_linphone_selected.png */, + D354980515875534000081D8 /* contacts_linphone_default.png */, D38327FC158100E400FA0D23 /* contacts_over.png */, D38327EC1580FE3A00FA0D23 /* contacts_selected.png */, D3F83F761582253100336684 /* decline_default.png */, @@ -1833,13 +1850,13 @@ D3F83EFB158205A100336684 /* hangup_over.png */, D36C43CE158F2F370048BA40 /* header_conference.png */, D3F26BFB15987083005F9CAB /* header_incoming.png */, - D3ED3E9215872EF1006C0DE4 /* history_all_default.png */, - D3ED3E9315872EF1006C0DE4 /* history_all_selected.png */, + D3ED3E9215872EF1006C0DE4 /* history_all_selected.png */, + D3ED3E9315872EF1006C0DE4 /* history_all_default.png */, D347347C1580E5F8003C7B8C /* history_default.png */, D3ED3E9415872EF1006C0DE4 /* history_edit_default.png */, D3ED3E9515872EF1006C0DE4 /* history_edit_over.png */, - D3ED3E9615872EF1006C0DE4 /* history_missed_default.png */, - D3ED3E9715872EF1006C0DE4 /* history_missed_selected.png */, + D3ED3E9615872EF1006C0DE4 /* history_missed_selected.png */, + D3ED3E9715872EF1006C0DE4 /* history_missed_default.png */, D3F26BF515986DAD005F9CAB /* history_ok_default.png */, D3F26BF615986DAD005F9CAB /* history_ok_over.png */, D38327FD158100E400FA0D23 /* history_over.png */, @@ -1858,6 +1875,7 @@ D3EA5417159858A80037DC6B /* list_delete_over.png */, D354981815876FE7000081D8 /* list_details_default.png */, D354981915876FE7000081D8 /* list_details_over.png */, + D3196D2C15A3199D007FEEBA /* list_hightlight.png */, D3F83EF4158205A100336684 /* micro_off_default.png */, D35EA76115A2DF8D003E025D /* micro_off_disabled.png */, D3F83EF5158205A100336684 /* micro_off_over.png */, @@ -1891,9 +1909,13 @@ D3F83F2D1582223B00336684 /* numpad_zero_over.png */, 2242E312125235120061DDCE /* oldphone-mono-30s.caf */, 2237D4081084D7A9001383EE /* oldphone-mono.wav */, + D3196D3015A321E2007FEEBA /* options_add_default.png */, + D3196D3115A321E2007FEEBA /* options_add_over.png */, D3D6A3A8159B0EFE005F692C /* options_default.png */, D3D6A3A9159B0EFE005F692C /* options_disabled.png */, D3D6A3AA159B0EFE005F692C /* options_over.png */, + D3196D3215A321E3007FEEBA /* options_transfer_default.png */, + D3196D3315A321E3007FEEBA /* options_transfer_over.png */, D3F83EF8158205A100336684 /* pause_off_default.png */, D3F83EF9158205A100336684 /* pause_off_over.png */, D36C43E7158F3F7E0048BA40 /* pause_on_default.png */, @@ -2204,18 +2226,18 @@ D3ED3E7815861B1B006C0DE4 /* backspace_default.png in Resources */, D3ED3E7A15861B1B006C0DE4 /* backspace_over.png in Resources */, D3ED3E891586291E006C0DE4 /* UIMainBar.xib in Resources */, - D3ED3E9815872EF1006C0DE4 /* history_all_default.png in Resources */, - D3ED3E9A15872EF1006C0DE4 /* history_all_selected.png in Resources */, + D3ED3E9815872EF1006C0DE4 /* history_all_selected.png in Resources */, + D3ED3E9A15872EF1006C0DE4 /* history_all_default.png in Resources */, D3ED3E9C15872EF1006C0DE4 /* history_edit_default.png in Resources */, D3ED3E9E15872EF1006C0DE4 /* history_edit_over.png in Resources */, - D3ED3EA015872EF1006C0DE4 /* history_missed_default.png in Resources */, - D3ED3EA215872EF1006C0DE4 /* history_missed_selected.png in Resources */, + D3ED3EA015872EF1006C0DE4 /* history_missed_selected.png in Resources */, + D3ED3EA215872EF1006C0DE4 /* history_missed_default.png in Resources */, D3ED3EB3158738FB006C0DE4 /* HistoryViewController.xib in Resources */, D354980015875372000081D8 /* ContactsViewController.xib in Resources */, - D354980615875534000081D8 /* contacts_all_default.png in Resources */, - D354980815875534000081D8 /* contacts_all_selected.png in Resources */, - D354980A15875534000081D8 /* contacts_linphone_default.png in Resources */, - D354980C15875534000081D8 /* contacts_linphone_selected.png in Resources */, + D354980615875534000081D8 /* contacts_all_selected.png in Resources */, + D354980815875534000081D8 /* contacts_all_default.png in Resources */, + D354980A15875534000081D8 /* contacts_linphone_selected.png in Resources */, + D354980C15875534000081D8 /* contacts_linphone_default.png in Resources */, D354981015875608000081D8 /* contacts_add_default.png in Resources */, D354981215875608000081D8 /* contacts_add_over.png in Resources */, D354981A15876FE7000081D8 /* list_details_default.png in Resources */, @@ -2307,6 +2329,10 @@ D38D14AF15A30B3D008497E8 /* cell_call_first_hightlight.png in Resources */, D38D14B115A30B3D008497E8 /* cell_call_hightlight.png in Resources */, D3196D2D15A3199D007FEEBA /* list_hightlight.png in Resources */, + D3196D3415A321E3007FEEBA /* options_add_default.png in Resources */, + D3196D3615A321E3007FEEBA /* options_add_over.png in Resources */, + D3196D3815A321E3007FEEBA /* options_transfer_default.png in Resources */, + D3196D3A15A321E3007FEEBA /* options_transfer_over.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2389,18 +2415,18 @@ D3ED3E7915861B1B006C0DE4 /* backspace_default.png in Resources */, D3ED3E7B15861B1B006C0DE4 /* backspace_over.png in Resources */, D3ED3E8A1586291E006C0DE4 /* UIMainBar.xib in Resources */, - D3ED3E9915872EF1006C0DE4 /* history_all_default.png in Resources */, - D3ED3E9B15872EF1006C0DE4 /* history_all_selected.png in Resources */, + D3ED3E9915872EF1006C0DE4 /* history_all_selected.png in Resources */, + D3ED3E9B15872EF1006C0DE4 /* history_all_default.png in Resources */, D3ED3E9D15872EF1006C0DE4 /* history_edit_default.png in Resources */, D3ED3E9F15872EF1006C0DE4 /* history_edit_over.png in Resources */, - D3ED3EA115872EF1006C0DE4 /* history_missed_default.png in Resources */, - D3ED3EA315872EF1006C0DE4 /* history_missed_selected.png in Resources */, + D3ED3EA115872EF1006C0DE4 /* history_missed_selected.png in Resources */, + D3ED3EA315872EF1006C0DE4 /* history_missed_default.png in Resources */, D3ED3EB4158738FB006C0DE4 /* HistoryViewController.xib in Resources */, D354980115875372000081D8 /* ContactsViewController.xib in Resources */, - D354980715875534000081D8 /* contacts_all_default.png in Resources */, - D354980915875534000081D8 /* contacts_all_selected.png in Resources */, - D354980B15875534000081D8 /* contacts_linphone_default.png in Resources */, - D354980D15875534000081D8 /* contacts_linphone_selected.png in Resources */, + D354980715875534000081D8 /* contacts_all_selected.png in Resources */, + D354980915875534000081D8 /* contacts_all_default.png in Resources */, + D354980B15875534000081D8 /* contacts_linphone_selected.png in Resources */, + D354980D15875534000081D8 /* contacts_linphone_default.png in Resources */, D354981115875608000081D8 /* contacts_add_default.png in Resources */, D354981315875608000081D8 /* contacts_add_over.png in Resources */, D354981B15876FE7000081D8 /* list_details_default.png in Resources */, @@ -2491,6 +2517,10 @@ D38D14B015A30B3D008497E8 /* cell_call_first_hightlight.png in Resources */, D38D14B215A30B3D008497E8 /* cell_call_hightlight.png in Resources */, D3196D2E15A3199D007FEEBA /* list_hightlight.png in Resources */, + D3196D3515A321E3007FEEBA /* options_add_default.png in Resources */, + D3196D3715A321E3007FEEBA /* options_add_over.png in Resources */, + D3196D3915A321E3007FEEBA /* options_transfer_default.png in Resources */, + D3196D3B15A321E3007FEEBA /* options_transfer_over.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2566,6 +2596,7 @@ D32460ED159DA47700BA7F3A /* CPAnimationSequence.m in Sources */, D32460EF159DA47700BA7F3A /* CPAnimationStep.m in Sources */, D32B9DFC15A2F131000B6DEC /* FastAddressBook.m in Sources */, + D3196D3E15A32BD8007FEEBA /* UITransferButton.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2638,6 +2669,7 @@ D32460EE159DA47700BA7F3A /* CPAnimationSequence.m in Sources */, D32460F0159DA47700BA7F3A /* CPAnimationStep.m in Sources */, D32B9DFD15A2F131000B6DEC /* FastAddressBook.m in Sources */, + D3196D3F15A32BD8007FEEBA /* UITransferButton.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; };