From ec261bd518f54a140afa7a09bf0c1ef4ff8406e2 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Wed, 9 Nov 2011 16:04:59 +0100 Subject: [PATCH] Improved graphics/layout for incall view --- Classes/AdvancedPhoneViewController.m | 4 +- Classes/IncallViewController.h | 10 +- Classes/IncallViewController.m | 140 ++- Classes/IncallViewController.xib | 1450 ++++++++++++------------- Classes/LinphoneAppDelegate.m | 8 +- Classes/LinphoneUI/UIToggleButton.m | 6 +- Classes/PhoneViewController.m | 1 + PhoneMainView.xib | 26 +- Resources/Speaker-32-off.png | Bin 615 -> 1798 bytes Resources/Speaker-32-on.png | Bin 569 -> 1782 bytes Resources/addcall-green.png | Bin 0 -> 6261 bytes Resources/conf_merge.png | Bin 0 -> 3135 bytes Resources/contact_orange.png | Bin 0 -> 4771 bytes Resources/mic_active.png | Bin 0 -> 6770 bytes Resources/mic_muted.png | Bin 0 -> 10007 bytes Resources/numpad.png | Bin 0 -> 5314 bytes Resources/pausecall.png | Bin 0 -> 1622 bytes Resources/resumecall.png | Bin 0 -> 3110 bytes linphone.xcodeproj/project.pbxproj | 64 +- 19 files changed, 883 insertions(+), 826 deletions(-) create mode 100644 Resources/addcall-green.png create mode 100644 Resources/conf_merge.png create mode 100644 Resources/contact_orange.png create mode 100644 Resources/mic_active.png create mode 100644 Resources/mic_muted.png create mode 100644 Resources/numpad.png create mode 100644 Resources/pausecall.png create mode 100644 Resources/resumecall.png diff --git a/Classes/AdvancedPhoneViewController.m b/Classes/AdvancedPhoneViewController.m index 39266f9c8..8ad355a1b 100644 --- a/Classes/AdvancedPhoneViewController.m +++ b/Classes/AdvancedPhoneViewController.m @@ -52,8 +52,8 @@ } -(void) displayInCall: (LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { - if (self.presentedViewController != mIncallViewController && - linphone_call_get_dir(call)==LinphoneCallIncoming){ + if (self.presentedViewController != mIncallViewController && (call == 0x0 || + linphone_call_get_dir(call)==LinphoneCallIncoming)){ [self presentModalViewController:mIncallViewController animated:true]; } diff --git a/Classes/IncallViewController.h b/Classes/IncallViewController.h index a7c99288e..1efea4006 100644 --- a/Classes/IncallViewController.h +++ b/Classes/IncallViewController.h @@ -26,12 +26,12 @@ @interface IncallViewController : UIViewController { - UIView* controlSubView, *callControlSubView; + UIView* controlSubView, *callControlSubView, *hangUpView; UIButton* endCtrl; UIButton* dialer; UIMuteButton* mute; - UIPauseResumeButton* pause; + UIButton* pause; UISpeakerButton* speaker; UIButton* contacts; UITableView* callTableView; @@ -58,6 +58,10 @@ bool dismissed; NSTimer *durationRefreasher; + NSTimer * glowingTimer; + + float glow; + NSIndexPath* activePath; ABPeoplePickerNavigationController* myPeoplePickerController; @@ -72,6 +76,8 @@ @property (nonatomic, retain) IBOutlet UIView* controlSubView; @property (nonatomic, retain) IBOutlet UIView* callControlSubView; @property (nonatomic, retain) IBOutlet UIView* padSubView; +@property (nonatomic, retain) IBOutlet UIView* hangUpView; + @property (nonatomic, retain) IBOutlet UIButton* endCtrl; @property (nonatomic, retain) IBOutlet UIButton* dialer; diff --git a/Classes/IncallViewController.m b/Classes/IncallViewController.m index 4b2163559..8a961044b 100644 --- a/Classes/IncallViewController.m +++ b/Classes/IncallViewController.m @@ -28,6 +28,7 @@ @synthesize controlSubView; @synthesize callControlSubView; @synthesize padSubView; +@synthesize hangUpView; @synthesize addToConf; @synthesize endCtrl; @@ -67,6 +68,8 @@ bool isInConference(LinphoneCall* call) { + if (!call) + return false; return linphone_call_get_current_params(call)->in_conference; } @@ -88,10 +91,7 @@ int callCount(LinphoneCore* lc) { [super viewDidLoad]; //Controls [mute initWithOnImage:[UIImage imageNamed:@"mic_muted.png"] offImage:[UIImage imageNamed:@"mic_active.png"] ]; - UIImage* rc = [UIImage imageNamed:@"resumecall.png"]; - UIImage* pc = [UIImage imageNamed:@"pausecall.png"]; - [pause initWithOnImage:rc offImage:pc ]; - [speaker initWithOnImage:[UIImage imageNamed:@"Speaker-32-on.png"] offImage:[UIImage imageNamed:@"Speaker-32-off.png"] ]; + [speaker initWithOnImage:[UIImage imageNamed:@"Speaker-32-on.png"] offImage:[UIImage imageNamed:@"Speaker-32-off.png"] ]; //Dialer init @@ -112,6 +112,8 @@ int callCount(LinphoneCore* lc) { [mergeCalls addTarget:self action:@selector(mergeCallsPressed) forControlEvents:UIControlEventTouchDown]; [endCtrl addTarget:self action:@selector(endCallPressed) forControlEvents:UIControlEventTouchUpInside]; [addToConf addTarget:self action:@selector(addToConfCallPressed) forControlEvents:UIControlEventTouchUpInside]; + [pause addTarget:self action:@selector(pauseCallPressed) forControlEvents:UIControlEventTouchUpInside]; + [mergeCalls setHidden:YES]; @@ -134,6 +136,14 @@ int callCount(LinphoneCore* lc) { linphone_core_add_to_conference([LinphoneManager getLc], selectedCall); } +-(void) pauseCallPressed { + if (!selectedCall) + return; + if (linphone_call_get_state(selectedCall) == LinphoneCallPaused) + linphone_core_resume_call([LinphoneManager getLc], selectedCall); + else + linphone_core_pause_call([LinphoneManager getLc], selectedCall); +} -(void)updateCallsDurations { @@ -150,6 +160,13 @@ int callCount(LinphoneCore* lc) { selector:@selector(updateCallsDurations) userInfo:nil repeats:YES]; + glowingTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 + target:self + selector:@selector(updateGlow) + userInfo:nil + repeats:YES]; + glow = 0; + } } @@ -157,6 +174,8 @@ int callCount(LinphoneCore* lc) { if (durationRefreasher != nil) { [durationRefreasher invalidate]; durationRefreasher=nil; + [glowingTimer invalidate]; + glowingTimer = nil; } } @@ -165,11 +184,15 @@ int callCount(LinphoneCore* lc) { } + + -(void) displayStatus:(NSString*) message; { [self updateUIFromLinphoneState: nil]; } -(void) displayPad:(bool) enable { + [callTableView setHidden:enable]; + [hangUpView setHidden:enable]; [controlSubView setHidden:enable]; [padSubView setHidden:!enable]; } @@ -178,6 +201,8 @@ int callCount(LinphoneCore* lc) { [self displayPad:false]; dismissed = false; + if (call) + selectedCall = call; [self updateUIFromLinphoneState: nil]; } @@ -198,7 +223,10 @@ int callCount(LinphoneCore* lc) { } -(void) updateUIFromLinphoneState:(UIViewController *)viewCtrl { [mute reset]; - [pause reset]; + + // if ( + // [pause reset]; + LinphoneCore* lc; @@ -225,8 +253,28 @@ int callCount(LinphoneCore* lc) { [addToConf setHidden:(linphone_core_get_conference_size(lc) == 0 || isInConference(selectedCall))]; } - // hide pause/resume if in conference - [pause setHidden:linphone_core_is_in_conference(lc)]; + int callsCount = linphone_core_get_calls_nb(lc); + // hide pause/resume if in conference + if (selectedCall) { + if (linphone_core_is_in_conference(lc)) + [pause setHidden:YES]; + else if (linphone_call_get_state(selectedCall)==LinphoneCallPaused) { + [pause setHidden:NO]; + //[pause setTitle:@"Resume" forState:UIControlStateNormal]; + pause.selected = YES; + pause.highlighted = NO; + } else if (callCount(lc) == callsCount && callsCount == 1) { + [pause setHidden:NO]; + //[pause setTitle:@"Pause" forState:UIControlStateNormal]; + pause.selected = NO; + pause.highlighted = NO; + } else { + [pause setHidden:YES]; + } + } else { + [pause setHidden:callsCount > 0]; + } + [mergeCalls setHidden:!pause.hidden]; } - (IBAction)doAction:(id)sender { @@ -295,7 +343,42 @@ int callCount(LinphoneCore* lc) { } } +-(void) updateActive:(bool_t)active cell:(UITableViewCell*) cell { + if (!active) { + + cell.backgroundColor = [UIColor colorWithRed:0.2 green:0.2 blue:0.2 alpha:0.2]; + + UIColor* c = [[UIColor blackColor] colorWithAlphaComponent:0.5]; + [cell.textLabel setTextColor:c]; + [cell.detailTextLabel setTextColor:c]; + } else { + cell.backgroundColor = [UIColor colorWithRed:0.4 green:0.4 blue:0.4 alpha:(0.7+sin(2*glow)*0.3)]; + [cell.textLabel setTextColor:[UIColor whiteColor]]; + [cell.detailTextLabel setTextColor:[UIColor whiteColor]]; + } + [cell.textLabel setBackgroundColor:[UIColor clearColor]]; + [cell.detailTextLabel setBackgroundColor:[UIColor clearColor]]; + [cell.accessoryView setHidden:YES]; + //[cell.backgroundView setBackgroundColor:cell.backgroundColor]; +} +-(void) updateGlow { + glow += 0.1; + + NSIndexPath* path = [callTableView indexPathForSelectedRow]; + if (path) { + UITableViewCell* cell = [callTableView cellForRowAtIndexPath:path]; + [self updateActive:YES cell:cell]; + [cell.backgroundView setNeedsDisplay]; + [cell setNeedsDisplay]; + [callTableView setNeedsDisplay]; + } +} + +-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { + [self updateActive:(cell.accessoryType == UITableViewCellAccessoryCheckmark) cell:cell]; + //cell.accessoryType = UITableViewCellAccessoryNone; +} - (void) updateCell:(UITableViewCell*)cell at:(NSIndexPath*) path withCall:(LinphoneCall*) call conferenceActive:(bool)confActive{ if (call == NULL) { @@ -328,30 +411,39 @@ int callCount(LinphoneCore* lc) { } [cell.detailTextLabel setText:ms]; - + /* if (linphone_core_get_current_call([LinphoneManager getLc]) == call) { - cell.backgroundColor = [UIColor colorWithRed:0 green:1 blue:0 alpha:0.5]; + cell.backgroundColor = [UIColor colorWithRed:0 green:1 blue:0 alpha:1]; } else if (confActive && isInConference(call)) { - cell.backgroundColor = [UIColor colorWithRed:0 green:0 blue:1 alpha:0.5]; + cell.backgroundColor = [UIColor colorWithRed:0 green:0 blue:1 alpha:1]; } else{ - cell.backgroundColor = [UIColor colorWithRed:1 green:0.5 blue:0 alpha:0.5]; - } + cell.backgroundColor = [UIColor colorWithRed:1 green:0.5 blue:0 alpha:1]; + }*/ + + + if (call == selectedCall) { - // [cell setSelected:YES animated:NO]; + [cell setSelected:YES animated:NO]; + [callTableView selectRowAtIndexPath:path animated:NO scrollPosition:UITableViewScrollPositionNone]; cell.accessoryType = UITableViewCellAccessoryCheckmark; }else{ - //[cell setSelected:NO animated:NO]; + [cell setSelected:NO animated:NO]; + [callTableView deselectRowAtIndexPath:path animated:NO]; cell.accessoryType = UITableViewCellAccessoryNone; } } + -(void) updateConferenceCell:(UITableViewCell*) cell at:(NSIndexPath*)indexPath { [cell.textLabel setText:@"Conference"]; LinphoneCore* lc = [LinphoneManager getLc]; cell.accessoryType = UITableViewCellAccessoryNone; + [self updateActive:NO cell:cell]; + cell.selected = NO; + [callTableView deselectRowAtIndexPath:indexPath animated:NO]; NSMutableString* ms = [[NSMutableString alloc] init ]; const MSList* calls = linphone_core_get_calls(lc); @@ -366,18 +458,23 @@ int callCount(LinphoneCore* lc) { else [ms appendFormat:@"%s ", linphone_address_get_username(addr), nil]; - - if (call == selectedCall) - cell.accessoryType = UITableViewCellAccessoryCheckmark; + //if (call == selectedCall) + // [self updateActive:YES cell:cell]; + if (call == selectedCall) { + [callTableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone]; + cell.selected = YES; + cell.accessoryType = UITableViewCellAccessoryCheckmark; + + } } calls = calls->next; } [cell.detailTextLabel setText:ms]; - if (linphone_core_is_in_conference(lc)) - cell.backgroundColor = [UIColor colorWithRed:0 green:1 blue:0 alpha:0.5]; + /*if (linphone_core_is_in_conference(lc)) + cell.backgroundColor = [UIColor colorWithRed:0 green:1 blue:0 alpha:1]; else - cell.backgroundColor = [UIColor colorWithRed:1 green:0 blue:0 alpha:0.5]; + cell.backgroundColor = [UIColor colorWithRed:1 green:0 blue:0 alpha:1];*/ } @@ -398,7 +495,7 @@ int callCount(LinphoneCore* lc) { cell.userInteractionEnabled = YES; cell.selectionStyle = UITableViewCellSelectionStyleNone; - cell.selectionStyle = UITableViewCellSelectionStyleBlue; + //cell.selectionStyle = UITableViewCellSelectionStyleBlue; @@ -445,6 +542,7 @@ int callCount(LinphoneCore* lc) { // UITableViewDataSource - (NSString*) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { + return nil; return @"Calls"; if (section == 0 && linphone_core_get_conference_size([LinphoneManager getLc]) > 0) return @"Conference"; diff --git a/Classes/IncallViewController.xib b/Classes/IncallViewController.xib index ee5b5db69..a77415f09 100644 --- a/Classes/IncallViewController.xib +++ b/Classes/IncallViewController.xib @@ -45,130 +45,58 @@ 274 - {320, 182} + {320, 276} _NS:418 - + 3 - MQA + MC42NjY2NjY2NjY3AA YES IBCocoaTouchFramework YES NO - 1 0 - YES YES 44 22 22 - + 292 YES - - + + 292 - {{119, -4}, {82, 52}} - + {{36, 8}, {248, 52}} + - + + + 1 + MSAwIDAuMDgyMzIwMjU5MDQgMC4xOAA + NO NO IBCocoaTouchFramework 0 0 - 1 - Pau. Res. - + + 3 + MQA + 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA 3 MC41AA - - NSImage - mic_active.png - - - NSImage - pausecall.png - - - NSImage - mic_muted.png - - - - 2 - 10 - - - Helvetica-Bold - 10 - 16 - - - - - 292 - {{26, -4}, {82, 52}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Add to conf - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - - - - 2 - 14 - - - Helvetica-Bold - 14 - 16 - - - - - 292 - {{27, 56}, {262, 52}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 1 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - NSImage stopcall-red.png @@ -186,331 +114,15 @@ - {{0, 312}, {320, 148}} + {{0, 392}, {320, 68}} - + _NS:196 - + 3 - MC42NjY2NjY2NjY3AA + MC4zMzMzMzMzMzMzAA - NO - NO - IBCocoaTouchFramework - - - - -2147483356 - - YES - - - 292 - {{95, 244}, {82, 37}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 1 - hide - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{95, 184}, {82, 52}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 1 - 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{5, 9}, {82, 52}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 1 - 1 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{95, 9}, {82, 52}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 1 - 2 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{185, 9}, {82, 52}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 1 - 3 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{5, 69}, {82, 52}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 1 - 4 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{95, 69}, {82, 52}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 1 - 5 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{185, 69}, {82, 52}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 1 - 6 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{5, 124}, {82, 52}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 1 - 7 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{95, 124}, {82, 52}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 1 - 8 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{185, 124}, {82, 52}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 1 - 9 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{5, 184}, {82, 52}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 1 - * - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{185, 184}, {82, 52}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 1 - # - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - {{24, 72}, {272, 317}} - - - - - NO - NO IBCocoaTouchFramework @@ -521,31 +133,32 @@ 292 - {{119, 55}, {82, 52}} + {{119, 58}, {82, 52}} - + + NO NO IBCocoaTouchFramework 0 0 - 1 - Merge 1 MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - + + NSImage + conf_merge.png + + + 2 17 - + Helvetica-Bold 17 16 @@ -554,27 +167,26 @@ 292 - {{25, 0}, {82, 52}} + {{36, 5}, {82, 52}} + NO NO IBCocoaTouchFramework 0 0 - 1 - Mute 1 MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - + + NSImage + mic_active.png + 2 2 @@ -588,53 +200,52 @@ 292 - {{25, 54}, {82, 52}} + {{36, 58}, {82, 52}} + NO NO IBCocoaTouchFramework 0 0 - 1 - Add call 1 MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - NSImage - startcall-green.png + addcall-green.png - - 292 - {{206, 54}, {82, 52}} + {{202, 58}, {82, 52}} - + + NO NO IBCocoaTouchFramework 0 0 - 1 Cont 1 MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - + + 1 + MCAwIDAAA + NSImage contact-orange.png @@ -645,17 +256,16 @@ 292 - {{116, 0}, {82, 52}} + {{119, 5}, {82, 52}} + NO NO IBCocoaTouchFramework 0 0 - 1 - DTMF 1 @@ -664,7 +274,7 @@ NSImage - dialer-orange.png + numpad.png @@ -672,16 +282,16 @@ 292 - {{206, 0}, {82, 52}} + {{202, 5}, {82, 52}} + NO NO IBCocoaTouchFramework 0 0 - 1 Spk @@ -689,19 +299,358 @@ MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - NSImage - Speaker-32-off.png - + + + 292 + {{119, 58}, {82, 52}} + + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + + NSImage + resumecall.png + + + NSImage + pausecall.png + + + + - {{0, 191}, {320, 113}} + {{0, 276}, {320, 115}} - + + NO + NO + IBCocoaTouchFramework + + + + -2147483356 + + YES + + + 292 + {{95, 219}, {82, 52}} + + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + Close + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{95, 166}, {82, 52}} + + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{12, 7}, {82, 52}} + + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 1 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{95, 7}, {82, 52}} + + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 2 + + + + + + + + + 292 + {{178, 7}, {82, 52}} + + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 3 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{12, 60}, {82, 52}} + + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 4 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{95, 60}, {82, 52}} + + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 5 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{178, 60}, {82, 52}} + + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 6 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{12, 113}, {82, 52}} + + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 7 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{95, 113}, {82, 52}} + + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 8 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{178, 113}, {82, 52}} + + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 9 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{12, 166}, {82, 52}} + + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + * + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{178, 166}, {82, 52}} + + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + # + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + {{24, 115}, {272, 279}} + + + + NO NO IBCocoaTouchFramework @@ -746,126 +695,6 @@ 109 - - - eight - - - - 75 - - - - nine - - - - 58 - - - - seven - - - - 73 - - - - six - - - - 71 - - - - five - - - - 69 - - - - four - - - - 67 - - - - three - - - - 60 - - - - one - - - - 54 - - - - zero - - - - 55 - - - - two - - - - 59 - - - - hash - - - - 57 - - - - star - - - - 56 - - - - close - - - - 51 - - - - padSubView - - - - 45 - - - - callControlSubView - - - - 117 - endCtrl @@ -874,22 +703,6 @@ 99 - - - pause - - - - 115 - - - - mergeCalls - - - - 114 - addCall @@ -900,11 +713,19 @@ - contacts + controlSubView - + - 84 + 44 + + + + mergeCalls + + + + 114 @@ -922,6 +743,14 @@ 49 + + + pause + + + + 115 + mute @@ -932,19 +761,131 @@ - controlSubView + contacts - + - 44 + 84 - addToConf + star - + - 119 + 56 + + + + two + + + + 59 + + + + one + + + + 54 + + + + four + + + + 67 + + + + hash + + + + 57 + + + + nine + + + + 58 + + + + padSubView + + + + 45 + + + + zero + + + + 55 + + + + seven + + + + 73 + + + + three + + + + 60 + + + + close + + + + 51 + + + + eight + + + + 75 + + + + six + + + + 71 + + + + five + + + + 69 + + + + hangUpView + + + + 122 @@ -1026,10 +967,10 @@ YES - + + - @@ -1039,167 +980,41 @@ - 27 - - - YES - - - - - - - - - - - - - - - - pad - - - 33 - - - 8 - - - 32 - - - 9 - - - 34 - - - 7 - - - 37 - - - 6 - - - 36 - - - 5 - - - 35 - - - 4 - - - 38 - - - 3 - - - 30 - - - 1 - - - 41 - - - 0 - - - 39 - - - 2 - - - 40 - - - hash - - - 31 - - - star - - - 29 - - - close - - - 116 - + 120 + YES - - - callcontrols 18 - + end - - 113 - - - pauseresume - - - 118 - - - addtoconf - 26 YES - - + + + controls - 104 - + 113 + - merge - - - 111 - - - addcall - - - 15 - - - contacts + pauseresume 13 @@ -1213,12 +1028,130 @@ dialer + + 15 + + + contacts + + + 111 + + + addcall + 16 mute + + 104 + + + merge + + + 27 + + + YES + + + + + + + + + + + + + + + + pad + + + 31 + + + star + + + 30 + + + 1 + + + 33 + + + 8 + + + 40 + + + hash + + + 36 + + + 5 + + + 29 + + + close + + + 39 + + + 2 + + + 41 + + + 0 + + + 38 + + + 3 + + + 35 + + + 4 + + + 37 + + + 6 + + + 34 + + + 7 + + + 32 + + + 9 + @@ -1230,17 +1163,19 @@ -2.CustomClassName -2.IBPluginDependency 104.IBPluginDependency + 104.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 106.IBPluginDependency 111.IBPluginDependency - 113.CustomClassName + 111.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 113.IBPluginDependency - 116.IBPluginDependency - 118.IBPluginDependency + 113.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 120.IBPluginDependency 13.CustomClassName 13.IBPluginDependency 15.IBPluginDependency 16.CustomClassName 16.IBPluginDependency + 16.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 17.IBPluginDependency 18.IBPluginDependency 2.IBPluginDependency @@ -1280,17 +1215,19 @@ UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIPauseResumeButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin UISpeakerButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIMuteButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1336,7 +1273,7 @@ - 119 + 122 @@ -1371,6 +1308,7 @@ endCtrl five four + hangUpView hash mergeCalls mute @@ -1400,6 +1338,7 @@ UIButton UIButton UIButton + UIView UIButton UIButton UIButton @@ -1432,6 +1371,7 @@ endCtrl five four + hangUpView hash mergeCalls mute @@ -1497,6 +1437,10 @@ four UIButton + + hangUpView + UIView + hash UIButton @@ -1576,14 +1520,6 @@ ./Classes/UIMuteButton.h - - UIPauseResumeButton - UIToggleButton - - IBProjectSource - ./Classes/UIPauseResumeButton.h - - UISpeakerButton UIToggleButton @@ -1608,10 +1544,6 @@ com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 @@ -1622,24 +1554,24 @@ YES YES - Speaker-32-off.png + addcall-green.png + conf_merge.png contact-orange.png - dialer-orange.png mic_active.png - mic_muted.png + numpad.png pausecall.png - startcall-green.png + resumecall.png stopcall-red.png YES - {32, 32} + {82, 71} + {82, 75} {25, 23} - {25, 24} - {20, 20} - {20, 20} - {25, 23} - {60, 52} + {82, 82} + {82, 82} + {82, 75} + {82, 75} {62, 54} diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 736d06e16..b73da3f43 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -143,9 +143,13 @@ [super dealloc]; } - - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { - linphone_core_accept_call([LinphoneManager getLc],linphone_core_get_current_call([LinphoneManager getLc])); + LinphoneCall* call = (LinphoneCall*)[notification.userInfo objectForKey:@"call"]; + if (!call) { + ms_warning("Local notification received with nil call"); + return; + } + linphone_core_accept_call([LinphoneManager getLc], call); } diff --git a/Classes/LinphoneUI/UIToggleButton.m b/Classes/LinphoneUI/UIToggleButton.m index 5961a46c1..04c0b3721 100644 --- a/Classes/LinphoneUI/UIToggleButton.m +++ b/Classes/LinphoneUI/UIToggleButton.m @@ -47,9 +47,9 @@ } -(void) initWithOnImage:(UIImage*) onImage offImage:(UIImage*) offImage { - mOnImage = [onImage retain]; - mOffImage = [offImage retain]; - mIsOn=false; + mOnImage = [onImage retain]; + mOffImage = [offImage retain]; + mIsOn=false; [self reset]; [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; diff --git a/Classes/PhoneViewController.m b/Classes/PhoneViewController.m index 0e09d9a7c..243e5558d 100644 --- a/Classes/PhoneViewController.m +++ b/Classes/PhoneViewController.m @@ -247,6 +247,7 @@ notif.alertBody =[NSString stringWithFormat:NSLocalizedString(@" %@ is calling you",nil),[displayName length]>0?displayName:username]; notif.alertAction = @"Answer"; notif.soundName = @"oldphone-mono-30s.caf"; + notif.userInfo = [NSDictionary dictionaryWithObject:call forKey:"call"]; [[UIApplication sharedApplication] presentLocalNotificationNow:notif]; } diff --git a/PhoneMainView.xib b/PhoneMainView.xib index 26cbcfb90..1eb8dfbfc 100644 --- a/PhoneMainView.xib +++ b/PhoneMainView.xib @@ -65,18 +65,12 @@ IBCocoaTouchFramework NO - - - Dialer - - NSImage - dialer-orange.png - + + IBCocoaTouchFramework + 5 - PhoneViewController - 1 1 @@ -105,13 +99,18 @@ IBCocoaTouchFramework NO - - - + + + Dialer + + NSImage + dialer-orange.png + IBCocoaTouchFramework - 5 + PhoneViewController + 1 1 @@ -119,6 +118,7 @@ IBCocoaTouchFramework NO + diff --git a/Resources/Speaker-32-off.png b/Resources/Speaker-32-off.png index e93ae232f1f89192f3c27bd09a17e456f51ffb88..3a5b3fd73575527eecd542cbe844da391e6aeb55 100644 GIT binary patch literal 1798 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 Hf;BcaL-hkZ diff --git a/Resources/addcall-green.png b/Resources/addcall-green.png new file mode 100644 index 0000000000000000000000000000000000000000..8ccfe2ba13da0e449690778c3417448c25b2e391 GIT binary patch literal 6261 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 literal 0 HcmV?d00001 diff --git a/Resources/conf_merge.png b/Resources/conf_merge.png new file mode 100644 index 0000000000000000000000000000000000000000..409609c06eab47c987136f6ed249071b4be49d9e GIT binary patch literal 3135 zcmZ`*dpHw}_g}3ynaJysm|Mvute9Jd<`y!Fxf_LzUS?>>bqWou$f~I&^R6tnjV7BW zK*R3G3i?g5KF@6P( zi5pfC3j(2Xh;UdK*(n@Hh(&QFgvu&i$B!{6M27u$u_h@|EG|37$tOAyPCX>MFtO8v z^h`IVsYT+#5Cgy7JOm$o?5}SDy-V@|kz6aUmdf5dzGuea*Cxz0Ua7zNyi4i?aCEP#KXR7N$+xUJ|yA5i7;bTTqaMs7G38HKc?}`MVq` z*R*}hmOHNd͙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 P8UW|co_DOV56SvJ45Rv) literal 0 HcmV?d00001 diff --git a/Resources/contact_orange.png b/Resources/contact_orange.png new file mode 100644 index 0000000000000000000000000000000000000000..cbdf86df8f5dae072cb35dcc42274832b9d1d2d4 GIT binary patch literal 4771 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 literal 0 HcmV?d00001 diff --git a/Resources/mic_active.png b/Resources/mic_active.png new file mode 100644 index 0000000000000000000000000000000000000000..e4b7c6a1b7fbd3f0bdf98a3d709ff48f903aae3b GIT binary patch literal 6770 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 literal 0 HcmV?d00001 diff --git a/Resources/mic_muted.png b/Resources/mic_muted.png new file mode 100644 index 0000000000000000000000000000000000000000..6110a04fc5304e9fb7f61b474bad85fe234972f6 GIT binary patch literal 10007 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 F{{W0a!`uJ> literal 0 HcmV?d00001 diff --git a/Resources/numpad.png b/Resources/numpad.png new file mode 100644 index 0000000000000000000000000000000000000000..966b483486404145b65ed9d20477938e7171d5e1 GIT binary patch literal 5314 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 literal 0 HcmV?d00001 diff --git a/Resources/pausecall.png b/Resources/pausecall.png new file mode 100644 index 0000000000000000000000000000000000000000..ffac25a4725feaa852d873fc05e31ab91901a1bd GIT binary patch literal 1622 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