From 4b9ae080cddee0a396f6836500ce00df38af8cd6 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 18 Jun 2012 15:18:00 +0200 Subject: [PATCH] Start to clean InCallView and add UICallCell --- Classes/ConferenceCallDetailView.m | 4 +- Classes/InCallViewController.h | 66 +- Classes/InCallViewController.m | 402 +++------ Classes/InCallViewController.xib | 849 +------------------- Classes/LinphoneUI/UICallBar.m | 1 + Classes/LinphoneUI/UICallBar.xib | 27 +- Classes/LinphoneUI/UICallCell.h | 41 + Classes/LinphoneUI/UICallCell.m | 53 ++ Classes/PhoneMainView.h | 1 + Classes/PhoneMainView.m | 82 +- Resources/champ-courbe-autres-numeros.png | Bin 0 -> 5349 bytes Resources/champ-courbe-participant-conf.png | Bin 0 -> 5282 bytes Resources/champ-titre-conference.png | Bin 0 -> 14741 bytes Resources/clavier-secondaire-actif.png | Bin 0 -> 6776 bytes Resources/clavier-secondaire-over.png | Bin 0 -> 4475 bytes Resources/pause-champ-numero-actif.png | Bin 0 -> 1536 bytes Resources/pause-champ-numero-over.png | Bin 0 -> 1531 bytes Resources/play-actif.png | Bin 0 -> 5562 bytes Resources/play-champ-numero-actif.png | Bin 0 -> 2267 bytes Resources/play-champ-numero-over.png | Bin 0 -> 2252 bytes Resources/play-over.png | Bin 0 -> 4087 bytes linphone.xcodeproj/project.pbxproj | 84 +- 22 files changed, 410 insertions(+), 1200 deletions(-) create mode 100644 Classes/LinphoneUI/UICallCell.h create mode 100644 Classes/LinphoneUI/UICallCell.m create mode 100644 Resources/champ-courbe-autres-numeros.png create mode 100644 Resources/champ-courbe-participant-conf.png create mode 100644 Resources/champ-titre-conference.png create mode 100644 Resources/clavier-secondaire-actif.png create mode 100644 Resources/clavier-secondaire-over.png create mode 100644 Resources/pause-champ-numero-actif.png create mode 100644 Resources/pause-champ-numero-over.png create mode 100644 Resources/play-actif.png create mode 100644 Resources/play-champ-numero-actif.png create mode 100644 Resources/play-champ-numero-over.png create mode 100644 Resources/play-over.png diff --git a/Classes/ConferenceCallDetailView.m b/Classes/ConferenceCallDetailView.m index a33907976..bb7df42dd 100644 --- a/Classes/ConferenceCallDetailView.m +++ b/Classes/ConferenceCallDetailView.m @@ -151,8 +151,8 @@ NSTimer *callQualityRefresher; [view removeFromSuperview]; } } - UIImageView* callquality = (UIImageView*) [cell viewWithTag:3]; - [InCallViewController updateIndicator:callquality withCallQuality:linphone_call_get_average_quality(call)]; + //UIImageView* callquality = (UIImageView*) [cell viewWithTag:3]; + //[InCallViewController updateIndicator:callquality withCallQuality:linphone_call_get_average_quality(call)]; tableView.rowHeight = 80; return cell; diff --git a/Classes/InCallViewController.h b/Classes/InCallViewController.h index 0f26a1cb2..f995ac87d 100644 --- a/Classes/InCallViewController.h +++ b/Classes/InCallViewController.h @@ -30,35 +30,9 @@ @class VideoViewController; -@interface InCallViewController : UIViewController { - - - UIView* controlSubView, *hangUpView; - - UIButton* endCtrl; - UIButton* dialer; - UIButton* contacts; +@interface InCallViewController : UIViewController { + UITableView* callTableView; - UIButton* addCall, *mergeCalls; - UIButton* transfer; - - - //key pad - - UIView* padSubView; - UIDigitButton* one; - UIDigitButton* two; - UIDigitButton* three; - UIDigitButton* four; - UIDigitButton* five; - UIDigitButton* six; - UIDigitButton* seven; - UIDigitButton* eight; - UIDigitButton* nine; - UIDigitButton* star; - UIDigitButton* zero; - UIDigitButton* hash; - UIButton* close; UIView* videoGroup; UIView* videoView; @@ -67,13 +41,12 @@ UIView* testVideoView; #endif UICamSwitch* videoCameraSwitch; - UIActivityIndicatorView* videoUpdateIndicator; UIActivityIndicatorView* videoWaitingForFirstImage; bool dismissed; NSTimer *durationRefreasher; - NSTimer * glowingTimer; + NSTimer *glowingTimer; float glow; NSIndexPath* activePath; @@ -89,45 +62,18 @@ BOOL mIncallViewIsReady; UIImage* verified, *unverified; - UIImage* stat_sys_signal_0, *stat_sys_signal_1, *stat_sys_signal_2, *stat_sys_signal_3, *stat_sys_signal_4; UIActionSheet* visibleActionSheet; NSTimer* hideControlsTimer; VideoZoomHandler* videoZoomHandler; } -- (IBAction)doAction:(id)sender; ++ (LinphoneCall*)retrieveCallAtIndex: (NSInteger) index inConference:(bool) conf; ++ (void)updateCellImageView:(UIImageView*)imageView Label:(UILabel*)label DetailLabel:(UILabel*)detailLabel AndAccessoryView:(UIView*)accessoryView withCall:(LinphoneCall*) call; -+(LinphoneCall*) retrieveCallAtIndex: (NSInteger) index inConference:(bool) conf; -+ (void) updateCellImageView:(UIImageView*)imageView Label:(UILabel*)label DetailLabel:(UILabel*)detailLabel AndAccessoryView:(UIView*)accessoryView withCall:(LinphoneCall*) call; -+(void) updateIndicator:(UIImageView*) indicator withCallQuality:(float) quality; - -@property (nonatomic, retain) IBOutlet UIView* controlSubView; -@property (nonatomic, retain) IBOutlet UIView* padSubView; -@property (nonatomic, retain) IBOutlet UIView* hangUpView; @property (nonatomic, retain) IBOutlet UIViewController* conferenceDetail; - -@property (nonatomic, retain) IBOutlet UIButton* endCtrl; -@property (nonatomic, retain) IBOutlet UIButton* dialer; -@property (nonatomic, retain) IBOutlet UIButton* contacts; @property (nonatomic, retain) IBOutlet UITableView* callTableView; -@property (nonatomic, retain) IBOutlet UIButton* addCall; -@property (nonatomic, retain) IBOutlet UIButton* mergeCalls; -@property (nonatomic, retain) IBOutlet UIButton* transfer; -@property (nonatomic, retain) IBOutlet UIButton* one; -@property (nonatomic, retain) IBOutlet UIButton* two; -@property (nonatomic, retain) IBOutlet UIButton* three; -@property (nonatomic, retain) IBOutlet UIButton* four; -@property (nonatomic, retain) IBOutlet UIButton* five; -@property (nonatomic, retain) IBOutlet UIButton* six; -@property (nonatomic, retain) IBOutlet UIButton* seven; -@property (nonatomic, retain) IBOutlet UIButton* eight; -@property (nonatomic, retain) IBOutlet UIButton* nine; -@property (nonatomic, retain) IBOutlet UIButton* star; -@property (nonatomic, retain) IBOutlet UIButton* zero; -@property (nonatomic, retain) IBOutlet UIButton* hash; -@property (nonatomic, retain) IBOutlet UIButton* close; @property (nonatomic, retain) IBOutlet VideoViewController* videoViewController; @property (nonatomic, retain) IBOutlet UIView* videoGroup; @@ -136,9 +82,7 @@ @property (nonatomic, retain) IBOutlet UIView* testVideoView; #endif @property (nonatomic, retain) IBOutlet UIView* videoPreview; -@property (nonatomic, retain) IBOutlet UIImageView* videoCallQuality; @property (nonatomic, retain) IBOutlet UICamSwitch* videoCameraSwitch; -@property (nonatomic, retain) IBOutlet UIActivityIndicatorView* videoUpdateIndicator; @property (nonatomic, retain) IBOutlet UIActivityIndicatorView* videoWaitingForFirstImage; @end diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index 79f1796ef..38217c3e3 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -17,8 +17,6 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#import "IncallViewController.h" -#import "LinphoneManager.h" #import #import #import @@ -26,85 +24,42 @@ #import #import +#import "IncallViewController.h" +#import "UICallCell.h" +#import "LinphoneManager.h" + #include "linphonecore.h" #include "private.h" -#define STRINGIFY(x) #x -#define TOSTRING(x) STRINGIFY(x) -#define AT __FILE__ ":" TOSTRING(__LINE__) - const NSInteger SECURE_BUTTON_TAG=5; @implementation InCallViewController -@synthesize controlSubView; -@synthesize padSubView; -@synthesize hangUpView; @synthesize conferenceDetail; - -@synthesize endCtrl; -@synthesize close; -@synthesize dialer; -@synthesize contacts; @synthesize callTableView; -@synthesize addCall; -@synthesize mergeCalls; -@synthesize transfer; - -@synthesize one; -@synthesize two; -@synthesize three; -@synthesize four; -@synthesize five; -@synthesize six; -@synthesize seven; -@synthesize eight; -@synthesize nine; -@synthesize star; -@synthesize zero; -@synthesize hash; @synthesize videoViewController; @synthesize videoGroup; @synthesize videoView; @synthesize videoPreview; -@synthesize videoCallQuality; @synthesize videoCameraSwitch; -@synthesize videoUpdateIndicator; @synthesize videoWaitingForFirstImage; #ifdef TEST_VIDEO_VIEW_CHANGE @synthesize testVideoView; #endif -//@synthesize addVideo; - - -+(void) updateIndicator:(UIImageView*) indicator withCallQuality:(float) quality { - if (quality >= 4 || quality < 0) { - [indicator setImage:[UIImage imageNamed:@"stat_sys_signal_4.png"]]; - } else if (quality >= 3) { - [indicator setImage:[UIImage imageNamed:@"stat_sys_signal_3.png"]]; - } else if (quality >= 2) { - [indicator setImage:[UIImage imageNamed:@"stat_sys_signal_2.png"]]; - } else if (quality >= 1) { - [indicator setImage:[UIImage imageNamed:@"stat_sys_signal_1.png"]]; - } else { - [indicator setImage:[UIImage imageNamed:@"stat_sys_signal_0.png"]]; - } -} - -bool isInConference(LinphoneCall* call) { ++ (bool)isInConference:(LinphoneCall*) call { if (!call) return false; return linphone_call_get_current_params(call)->in_conference; } -int callCount(LinphoneCore* lc) { ++ (int)callCount:(LinphoneCore*) lc { int count = 0; const MSList* calls = linphone_core_get_calls(lc); while (calls != 0) { - if (!isInConference((LinphoneCall*)calls->data)) { + if (![InCallViewController isInConference:((LinphoneCall*)calls->data)]) { count++; } calls = calls->next; @@ -112,8 +67,6 @@ int callCount(LinphoneCore* lc) { return count; } - - void addAnimationFadeTransition(UIView* view, float duration) { CATransition* animation = [CATransition animation]; animation.type = kCATransitionFromBottom; // kCATransitionFade; @@ -121,7 +74,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { [view.layer addAnimation:animation forKey:nil]; } --(void) orientationChanged: (NSNotification*) notif { +- (void)orientationChanged: (NSNotification*) notif { int oldLinphoneOrientation = linphone_core_get_device_rotation([LinphoneManager getLc]); UIDeviceOrientation orientation = [UIDevice currentDevice].orientation; int newRotation = 0; @@ -162,22 +115,21 @@ void addAnimationFadeTransition(UIView* view, float duration) { [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.2f]; - endCtrl.imageView.transform = transform; - //TODO + //TODO + //endCtrl.imageView.transform = transform; //mute.imageView.transform = transform; //speaker.imageView.transform = transform; //pause.imageView.transform = transform; - contacts.imageView.transform = transform; - addCall.imageView.transform = transform; + //contacts.imageView.transform = transform; + //addCall.imageView.transform = transform; //addVideo.imageView.transform = transform; - dialer.imageView.transform = transform; - videoCallQuality.transform = transform; + //dialer.imageView.transform = transform; [UIView commitAnimations]; } } } --(void) showControls:(id)sender { +- (void)showControls:(id)sender { if (hideControlsTimer) { [hideControlsTimer invalidate]; hideControlsTimer = nil; @@ -186,7 +138,6 @@ void addAnimationFadeTransition(UIView* view, float duration) { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.3]; [[LinphoneManager instance] showTabBar: true]; - [hangUpView setAlpha:1.0]; if ([LinphoneManager instance].frontCamId !=nil ) { // only show camera switch button if we have more than 1 camera [videoCameraSwitch setAlpha:1.0]; @@ -194,56 +145,26 @@ void addAnimationFadeTransition(UIView* view, float duration) { [UIView commitAnimations]; // hide controls in 5 sec - hideControlsTimer = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(hideControls:) userInfo:nil repeats:NO]; + hideControlsTimer = [NSTimer scheduledTimerWithTimeInterval:5.0 + target:self + selector:@selector(hideControls:) + userInfo:nil + repeats:NO]; } --(void) hideControls:(id)sender { +- (void)hideControls:(id)sender { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.3]; - [controlSubView setAlpha:0.0]; - [hangUpView setAlpha:0.0]; [videoCameraSwitch setAlpha:0.0]; [UIView commitAnimations]; - [[LinphoneManager instance] showTabBar: false]; + [[LinphoneManager instance] showTabBar: false]; hideControlsTimer = nil; } --(void) batteryLevelChanged: (NSNotification*) notif { - LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); - if (!call || !linphone_call_params_video_enabled(linphone_call_get_current_params(call))) - return; - LinphoneCallAppData* appData = (LinphoneCallAppData*) linphone_call_get_user_pointer(call); - if ([UIDevice currentDevice].batteryState == UIDeviceBatteryStateUnplugged) { - float level = [UIDevice currentDevice].batteryLevel; - ms_message("Video call is running. Battery level: %.2f", level); - if (level < 0.1 && !appData->batteryWarningShown) { - // notify user - CallDelegate* cd = [[CallDelegate alloc] init]; - cd.eventType = CD_STOP_VIDEO_ON_LOW_BATTERY; - cd.delegate = self; - cd.call = call; - - if (visibleActionSheet != nil) { - [visibleActionSheet dismissWithClickedButtonIndex:visibleActionSheet.cancelButtonIndex animated:TRUE]; - } - NSString* title = NSLocalizedString(@"Battery is running low. Stop video ?",nil); - visibleActionSheet = [[UIActionSheet alloc] initWithTitle:title - delegate:cd - cancelButtonTitle:NSLocalizedString(@"Continue video",nil) - destructiveButtonTitle:NSLocalizedString(@"Stop video",nil) - otherButtonTitles:nil]; - - visibleActionSheet.actionSheetStyle = UIActionSheetStyleDefault; - [visibleActionSheet showInView:self.view]; - appData->batteryWarningShown = TRUE; - } - } -} - #ifdef TEST_VIDEO_VIEW_CHANGE // Define TEST_VIDEO_VIEW_CHANGE in IncallViewController.h to enable video view switching testing --(void) _debugChangeVideoView { +- (void)_debugChangeVideoView { static bool normalView = false; if (normalView) { linphone_core_set_native_video_window_id([LinphoneManager getLc], (unsigned long)videoView); @@ -254,7 +175,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { } #endif --(void) enableVideoDisplay { +- (void)enableVideoDisplay { [self orientationChanged:nil]; [videoZoomHandler resetZoom]; @@ -262,8 +183,6 @@ void addAnimationFadeTransition(UIView* view, float duration) { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; [videoGroup setAlpha:1.0]; - - [hangUpView setAlpha:0.0]; [callTableView setAlpha:0.0]; [UIView commitAnimations]; @@ -289,15 +208,14 @@ void addAnimationFadeTransition(UIView* view, float duration) { #ifdef TEST_VIDEO_VIEW_CHANGE [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(_debugChangeVideoView) userInfo:nil repeats:YES]; #endif - [self batteryLevelChanged:nil]; + // [self batteryLevelChanged:nil]; } --(void) disableVideoDisplay { +- (void)disableVideoDisplay { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; [videoGroup setAlpha:0.0]; [[LinphoneManager instance] showTabBar: true]; - [hangUpView setAlpha:1.0]; [callTableView setAlpha:1.0]; [videoCameraSwitch setAlpha:0.0]; [UIView commitAnimations]; @@ -308,22 +226,22 @@ void addAnimationFadeTransition(UIView* view, float duration) { } /* restore buttons orientation */ - endCtrl.imageView.transform = CGAffineTransformIdentity; + //endCtrl.imageView.transform = CGAffineTransformIdentity; //TODO //mute.imageView.transform = CGAffineTransformIdentity; //speaker.imageView.transform = CGAffineTransformIdentity; //pause.imageView.transform = CGAffineTransformIdentity; - contacts.imageView.transform = CGAffineTransformIdentity; - addCall.imageView.transform = CGAffineTransformIdentity; - dialer.imageView.transform = CGAffineTransformIdentity; - videoCallQuality.transform = CGAffineTransformIdentity; + //contacts.imageView.transform = CGAffineTransformIdentity; + //addCall.imageView.transform = CGAffineTransformIdentity; + //dialer.imageView.transform = CGAffineTransformIdentity; + //videoCallQuality.transform = CGAffineTransformIdentity; [[LinphoneManager instance] fullScreen:false]; } /* Update in call view buttons (visibility, state, ...) and call duration text. This is called periodically. The fullUpdate boolean is set when called after an event (call state change for instance) */ --(void) updateUIFromLinphoneState:(BOOL) fullUpdate { +- (void)updateUIFromLinphoneState:(BOOL) fullUpdate { activeCallCell = nil; // check LinphoneCore is initialized @@ -336,21 +254,6 @@ void addAnimationFadeTransition(UIView* view, float duration) { // reload table (glow update + call duration) [callTableView reloadData]; - LinphoneCall* currentCall = linphone_core_get_current_call([LinphoneManager getLc]); - - // hide pause/resume if in conference - if (currentCall) { - if (fullUpdate) { - videoUpdateIndicator.hidden = YES; - LinphoneCallState state = linphone_call_get_state(currentCall); - if (state == LinphoneCallStreamsRunning || state == LinphoneCallUpdated || state == LinphoneCallUpdatedByRemote) { - } else { - [videoCallQuality setImage:nil]; - } - } - } - // [LinphoneManager set:mergeCalls hidden:!pause.hidden withName:"MERGE button" andReason:AT]; - // update conference details view if displayed if (self.presentedViewController == conferenceDetail) { if (!linphone_core_is_in_conference(lc)) @@ -375,7 +278,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { unverified = [[UIImage imageNamed:@"unverified.png"] retain]; //Dialer init - [zero initWithNumber:'0']; + /*[zero initWithNumber:'0']; [one initWithNumber:'1']; [two initWithNumber:'2']; [three initWithNumber:'3']; @@ -390,7 +293,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { [addCall addTarget:self action:@selector(addCallPressed) forControlEvents:UIControlEventTouchUpInside]; [mergeCalls addTarget:self action:@selector(mergeCallsPressed) forControlEvents:UIControlEventTouchUpInside]; - [LinphoneManager set:mergeCalls hidden:YES withName:"MERGE button" andReason:"initialisation"]; + [LinphoneManager set:mergeCalls hidden:YES withName:"MERGE button" andReason:"initialisation"];*/ if ([LinphoneManager runningOnIpad]) { ms_message("Running on iPad"); @@ -415,7 +318,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { mVideoIsPending=FALSE; //selectedCall = nil; - callTableView.rowHeight = 80; + //callTableView.rowHeight = 80; [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil]; @@ -425,7 +328,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { [videoCameraSwitch setPreview:videoPreview]; //addVideo.videoUpdateIndicator = videoUpdateIndicator; - [transfer addTarget:self action:@selector(transferPressed) forControlEvents:UIControlEventTouchUpInside]; + //[transfer addTarget:self action:@selector(transferPressed) forControlEvents:UIControlEventTouchUpInside]; // prevent buttons resizing /* @@ -439,7 +342,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { } --(void) transferPressed { +- (void)transferPressed { /* allow only if call is active */ if (!linphone_core_get_current_call([LinphoneManager getLc])) return; @@ -491,41 +394,25 @@ void addAnimationFadeTransition(UIView* view, float duration) { } visibleActionSheet.actionSheetStyle = UIActionSheetStyleDefault; - if ([LinphoneManager runningOnIpad]) - [visibleActionSheet showFromRect:transfer.bounds inView:transfer animated:NO]; - else + if ([LinphoneManager runningOnIpad]) { + //[visibleActionSheet showFromRect:transfer.bounds inView:transfer animated:NO]; + } else [visibleActionSheet showInView:self.view]; } } --(void) addCallPressed { - [LinphoneManager logUIElementPressed:"CALL button"]; - [[LinphoneManager instance] changeView:PhoneView_Dialer]; -} - --(void) mergeCallsPressed { - [LinphoneManager logUIElementPressed:"MERGE button"]; - LinphoneCore* lc = [LinphoneManager getLc]; - linphone_core_add_all_to_conference(lc); -} - --(void)updateCallsDurations { +- (void)updateCallsDurations { [self updateUIFromLinphoneState: NO]; } --(void) awakeFromNib -{ - -} - --(void)viewDidAppear:(BOOL)animated { +- (void)viewDidAppear:(BOOL)animated { [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; [super viewDidAppear:animated]; if (dismissed) { [self dismissModalViewControllerAnimated:true]; } else { [self updateCallsDurations]; - durationRefreasher = [NSTimer scheduledTimerWithTimeInterval:1 + durationRefreasher = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateCallsDurations) userInfo:nil @@ -549,21 +436,21 @@ void addAnimationFadeTransition(UIView* view, float duration) { UIDevice* device = [UIDevice currentDevice]; if ([device respondsToSelector:@selector(isMultitaskingSupported)] && [device isMultitaskingSupported]) { - bool enableVideo = [[NSUserDefaults standardUserDefaults] boolForKey:@"enable_video_preference"]; + //bool enableVideo = [[NSUserDefaults standardUserDefaults] boolForKey:@"enable_video_preference"]; - [LinphoneManager set:contacts hidden:enableVideo withName:"CONTACT button" andReason:AT]; + //[LinphoneManager set:contacts hidden:enableVideo withName:"CONTACT button" andReason:AT]; //[LinphoneManager set:addVideo hidden:!contacts.hidden withName:"ADD_VIDEO button" andReason:AT]; } } } --(void) viewWillDisappear:(BOOL)animated { +- (void)viewWillDisappear:(BOOL)animated { if (visibleActionSheet != nil) { [visibleActionSheet dismissWithClickedButtonIndex:visibleActionSheet.cancelButtonIndex animated:NO]; } } -- (void) viewDidDisappear:(BOOL)animated { +- (void)viewDidDisappear:(BOOL)animated { if (durationRefreasher != nil) { [durationRefreasher invalidate]; durationRefreasher=nil; @@ -581,14 +468,14 @@ void addAnimationFadeTransition(UIView* view, float duration) { [[NSNotificationCenter defaultCenter] removeObserver:self]; } --(void) displayPad:(bool) enable { - if (videoView.hidden) - [LinphoneManager set:callTableView hidden:enable withName:"CALL_TABLE view" andReason:AT]; - [LinphoneManager set:hangUpView hidden:enable withName:"HANG_UP view" andReason:AT]; +- (void)displayPad:(bool) enable { + /*if (videoView.hidden) + [LinphoneManager set:callTableView hidden:enable withName:"CALL_TABLE view" andReason:AT];*/ + /*[LinphoneManager set:hangUpView hidden:enable withName:"HANG_UP view" andReason:AT]; [LinphoneManager set:controlSubView hidden:enable withName:"CONTROL view" andReason:AT]; - [LinphoneManager set:padSubView hidden:!enable withName:"PAD view" andReason:AT]; + [LinphoneManager set:padSubView hidden:!enable withName:"PAD view" andReason:AT];*/ } --(void) displayCall:(LinphoneCall*) call InProgressFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { +- (void)displayCall:(LinphoneCall*) call InProgressFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { //restore view [self displayPad:false]; dismissed = false; @@ -599,11 +486,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { [self updateUIFromLinphoneState: YES]; } --(void) displayIncomingCall:(LinphoneCall *)call NotificationFromUI:(UIViewController *)viewCtrl forUser:(NSString *)username withDisplayName:(NSString *)displayName { - -} - --(void) displayInCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { +- (void)displayInCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { dismissed = false; UIDevice *device = [UIDevice currentDevice]; device.proximityMonitoringEnabled = YES; @@ -614,7 +497,8 @@ void addAnimationFadeTransition(UIView* view, float duration) { [self disableVideoDisplay]; } --(void) displayDialerFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { + +- (void)displayDialerFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { [self disableVideoDisplay]; UIViewController* modalVC = self.modalViewController; UIDevice *device = [UIDevice currentDevice]; @@ -638,7 +522,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { static void hideSpinner(LinphoneCall* lc, void* user_data); --(void) hideSpinnerIndicator: (LinphoneCall*)call { +- (void)hideSpinnerIndicator: (LinphoneCall*)call { if (!videoWaitingForFirstImage.hidden) { videoWaitingForFirstImage.hidden = TRUE; } /*else { @@ -660,12 +544,12 @@ static void hideSpinner(LinphoneCall* lc, void* user_data); bool canHideInCallView = (linphone_core_get_calls([LinphoneManager getLc]) == NULL); switch (state) { - case LinphoneCallIncomingReceived: + /*case LinphoneCallIncomingReceived: [self displayIncomingCall:call NotificationFromUI:nil forUser:lUserName withDisplayName:lDisplayName]; - break; + break;*/ case LinphoneCallOutgoingInit: [self displayCall:call @@ -713,31 +597,6 @@ static void hideSpinner(LinphoneCall* lc, void* user_data); [self disableVideoDisplay]; break; } - case LinphoneCallError: { - if (canHideInCallView) { - [self displayDialerFromUI:nil - forUser:@"" - withDisplayName:@""]; - } else { - [self displayInCall:call - FromUI:nil - forUser:lUserName - withDisplayName:lDisplayName]; - } - break; - } - case LinphoneCallEnd: - if (canHideInCallView) { - [self displayDialerFromUI:nil - forUser:@"" - withDisplayName:@""]; - } else { - [self displayInCall:call - FromUI:nil - forUser:lUserName - withDisplayName:lDisplayName]; - } - break; case LinphoneCallStreamsRunning: //check video if (linphone_call_params_video_enabled(linphone_call_get_current_params(call))) { @@ -759,7 +618,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { [thiz hideSpinnerIndicator:call]; } --(void) displayVideoCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { +- (void)displayVideoCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { [self enableVideoDisplay]; @@ -772,14 +631,14 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { } } --(void) dismissActionSheet: (id)o { +- (void)dismissActionSheet: (id)o { if (visibleActionSheet != nil) { [visibleActionSheet dismissWithClickedButtonIndex:visibleActionSheet.cancelButtonIndex animated:TRUE]; visibleActionSheet = nil; } } --(void) displayAskToEnableVideoCall:(LinphoneCall*) call forUser:(NSString*) username withDisplayName:(NSString*) displayName { +- (void)displayAskToEnableVideoCall:(LinphoneCall*) call forUser:(NSString*) username withDisplayName:(NSString*) displayName { if (linphone_core_get_video_policy([LinphoneManager getLc])->automatically_accept) return; @@ -807,64 +666,24 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { [visibleActionSheet release]; } --(void) firstVideoFrameDecoded: (LinphoneCall*) call { +- (void)firstVideoFrameDecoded: (LinphoneCall*) call { // hide video in progress view indicator videoWaitingForFirstImage.hidden = TRUE; } -- (IBAction)doAction:(id)sender { - - if (sender == dialer) { - [self displayPad:true]; - - } else if (sender == contacts) { - // start people picker - myPeoplePickerController = [[[ABPeoplePickerNavigationController alloc] init] autorelease]; - // TODO - //[myPeoplePickerController setPeoplePickerDelegate:[[ContactPickerDelegate alloc] init] ]; - - [self presentModalViewController: myPeoplePickerController animated:true]; - } else if (sender == close) { - [self displayPad:false]; - } -} - -// handle people picker behavior - -- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker - shouldContinueAfterSelectingPerson:(ABRecordRef)person { - return true; - -} - -- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker - shouldContinueAfterSelectingPerson:(ABRecordRef)person - property:(ABPropertyID)property - identifier:(ABMultiValueIdentifier)identifier { - - return false; -} - -- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker { - [self dismissModalViewControllerAnimated:true]; -} - - - - - (void)dealloc { [super dealloc]; [[NSNotificationCenter defaultCenter] removeObserver:self]; } -+(LinphoneCall*) retrieveCallAtIndex: (NSInteger) index inConference:(bool) conf{ ++ (LinphoneCall*)retrieveCallAtIndex: (NSInteger) index inConference:(bool) conf{ const MSList* calls = linphone_core_get_calls([LinphoneManager getLc]); if (!conf && linphone_core_get_conference_size([LinphoneManager getLc])) index--; while (calls != 0) { - if (isInConference((LinphoneCall*)calls->data) == conf) { + if ([InCallViewController isInConference:(LinphoneCall*)calls->data] == conf) { if (index == 0) break; index--; @@ -880,7 +699,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { } } --(void) updateActive:(bool_t)active cell:(UITableViewCell*) cell { +- (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]; @@ -897,7 +716,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { [cell.detailTextLabel setBackgroundColor:[UIColor clearColor]]; } --(void) updateGlow { +- (void)updateGlow { if (!activeCallCell) return; @@ -909,11 +728,11 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { [callTableView setNeedsDisplay]; } --(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { +- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { [self updateActive:(cell == activeCallCell) cell:cell]; } -+ (void) updateCellImageView:(UIImageView*)imageView Label:(UILabel*)label DetailLabel:(UILabel*)detailLabel AndAccessoryView:(UIView*)accessoryView withCall:(LinphoneCall*) call { ++ (void)updateCellImageView:(UIImageView*)imageView Label:(UILabel*)label DetailLabel:(UILabel*)detailLabel AndAccessoryView:(UIView*)accessoryView withCall:(LinphoneCall*) call { if (call == NULL) { ms_warning("UpdateCell called with null call"); [label setText:@""]; @@ -999,7 +818,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { } --(void) updateConferenceCell:(UITableViewCell*) cell at:(NSIndexPath*)indexPath { +- (void)updateConferenceCell:(UITableViewCell*) cell at:(NSIndexPath*)indexPath { LinphoneCore* lc = [LinphoneManager getLc]; NSString* t= [NSString stringWithFormat: @@ -1021,7 +840,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { cell.imageView.image = nil; } --(void) tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath +- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath { // show conference detail view [self presentModalViewController:conferenceDetail animated:true]; @@ -1029,32 +848,34 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { } // UITableViewDataSource (required) -- (UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - UITableViewCell *cell = [callTableView dequeueReusableCellWithIdentifier:@"MyIdentifier"]; +- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + UICallCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UICallCell"]; if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyIdentifier"] autorelease]; - cell.selectionStyle = UITableViewCellSelectionStyleNone; - - cell.textLabel.font = [UIFont systemFontOfSize:40]; - cell.textLabel.autoresizingMask = UIViewAutoresizingFlexibleHeight; + cell = [[UICallCell alloc] init]; + } + + if([indexPath row] == 0) { + [cell firstCell]; + } else { + [cell otherCell]; } LinphoneCore* lc = [LinphoneManager getLc]; if (indexPath.row == 0 && linphone_core_get_conference_size(lc) > 0) { - [self updateConferenceCell:cell at:indexPath]; + /* [self updateConferenceCell:cell at:indexPath]; if (linphone_core_is_in_conference(lc)) activeCallCell = cell; cell.accessoryView = nil; if (linphone_core_is_in_conference(lc)) cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; else - cell.accessoryType = UITableViewCellAccessoryNone; + cell.accessoryType = UITableViewCellAccessoryNone;*/ } else { - LinphoneCall* call = [InCallViewController retrieveCallAtIndex:indexPath.row inConference:NO]; + /*LinphoneCall* call = [InCallViewController retrieveCallAtIndex:indexPath.row inConference:NO]; if (call == nil) return cell; // return dummy cell - LinphoneMediaEncryption enc = linphone_call_params_get_media_encryption(linphone_call_get_current_params(call)); + if (cell.accessoryView == nil) { UIView *containerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 28, 28)] autorelease]; cell.accessoryView = containerView; @@ -1066,20 +887,22 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { } [InCallViewController updateCellImageView:cell.imageView Label:cell.textLabel DetailLabel:cell.detailTextLabel AndAccessoryView:(UIView*)cell.accessoryView withCall:call]; if (linphone_core_get_current_call(lc) == call) - activeCallCell = cell; - cell.accessoryType = UITableViewCellAccessoryNone; + activeCallCell = cell;*/ + //cell.accessoryType = UITableViewCellAccessoryNone; // Call Quality Indicator - UIImageView* callquality = [UIImageView new]; + //TODO + /*UIImageView* callquality = [UIImageView new]; [callquality setFrame:CGRectMake(0, 0, 28, 28)]; - if (call->state == LinphoneCallStreamsRunning) + if (call->state == LinphoneCallStreamsRunning) { [InCallViewController updateIndicator: callquality withCallQuality:linphone_call_get_average_quality(call)]; } else { [callquality setImage:nil]; - } + }*/ + /*LinphoneMediaEncryption enc = linphone_call_params_get_media_encryption(linphone_call_get_current_params(call)); if (enc != LinphoneMediaEncryptionNone) { cell.accessoryView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 60, 28)] autorelease]; UIButton* accessoryBtn = [UIButton buttonWithType:UIButtonTypeCustom]; @@ -1099,18 +922,18 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { if (((UIButton*)accessoryBtn).imageView.image != nil && linphone_call_params_get_media_encryption(linphone_call_get_current_params(call)) == LinphoneMediaEncryptionZRTP) { [((UIButton*)accessoryBtn) addTarget:self action:@selector(secureIconPressed:withEvent:) forControlEvents:UIControlEventTouchUpInside]; } - } + } */ - [cell.accessoryView addSubview:callquality]; - [callquality release]; + //[cell.accessoryView addSubview:callquality]; + //[callquality release]; } - cell.userInteractionEnabled = YES; - cell.selectionStyle = UITableViewCellSelectionStyleNone; + /*cell.userInteractionEnabled = YES; + cell.selectionStyle = UITableViewCellSelectionStyleNone;*/ return cell; } --(void) secureIconPressed:(UIControl*) button withEvent: (UIEvent*) evt { +- (void)secureIconPressed:(UIControl*) button withEvent: (UIEvent*) evt { NSSet* touches = [evt allTouches]; UITouch* touch = [touches anyObject]; CGPoint currentTouchPos = [touch locationInView:self.callTableView]; @@ -1141,7 +964,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { } } --(void) actionSheet:(UIActionSheet *)actionSheet ofType:(enum CallDelegateType)type clickedButtonAtIndex:(NSInteger)buttonIndex withUserDatas:(void *)datas { +- (void)actionSheet:(UIActionSheet *)actionSheet ofType:(enum CallDelegateType)type clickedButtonAtIndex:(NSInteger)buttonIndex withUserDatas:(void *)datas { LinphoneCall* call = (LinphoneCall*)datas; // maybe we could verify call validity @@ -1170,16 +993,6 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { visibleActionSheet = nil; break; } - case CD_STOP_VIDEO_ON_LOW_BATTERY: { - LinphoneCall* call = (LinphoneCall*)datas; - LinphoneCallParams* paramsCopy = linphone_call_params_copy(linphone_call_get_current_params(call)); - if ([visibleActionSheet destructiveButtonIndex] == buttonIndex) { - // stop video - linphone_call_params_enable_video(paramsCopy, FALSE); - linphone_core_update_call([LinphoneManager getLc], call, paramsCopy); - } - break; - } case CD_TRANSFER_CALL: { LinphoneCall* call = (LinphoneCall*)datas; // browse existing call and trasnfer to the one matching the btn id @@ -1209,26 +1022,19 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { } } -// UITableViewDataSource (required) -- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { LinphoneCore* lc = [LinphoneManager getLc]; - return callCount(lc) + (int)(linphone_core_get_conference_size(lc) > 0); - - if (section == 0 && linphone_core_get_conference_size(lc) > 0) - return linphone_core_get_conference_size(lc) - linphone_core_is_in_conference(lc); - - return callCount(lc); + return [InCallViewController callCount:lc] + (int)(linphone_core_get_conference_size(lc) > 0); } -// UITableViewDataSource -- (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; LinphoneCore* lc = [LinphoneManager getLc]; int count = 0; - if (callCount(lc) > 0) + if ([InCallViewController callCount:lc] > 0) count++; if (linphone_core_get_conference_size([LinphoneManager getLc]) > 0) @@ -1237,14 +1043,12 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { return count; } -// UITableViewDataSource -- (NSString*) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section +- (NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { return nil; } -// UITableViewDataSource -- (NSString*) tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section +- (NSString*)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section { return nil; } diff --git a/Classes/InCallViewController.xib b/Classes/InCallViewController.xib index 1d2335581..0ed773a76 100644 --- a/Classes/InCallViewController.xib +++ b/Classes/InCallViewController.xib @@ -13,9 +13,9 @@ YES IBUIButton - IBUITableView - IBUIView IBUIActivityIndicatorView + IBUIView + IBUITableView IBProxyObject @@ -66,6 +66,7 @@ {{240, 354}, {80, 106}} + IBCocoaTouchFramework @@ -75,7 +76,7 @@ {{141, 212}, {37, 37}} - + _NS:1030 NO IBCocoaTouchFramework @@ -87,7 +88,7 @@ {320, 460} - + _NS:196 2 @@ -114,7 +115,7 @@ 0 0 Change camera - + 3 MQA @@ -122,7 +123,7 @@ 1 MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - + 3 MC41AA @@ -130,13 +131,13 @@ NSImage clavier-01-106px.png - + Helvetica-Bold Helvetica 2 15 - + Helvetica-Bold 15 16 @@ -148,7 +149,7 @@ {320, 251} - + _NS:418 YES @@ -157,335 +158,19 @@ NO 0 YES - 44 + 53 22 22 - - - -2147483356 - - YES - - - 292 - {{119, 251}, {82, 52}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - close - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{119, 193}, {82, 52}} - - - - - 3 - MC42NjY2NjY2NjY3AA - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{31, 19}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 1 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{119, 19}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 2 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - - - - - 292 - {{207, 19}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 3 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{31, 77}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 4 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{119, 77}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 5 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{207, 77}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 6 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{31, 135}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 7 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{119, 135}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 8 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{207, 135}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 9 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{31, 193}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - * - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{207, 193}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - # - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - {{0, 71}, {320, 310}} - - - - - 3 - MC4yNAA - - NO - NO - IBCocoaTouchFramework - {320, 460} - + + 3 + MC42NjY2NjY2NjY3AA + NO IBCocoaTouchFramework @@ -501,14 +186,6 @@ 141 - - - callTableView - - - - 109 - view @@ -525,118 +202,6 @@ 129 - - - star - - - - 56 - - - - one - - - - 54 - - - - eight - - - - 75 - - - - hash - - - - 57 - - - - close - - - - 51 - - - - two - - - - 59 - - - - zero - - - - 55 - - - - three - - - - 60 - - - - four - - - - 67 - - - - six - - - - 71 - - - - seven - - - - 73 - - - - nine - - - - 58 - - - - five - - - - 69 - - - - padSubView - - - - 45 - videoView @@ -661,22 +226,13 @@ 130 - - - doAction: - - - 7 - - 101 - - delegate - - + callTableView + + - 108 + 109 @@ -686,6 +242,14 @@ 107 + + + delegate + + + + 108 + @@ -717,7 +281,6 @@ - @@ -725,7 +288,7 @@ 140 - camswitch + camSwitch 126 @@ -739,114 +302,12 @@ video - - 106 - - - - - 27 - - - YES - - - - - - - - - - - - - - - - pad - - - 31 - - - star - - - 30 - - - 1 - - - 33 - - - 8 - - - 40 - - - hash - - - 29 - - - close - - - 39 - - - 2 - - - 41 - - - 0 - - - 38 - - - 3 - - - 35 - - - 4 - - - 37 - - - 6 - - - 34 - - - 7 - - - 32 - - - 9 - - - 36 - - - 5 - 132 + + YES + display @@ -854,6 +315,7 @@ 144 + waitIndicator 127 @@ -861,6 +323,12 @@ preview + + 106 + + + tableView + @@ -878,33 +346,6 @@ 140.CustomClassName 140.IBPluginDependency 144.IBPluginDependency - 27.IBPluginDependency - 29.IBPluginDependency - 30.CustomClassName - 30.IBPluginDependency - 31.CustomClassName - 31.IBPluginDependency - 32.CustomClassName - 32.IBPluginDependency - 33.CustomClassName - 33.IBPluginDependency - 34.CustomClassName - 34.IBPluginDependency - 35.CustomClassName - 35.IBPluginDependency - 36.CustomClassName - 36.IBPluginDependency - 37.CustomClassName - 37.IBPluginDependency - 38.CustomClassName - 38.IBPluginDependency - 39.CustomClassName - 39.IBPluginDependency - 40.CustomClassName - 40.IBPluginDependency - 40.IBUIButtonInspectorSelectedStateConfigurationMetadataKey - 41.CustomClassName - 41.IBPluginDependency 9.IBPluginDependency @@ -921,33 +362,6 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -970,232 +384,61 @@ InCallViewController UIViewController - - doAction: - id - - - doAction: - - doAction: - id - - YES YES - addCall callTableView - close conferenceDetail - contacts - controlSubView - dialer - eight - endCtrl - five - four - hangUpView - hash - mergeCalls - nine - one - padSubView - seven - six - star testVideoView - three - transfer - two - videoCallQuality videoCameraSwitch videoGroup videoPreview - videoUpdateIndicator videoView videoViewController videoWaitingForFirstImage - zero YES - UIButton UITableView - UIButton UIViewController - UIButton UIView - UIButton - UIButton - UIButton - UIButton - UIButton - UIView - UIButton - UIButton - UIButton - UIButton - UIView - UIButton - UIButton - UIButton - UIView - UIButton - UIButton - UIButton - UIImageView UICamSwitch UIView UIView - UIActivityIndicatorView UIView VideoViewController UIActivityIndicatorView - UIButton YES YES - addCall callTableView - close conferenceDetail - contacts - controlSubView - dialer - eight - endCtrl - five - four - hangUpView - hash - mergeCalls - nine - one - padSubView - seven - six - star testVideoView - three - transfer - two - videoCallQuality videoCameraSwitch videoGroup videoPreview - videoUpdateIndicator videoView videoViewController videoWaitingForFirstImage - zero YES - - addCall - UIButton - callTableView UITableView - - close - UIButton - conferenceDetail UIViewController - - contacts - UIButton - - - controlSubView - UIView - - - dialer - UIButton - - - eight - UIButton - - - endCtrl - UIButton - - - five - UIButton - - - four - UIButton - - - hangUpView - UIView - - - hash - UIButton - - - mergeCalls - UIButton - - - nine - UIButton - - - one - UIButton - - - padSubView - UIView - - - seven - UIButton - - - six - UIButton - - - star - UIButton - testVideoView UIView - - three - UIButton - - - transfer - UIButton - - - two - UIButton - - - videoCallQuality - UIImageView - videoCameraSwitch UICamSwitch @@ -1208,10 +451,6 @@ videoPreview UIView - - videoUpdateIndicator - UIActivityIndicatorView - videoView UIView @@ -1224,10 +463,6 @@ videoWaitingForFirstImage UIActivityIndicatorView - - zero - UIButton - @@ -1254,14 +489,6 @@ ./Classes/UICamSwitch.h - - UIDigitButton - UIButton - - IBProjectSource - ./Classes/UIDigitButton.h - - 0 diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index d3b0eb147..fe0dc3bc0 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -43,6 +43,7 @@ //TODO //[LinphoneManager set:mergeCalls hidden:!pause.hidden withName:"MERGE button" andReason:"call count"]; + [speakerButton update]; [microButton update]; [pauseButton update]; [videoButton update]; diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/UICallBar.xib index 88a73a157..eb2bdafd0 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -236,21 +236,19 @@ 0 0 NO - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - + NSImage pause-over.png + NSImage + play-actif.png + + NSImage pause-actif.png - @@ -310,15 +308,15 @@ MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - + NSImage - dialer-meteo-sortir-over.png + clavier-secondaire-over.png - + NSImage - dialer-meteo-sortir-actif.png + clavier-secondaire-actif.png - + @@ -604,13 +602,14 @@ {160, 134} {160, 134} - {209, 136} - {209, 136} + {209, 136} + {209, 136} {160, 134} {160, 134} {160, 134} {209, 136} {209, 136} + {209, 136} {222, 136} {222, 136} {160, 134} diff --git a/Classes/LinphoneUI/UICallCell.h b/Classes/LinphoneUI/UICallCell.h new file mode 100644 index 000000000..ef63592d6 --- /dev/null +++ b/Classes/LinphoneUI/UICallCell.h @@ -0,0 +1,41 @@ +/* UICallCell.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +@interface UICallCell : UITableViewCell { + UIView *firstBackground; + UIView *otherBackground; + + UILabel *numberLabel; + UILabel *timeLabel; + UIImageView *stateView; +} + +@property (nonatomic, retain) IBOutlet UIView* firstBackground; +@property (nonatomic, retain) IBOutlet UIView* otherBackground; + +@property (nonatomic, retain) IBOutlet UILabel* numberLabel; +@property (nonatomic, retain) IBOutlet UILabel* timeLabel; +@property (nonatomic, retain) IBOutlet UIImageView* stateView; + +- (void)firstCell; +- (void)otherCell; + +@end diff --git a/Classes/LinphoneUI/UICallCell.m b/Classes/LinphoneUI/UICallCell.m new file mode 100644 index 000000000..44da8c163 --- /dev/null +++ b/Classes/LinphoneUI/UICallCell.m @@ -0,0 +1,53 @@ +/* UICallCell.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "UICallCell.h" + +@implementation UICallCell + +@synthesize firstBackground; +@synthesize otherBackground; +@synthesize stateView; +@synthesize numberLabel; +@synthesize timeLabel; + +- (id)init { + if ((self = [super init]) != nil) { + NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"UICallCell" + owner:self + options:nil]; + + if ([arrayOfViews count] >= 1) { + [self addSubview:[[arrayOfViews objectAtIndex:0] retain]]; + } + } + return self; +} + +- (void)firstCell{ + [firstBackground setHidden:false]; + [otherBackground setHidden:true]; +} + +- (void)otherCell{ + [firstBackground setHidden:true]; + [otherBackground setHidden:false]; +} + +@end diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index dfe55a503..c43122510 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -50,6 +50,7 @@ ViewsDescription *currentViewDescription; UIActionSheet *incomingCallActionSheet; + UIActionSheet *batteryActionSheet; } @property (nonatomic, retain) IBOutlet UIView* stateBarView; diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 72a6936ab..a471c2328 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -219,8 +219,18 @@ // Set observers - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeView:) name:@"LinphoneMainViewChange" object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(changeView:) + name:@"LinphoneMainViewChange" + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(callUpdate:) + name:@"LinphoneCallUpdate" + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(batteryLevelChanged:) + name:UIDeviceBatteryLevelDidChangeNotification + object:nil]; } - (void)viewDidUnload { @@ -409,19 +419,69 @@ } } +- (void)batteryLevelChanged: (NSNotification*) notif { + LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); + if (!call || !linphone_call_params_video_enabled(linphone_call_get_current_params(call))) + return; + LinphoneCallAppData* appData = (LinphoneCallAppData*) linphone_call_get_user_pointer(call); + if ([UIDevice currentDevice].batteryState == UIDeviceBatteryStateUnplugged) { + float level = [UIDevice currentDevice].batteryLevel; + ms_message("Video call is running. Battery level: %.2f", level); + if (level < 0.1 && !appData->batteryWarningShown) { + // notify user + CallDelegate* cd = [[CallDelegate alloc] init]; + cd.eventType = CD_STOP_VIDEO_ON_LOW_BATTERY; + cd.delegate = self; + cd.call = call; + + if (batteryActionSheet != nil) { + [batteryActionSheet dismissWithClickedButtonIndex:batteryActionSheet.cancelButtonIndex animated:TRUE]; + } + NSString* title = NSLocalizedString(@"Battery is running low. Stop video ?",nil); + batteryActionSheet = [[UIActionSheet alloc] initWithTitle:title + delegate:cd + cancelButtonTitle:NSLocalizedString(@"Continue video",nil) + destructiveButtonTitle:NSLocalizedString(@"Stop video",nil) + otherButtonTitles:nil]; + + batteryActionSheet.actionSheetStyle = UIActionSheetStyleDefault; + [batteryActionSheet showInView: self.view]; + [batteryActionSheet release]; + appData->batteryWarningShown = TRUE; + } + } +} + - (void)actionSheet:(UIActionSheet *)actionSheet ofType:(enum CallDelegateType)type clickedButtonAtIndex:(NSInteger)buttonIndex withUserDatas:(void *)datas { - if (type != CD_NEW_CALL) - return; - LinphoneCall* call = (LinphoneCall*)datas; - if (buttonIndex == actionSheet.destructiveButtonIndex) { - linphone_core_accept_call([LinphoneManager getLc], call); - } else { - linphone_core_terminate_call([LinphoneManager getLc], call); - } - incomingCallActionSheet = nil; + switch(type) { + case CD_NEW_CALL: + { + LinphoneCall* call = (LinphoneCall*)datas; + if (buttonIndex == actionSheet.destructiveButtonIndex) { + linphone_core_accept_call([LinphoneManager getLc], call); + } else { + linphone_core_terminate_call([LinphoneManager getLc], call); + } + incomingCallActionSheet = nil; + break; + } + case CD_STOP_VIDEO_ON_LOW_BATTERY: + { + LinphoneCall* call = (LinphoneCall*)datas; + LinphoneCallParams* paramsCopy = linphone_call_params_copy(linphone_call_get_current_params(call)); + if ([batteryActionSheet destructiveButtonIndex] == buttonIndex) { + // stop video + linphone_call_params_enable_video(paramsCopy, FALSE); + linphone_core_update_call([LinphoneManager getLc], call, paramsCopy); + } + break; + } + default: + break; + } } - (void)dealloc { diff --git a/Resources/champ-courbe-autres-numeros.png b/Resources/champ-courbe-autres-numeros.png new file mode 100644 index 0000000000000000000000000000000000000000..f4fd83b8f10921cebee4d63c7a6cda28d44e6481 GIT binary patch literal 5349 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 bK$|w%Tx|bV3~r+jxQ~s61HRPE>-7HsWg+bC literal 0 HcmV?d00001 diff --git a/Resources/champ-titre-conference.png b/Resources/champ-titre-conference.png new file mode 100644 index 0000000000000000000000000000000000000000..4e37e251254d51446752a790dfcc18f2578c5322 GIT binary patch literal 14741 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�m@&jJK^DQy6=Q3Isof1cRj|zS*!z%moC}_G21iJZUf2UqRT=?V;6w43 zY!tmT<iZ$15bQXYlmO$FfixyDy zP(?XiXsWxwBWt2|<-T8bX2{*hhL05bl|2GeGElzkxKmvT{~C_ z#)6l|8s<+Hb-y4bR%{ij^l{ z%xUNf3cuRRYnEv^z}SQ}xg;hg@;^&s1=ytx^#9yjZvIV4f%uY)fDkX25C5Wb@KA++rI`TD@MjAk*5bN#~tm+QCl?}7DJ!PkKL@~d$|Pa;zuIy4QMhoR2(`z z(4?fK(%=`wS+F*9a!6=eZ@Lp9D!(KOG7^xPOVcT*asAod6IC=YAj>#0(}Tk*`rPPN zTS2K`(XO~4DEcg1PxN?|HrzjK7gS~(l-YkP$zg{VGHc1|XxwM3sU`fWfPo%Fr_IOI zmJ#S_+&F8zq1CR_oE*#m-=gc*v+s5LYnlq9?xLk9Ole!Nq{3Y^yYa{6Xc7YLI&8CB zVMOH5Fu>tcSP^^I=O@i>ZcLUSvLF;+?{n@p&(l8SIdQ;RZj=~0_^uo`gAKMCoQn*QFIl$UA2^k=ng65KAB(J57Z4z6R5QQz{O-W!X=%EApLG=?AHbk8sz9 zGRul3Go_j7jT{QouFJ(U+zN+I?CzN7Bm+pBT;>hYDEO?I(6Go&`+^CTr^&7%tQ1mz zAG|8virTVVVqJ5d+RykfBmC6p6F>j}uLuC}jrKfp@;{(396S;{00adM0P(tj&I16T zdz8R@5CGJSBSJ?8AX5}YMF*gFqN2Z|fiL8&*x+6hBs>f>pqG9S0ur#j0KrgpZL!7f za!Du0gewB;cw^!T806ynwd*FS zo02nnEYQ+P-CgjZ=TAs0Zru*0-2kT^>=Juj!@jS=OeOs_9l8zq`EZuDsxv#zawN*O zN5@M$w(!da@om*l(bFmu8$sayo?41_LSlshL{?$=1stakKLwmTE*@S`jI4qjt)6D1 zZ~f7r##=MpOD{4teNyN7q&Bs?IQ2|K)E*dC*_V5P1tqV9g z6if?yI43uxd!RfT{M2S_cNZJ93?jLxldqY5?Cn#Ed)+P?+zdN0UG+ykGD?2&vFgM9 zEZ3wGYKc_Fr7_Z3d#}(Y2&MGmx2F1CtozTO-SFFqAv~UMoM%r()1&orDPDhm>)09M zc5K&v=9^58Pp7UNqge5^Hi?o73+v_5NA*$wlux01hHNbr{x?kf@}i{TBm9A)Gd z94<=@<7O+>;FnN4)9%Iqu|Aw!KFoy1^gT%7hD%_v>3z|T%jTIgFC-F+UwQ^ERTPd%j)>DY==A zxYYUU2iaZeeEpjD#iFS%=7;~v>EIRWcB^)<4PjG!$9G>zpi}b*>LO<{D!e1RSA+gQqKA`AU zAZeGiBGBg6eX!3|%7h>89L z_GRVf@X)ZJl6xj5fr7jB$K)>oe=LL-dLu&2%Fw$5Kl!OJMxF_s5qqmu`rk=c4P}DP zLX}lDCHHk>t=r~#-J#cruYr%M#H+Y4L~>?13$#gh_IJ}$Xm9xqTV>m=oHaP8jYqnl zyz#z4!2R%idNgIuqGgBAgP)<`V;-_jCNC$!6`p&Fm6XjD9~~YqM7dRXb%AE(;v$dD z%pflL)R7I_q(Si|amk7K%qj5Ab0b({i-HH+>S=spOr_P4Z+=$21sM(X{){SIR?PB9 zEQM{y-DV$!m@X|lJ;qw6?sxLT@Z*N?26yWoXJ-D(6;edhw#VP-Jon8k>az)EfuYRY zWUuuYBnL7AdJYBi3Ms`YNyck4;9#2F)BQpbn5 zB9ybPBB#3%Ae8a&8qTw?T+IL68{{q!*M^OkojB{&4{t*tNbbWf#XqUS5Q{Ok-Zpu| zX$$aFdbM=wym*Q9rUHo7_QC*0R$t$HYzhMn7CN4O#h(=d}SeD#ZB8l|Y88-bw^y#i3x`@;D z%zbcYk>F^Jw=>p4PspH_7%=Y!Kl*&M*0lS#7%eABkAqyO!RjXH#f)Gnt1>nK>G>0RJ6`F)QrL8z2j_h-x8TRdjFYN4$ls!`cIme*J0{T5 z(peP=_BJ!iBcu=)XCCF5$_`GpTaooqPiBfv4_mvo&en32bwG7W_%e&w#_37Y2VPbO zs_e+W#K-8n@HL(lFFLq-1%r@;FO&&xd*-X?dYO@w8y?(X$3reyWMoq`0m{)i*-_)BCp?E5?uGm^Lb-?E|raVjWDMm;Z8$Xfo2W)H4jKC(de3i!9i8aBx9ZCSMKtD6lV_dI z9xM7JZ&DPsIWHbgssg+&l^i~J2gh0-&rB_Oh}>~@XC%~W`6L)Eo#{2vz1~!1-ZpY8 zNR)*9a7WlW#y~03_s)K@V&zJOL8rel$j-de9d@&{_%VLA5PA+duImr4YP>u{nr zZi9Vg*N}pKxwhdT&7?a%Ax%KJFlxYZhPK{D^@K@HwQ{YIX2d{=7DEED_m%f7bllqV zy5AGfv(;nc*8nc}nX?$v+QjL`LS(GSvD5K=c=bx(Q-l;`*+t7IIug|Cjmy?y-~`eY z0#(?mIb^A?YrP~8uSs4pqDYbn??J^ih^-xnE&|AjlM&j{rwA24RHIdjbM`T#P=_B? z;}AOMZ;tH^I=}~jv`u9L%^-YJ`mpU_0N*Hik6(Tj{Jf`t2apMMpMlFQG7td#^cpk( z08a*v4gduBp*HXXGe_ZXNR#X7ecbNJPS0(Pb^Mt-RPHIV>^kOliRtd2@2u&RKT|6Q z!p#Svi!oHelV1dTiftoYgsMYhlIbG+K(tFwX`FEfzjYFHICN-6%xFe>b+Tn?V(i8} zj*kph?z|(jS9{-bcRlX}_uCfugaa&EKKq$+^ml``0RT4fSpT^$mTs1J{R4TyvV;Bw zLZjm#!Ri74gDeoiuV8%vfZcQe1q4`Y03gl*5*}Q6g4-Y?E5bhj*+dt<$omM$7fa+C z0QC;;W&(b{FBJf|M2vc0JQ$yY6&C#+AlrbBOFGF10dX|cHT14$r>9A8FYjrEk zY8){+T2Z@=;vgY}A6|}j4Gl}&a$`>`Dkryp6Mr1{s$O_!8n+K=X~OV8YfEtJ1vXcAB0i`gLpx@(2wgtRTmCs^M?t%t(s;K3SUza4uytM% zWz253+)Yg(JM;Jtj#=F@-JC78T)swo4vV_F1od`J!ZbVo%_-3(AFjkZ6{sCYq)$S> z3pX;EAI)9OPmOV|g{XAaKq`W|!HWTlM|#&y2Z)obr7kHS5*N&rR{|ofP23 z2r7;jE=z7D^$sG`TmG@EBdwX~G$k;Db^ThiFxbXB;aDrfVC9=SUFVIG?p4-OIX(x1h5YRB%Q2oRt{7#?-n@#}lCy{Xhn z3J^MIGR(lxvtw(=-iS;6_=NxTL58}xCF%ostC686k=OELGWeI* zT5=hJJqd<$!Ih!k3n}L(4xIRw>tXw6T?>7|xn@GM9xeLeE{>SUh{zilWm|sEo<${_ zJ58&lHmbH1orvb{3}Vvc38HQ+-CH+Oavz-#?2PRM)hROE5JFvgu6!vKJ+2h|^_=C! z4Lu$5Di0O=RHDHZ)1FWiV4$V#orfS@Q=5vWWZ|mMZPHdFL$E*_VMeJu=VkJo*!Mm+ z71{78Q(M!j`Ec65tNOQy;kT2&%ft2rWI21H8EJGvcUnkb7%u z$t0}o&G`>rm!rJxZrSoZp0yTQ#cy2HN6ti@oUF`>J1}{M4(rZ9*h&{4@IM?D9;J>u zcprn^!FC6k%))J$vCOQ{sQ2Sk-Wnm%ur-f;jiv3%-I`LvsTAMR_xgHy?$*-Zrr2Iq z8KK3vt+Zy2<1W&i?rmnKyo_~8{9>Bw5_Z{eW|Wzz%Y*0m(#%zcoZqr;wk~61k*EG{ zHr$U!&QZWnuALl=nB`Zxy4*(W3}WgZ*`rgaDQc2`9HKdK%+_{q7INF}Anws22Y$)z zw&|#~_jcQo6-_5=q`FIOtI=Ub>U}D!{3ZKsgpWQ{Poru~h^GGLhGx| z!%d`Ed)UUp)4|Zk@ON|DF@aVAPW?Ub^;`=9(73?^Ie{~Ak@?2Pq+pSreFTb{RW$>XBD^eFkn zv_L{;#ScwDEPBk&*{euG*!TVuEB_+x@UxC!3-cG)@xM3v0!lMY4jJ6;U_)L*PeSW= zttwLwzdp>*ONj3k+NQV}E?_LrO*1#@=RdWq{&}wId<|@uLyF(}inZ#fe-Pg>G~ssz z$6klQh`U-n&(ruVmG1fi&Ox?C1}YjP_MTjHGcHB&m+*AE*#iK=4X(tkZA<__WaJta^S6%_fg z+~`MCcBUUDN1B?v<%d~n*@U4phHWWF%nZEAL23C=J_!kdmUn_E213$J;J~>}1Ta=j zHhes4_9cZTg+Ur+?fYvv09ZAJzed|Ou@p)+bb`T z0MoL#zY&OQ>`sl29{UhWz_#KclG5nb9v#Mkor~VgA9r;!sVORT=yk9467;UOc;E`- zH4AuFaQry;Rnqiw{>Q&omLFD+Y@hcbm0M0n+b9lX>_~FFRA+r{X4QL-Pki`10z@`8 zAt^f_)M2&u1KeqIN)NTj(dqNNtLWc#zH*jfZbEr}U)R`iM?K2CL3~;gnVYk&d9(bN zE&lj^eA(${ZiVOvBU-fC#{phuOb+TJaop5 zsYCVXkmGc-Q5PDB9KGDUJq;sSSi_CY-d_48aC9+02>N29fK-*)zceV39`&Gu79Gw{ zPtdrqblIuC-h-tl6;??kG+}yV9x~eRpAxmxAUEr`tFp#>>1}^A*7j$bipK%@+e?F4 zbM)kLB()jd!cNbNssMW_5)y2u{ib#7s&E*oKYOJuVhD|Fef=2*P#1fkFYVx;U0=GG zaM~diS(7FyxtJo)$W2cXo;KO)E08<>v#Y0ZIA`@skL3|_P|loMVjDgqXq|B7WFQh=Q9D5OIG*x>Bvn3S4$Ss%+mpV z3xLZ4XNRa!>}RPBnOv$yWyPMpZW0O^%izdb__KCJnW*CJ^Z1}j zVjeoudRzjkJN7CBF1tisWoq#3$Ujc8<4J0_<}SA5^9P@^l7V06Uwp->3Avllp>YKp z0=N6a2X1vFcPwUKKCK2MD?XnI6Ui;v=DZC#MLBSeRGx+TCw;bnn zkl=&%51sir4*lTaokT3``%yFjACJP)+Pae1FkFH44V*jG6cGcYxTcAxo4s?8*HN0WkRO;XsQq}%|TcU7vuVjwDl1nJD0d1T`qTvZ&-NSph#iaun z%#YPoWVriTIoB9lXMkP9=A%Z`Jvq*D{S0dfdA@lZRFs7I*)WbN<*2NAigQ z&u5-n^D?WbaW}DOBHKT=^2Fc>)X*e}=|)q{Nl^^pz+*A4_wLn%)Bqc? zT>6@#9eBD!uQ`}qUuMUa_z)4Ib^k+kxsiEU1Y)*Hh z76GI{OXaBVadnvMArCUCRgG+NKq7(HZ*861gdZP|%aNBS6!+VE1y<5I$h^;c6D6XF zEzF{7b5^5m>MQj+x|s|oW`jo^_pAdhUblD;!zI5XQ^XJ}o#>E9ZKu<@a}+QiAsqe& zZaZV+4v=yPxI2D!;YQ+^W5gSfXgn-I{U8G*YKeG{A9?6%7aw>dUz-GL6qn}cFTRZl zg?F$n%3-#rjKE0KR9U7*@eXXPlcuppTd=dqvRU9cR`!h}uPAdrbPS^|YemQo*Qy-> zZ+A$+cg)ZlvVY1bz(WX1XYaqI6_VM1YAj?T*c~v7e+o4*@K-M2b}0{t2mD)j@jwKF z>rimp#Yuzy2Z*yULMD435&4Bc<_-Fnn*zWX^gaggg6RkRi%)BYzYj`*w^rh%$aO;kKw0o- z>_}%Kt2^RiL8*N%y2Y-+b4NGDRHFb9fT*JJlJ(5Dr1p*V*L2J9r<0SZf;qpx=#Z%( zBUWDA@0&6~`_fQ>o0bI==T9$%M?xExwRR{d*LVIeEf#y|Zq*v?k9#XIx8s6qLk1QN zx{P)(FbIYgHFO^%3hME>HNV$K>}O)QnR@$p7raR$Be3C2m;Tn#uDbmdr*h&4uI2S4 z?zVd3SC|ZL9q$avzqy^LBOt-DM08%U{pQ4khwV2Z$-Jw0@ZRyy_UWKR^Ee^xj)w*e z!n_Ik|DIZ%CZw%}34vJ?Q!Fb8)~w--9MCm2(3OmsZkXBroxt~f$kw{gWvPwnOq%NE zHw>|iIYyTt92uz8s0j(-=s2lq&7Nm2q>WI2^#uR4z;*6w@#CHQ&-tJ@`U;sbIH!_-dg0SvH-_qG-~A1Y4tHhi`aPE5HoZ{oy01HX4SX}1;y z|GdKqIn%OF-dbTYLHd~nF559MeD)V>5`|wb(8!I!KGT@Rky^<|JU16V z`eV-e(|3%q;cCm_lHL>AQBD7pp@V99RMgPg)T|a_QDA zfj=``?>h?<`FSFytcp3J|F*n9=N#)qi3xtzfnOT3jKz@l=FX9{XLYU&7?Hs{b=4 zV1zA8g9yR!{YH^iRlw nL*}0d2Y@5@z5VZ9(9pfGDF3w>)hG4bcPv>+MTtr=qoDr})OdEV literal 0 HcmV?d00001 diff --git a/Resources/clavier-secondaire-actif.png b/Resources/clavier-secondaire-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..43d512c0416939d8c213a49685fdb764d3fad0db GIT binary patch literal 6776 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 B1-k$M literal 0 HcmV?d00001 diff --git a/Resources/pause-champ-numero-actif.png b/Resources/pause-champ-numero-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..0ca4db8c134563057f9133893eadcb0790bb9c4e GIT binary patch literal 1536 zcmbVMZA=q)7{9()StqO_lk)!eU@#eN?~bbdjTR<#A!CAM2^?E&Mf%dxV0fl6a z@{)iWhtAARmyKo9=`;@bv}~Cg#KCkfu=oLuOLW5_%d(khvcx50SDnyt`md|-tOk>*hapC;uy%{W4#Qh z3{p*ui=lj-uYb#wL6D>|Q19m5&Rqn}2GvyDMjZ`?1vCVe?TCgcx`p9^muU)wOzspX;7ol80Ww+m0+QYbcT2;stQH&6AU&c zLUVyIA7Dcu&PaLLHr@makuIkY3_G2x#G%Map@foYqEuLesu4{v7|(0TI>Nh{f5TYQ zI#S;mW;8A)!nSd=(2vIa1X!ru(;dYPg=mP~TtH|F)oNquwjdMYD{UrN_@nj(d<23T z5ER9=2#z6o1BzN4Bx$sgxI<6kh|z*3IM%{ibR>rBEmnhGt4C2gYA8hns8w<yZfM zb0n~pp$JcfXeQw|AoyLuTAqp}NRFX+maAvk*2DzV_*tHf_}MTZ>vX_L(ScB0j<;ty zTN}d#+8LjNV}oF+zC>UR|G3VoH`on!3|-FKK%!a)X3*&j!Z2Bk7`%e@{hyj?gkUuB z;rP$6Bvir##*eF`F9@s4!-Ry5;e^$&$YsYNNQ_k4EcMab-b2+lnxLM=sz#?rih6&L z|1H_tPzW~m7eJB^-&2O6;;Iq}>bcO<^A{wVNaBBQ2Uj+{xMc&M@!XWX#5^v!HE6hT zdhBkULZmQ*qFa&$$rR@QXwciEl^p3Fj7iO}UVU?L&jyA0(8y!y{cRBW6WEoi%-kD0 zwpsC-igkGWN=-i)UN^^1&NuGYUVIGXU)El&d6@o5l+b5*UYRC;&Js%% zUDk0~YD}IEp1r(NTGlmtZ(UX{l6P?=ATzQ z8p_ZO7alK|9=RmVmN&o9Ry!oUW}dlU9wRO0wBY&m=>w;buN|@M>)#<-sC3g6h4|yc zIc>k4q04i&{W@Dad6;OwIl7`+crg2EJu;uOv3a}8KUp_KTi%}Bm!=e-$S!WEhXbkVqD=x@xh~LST_G;S&tEcB5C;kCy literal 0 HcmV?d00001 diff --git a/Resources/pause-champ-numero-over.png b/Resources/pause-champ-numero-over.png new file mode 100644 index 0000000000000000000000000000000000000000..a2a15e52b4fbc141e25294cff45c17669cbf2598 GIT binary patch literal 1531 zcmbVMZA=q)82`5gsTB=xD%4QV!;Ked?*)2o&ldX*jTTEGSeIqv+Ft32?bW+O3STU^ z7<9;(M#AFUz)CW+SB%S?GZ8bE$u^TNI!26(i!X^;FhlvG%d+hX)a`@u!!Ehp|9S5D z{hs&#VNYZIYK2k(09fs6uzSVt7V*X9D*%w3J6Mn{3MGQWCp5Dmp^M^ZU8jDNTswjp42CoZj;lorHQyZ-sJJ@Hmt`32G#}uY zn82`6D9uRu*-pU(i;*s+5Q(|n&xoV^a-qbMA#o~(U>X#OMACUJTJwUJ{x^*0TJtU4 zF&gpGJln|y#D0XzGGMWGFLsnR6r&+`a*Ws%YOkFQbVlf?;If-w@sB3R1W6RrqZp>E zMRhnz=rPRVwAl<+o6bqtbg03CWjLOPwP%{e1tzH}^ivfq1vBCdSGeisqNe{<= zh9#pCCop|{Hu|FQY1iZkaE zPn4clPp))rl5u&`wW>o^SrRpLU~8RjA^B)Lrzv%`>QLWh=$q>k)8KlaN_jgEN~8)4 zh#`5)1+W{m!oU9b^%`V$KJnByHJG2`51mOQcMl9GjeF)HB5smsKb`1TmyNb#W^m;@ zg{Q17`<2emWc{Yz`&q50CLf<()o|kU$}aHJuD)Eij0@d4x9;PJv}T?d@?IIcuPm&S zjjizc^INYZ9dC}v3zbD@+is+qZ1t;4wZe_m+u;Z6rF-@t4^$wkrA-A6iiKcV8V)dX8@| z2+zJQU6cL!v5OTAQhM~kwjfv!7 zY3JMrf%?*|zs)YI1YxeZYGh$huH9I9{%+;fiP7o1)rwrnwR}~%^;CJ@?M>GQPnzf6 zGDauC!|`>JiI?6}Az}MHdEU;fJEa$1uACR9Erq2=&2!fh2abSylWy~^tn)IXLIyT; W49qNC`q`1bj$MvM`zO}6zJCC|%moPm literal 0 HcmV?d00001 diff --git a/Resources/play-actif.png b/Resources/play-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..f6c26676892d607f56249cea64ca9519b09d1f60 GIT binary patch literal 5562 zcmbVMcR1VY+YhmdQkz;q(HfCNj3BjxqgtC*Z80hmB1-M8v|4H(Rin08wW*?|r7=3p zTCH89s8Ty`dd}&2-#>oW?~nJnuJ84I?&ta3pL;*?##i;uGM;Ay003tV^mR-r|M!&d zE(0|HKov1l#zqnN2)fn;Gn^~I-w}@nXu9B>&>#aZM>n)7+R^2XPaj$h006prm|GL9 zjjpIT!A0HCHG;O*$_i6(%Y&~6@Br08Z_hbYLy1u1H!U<5Jp)<(N~ z=m+A_W`S4DodZ3c5iX+YmqBU)Dii`QG{F%R;Dy2ZsstcK|Ke4l?0+50iGu!u5Im8h ze>-JuWDL^A;n5%kFhtfFq6h&gLcvgZxRR2R3pfk6D?fWc%b2wC4dSb}4KEY?@- zH-iq^*BS5OP4K{BLBALsop62xq$tJHzeDiyHZuB`80-5_q9`eo3vl$7gMuM)US7ZA z`U~w#Fh&2b8~+jQYktQYEoX}M#rff#DfMs_`>jmL-G4Xq3rO)s77IAWdAzwLTZ?Ea$*{ja(z+IX}h z0f#ro;V{2Dz}Ou}!1=o4yg}M#3Lqm#XAkTz`B!=Vj#dYa_qdIALE&*;puh5~;_)Bs z!=Z{W1Oft=SNuC}1jTifqAm=js3orjg(->tqwDhj$(bC*8M$B0@qe1-_YtK7e{KJ5 zeTwk!@Sw4jiNRAw<8(5*0RUiIHPF#C5BTJCeEX+L$s;;o%jfB3+-%s%;pvXj&FJmt z4<*1OQeI2}gaQ2qU~YUNb>6Oqp7BSWqmE9-5uocEmq!>#U(CK>64he1TshuMp@zsr#}{s3~4!9 znp+|?TTIWa*cZ&j)x=Au>ECr%R0t{du%{`_6e5$!L-?(cv8ZZmkzf`u`1WmW#FspYz-x#=4+$wAk$bFizgt1o^;Mj_pvj;M}ItLGc3|52LFR`$3$ z0ssozy5BMv&+M@tw=uDIT~7?wJy3E#kOl`91eJCr$Lonqji<4 z;M9j1c(!z^K04^(>{OQCSnB;zdE}IyY+lD#DUMelx-qjUx`w0B_Q1DV`D_)l@|D3% zM4NDcwJo$6A8g27Qk;9qPne_B>0n?hmv3AG?c_Rhl;TF_Fm5m3S`N9Vw$s_hdQ+Bs z!b;sw?mFuR0>mzATXya9^s9#j+vIQgYD~ZB-QS$G_depM(X670n(YX!Ha%74efe-( zy{4RACGm{4-|_O&oSn>0TEv&1dEi`nzqqJ`a0{bc@g=Ad59=Wy0`k$`VX`M?ezLQb zb=c_SSjcnkghblP{lc>P!DZOz z)d!!{(V8Q5=#`)z8ltNf%_-_G>}*vMu$6f{+RfE*az7`#*XL?0O1cKOO(v^@78aHg z1N)~>7d9R60=;O5A7phg;41}`rc-hM%0hFP_t;5P^R}>Dhxaj4S7cBa-MCLDSauvq z{*uguJ|_QsVuR^f3j+#Ol0~W_bio(Sk;6{6(qA5vw2I(wwjM?#M{ElNAtNV1MF%pC zPZ(2*tH5VG%XxgB31c1yA6fp`*~!rkOiq#Fi%fWM#JUb&yemKMLoT#5(JGq{2sn5V zazf1v5fMqIWzVIv+Euu=j*Q}U5z2TA=J!f7o@;*Ep-hh}xiLHZC^1pcX!y}aoBSIk z#F9F2U70ARqOttU#~UK=%=ajkS^U5!ln?Ue3u#7%*e@f~Y6oWZ&zkFf~@s`qF2|bfbZ*#Ew!kZ3hpXlcS$I%d8+# zi}^d;qlPjd$=aIl@80^j0QKtueCNUvxnEKW0iYU3WN??{Uwkm@yJ?gnQJJ0YQM>y- zEB|t)CL7^$e4f1n&Dh+h2Jlou6=w_|&9)gslyuJZR&JgilPjN=HbM$x@&)fg#lQYI zJ#%Tw;$ZQyFK$rGmmSftq1sS6*)m)-)cD;XlC8qdwxjV@w_&n|OEcnR#v=B`hgI`Y zl?2;lR$zRUXXxOqoD5bm|2XCBb?(ZIcHq)Q^N8NOS3#cI zqOT=E@3+l%2|kSM3>qt0jJAfTzGmoq8w;X0xzPWxTHc1pYa!TAuih!B68gD)>VoI_ zi?=1m&$PXIj_sj>P2StjG=N{HB4(#kHRu6(&w9=JJg1#@32=H;axNZOW zWTcPypoYX-V^V1`aF}8b5kh?HJqWOs-WuWwMHw((8_h0h@-R{=dq`q`K|EmOvtZ)D z!|z*7x!vh>UgBa}V{a-W|M5ocOUILC9h0p<;B~L(bC*e*@;OCjFG?L=~s{WpC81jrL3@}YJZ?=w+hD5C3^l3 zZR$u$3K?NSPv;bUNkGV73hUf3kL z2+%(Qe*x+>tfWp0&y3r5AK}?u=1(Y+d4unOhCBtc+EjRDAZb6=2JKCoOMFV{agh zbdny8|HY5{Hw}>O!KqW7$v~cSp23Z33Ro_*kD@rq@{N^5%z8HwT&z*%IA16JsjtA< z+7;RGIg+%bYPEF4#OuUg-`cD;V?a%G6V{4JYlxX-1x&5vyx#w~uBS6`PkO6aC1G!- zgUVZsv6D&}K>ryaz|fg!s1-cWI;|tTw_$E!_5IQ3$t)V`rcyOfOOcN!|JaY#I?774F3)Sf)x^0TEO&4_)((asC*-gScCBjuT zZhzP7e(!^jU2Q8&pDF$GVb~2omAdl61qg7I`^(vmR@XY3SyfT>Tl{h=vr$y_@+HL+&+IAV~b}0q8~N?buL6| z2A5mH#KI9eLL6gm=lUk*wa*`QkZw8pQb=r$|E%h0T@FfyG@PACLf}ta7W|)b$cd^_ zk4CM~6FpYAp}BHrplKXpUh(`fQPk-=&G9lM1H>#G0Gk#EV{VNsb;(&v6*ju$;{}PmfSO* zmtq+<7_4$}Tl$rU<;YWaAhW6*zm&vq-TWVSFC@*Q1RAfu6??$tT!vfh{wzqXx^@XO zAk9h0JVoxs1wYwb0aYBv7HL3>z3B^+of`cHyEJ#o<8>#X-e zFpIzgp%%o~@e=mbqg6SryLwZe^*=9cC9&f400QAaZ_uwXnQ~d}0Bq!ta8u@-uQy41 zkQALe1jaIVeVzCMQw^zmr&RjudDBJH1igC~Hy#PHOVg-wV@S?tOv%ia`b0*C=yTPg zjF)6nUFNpu@xqPEpYHTuafKPE%#QUstNOF|oh+&@+XW5wNllN_O*bZ`$m*e3G<#%L zwl3a(_NXAH;6i-Ls_zrsuJ<4M@Z0a(t*r2CiBx8#xLp1$&Oe_+(QB-aLMralN3`U3 z-AMI;$EB?HXAZxk_0_wkxWaRKD_Iu?SYm0woc=k`bbpNdy39D`O5=8Zo_3v&{aCp0 z7dTIUBHL7syrJ~uS(}M3lFSGXI^TCMw8`B?o&!4>T>=DvG;7JsiMa^FQeN_{gD9Kh z-9-s74IBpTh~*!7r$2JIZ3CfCywSUymmFtxlbWGl(}5+jQ-Dwy!|HY`q+Rp!bHmg7 zg)&l3%ZsmvjNXkn6UtCNX%L(syO-?YprFla7OYsBD)ZBjtMe-F8=utfLq2j*xLq!N zumcuy!ug>oRDQz`czcSgz09B+lc9ziuoj&iBa`2s3mP$Lcxm&unJH68Z1n#5}Wdt>vU$YFzNR-3l^f ztAAxXrfdV%T@1F%`*QE;%6!9aw!cDfh0&hWXP_^bP;7R;;TeX`gtj71d9B;^B&uag zLc;Bbsp0Uci`U6hbpq|X5sCKU1qYT|g*C88AQxAtD*~_OG2}BE()NkxiF%oYfNRd? zXw>e|X~J+&>Q173Fy?uD-94Y2;_9NowY_l8S$tz*u*34c6@6cRlhT(di`w{C}n5mg;8?|r8*H!&Yi>&|HVEZ<@cQ`No1yqg)cxJHk zX3x_1;0Fu$Fm$cYn$W~Wi7`HO3Nnai03Mq@H2Q($+gHFk+&ML9=VrC+o;=EzK@!7c zC|9)UXDvZWq83(fPH}3S?f1)SHJzLCDT0TU$1C$qrYn5pOR0MrE`znrG z)u|3nL3RmOj3KZ6v{2>mt~RO$Hbk5bZzDourU%0O42MfAIm;_wCYpSsf3g)kY5#2z z6_C$HtpHJS3E>LtcsRz8<5bv#r*Io7UcOWwAFB{ZkI%YibAZ8@69DxxNK?WX7fi|xu9y;H2 zUur(*S`kt&U0jvF$K*+SJuSODI&Fd5a|mQ3ShW9fDDkj`-Ls(Grp&XHmN;t06xnu5 z!$q1yrVS^UpPpgSv|;flSYY_-~bs8}BPxlO*q~v%GUL8~gMz=6iTo{!>y( zZrr3Wk&(ag2riikD^F~B%qZ5V^{W00+m2UG_V%M5#%rmSIX;730&w#eq_3#v7V^}5 v2i18$aD*Ws0zr8I&t*n+3ef!CvRokpi#WG6VIqBU0Ln7Zy{c2C231L%nCjQ6fPDCh{QuB%kZc#!R=xckGJANy5x_xFC^`#kSm z)m2#;%Yp;v1_A&OEL|>=6W=AoL-Y3q0I%=&4&En(Ik;GXuQqD&BGille2r0sfl@u1 zgUK;eQ(V}Or2&AqR+p{76|$8awNXz)Jvub2-bA1QAT8Z$Le=>g4yv#moq-GetFsFN zbs8?THdzMCOhPPIx4guRtuD#PR+r?f*%~N)DVS#E5CnP*M?tH;z+mB6xzJl)4zc$f z(;@J!3ZBn}-Z`a^Wr0GY83U7PaDp06fx#4nh9o92nap^Q0V6OSX3!Bv0>b1ZGB_{{ zzF!bw&8*RK_lY7>Mz^9SIzof#dc7yEx7rq5 zj{Vn-k7`@8i%l3^j#-SG&1#|^+UO}Tk-OhEuNffe{vrAj~9~$$(Q>2*Q^Lg=~S4DM=ABVKyI`;`kU=EMbaSNr`M$N)mw-BdkQ2 zfC^IhOo2eaW=N*6QiBCY4Qg!4u8y$#9?SYoEJtX@P~2$FHW~}2Iv^|8h#M`rMiVGp zoeauQwa(y?J>_{9tq3#geurr!W}_Z_n_rIZBlelef)tjRC1xP+;${hvBng9+oXjGc ziO*(0@3ETyCuelR8M>!A{-;@{j))HQY(KO9^J#xR@S~l)+=ejNM;s2vH#NlT?u(AE1jixTHsN`bWvxDq zTH9Yipibkp3uf4S=0wfiJJ8(cBkvs_?tO6?Zs75?v*&>}9y!)G$>onfD3fdtwVU{G zMd*`7!dTy!S-f+_v5nJzCoOZku2YEua~4ei*`Uu)AEsBK=9x550q;7CK{MvSP}gMV%Z4kHj}6 zR#i1RUjf;Dc4}c?-6Kc;8F%@r$@%-j(OZttfC?`jP;Lp#Dx|{S{?d{II4yI_|C|K* zMR+@a=(Tq*ZsM(o1rp+*>!$rJ_U0Mok4Q>t1nEvQ~Jox@_8^!9DKGp%rm$U+rE>N=TYE!v1Z-&w;|SF&c=D4FN) znvSM6BJoSRckXC-9KUMUzi&(nne>i4TkvGW`?MJjf<;T4lxJ)&NlstSr3d6W^ZK zKhSb8b#^|QVegKr!8C1{($jDUKO)zuXGsvs3-4TfN3yL88wBubSaMQFm@0 zuf9!*o&K$#O?C-7cz8jacVA;9J*-pJ!5iHO=Zi-cR95i( zV(*#2(cn2(@A+Okr-`ks{<*7Ew!W+2i65gR!5t8%^t-NNmK$n&uT`ph+KvtiONW2S zoL|rE_Th`o5u?qvVXJ)>*u%bR2zJfZHoYKcE7aCX0G zY+N^P)BC2jPAqfwh?UHe;e8iQ(ZW!+j7kPxe^Oq(@=h$r^SdDxXNcMb%5DDv?2l=@ literal 0 HcmV?d00001 diff --git a/Resources/play-champ-numero-over.png b/Resources/play-champ-numero-over.png new file mode 100644 index 0000000000000000000000000000000000000000..42d81a84587fb76f0befb79e2d2c38e357c2847a GIT binary patch literal 2252 zcmbVOX;f2Z8omi3fk1$O*a%dv0cl-G?hV<9GLnTrkSJxbq2id3Tu6ZAhU6*{w+Og^ zXx%_mDoZP^OC7`+Txd1QB6zgb8JFS)hzRY`0a2?{3(Sp*ogbe5n0wAW_j|wlJkPs) z?|aTylDHt2Mh&0>06qR9G^aiREi72q4y>83?E_ zYO;_dM59}g*NMyp0GCWdiV9OH6GU3n$kI45ESu4cvjJf4Jeygg%|S3Q1IaR&qL@R? zXPKZu7sdRPr-YPdDWW&T6sIyE?)a2yeCU17pB zws4a*WI{oPShW^|88e_J(5a}&K$l@rOgz#zDHzR4lCfY@^Yc z*K4#DOG5q#GG4nscjN@((TEmW4EUjFa%HG?nGrEz z3Rx5r|HIN5bRq~ALNF}gLIMuN7s9YuE|o?~qyjl#Du5!z@Px+uxG{1;jF1~46Y{w@ zGX@q$KsZ&x7Yig3NhC);!Bv>7n8u_J&K`L zJ!%G}$vjZ0(Hcxn+j%^1vXvng!*WC?x1dJwb$vyK_xKm^Bz$3vFopxa$y+FexpIz> z#}nesB#z`T-*R>TPtDkPFl=XY{7o#3k*_|B!IZ@CaO;4+Mai%<})e%6;o@BDV9QB$ee4hU8^QO&=kUhgx(5I+`K!fg` zvJTAi^OFUA6ObF~kuaxYPvUL{XIe8czB)_d2b?P0?wWbBv60h})ZiHnz><~+-jyvK zZpXK|*8@`;fR=+^4*|yNp?lx2g)W0RJ*8p|WrTQ|T-mJFl=$vft!lAPt}5$+Fu-f0d@DrXry~PFwsW7_>VU5Xh@Td?*rL1g8h+5falptYphY zF(qMezsrFz^_9^J2O0Z@#A0$QRi%{QBq80g?pe9iV_oO%;i(z$hxO;yxkgHc0kPV1 zjan@5UlI~8DNI{`#4VJZa3Mk1GDXo#(HCxv4QibG>hbLp<3$<1d;K+C+v!oi5r}S8 z$@bDdySrg(y3clE;JPMm-A7>=z{zKXfX_BgbsJn&Gu_W#F^Qfd{GmfW;1WI)K(vVk zr1t&-3AyDsziF_g+{=ES5T|$oK&2nTp6wO)H*tf){%zNFy4FnJprVDfnP)qIY(+@? zx%KQaMPdYD@E7uA=J)gClp!6^E@;E`#IFLpbRQ6Qc9YV74s2^HKJUxORXBFo2u;7+ zO~R9Il*}E$9eapf!`)}sQgX7hO|6TnzFg_G$HgbQtRcbj_!iHF&*!hLsU1JNW>iF1 zm9BMsO-Gl@kA8A>3H94F1%Fb?jJxN`vFNl9^qSzN`?SB!uWg%J>TxV4;7sWjHKA-) zZPCo=n!^J-A0%a@Zw{p#&5g6npr^fvI>YpBJJ5Q1vNC8;-$s$0npB;0wN-rCK5APM zU!S9K_zeEyL87%G!2V6?4q5+*KgqX}p$95I#{6$QWcf`e*B;yh0dhrg@x^Fm zZBybAlph_I$;ec1P{i?dBQH7Mees|1>eN}C-sK~6yY+iFTzj#%G4H$cmODi!Nc&Gd$j z>1;wmqHEd#?*$k2Js zQM5sR)}D_Kzq-o3yd2oJGH7)C9uMBw{`5w}p+k;kcdOlx zBJ=oS%Fy-Il0KUGG<|YRUjM7H6Ts4@ug}*7=LIeOtm644s^_eiDHZ)LKx5|F`|2kp xz#1}nM3#E}U%!sA9giLIja&O3F{ZLyUwTukwB9SWXqe9Xg(7Bw?5IRt_+QX|R;>U4 literal 0 HcmV?d00001 diff --git a/Resources/play-over.png b/Resources/play-over.png new file mode 100644 index 0000000000000000000000000000000000000000..8268d1f8a3700037778dcfdbb57336fb68260b83 GIT binary patch literal 4087 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 literal 0 HcmV?d00001 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 203b71cca..540db8b4b 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -255,6 +255,32 @@ D35498221587716B000081D8 /* UIStateBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D354981F1587716B000081D8 /* UIStateBar.m */; }; D35498231587716B000081D8 /* UIStateBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35498201587716B000081D8 /* UIStateBar.xib */; }; D35498241587716B000081D8 /* UIStateBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35498201587716B000081D8 /* UIStateBar.xib */; }; + D36C43C6158F2E5A0048BA40 /* UICallCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D36C43C5158F2E5A0048BA40 /* UICallCell.m */; }; + D36C43C7158F2E5A0048BA40 /* UICallCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D36C43C5158F2E5A0048BA40 /* UICallCell.m */; }; + D36C43CA158F2EE50048BA40 /* UICallCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D36C43C9158F2EE50048BA40 /* UICallCell.xib */; }; + D36C43CB158F2EE50048BA40 /* UICallCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D36C43C9158F2EE50048BA40 /* UICallCell.xib */; }; + D36C43D1158F2F370048BA40 /* champ-courbe-autres-numeros.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CC158F2F370048BA40 /* champ-courbe-autres-numeros.png */; }; + D36C43D2158F2F370048BA40 /* champ-courbe-autres-numeros.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CC158F2F370048BA40 /* champ-courbe-autres-numeros.png */; }; + D36C43D3158F2F370048BA40 /* champ-courbe-participant-conf.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CD158F2F370048BA40 /* champ-courbe-participant-conf.png */; }; + D36C43D4158F2F370048BA40 /* champ-courbe-participant-conf.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CD158F2F370048BA40 /* champ-courbe-participant-conf.png */; }; + D36C43D5158F2F370048BA40 /* champ-titre-conference.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CE158F2F370048BA40 /* champ-titre-conference.png */; }; + D36C43D6158F2F370048BA40 /* champ-titre-conference.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CE158F2F370048BA40 /* champ-titre-conference.png */; }; + D36C43D7158F2F370048BA40 /* clavier-secondaire-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CF158F2F370048BA40 /* clavier-secondaire-actif.png */; }; + D36C43D8158F2F370048BA40 /* clavier-secondaire-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CF158F2F370048BA40 /* clavier-secondaire-actif.png */; }; + D36C43D9158F2F370048BA40 /* clavier-secondaire-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43D0158F2F370048BA40 /* clavier-secondaire-over.png */; }; + D36C43DA158F2F370048BA40 /* clavier-secondaire-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43D0158F2F370048BA40 /* clavier-secondaire-over.png */; }; + D36C43E9158F3F7E0048BA40 /* play-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43E7158F3F7E0048BA40 /* play-actif.png */; }; + D36C43EA158F3F7E0048BA40 /* play-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43E7158F3F7E0048BA40 /* play-actif.png */; }; + D36C43EB158F3F7E0048BA40 /* play-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43E8158F3F7E0048BA40 /* play-over.png */; }; + D36C43EC158F3F7E0048BA40 /* play-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43E8158F3F7E0048BA40 /* play-over.png */; }; + D36C43F1158F61EA0048BA40 /* pause-champ-numero-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43ED158F61EA0048BA40 /* pause-champ-numero-actif.png */; }; + D36C43F2158F61EA0048BA40 /* pause-champ-numero-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43ED158F61EA0048BA40 /* pause-champ-numero-actif.png */; }; + D36C43F3158F61EA0048BA40 /* pause-champ-numero-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43EE158F61EA0048BA40 /* pause-champ-numero-over.png */; }; + D36C43F4158F61EA0048BA40 /* pause-champ-numero-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43EE158F61EA0048BA40 /* pause-champ-numero-over.png */; }; + D36C43F5158F61EA0048BA40 /* play-champ-numero-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43EF158F61EA0048BA40 /* play-champ-numero-actif.png */; }; + D36C43F6158F61EA0048BA40 /* play-champ-numero-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43EF158F61EA0048BA40 /* play-champ-numero-actif.png */; }; + D36C43F7158F61EA0048BA40 /* play-champ-numero-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43F0158F61EA0048BA40 /* play-champ-numero-over.png */; }; + D36C43F8158F61EA0048BA40 /* play-champ-numero-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43F0158F61EA0048BA40 /* play-champ-numero-over.png */; }; D36FB2D51589EF7C0036F6F2 /* UIPauseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */; }; D36FB2D61589EF7C0036F6F2 /* UIPauseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */; }; D37295CA158B1E2D00D2C0C7 /* registration_inprogress.png in Resources */ = {isa = PBXBuildFile; fileRef = D37295C9158B1E2D00D2C0C7 /* registration_inprogress.png */; }; @@ -807,6 +833,20 @@ D354981E1587716B000081D8 /* UIStateBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIStateBar.h; sourceTree = ""; }; D354981F1587716B000081D8 /* UIStateBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIStateBar.m; sourceTree = ""; }; D35498201587716B000081D8 /* UIStateBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIStateBar.xib; sourceTree = ""; }; + D36C43C4158F2E5A0048BA40 /* UICallCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICallCell.h; sourceTree = ""; }; + D36C43C5158F2E5A0048BA40 /* UICallCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UICallCell.m; sourceTree = ""; }; + D36C43C9158F2EE50048BA40 /* UICallCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UICallCell.xib; sourceTree = ""; }; + D36C43CC158F2F370048BA40 /* champ-courbe-autres-numeros.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "champ-courbe-autres-numeros.png"; path = "Resources/champ-courbe-autres-numeros.png"; sourceTree = ""; }; + D36C43CD158F2F370048BA40 /* champ-courbe-participant-conf.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "champ-courbe-participant-conf.png"; path = "Resources/champ-courbe-participant-conf.png"; sourceTree = ""; }; + D36C43CE158F2F370048BA40 /* champ-titre-conference.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "champ-titre-conference.png"; path = "Resources/champ-titre-conference.png"; sourceTree = ""; }; + D36C43CF158F2F370048BA40 /* clavier-secondaire-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "clavier-secondaire-actif.png"; path = "Resources/clavier-secondaire-actif.png"; sourceTree = ""; }; + D36C43D0158F2F370048BA40 /* clavier-secondaire-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "clavier-secondaire-over.png"; path = "Resources/clavier-secondaire-over.png"; sourceTree = ""; }; + D36C43E7158F3F7E0048BA40 /* play-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "play-actif.png"; path = "Resources/play-actif.png"; sourceTree = ""; }; + D36C43E8158F3F7E0048BA40 /* play-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "play-over.png"; path = "Resources/play-over.png"; sourceTree = ""; }; + D36C43ED158F61EA0048BA40 /* pause-champ-numero-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "pause-champ-numero-actif.png"; path = "Resources/pause-champ-numero-actif.png"; sourceTree = ""; }; + D36C43EE158F61EA0048BA40 /* pause-champ-numero-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "pause-champ-numero-over.png"; path = "Resources/pause-champ-numero-over.png"; sourceTree = ""; }; + D36C43EF158F61EA0048BA40 /* play-champ-numero-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "play-champ-numero-actif.png"; path = "Resources/play-champ-numero-actif.png"; sourceTree = ""; }; + D36C43F0158F61EA0048BA40 /* play-champ-numero-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "play-champ-numero-over.png"; path = "Resources/play-champ-numero-over.png"; sourceTree = ""; }; D36FB2D31589EF7C0036F6F2 /* UIPauseButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIPauseButton.h; sourceTree = ""; }; D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIPauseButton.m; sourceTree = ""; }; D37295C9158B1E2D00D2C0C7 /* registration_inprogress.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = registration_inprogress.png; path = Resources/registration_inprogress.png; sourceTree = ""; }; @@ -1282,6 +1322,9 @@ D326483D1588950F00930C67 /* UICallBar.xib */, 2214EB7812F846B1002A5394 /* UICallButton.h */, 2214EB7912F846B1002A5394 /* UICallButton.m */, + D36C43C4158F2E5A0048BA40 /* UICallCell.h */, + D36C43C5158F2E5A0048BA40 /* UICallCell.m */, + D36C43C9158F2EE50048BA40 /* UICallCell.xib */, 22AA8AFF13D83F6300B30535 /* UICamSwitch.h */, 22AA8B0013D83F6300B30535 /* UICamSwitch.m */, D3A55FBA15877E5E003FD403 /* UIContactCell.h */, @@ -1476,8 +1519,6 @@ 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( - D37295DA158B3C9600D2C0C7 /* video-OFF-disabled.png */, - D37295C9158B1E2D00D2C0C7 /* registration_inprogress.png */, D3F83F2C1582223B00336684 /* 0-actif.png */, D3F83F2D1582223B00336684 /* 0-over.png */, D3F83F2E1582223B00336684 /* 1-actif.png */, @@ -1521,7 +1562,12 @@ D354981915876FE7000081D8 /* bouton-detail-contact-over.png */, D3F83F801582278D00336684 /* cancel-actif.png */, D3F83F811582278D00336684 /* cancel-over.png */, + D36C43CC158F2F370048BA40 /* champ-courbe-autres-numeros.png */, + D36C43CD158F2F370048BA40 /* champ-courbe-participant-conf.png */, D3ED3E441585FB8C006C0DE4 /* champ-saisie-numero.png */, + D36C43CE158F2F370048BA40 /* champ-titre-conference.png */, + D36C43CF158F2F370048BA40 /* clavier-secondaire-actif.png */, + D36C43D0158F2F370048BA40 /* clavier-secondaire-over.png */, D3F83F821582278D00336684 /* contact-actif-add-call.png */, D3F83F831582278D00336684 /* contact-over-add-call.png */, D38327EB1580FE3A00FA0D23 /* contacts-actif.png */, @@ -1565,7 +1611,13 @@ 2242E312125235120061DDCE /* oldphone-mono-30s.caf */, 2237D4081084D7A9001383EE /* oldphone-mono.wav */, D3F83EF8158205A100336684 /* pause-actif.png */, + D36C43ED158F61EA0048BA40 /* pause-champ-numero-actif.png */, + D36C43EE158F61EA0048BA40 /* pause-champ-numero-over.png */, D3F83EF9158205A100336684 /* pause-over.png */, + D36C43E7158F3F7E0048BA40 /* play-actif.png */, + D36C43EF158F61EA0048BA40 /* play-champ-numero-actif.png */, + D36C43F0158F61EA0048BA40 /* play-champ-numero-over.png */, + D36C43E8158F3F7E0048BA40 /* play-over.png */, D3432A5E158A4446001C6B0B /* quality-call-0.png */, D3432A5F158A4446001C6B0B /* quality-call-1.png */, D3432A60158A4446001C6B0B /* quality-call-2.png */, @@ -1574,6 +1626,7 @@ D3F83EFB158205A100336684 /* raccrocher-over.png */, D3F83F761582253100336684 /* refuser-actif.png */, D3F83F771582253100336684 /* refuser-over.png */, + D37295C9158B1E2D00D2C0C7 /* registration_inprogress.png */, 22F254801073D99800AC9B3F /* ringback.wav */, 70571E1913FABCB000CDD3C2 /* rootca.pem */, D38327EF1580FE3A00FA0D23 /* settings-actif.png */, @@ -1593,6 +1646,7 @@ D38327FF158100E400FA0D23 /* tchat-over.png */, D38327F21580FE3A00FA0D23 /* tchat-selectionne.png */, D3F83F00158205A100336684 /* video-OFF-actif.png */, + D37295DA158B3C9600D2C0C7 /* video-OFF-disabled.png */, D3F83F01158205A100336684 /* video-OFF-over.png */, D3F83F02158205A100336684 /* video-ON-actif.png */, D3F83F03158205A100336684 /* video-ON-over.png */, @@ -1836,6 +1890,18 @@ D3432A73158A45AF001C6B0B /* status_disconnected.png in Resources */, D37295CA158B1E2D00D2C0C7 /* registration_inprogress.png in Resources */, D37295DB158B3C9600D2C0C7 /* video-OFF-disabled.png in Resources */, + D36C43CA158F2EE50048BA40 /* UICallCell.xib in Resources */, + D36C43D1158F2F370048BA40 /* champ-courbe-autres-numeros.png in Resources */, + D36C43D3158F2F370048BA40 /* champ-courbe-participant-conf.png in Resources */, + D36C43D5158F2F370048BA40 /* champ-titre-conference.png in Resources */, + D36C43D7158F2F370048BA40 /* clavier-secondaire-actif.png in Resources */, + D36C43D9158F2F370048BA40 /* clavier-secondaire-over.png in Resources */, + D36C43E9158F3F7E0048BA40 /* play-actif.png in Resources */, + D36C43EB158F3F7E0048BA40 /* play-over.png in Resources */, + D36C43F1158F61EA0048BA40 /* pause-champ-numero-actif.png in Resources */, + D36C43F3158F61EA0048BA40 /* pause-champ-numero-over.png in Resources */, + D36C43F5158F61EA0048BA40 /* play-champ-numero-actif.png in Resources */, + D36C43F7158F61EA0048BA40 /* play-champ-numero-over.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1971,6 +2037,18 @@ D3432A74158A45AF001C6B0B /* status_disconnected.png in Resources */, D37295CB158B1E2D00D2C0C7 /* registration_inprogress.png in Resources */, D37295DC158B3C9600D2C0C7 /* video-OFF-disabled.png in Resources */, + D36C43CB158F2EE50048BA40 /* UICallCell.xib in Resources */, + D36C43D2158F2F370048BA40 /* champ-courbe-autres-numeros.png in Resources */, + D36C43D4158F2F370048BA40 /* champ-courbe-participant-conf.png in Resources */, + D36C43D6158F2F370048BA40 /* champ-titre-conference.png in Resources */, + D36C43D8158F2F370048BA40 /* clavier-secondaire-actif.png in Resources */, + D36C43DA158F2F370048BA40 /* clavier-secondaire-over.png in Resources */, + D36C43EA158F3F7E0048BA40 /* play-actif.png in Resources */, + D36C43EC158F3F7E0048BA40 /* play-over.png in Resources */, + D36C43F2158F61EA0048BA40 /* pause-champ-numero-actif.png in Resources */, + D36C43F4158F61EA0048BA40 /* pause-champ-numero-over.png in Resources */, + D36C43F6158F61EA0048BA40 /* play-champ-numero-actif.png in Resources */, + D36C43F8158F61EA0048BA40 /* play-champ-numero-over.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2018,6 +2096,7 @@ D36FB2D51589EF7C0036F6F2 /* UIPauseButton.m in Sources */, D31C9C98158A1CDF00756B45 /* UIHistoryCell.m in Sources */, D32409C3158B49A600C8C119 /* UILongTouchButton.m in Sources */, + D36C43C6158F2E5A0048BA40 /* UICallCell.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2062,6 +2141,7 @@ D36FB2D61589EF7C0036F6F2 /* UIPauseButton.m in Sources */, D31C9C99158A1CDF00756B45 /* UIHistoryCell.m in Sources */, D32409C4158B49A600C8C119 /* UILongTouchButton.m in Sources */, + D36C43C7158F2E5A0048BA40 /* UICallCell.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; };