From 67adcfc1bc06697576a1490ef15e24687c8a23be Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 1 Oct 2012 12:03:35 +0200 Subject: [PATCH] Fix incall user infos 3 --- Classes/InCallTableViewController.m | 9 +++-- Classes/LinphoneUI/UICallCell.m | 56 ++++++++++++++++------------- 2 files changed, 37 insertions(+), 28 deletions(-) diff --git a/Classes/InCallTableViewController.m b/Classes/InCallTableViewController.m index 3ee3bf66e..831f59842 100644 --- a/Classes/InCallTableViewController.m +++ b/Classes/InCallTableViewController.m @@ -144,9 +144,12 @@ enum TableSection { UICallCellData * data = nil; if(call != NULL) { LinphoneCallAppData* appData = (LinphoneCallAppData*) linphone_call_get_user_pointer(call); - if(appData != NULL && [appData->userInfos objectForKey:kLinphoneInCallCellData] == nil) { - data = [[UICallCellData alloc] init:call]; - [appData->userInfos setObject:data forKey:kLinphoneInCallCellData]; + if(appData != NULL) { + data = [appData->userInfos objectForKey:kLinphoneInCallCellData]; + if(data == nil) { + data = [[[UICallCellData alloc] init:call] autorelease]; + [appData->userInfos setObject:data forKey:kLinphoneInCallCellData]; + } } } return data; diff --git a/Classes/LinphoneUI/UICallCell.m b/Classes/LinphoneUI/UICallCell.m index 866c8a7ee..6d6e53d7b 100644 --- a/Classes/LinphoneUI/UICallCell.m +++ b/Classes/LinphoneUI/UICallCell.m @@ -464,6 +464,10 @@ - (void)updateDetailsView { + if(data == nil || data->call == NULL) { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update call cell: null call or data"]; + return; + } if(data->view == UICallCellOtherView_Avatar && avatarView.isHidden) { [self->avatarView setHidden:FALSE]; [self->audioStatsView setHidden:TRUE]; @@ -507,33 +511,35 @@ - (IBAction)doDetailsSwipe:(UISwipeGestureRecognizer *)sender { CATransition* trans = nil; - if (sender.direction == UISwipeGestureRecognizerDirectionLeft) { - if(data->view == UICallCellOtherView_MAX - 1) { - data->view = 0; - } else { - ++data->view; + if(data != nil) { + if (sender.direction == UISwipeGestureRecognizerDirectionLeft) { + if(data->view == UICallCellOtherView_MAX - 1) { + data->view = 0; + } else { + ++data->view; + } + trans = [CATransition animation]; + [trans setType:kCATransitionPush]; + [trans setDuration:0.35]; + [trans setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; + [trans setSubtype:kCATransitionFromRight]; + } else if (sender.direction == UISwipeGestureRecognizerDirectionRight) { + if(data->view == 0) { + data->view = UICallCellOtherView_MAX - 1; + } else { + --data->view; + } + trans = [CATransition animation]; + [trans setType:kCATransitionPush]; + [trans setDuration:0.35]; + [trans setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; + [trans setSubtype:kCATransitionFromLeft]; } - trans = [CATransition animation]; - [trans setType:kCATransitionPush]; - [trans setDuration:0.35]; - [trans setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; - [trans setSubtype:kCATransitionFromRight]; - } else if (sender.direction == UISwipeGestureRecognizerDirectionRight) { - if(data->view == 0) { - data->view = UICallCellOtherView_MAX - 1; - } else { - --data->view; + if(trans) { + [otherView.layer removeAnimationForKey:@"transition"]; + [otherView.layer addAnimation:trans forKey:@"transition"]; + [self updateDetailsView]; } - trans = [CATransition animation]; - [trans setType:kCATransitionPush]; - [trans setDuration:0.35]; - [trans setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; - [trans setSubtype:kCATransitionFromLeft]; - } - if(trans) { - [otherView.layer removeAnimationForKey:@"transition"]; - [otherView.layer addAnimation:trans forKey:@"transition"]; - [self updateDetailsView]; } }