From e03d37c6ede269ef93c81760792b735723f9f483 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 15 Jun 2012 16:54:46 +0200 Subject: [PATCH] Cleaning and continue working on new ui --- Classes/CallDelegate.h | 4 +- Classes/ContactsViewController.h | 7 +- Classes/ContactsViewController.m | 14 +- Classes/ContactsViewController.xib | 18 +- Classes/DialerViewController.h | 67 ++ Classes/DialerViewController.m | 117 +++ ...ontroller.xib => DialerViewController.xib} | 750 ++++++------- Classes/HistoryTableViewController.m | 10 +- Classes/HistoryViewController.h | 4 + Classes/HistoryViewController.m | 7 + Classes/HistoryViewController.xib | 18 +- Classes/InCallViewController.h | 9 +- Classes/InCallViewController.m | 44 +- Classes/InCallViewController.xib | 316 +----- Classes/LinphoneAppDelegate.m | 1 - Classes/LinphoneUI/LinphoneManager.h | 45 +- Classes/LinphoneUI/LinphoneManager.m | 61 +- Classes/LinphoneUI/UICallBar.m | 5 +- Classes/LinphoneUI/UICallBar.xib | 19 +- Classes/LinphoneUI/UIEraseButton.h | 3 +- Classes/LinphoneUI/UIEraseButton.m | 15 +- Classes/LinphoneUI/UILongTouchButton.h | 31 + Classes/LinphoneUI/UILongTouchButton.m | 76 ++ Classes/LinphoneUI/UIMainBar.xib | 131 +-- Classes/LinphoneUI/UIMicroButton.m | 4 +- Classes/LinphoneUI/UIPauseButton.m | 4 +- Classes/LinphoneUI/UIStateBar.h | 12 +- Classes/LinphoneUI/UIStateBar.m | 113 +- Classes/LinphoneUI/UIStateBar.xib | 109 +- Classes/LinphoneUI/UIToggleButton.m | 2 +- Classes/LinphoneUI/UIVideoButton.m | 4 +- Classes/LinphoneUI/VideoZoomHandler.h | 30 +- Classes/LinphoneUI/VideoZoomHandler.m | 38 +- Classes/MainScreenWithVideoPreview.h | 7 +- Classes/MainScreenWithVideoPreview.m | 9 +- Classes/PhoneMainView.h | 20 +- Classes/PhoneMainView.m | 324 +++++- Classes/PhoneMainView.xib | 31 +- Classes/PhoneViewController.h | 101 -- Classes/PhoneViewController.m | 462 -------- Classes/VideoViewController-ipad.xib | 993 ------------------ Classes/VideoViewController.h | 74 -- Classes/VideoViewController.m | 230 ---- Classes/VideoViewController.xib | 919 ---------------- Resources/add-contact-actif.png | Bin 4832 -> 5431 bytes Resources/add-contact-inactif.png | Bin 4662 -> 2002 bytes Resources/add-contact-over.png | Bin 4798 -> 4430 bytes Resources/appeler-actif.png | Bin 9538 -> 8932 bytes Resources/appeler-over.png | Bin 5217 -> 5005 bytes Resources/backspace-actif.png | Bin 4693 -> 4200 bytes Resources/backspace-over.png | Bin 4716 -> 4200 bytes Resources/contacts-actif.png | Bin 3684 -> 5070 bytes Resources/contacts-over.png | Bin 3879 -> 5160 bytes Resources/contacts-selectionne.png | Bin 3538 -> 3291 bytes Resources/dialer-actif.png | Bin 13951 -> 20158 bytes Resources/dialer-over.png | Bin 12044 -> 16594 bytes Resources/history-actif.png | Bin 3451 -> 5113 bytes Resources/history-over.png | Bin 3590 -> 5186 bytes Resources/history-selectionne.png | Bin 3336 -> 5108 bytes Resources/settings-actif.png | Bin 4430 -> 5860 bytes Resources/settings-over.png | Bin 4702 -> 6003 bytes Resources/settings-selectionne.png | Bin 4298 -> 5832 bytes Resources/tchat-actif.png | Bin 2485 -> 4313 bytes Resources/tchat-over.png | Bin 2623 -> 4430 bytes Resources/tchat-selectionne.png | Bin 2426 -> 4355 bytes Resources/video-OFF-disabled.png | Bin 0 -> 3595 bytes linphone.xcodeproj/project.pbxproj | 74 +- 67 files changed, 1452 insertions(+), 3880 deletions(-) create mode 100644 Classes/DialerViewController.h create mode 100644 Classes/DialerViewController.m rename Classes/{PhoneViewController.xib => DialerViewController.xib} (86%) create mode 100644 Classes/LinphoneUI/UILongTouchButton.h create mode 100644 Classes/LinphoneUI/UILongTouchButton.m delete mode 100644 Classes/PhoneViewController.h delete mode 100644 Classes/PhoneViewController.m delete mode 100644 Classes/VideoViewController-ipad.xib delete mode 100644 Classes/VideoViewController.h delete mode 100644 Classes/VideoViewController.m delete mode 100644 Classes/VideoViewController.xib create mode 100644 Resources/video-OFF-disabled.png diff --git a/Classes/CallDelegate.h b/Classes/CallDelegate.h index 516c2074d..4541e13b2 100644 --- a/Classes/CallDelegate.h +++ b/Classes/CallDelegate.h @@ -29,14 +29,14 @@ enum CallDelegateType { CD_TRANSFER_CALL }; -@protocol UIActionSheetCustomDelegate +@protocol CallActionSheetDelegate - (void)actionSheet:(UIActionSheet *)actionSheet ofType:(enum CallDelegateType) type clickedButtonAtIndex:(NSInteger)buttonIndex withUserDatas:(void*) datas; @end @interface CallDelegate : NSObject { enum CallDelegateType eventType; LinphoneCall* call; - id delegate; + id delegate; NSTimer* timeout; } diff --git a/Classes/ContactsViewController.h b/Classes/ContactsViewController.h index f1244803b..2f6de1125 100644 --- a/Classes/ContactsViewController.h +++ b/Classes/ContactsViewController.h @@ -19,13 +19,18 @@ #import +#import "ContactTableViewController.h" + @interface ContactsViewController : UIViewController { - UITableViewController *tableController; + ContactTableViewController *tableController; + UITableView *tableView; + UIButton *allButton; UIButton *linphoneButton; } @property (nonatomic, retain) IBOutlet UITableViewController* tableController; +@property (nonatomic, retain) IBOutlet UITableView *tableView; @property (nonatomic, retain) IBOutlet UIButton* allButton; @property (nonatomic, retain) IBOutlet UIButton* linphoneButton; diff --git a/Classes/ContactsViewController.m b/Classes/ContactsViewController.m index 52ee33ce9..2512f2e1c 100644 --- a/Classes/ContactsViewController.m +++ b/Classes/ContactsViewController.m @@ -24,6 +24,8 @@ @implementation ContactsViewController @synthesize tableController; +@synthesize tableView; + @synthesize allButton; @synthesize linphoneButton; @@ -33,8 +35,12 @@ typedef enum _HistoryView { History_MAX } HistoryView; +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + [self.tableView reloadData]; +} -- (void) changeView: (HistoryView) view { +- (void)changeView: (HistoryView) view { if(view == History_All) { allButton.selected = TRUE; } else { @@ -48,16 +54,16 @@ typedef enum _HistoryView { } } -- (void) viewDidLoad { +- (void)viewDidLoad { [super viewDidLoad]; [self changeView: History_All]; } --(IBAction) onAllClick: (id) event { +- (IBAction)onAllClick: (id) event { [self changeView: History_All]; } --(IBAction) onLinphoneClick: (id) event { +- (IBAction)onLinphoneClick: (id) event { [self changeView: History_Linphone]; } diff --git a/Classes/ContactsViewController.xib b/Classes/ContactsViewController.xib index 6b12285d4..3739eab2e 100644 --- a/Classes/ContactsViewController.xib +++ b/Classes/ContactsViewController.xib @@ -156,7 +156,6 @@ {{0, 58}, {320, 402}} - _NS:10 3 @@ -167,7 +166,7 @@ NO IBCocoaTouchFramework 0.0 - 15 + 10 0.0 0.0 YES @@ -238,6 +237,14 @@ 83 + + + tableView + + + + 84 + onAllClick: @@ -374,7 +381,7 @@ - 83 + 84 @@ -407,6 +414,7 @@ UIButton UIButton UITableViewController + UITableView @@ -421,6 +429,10 @@ tableController UITableViewController + + tableView + UITableView + IBProjectSource diff --git a/Classes/DialerViewController.h b/Classes/DialerViewController.h new file mode 100644 index 000000000..80e2c7a93 --- /dev/null +++ b/Classes/DialerViewController.h @@ -0,0 +1,67 @@ +/* DialerViewController.h + * + * Copyright (C) 2009 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +#import "UILinphone.h" + +@interface DialerViewController : UIViewController { + +@private + //Buttons + UITextField* addressField; + UIEraseButton* eraseButton; + UICallButton* callButton; + + //Key pad + UIDigitButton* oneButton; + UIDigitButton* twoButton; + UIDigitButton* threeButton; + UIDigitButton* fourButton; + UIDigitButton* fiveButton; + UIDigitButton* sixButton; + UIDigitButton* sevenButton; + UIDigitButton* eightButton; + UIDigitButton* nineButton; + UIDigitButton* starButton; + UIDigitButton* zeroButton; + UIDigitButton* hashButton; +} + +- (void)setAddress:(NSString*) address; + +@property (nonatomic, retain) IBOutlet UITextField* addressField; +@property (nonatomic, retain) IBOutlet UIButton* callButton; +@property (nonatomic, retain) IBOutlet UIEraseButton* eraseButton; +@property (nonatomic, retain) IBOutlet UIButton* oneButton; +@property (nonatomic, retain) IBOutlet UIButton* twoButton; +@property (nonatomic, retain) IBOutlet UIButton* threeButton; +@property (nonatomic, retain) IBOutlet UIButton* fourButton; +@property (nonatomic, retain) IBOutlet UIButton* fiveButton; +@property (nonatomic, retain) IBOutlet UIButton* sixButton; +@property (nonatomic, retain) IBOutlet UIButton* sevenButton; +@property (nonatomic, retain) IBOutlet UIButton* eightButton; +@property (nonatomic, retain) IBOutlet UIButton* nineButton; +@property (nonatomic, retain) IBOutlet UIButton* starButton; +@property (nonatomic, retain) IBOutlet UIButton* zeroButton; +@property (nonatomic, retain) IBOutlet UIButton* hashButton; + +- (IBAction)onAddContact: (id) event; + +@end diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m new file mode 100644 index 000000000..647defb5c --- /dev/null +++ b/Classes/DialerViewController.m @@ -0,0 +1,117 @@ +/* DialerViewController.h + * + * Copyright (C) 2009 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import +#import + +#import "DialerViewController.h" +#import "linphoneAppDelegate.h" +#import "IncallViewController.h" +#import "LinphoneManager.h" +#import "PhoneMainView.h" + +#include "linphonecore.h" +#include "private.h" + +@implementation DialerViewController + +@synthesize addressField; +@synthesize callButton; +@synthesize eraseButton; + +@synthesize oneButton; +@synthesize twoButton; +@synthesize threeButton; +@synthesize fourButton; +@synthesize fiveButton; +@synthesize sixButton; +@synthesize sevenButton; +@synthesize eightButton; +@synthesize nineButton; +@synthesize starButton; +@synthesize zeroButton; +@synthesize hashButton; + +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + //TODO + /*if ([[NSUserDefaults standardUserDefaults] boolForKey:@"enable_first_login_view_preference"] == true) { + myFirstLoginViewController = [[FirstLoginViewController alloc] initWithNibName:@"FirstLoginViewController" + bundle:[NSBundle mainBundle]]; + [self presentModalViewController:myFirstLoginViewController animated:true]; + }*/ + // [[LinphoneManager instance] setRegistrationDelegate:self]; + + //TODO + //[mMainScreenWithVideoPreview showPreview:YES]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + + [zeroButton initWithNumber:'0' addressField:addressField dtmf:false]; + [oneButton initWithNumber:'1' addressField:addressField dtmf:false]; + [twoButton initWithNumber:'2' addressField:addressField dtmf:false]; + [threeButton initWithNumber:'3' addressField:addressField dtmf:false]; + [fourButton initWithNumber:'4' addressField:addressField dtmf:false]; + [fiveButton initWithNumber:'5' addressField:addressField dtmf:false]; + [sixButton initWithNumber:'6' addressField:addressField dtmf:false]; + [sevenButton initWithNumber:'7' addressField:addressField dtmf:false]; + [eightButton initWithNumber:'8' addressField:addressField dtmf:false]; + [nineButton initWithNumber:'9' addressField:addressField dtmf:false]; + [starButton initWithNumber:'*' addressField:addressField dtmf:false]; + [hashButton initWithNumber:'#' addressField:addressField dtmf:false]; + [callButton initWithAddress:addressField]; + [eraseButton initWithAddressField:addressField]; +} + +- (void)setAddress:(NSString*) address { + [addressField setText:address]; +} + +- (void)dealloc { + [addressField release]; + [callButton release]; + [oneButton release]; + [twoButton release]; + [threeButton release]; + [fourButton release]; + [fiveButton release]; + [sixButton release]; + [sevenButton release]; + [eightButton release]; + [nineButton release]; + [starButton release]; + [zeroButton release]; + [hashButton release]; + [super dealloc]; +} + +- (BOOL)textFieldShouldReturn:(UITextField *)textField { + if (textField == addressField) { + [addressField resignFirstResponder]; + } + return YES; +} + +- (IBAction)onAddContact: (id) event { + +} + +@end diff --git a/Classes/PhoneViewController.xib b/Classes/DialerViewController.xib similarity index 86% rename from Classes/PhoneViewController.xib rename to Classes/DialerViewController.xib index 87104bbe8..9eebe377a 100644 --- a/Classes/PhoneViewController.xib +++ b/Classes/DialerViewController.xib @@ -41,132 +41,86 @@ 292 YES - + - 292 + 288 YES - - + + 292 - {105, 72} - + {320, 80} + - + _NS:9 - NO + NO + IBCocoaTouchFramework + + NSImage + champ-saisie-numero.png + + + + + 292 + {320, 60} + + + + + 3 + MSAwAA + + NO + NO IBCocoaTouchFramework - 0 0 - + + sip: + 3 MQA - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + YES + 15 + + 1 + 3 + IBCocoaTouchFramework - - 3 - MC41AA + 1 + + Helvetica + Helvetica + 0 + 36 - - NSImage - add-contact-over.png - - - NSImage - add-contact-inactif.png - - - NSImage - add-contact-actif.png - - - 2 - 15 - - - Helvetica-Bold - 15 + + Helvetica + 36 16 - - - 292 - {{105, 0}, {110, 72}} - - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - appeler-over.png - - - NSImage - appeler-actif.png - - - - - - - 292 - {{215, 0}, {105, 72}} - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - backspace-over.png - - - NSImage - backspace-actif.png - - - - - {{0, 293}, {320, 72}} + {320, 80} - + _NS:9 3 - MQA + MSAwAA 2 + YES IBCocoaTouchFramework - 292 + 288 YES @@ -208,7 +162,10 @@ 1 MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - + + 3 + MC41AA + NSImage 1-over.png @@ -223,7 +180,11 @@ 2 15 - + + Helvetica-Bold + 15 + 16 + @@ -252,7 +213,7 @@ 2-actif.png - + @@ -277,7 +238,7 @@ 3-actif.png - + @@ -306,7 +267,7 @@ 4-actif.png - + @@ -335,7 +296,7 @@ 5-actif.png - + @@ -364,7 +325,7 @@ 7-actif.png - + @@ -393,7 +354,7 @@ 6-actif.png - + @@ -422,7 +383,7 @@ 8-actif.png - + @@ -451,7 +412,7 @@ 9-actif.png - + @@ -480,7 +441,7 @@ etoile-actif.png - + @@ -509,7 +470,7 @@ 0-actif.png - + @@ -538,7 +499,7 @@ diese-actif.png - + {{0, 58}, {320, 260}} @@ -553,76 +514,111 @@ IBCocoaTouchFramework - + - 292 + 288 YES - - + + 292 - {320, 80} - + {106, 69} + - + _NS:9 - NO - IBCocoaTouchFramework - - NSImage - champ-saisie-numero.png - - - - - 292 - {320, 60} - - - - - 3 - MSAwAA - NO - NO IBCocoaTouchFramework + 0 0 - - sip: - - YES - 15 - - 1 - 3 - IBCocoaTouchFramework + NO + NO + + + NSImage + add-contact-over.png - 1 - - Helvetica - Helvetica - 0 - 36 + + NSImage + add-contact-inactif.png - - Helvetica - 36 - 16 + + NSImage + add-contact-actif.png + + 2 + 15 + + + + + + 292 + {{106, 0}, {108, 69}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + NSImage + appeler-over.png + + + NSImage + appeler-actif.png + + + + + + + 292 + {{214, 0}, {106, 69}} + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + backspace-over.png + + + NSImage + backspace-actif.png + + + - {320, 80} + {{0, 305}, {320, 69}} - + _NS:9 3 MSAwAA - YES IBCocoaTouchFramework @@ -651,131 +647,123 @@ - address - - - - 12 - - - - hash - - - - 46 - - - - zero - - - - 54 - - - - star - - - - 51 - - - - nine - - - - 47 - - - - eight - - - - 43 - - - - six - - - - 50 - - - - seven - - - - 49 - - - - five - - - - 44 - - - - four - - - - 45 - - - - three - - - - 52 - - - - two - - - - 53 - - - - one + oneButton - 48 + 191 - dialerView + twoButton - + - 181 + 192 - erase + threeButton + + + + 193 + + + + fourButton + + + + 194 + + + + fiveButton + + + + 195 + + + + sixButton + + + + 196 + + + + sevenButton + + + + 197 + + + + zeroButton + + + + 198 + + + + starButton + + + + 199 + + + + nineButton + + + + 200 + + + + hashButton + + + + 201 + + + + eraseButton - 186 + 202 - callLarge + callButton - 189 + 203 + + + + eightButton + + + + 204 + + + + addressField + + + + 205 @@ -783,7 +771,7 @@ - 19 + 190 @@ -957,9 +945,9 @@ YES - - + + toolBar @@ -970,18 +958,18 @@ addContact - - 184 - - - call - 185 backspace + + 184 + + + call + @@ -1045,7 +1033,7 @@ YES - PhoneViewController + DialerViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1059,7 +1047,7 @@ UICallButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UIEraseButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1113,53 +1101,13 @@ - 189 + 205 YES - MainScreenWithVideoPreview - UIViewController - - YES - - YES - phoneMainView - window - - - YES - PhoneViewController - UIWindow - - - - YES - - YES - phoneMainView - window - - - YES - - phoneMainView - PhoneViewController - - - window - UIWindow - - - - - IBProjectSource - ./Classes/MainScreenWithVideoPreview.h - - - - PhoneViewController + DialerViewController UIViewController onAddContact: @@ -1176,52 +1124,36 @@ YES YES - address - backToCallView - callLarge - callShort - dialerView - eight - erase - five - four - hash - mMainScreenWithVideoPreview - myTabBarController - nine - one - seven - six - star - status - statusViewHolder - switchCamera - three - two - zero + addressField + callButton + eightButton + eraseButton + fiveButton + fourButton + hashButton + nineButton + oneButton + sevenButton + sixButton + starButton + threeButton + twoButton + zeroButton YES UITextField UIButton UIButton - UIButton - UIView - UIButton UIEraseButton UIButton UIButton UIButton - MainScreenWithVideoPreview - UITabBarController UIButton UIButton UIButton UIButton UIButton - UILabel - UIView - UIButton UIButton UIButton UIButton @@ -1231,129 +1163,89 @@ YES YES - address - backToCallView - callLarge - callShort - dialerView - eight - erase - five - four - hash - mMainScreenWithVideoPreview - myTabBarController - nine - one - seven - six - star - status - statusViewHolder - switchCamera - three - two - zero + addressField + callButton + eightButton + eraseButton + fiveButton + fourButton + hashButton + nineButton + oneButton + sevenButton + sixButton + starButton + threeButton + twoButton + zeroButton YES - address + addressField UITextField - backToCallView + callButton UIButton - callLarge + eightButton UIButton - callShort - UIButton - - - dialerView - UIView - - - eight - UIButton - - - erase + eraseButton UIEraseButton - five + fiveButton UIButton - four + fourButton UIButton - hash + hashButton UIButton - mMainScreenWithVideoPreview - MainScreenWithVideoPreview - - - myTabBarController - UITabBarController - - - nine + nineButton UIButton - one + oneButton UIButton - seven + sevenButton UIButton - six + sixButton UIButton - star + starButton UIButton - status - UILabel - - - statusViewHolder - UIView - - - switchCamera + threeButton UIButton - three + twoButton UIButton - two - UIButton - - - zero + zeroButton UIButton IBProjectSource - ./Classes/PhoneViewController.h + ./Classes/DialerViewController.h @@ -1374,12 +1266,20 @@ UIEraseButton - UIButton + UILongTouchButton IBProjectSource ./Classes/UIEraseButton.h + + UILongTouchButton + UIButton + + IBProjectSource + ./Classes/UILongTouchButton.h + + 0 @@ -1456,13 +1356,13 @@ {220, 113} {210, 113} {210, 113} - {210, 143} - {210, 143} - {210, 143} - {220, 143} - {220, 143} - {210, 143} - {210, 143} + {213, 138} + {213, 138} + {213, 138} + {214, 138} + {214, 138} + {213, 138} + {213, 138} {640, 135} {210, 113} {210, 113} diff --git a/Classes/HistoryTableViewController.m b/Classes/HistoryTableViewController.m index ae8fc4aae..052af435d 100644 --- a/Classes/HistoryTableViewController.m +++ b/Classes/HistoryTableViewController.m @@ -110,14 +110,8 @@ // Go to dialer view NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys: - [[NSDictionary alloc] initWithObjectsAndKeys: - [[NSArray alloc] initWithObjects: dispName, nil] - , @"setText:", nil] - , @"mDisplayName", - [[NSDictionary alloc] initWithObjectsAndKeys: - [[NSArray alloc] initWithObjects: phoneNumber, nil] - , @"setText:", nil] - , @"address", + [[NSArray alloc] initWithObjects: phoneNumber, nil] + , @"setAddress:", nil]; [[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict]; diff --git a/Classes/HistoryViewController.h b/Classes/HistoryViewController.h index bfd90386e..7b7742e1d 100644 --- a/Classes/HistoryViewController.h +++ b/Classes/HistoryViewController.h @@ -23,11 +23,15 @@ @interface HistoryViewController : UIViewController { HistoryTableViewController *tableController; + UITableView *tableView; + UIButton *allButton; UIButton *missedButton; } @property (nonatomic, retain) IBOutlet HistoryTableViewController* tableController; +@property (nonatomic, retain) IBOutlet UITableView *tableView; + @property (nonatomic, retain) IBOutlet UIButton* allButton; @property (nonatomic, retain) IBOutlet UIButton* missedButton; diff --git a/Classes/HistoryViewController.m b/Classes/HistoryViewController.m index 502827320..ea27f9250 100644 --- a/Classes/HistoryViewController.m +++ b/Classes/HistoryViewController.m @@ -21,7 +21,9 @@ @implementation HistoryViewController +@synthesize tableView; @synthesize tableController; + @synthesize allButton; @synthesize missedButton; @@ -31,6 +33,11 @@ typedef enum _HistoryView { History_MAX } HistoryView; +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + [self.tableView reloadData]; +} + - (void)changeView: (HistoryView) view { if(view == History_All) { allButton.selected = TRUE; diff --git a/Classes/HistoryViewController.xib b/Classes/HistoryViewController.xib index 9fb67afc8..dc4740a57 100644 --- a/Classes/HistoryViewController.xib +++ b/Classes/HistoryViewController.xib @@ -156,7 +156,6 @@ {{0, 58}, {320, 402}} - _NS:9 3 @@ -165,7 +164,7 @@ YES IBCocoaTouchFramework 0.0 - 15 + 10 0.0 0.0 YES @@ -234,6 +233,14 @@ 28 + + + tableView + + + + 31 + onAllClick: @@ -370,7 +377,7 @@ - 30 + 31 @@ -403,6 +410,7 @@ UIButton UIButton HistoryTableViewController + UITableView @@ -417,6 +425,10 @@ tableController HistoryTableViewController + + tableView + UITableView + IBProjectSource diff --git a/Classes/InCallViewController.h b/Classes/InCallViewController.h index ccb5f3779..0f26a1cb2 100644 --- a/Classes/InCallViewController.h +++ b/Classes/InCallViewController.h @@ -20,17 +20,17 @@ #import #import -#import "linphonecore.h" -#import "PhoneViewController.h" #import "ConferenceCallDetailView.h" #import "UIVideoButton.h" #import "VideoZoomHandler.h" +#import "UILinphone.h" +#import "CallDelegate.h" -#include "UILinphone.h" +#include "linphonecore.h" @class VideoViewController; -@interface InCallViewController : UIViewController { +@interface InCallViewController : UIViewController { UIView* controlSubView, *hangUpView; @@ -66,7 +66,6 @@ #ifdef TEST_VIDEO_VIEW_CHANGE UIView* testVideoView; #endif - UIImageView* videoCallQuality; UICamSwitch* videoCameraSwitch; UIActivityIndicatorView* videoUpdateIndicator; UIActivityIndicatorView* videoWaitingForFirstImage; diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index 943341133..79f1796ef 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -18,7 +18,6 @@ */ #import "IncallViewController.h" -#import "VideoViewController.h" #import "LinphoneManager.h" #import #import @@ -186,7 +185,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { // show controls [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.3]; - [controlSubView setAlpha:1.0]; + [[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 @@ -205,6 +204,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { [hangUpView setAlpha:0.0]; [videoCameraSwitch setAlpha:0.0]; [UIView commitAnimations]; + [[LinphoneManager instance] showTabBar: false]; hideControlsTimer = nil; } @@ -262,7 +262,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; [videoGroup setAlpha:1.0]; - [controlSubView setAlpha:0.0]; + [hangUpView setAlpha:0.0]; [callTableView setAlpha:0.0]; [UIView commitAnimations]; @@ -273,7 +273,8 @@ void addAnimationFadeTransition(UIView* view, float duration) { linphone_core_set_native_video_window_id([LinphoneManager getLc],(unsigned long)videoView); linphone_core_set_native_preview_window_id([LinphoneManager getLc],(unsigned long)videoPreview); - [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; + [[LinphoneManager instance] fullScreen: true]; + [[LinphoneManager instance] showTabBar: false]; // This is a bit hacky: take into account toolbar removal (only once). // It's probably possible to do this from the Xib file (?) @@ -295,7 +296,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; [videoGroup setAlpha:0.0]; - [controlSubView setAlpha:1.0]; + [[LinphoneManager instance] showTabBar: true]; [hangUpView setAlpha:1.0]; [callTableView setAlpha:1.0]; [videoCameraSwitch setAlpha:0.0]; @@ -317,7 +318,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { dialer.imageView.transform = CGAffineTransformIdentity; videoCallQuality.transform = CGAffineTransformIdentity; - [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone]; + [[LinphoneManager instance] fullScreen:false]; } /* Update in call view buttons (visibility, state, ...) and call duration text. @@ -327,11 +328,9 @@ void addAnimationFadeTransition(UIView* view, float duration) { // check LinphoneCore is initialized LinphoneCore* lc = nil; - @try { + if([LinphoneManager isLcReady]) lc = [LinphoneManager getLc]; - } @catch (NSException* exc) { - return; - } + // 1 call: show pause button, otherwise show merge btn // [LinphoneManager set:mergeCalls hidden:!pause.hidden withName:"MERGE button" andReason:"call count"]; // reload table (glow update + call duration) @@ -395,17 +394,11 @@ void addAnimationFadeTransition(UIView* view, float duration) { if ([LinphoneManager runningOnIpad]) { ms_message("Running on iPad"); - mVideoViewController = [[VideoViewController alloc] initWithNibName:@"VideoViewController-ipad" - bundle:[NSBundle mainBundle]]; conferenceDetail = [[ConferenceCallDetailView alloc] initWithNibName:@"ConferenceCallDetailView-ipad" bundle:[NSBundle mainBundle]]; - } else { - mVideoViewController = [[VideoViewController alloc] initWithNibName:@"VideoViewController" - bundle:[NSBundle mainBundle]]; conferenceDetail = [[ConferenceCallDetailView alloc] initWithNibName:@"ConferenceCallDetailView" bundle:[NSBundle mainBundle]]; - } UITapGestureRecognizer* singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showControls:)]; @@ -630,12 +623,12 @@ void addAnimationFadeTransition(UIView* view, float duration) { if (modalVC != nil) { mVideoIsPending=FALSE; // clear previous native window ids - if (modalVC == mVideoViewController) { + /*if (modalVC == mVideoViewController) { mVideoShown=FALSE; linphone_core_set_native_video_window_id([LinphoneManager getLc],0); linphone_core_set_native_preview_window_id([LinphoneManager getLc],0); - } - [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone]; + }*/ + [[LinphoneManager instance] fullScreen:false]; [self dismissModalViewControllerAnimated:FALSE];//just in case } @@ -777,19 +770,6 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { if (call->videostream) { linphone_call_set_next_video_frame_decoded_callback(call, hideSpinner, self); } - return; - - if (mIncallViewIsReady) { - [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; - mVideoShown=TRUE; - if (self.modalViewController != mVideoViewController) - [self presentModalViewController:mVideoViewController animated:true]; - else - ms_message("Do not present again videoViewController"); - } else { - //postpone presentation - mVideoIsPending=TRUE; - } } -(void) dismissActionSheet: (id)o { diff --git a/Classes/InCallViewController.xib b/Classes/InCallViewController.xib index f8880c72f..1d2335581 100644 --- a/Classes/InCallViewController.xib +++ b/Classes/InCallViewController.xib @@ -12,7 +12,6 @@ YES - IBUIImageView IBUIButton IBUITableView IBUIView @@ -67,28 +66,16 @@ {{240, 354}, {80, 106}} - IBCocoaTouchFramework - - - 292 - {{4, 428}, {28, 28}} - - - - _NS:567 - NO - IBCocoaTouchFramework - 292 {{141, 212}, {37, 37}} - + _NS:1030 NO IBCocoaTouchFramework @@ -100,7 +87,7 @@ {320, 460} - + _NS:196 2 @@ -514,30 +501,6 @@ 141 - - - videoPreview - - - - 130 - - - - videoCallQuality - - - - 138 - - - - videoView - - - - 133 - callTableView @@ -562,14 +525,6 @@ 129 - - - videoWaitingForFirstImage - - - - 145 - star @@ -682,6 +637,30 @@ 45 + + + videoView + + + + 133 + + + + videoWaitingForFirstImage + + + + 145 + + + + videoPreview + + + + 130 + doAction: @@ -754,7 +733,6 @@ YES - @@ -766,32 +744,6 @@ - - 144 - - - - - 137 - - - videocallquality - - - 127 - - - preview - - - 132 - - - YES - - - display - 27 @@ -892,6 +844,23 @@ 5 + + 132 + + + display + + + 144 + + + + + 127 + + + preview + @@ -906,7 +875,6 @@ 126.IBPluginDependency 127.IBPluginDependency 132.IBPluginDependency - 137.IBPluginDependency 140.CustomClassName 140.IBPluginDependency 144.IBPluginDependency @@ -949,7 +917,6 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin UICamSwitch com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1295,203 +1262,6 @@ ./Classes/UIDigitButton.h - - UIHangUpButton - UIButton - - IBProjectSource - ./Classes/UIHangUpButton.h - - - - UIMicroButton - UIToggleButton - - IBProjectSource - ./Classes/UIMicroButton.h - - - - UIToggleButton - UIButton - - IBProjectSource - ./Classes/UIToggleButton.h - - - - VideoViewController - UIViewController - - YES - - YES - mCallQuality - mCallQualityLandLeft - mCallQualityLandRight - mCamSwitch - mCamSwitchLandLeft - mCamSwitchLandRight - mDisplay - mDisplayLandLeft - mDisplayLandRight - mHangUp - mHangUpLandLeft - mHangUpLandRight - mLandscapeLeft - mLandscapeRight - mMute - mMuteLandLeft - mMuteLandRight - mPortrait - mPreview - mPreviewLandLeft - mPreviewLandRight - - - YES - UIImageView - UIImageView - UIImageView - UICamSwitch - UICamSwitch - UICamSwitch - UIView - UIView - UIView - UIHangUpButton - UIHangUpButton - UIHangUpButton - UIView - UIView - UIMicroButton - UIMicroButton - UIMicroButton - UIView - UIView - UIView - UIView - - - - YES - - YES - mCallQuality - mCallQualityLandLeft - mCallQualityLandRight - mCamSwitch - mCamSwitchLandLeft - mCamSwitchLandRight - mDisplay - mDisplayLandLeft - mDisplayLandRight - mHangUp - mHangUpLandLeft - mHangUpLandRight - mLandscapeLeft - mLandscapeRight - mMute - mMuteLandLeft - mMuteLandRight - mPortrait - mPreview - mPreviewLandLeft - mPreviewLandRight - - - YES - - mCallQuality - UIImageView - - - mCallQualityLandLeft - UIImageView - - - mCallQualityLandRight - UIImageView - - - mCamSwitch - UICamSwitch - - - mCamSwitchLandLeft - UICamSwitch - - - mCamSwitchLandRight - UICamSwitch - - - mDisplay - UIView - - - mDisplayLandLeft - UIView - - - mDisplayLandRight - UIView - - - mHangUp - UIHangUpButton - - - mHangUpLandLeft - UIHangUpButton - - - mHangUpLandRight - UIHangUpButton - - - mLandscapeLeft - UIView - - - mLandscapeRight - UIView - - - mMute - UIMicroButton - - - mMuteLandLeft - UIMicroButton - - - mMuteLandRight - UIMicroButton - - - mPortrait - UIView - - - mPreview - UIView - - - mPreviewLandLeft - UIView - - - mPreviewLandRight - UIView - - - - - IBProjectSource - ./Classes/VideoViewController.h - - 0 diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 6a95c069e..1a80a09a0 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -18,7 +18,6 @@ */ #import "PhoneMainView.h" -#import "PhoneViewController.h" #import "linphoneAppDelegate.h" #import "AddressBook/ABPerson.h" diff --git a/Classes/LinphoneUI/LinphoneManager.h b/Classes/LinphoneUI/LinphoneManager.h index 36bb3e922..7786e9e88 100644 --- a/Classes/LinphoneUI/LinphoneManager.h +++ b/Classes/LinphoneUI/LinphoneManager.h @@ -86,32 +86,35 @@ typedef struct _LinphoneCallAppData { @public CallContext currentCallContextBeforeGoingBackground; } -+(LinphoneManager*) instance; -+(LinphoneCore*) getLc; -+(BOOL) runningOnIpad; -+(void) set:(UIView*)view hidden: (BOOL) hidden withName:(const char*)name andReason:(const char*) reason; -+(void) set:(UIButton*)view enabled: (BOOL) enabled withName:(const char*)name andReason:(const char*) reason; -+(void) logUIElementPressed:(const char*) name; ++ (LinphoneManager*) instance; ++ (LinphoneCore*) getLc; ++ (BOOL)isLcReady; ++ (BOOL)runningOnIpad; ++ (void)set:(UIView*)view hidden: (BOOL) hidden withName:(const char*)name andReason:(const char*) reason; ++ (void)set:(UIButton*)view enabled: (BOOL) enabled withName:(const char*)name andReason:(const char*) reason; ++ (void)logUIElementPressed:(const char*) name; + (void)abstractCall:(id) object dict:(NSDictionary *) dict; --(void) registerLogView:(id) view; +- (void)registerLogView:(id) view; --(void) startLibLinphone; --(BOOL) isNotIphone3G; --(void) destroyLibLinphone; +- (void)startLibLinphone; +- (BOOL)isNotIphone3G; +- (void)destroyLibLinphone; --(BOOL) enterBackgroundMode; --(void) becomeActive; --(void) kickOffNetworkConnection; --(NSString*) getDisplayNameFromAddressBook:(NSString*) number andUpdateCallLog:(LinphoneCallLog*)log; --(UIImage*) getImageFromAddressBook:(NSString*) number; +- (BOOL)enterBackgroundMode; +- (void)becomeActive; +- (void)kickOffNetworkConnection; +- (NSString*)getDisplayNameFromAddressBook:(NSString*) number andUpdateCallLog:(LinphoneCallLog*)log; +- (UIImage*)getImageFromAddressBook:(NSString*) number; --(BOOL) reconfigureLinphoneIfNeeded:(NSDictionary *)oldSettings; --(void) setupNetworkReachabilityCallback; --(void) refreshRegisters; +- (BOOL)reconfigureLinphoneIfNeeded:(NSDictionary *)oldSettings; +- (void)setupNetworkReachabilityCallback; +- (void)refreshRegisters; --(void) changeView:(PhoneView) view; --(void) changeView:(PhoneView) view dict:(NSDictionary *)dict; --(PhoneView) currentView; +- (void)changeView:(PhoneView) view; +- (void)changeView:(PhoneView) view dict:(NSDictionary *)dict; +- (void)showTabBar:(BOOL) show; +- (void)fullScreen:(BOOL) enabled; +- (PhoneView) currentView; @property Connectivity connectivity; @property (readonly) const char* frontCamId; diff --git a/Classes/LinphoneUI/LinphoneManager.m b/Classes/LinphoneUI/LinphoneManager.m index 31655c117..4a520d1a0 100644 --- a/Classes/LinphoneUI/LinphoneManager.m +++ b/Classes/LinphoneUI/LinphoneManager.m @@ -80,6 +80,20 @@ extern void libmsbcg729_init(); return theLinphoneManager; } +- (void) showTabBar:(BOOL) show { + NSMutableDictionary* mdict = [NSMutableDictionary dictionaryWithObject: [NSNumber numberWithBool:show] forKey:@"tabBar"]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:mdict]; +} + +- (void)fullScreen:(BOOL) enabled { + if(enabled) + [[UIApplication sharedApplication] setStatusBarHidden:enabled withAnimation:UIStatusBarAnimationSlide]; + else + [[UIApplication sharedApplication] setStatusBarHidden:enabled withAnimation:UIStatusBarAnimationNone]; + NSMutableDictionary* mdict = [NSMutableDictionary dictionaryWithObject: [NSNumber numberWithBool:enabled] forKey:@"fullscreen"]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:mdict]; +} + - (void)changeView:(PhoneView) view { [self changeView:view dict:nil]; } @@ -195,56 +209,19 @@ extern void libmsbcg729_init(); [[NSString stringWithFormat:@"%c", message] autorelease], @"message", nil]; [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneCallUpdate" object:self userInfo:dict]; - - const char* lUserNameChars=linphone_address_get_username(linphone_call_get_remote_address(call)); - NSString* lUserName = lUserNameChars?[[[NSString alloc] initWithUTF8String:lUserNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); - switch (new_state) { - case LinphoneCallError: { - /* - NSString* lTitle= state->message!=nil?[NSString stringWithCString:state->message length:strlen(state->message)]: @"Error"; - NSString* lMessage=lTitle; - */ - NSString* lMessage; - NSString* lTitle; - LinphoneProxyConfig* proxyCfg; - //get default proxy - linphone_core_get_default_proxy([LinphoneManager getLc],&proxyCfg); - if (proxyCfg == nil) { - lMessage=NSLocalizedString(@"Please make sure your device is connected to the internet and double check your SIP account configuration in the settings.",nil ); - } else { - lMessage=[NSString stringWithFormat : NSLocalizedString(@"Cannot call %@",nil),lUserName]; - } - - if (linphone_call_get_reason(call) == LinphoneReasonNotFound) { - lMessage=[NSString stringWithFormat : NSLocalizedString(@"'%@' not registered to Service",nil), lUserName]; - } else { - if (message!=nil){ - lMessage=[NSString stringWithFormat : NSLocalizedString(@"%@\nReason was: %s",nil),lMessage, message]; - } - } - lTitle=NSLocalizedString(@"Call failed",nil); - UIAlertView* error = [[UIAlertView alloc] initWithTitle:lTitle - message:lMessage - delegate:nil - cancelButtonTitle:NSLocalizedString(@"Dismiss",nil) - otherButtonTitles:nil]; - [error show]; - [error release]; - break; - } - default: - break; - } - } -+(LinphoneCore*) getLc { ++ (LinphoneCore*)getLc { if (theLinphoneCore==nil) { @throw([NSException exceptionWithName:@"LinphoneCoreException" reason:@"Linphone core not initialized yet" userInfo:nil]); } return theLinphoneCore; } ++ (BOOL)isLcReady { + return theLinphoneCore != nil; +} + - (void)addLog:(NSString*) log { [mLogView addLog:log]; } diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index 0171dfccf..d3b0eb147 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -37,11 +37,8 @@ - (void)callUpdate: (NSNotification*) notif { // check LinphoneCore is initialized LinphoneCore* lc = nil; - @try { + if([LinphoneManager isLcReady]) lc = [LinphoneManager getLc]; - } @catch (NSException* exc) { - return; - } //TODO //[LinphoneManager set:mergeCalls hidden:!pause.hidden withName:"MERGE button" andReason:"call count"]; diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/UICallBar.xib index 2b55621c8..88a73a157 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -38,10 +38,10 @@ -2147483356 - {320, 135} + {{0, 10}, {320, 125}} - + _NS:9 3 @@ -50,6 +50,9 @@ 2 + NO + NO + NO -1 NO IBCocoaTouchFramework @@ -60,7 +63,7 @@ {80, 67} - + _NS:9 NO @@ -70,6 +73,7 @@ 0 0 NO + NO 3 MQA @@ -86,6 +90,10 @@ NSImage video-ON-over.png + + NSImage + video-OFF-disabled.png + NSImage video-ON-actif.png @@ -318,7 +326,7 @@ {320, 135} - + _NS:9 1 @@ -469,7 +477,7 @@ UIVideoButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -609,6 +617,7 @@ {160, 134} {160, 134} {160, 134} + {160, 134} {160, 134} {160, 134} diff --git a/Classes/LinphoneUI/UIEraseButton.h b/Classes/LinphoneUI/UIEraseButton.h index 168d930f1..44eebd84e 100644 --- a/Classes/LinphoneUI/UIEraseButton.h +++ b/Classes/LinphoneUI/UIEraseButton.h @@ -19,8 +19,9 @@ #import +#import "UILongTouchButton.h" -@interface UIEraseButton : UIButton { +@interface UIEraseButton : UILongTouchButton { @private UITextField* mAddress; diff --git a/Classes/LinphoneUI/UIEraseButton.m b/Classes/LinphoneUI/UIEraseButton.m index 1113ba817..0f2011267 100644 --- a/Classes/LinphoneUI/UIEraseButton.m +++ b/Classes/LinphoneUI/UIEraseButton.m @@ -21,15 +21,22 @@ @implementation UIEraseButton --(void) touchUp:(id) sender { - if ([mAddress.text length] > 0) { +-(void) touchDown:(id) sender { + if ([mAddress.text length] > 0) { [mAddress setText:[mAddress.text substringToIndex:[mAddress.text length]-1]]; - } + } } -(void) initWithAddressField:(UITextField*) address { mAddress = address; - [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; + [self addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown]; +} + +- (void)onRepeatTouch { +} + +- (void)onLongTouch { + [mAddress setText:@""]; } - (void)dealloc { diff --git a/Classes/LinphoneUI/UILongTouchButton.h b/Classes/LinphoneUI/UILongTouchButton.h new file mode 100644 index 000000000..e7fa2efb8 --- /dev/null +++ b/Classes/LinphoneUI/UILongTouchButton.h @@ -0,0 +1,31 @@ +/* UILongTouchButton.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 + +@protocol UILongTouchButtonDelegate +-(void) onRepeatTouch; +-(void) onLongTouch; +@end + +@interface UILongTouchButton : UIButton { + +} + +@end diff --git a/Classes/LinphoneUI/UILongTouchButton.m b/Classes/LinphoneUI/UILongTouchButton.m new file mode 100644 index 000000000..616aa87c7 --- /dev/null +++ b/Classes/LinphoneUI/UILongTouchButton.m @@ -0,0 +1,76 @@ +/* UILongTouchButton.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 "UILongTouchButton.h" + +@implementation UILongTouchButton + +- (id)init { + [self addTarget:self action:@selector(___touchDown:) forControlEvents:UIControlEventTouchDown]; + [self addTarget:self action:@selector(___touchUp:) forControlEvents:UIControlEventTouchUpInside|UIControlEventTouchUpOutside]; + return self; +} + +- (void)___touchDown:(id) sender { + [self performSelector:@selector(doLongTouch) withObject:nil afterDelay:0.5]; +} + +- (void)___touchUp:(id) sender { + [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(doLongTouch) object:nil]; + [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(doRepeatTouch) object:nil]; +} + +- (void)doLongTouch { + [self onLongTouch]; + [self onRepeatTouch]; + [self performSelector:@selector(doRepeatTouch) withObject:nil afterDelay:0.1]; +} + +- (void)doRepeatTouch { + [self onRepeatTouch]; + [self performSelector:@selector(doRepeatTouch) withObject:nil afterDelay:0.1]; +} + +- (id)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self init]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (self) { + [self init]; + } + return self; +} + +- (void)onRepeatTouch { + [NSException raise:NSInternalInconsistencyException + format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)]; +} + +- (void)onLongTouch { + [NSException raise:NSInternalInconsistencyException + format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)]; +} + +@end diff --git a/Classes/LinphoneUI/UIMainBar.xib b/Classes/LinphoneUI/UIMainBar.xib index bdd3c6dba..3779c3709 100644 --- a/Classes/LinphoneUI/UIMainBar.xib +++ b/Classes/LinphoneUI/UIMainBar.xib @@ -38,7 +38,7 @@ -2147483356 - {{0, 7}, {320, 65}} + {{0, 11}, {320, 66}} @@ -50,6 +50,9 @@ 2 + NO + NO + NO -1 NO IBCocoaTouchFramework @@ -57,7 +60,7 @@ 292 - {64, 72} + {64, 77} @@ -107,7 +110,7 @@ 292 - {{64, 0}, {64, 72}} + {{64, 0}, {64, 77}} @@ -141,38 +144,10 @@ - - - 292 - {{128, 0}, {64, 72}} - - - - _NS:9 - NO - - Dialer - - IBCocoaTouchFramework - 0 - 0 - NO - - - NSImage - dialer-actif.png - - - NSImage - dialer-over.png - - - - 292 - {{192, 0}, {64, 72}} + {{192, 0}, {64, 77}} @@ -206,13 +181,40 @@ + + + 292 + {{128, 0}, {64, 77}} + + + + _NS:9 + NO + + Dialer + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + dialer-actif.png + + + NSImage + dialer-over.png + + + + 292 - {{256, 0}, {64, 72}} + {{256, 0}, {64, 77}} - _NS:9 NO @@ -244,7 +246,7 @@ - {320, 72} + {320, 77} @@ -267,14 +269,6 @@ 13 - - - dialerButton - - - - 12 - view @@ -307,6 +301,14 @@ 29 + + + dialerButton + + + + 12 + onChatClick: @@ -378,10 +380,10 @@ - + mainTabBar @@ -389,6 +391,7 @@ 4 + mask @@ -404,12 +407,6 @@ history - - 7 - - - dialer - 8 @@ -422,6 +419,12 @@ settings + + 7 + + + dialer + @@ -528,20 +531,20 @@ YES 3 - {127, 144} - {127, 144} - {127, 144} - {132, 144} - {132, 144} - {127, 144} - {127, 144} - {127, 144} - {127, 144} - {127, 144} - {127, 144} - {127, 144} - {127, 144} - {127, 144} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} 1181 diff --git a/Classes/LinphoneUI/UIMicroButton.m b/Classes/LinphoneUI/UIMicroButton.m index 1238d0580..d3b506951 100644 --- a/Classes/LinphoneUI/UIMicroButton.m +++ b/Classes/LinphoneUI/UIMicroButton.m @@ -32,9 +32,9 @@ } - (bool)onUpdate { - @try { + if([LinphoneManager isLcReady]) { return linphone_core_is_mic_muted([LinphoneManager getLc]) == false; - } @catch(NSException* e) { + } else { //not ready yet return true; } diff --git a/Classes/LinphoneUI/UIPauseButton.m b/Classes/LinphoneUI/UIPauseButton.m index b271839ef..1ff3186cc 100644 --- a/Classes/LinphoneUI/UIPauseButton.m +++ b/Classes/LinphoneUI/UIPauseButton.m @@ -60,7 +60,7 @@ - (bool)onUpdate { // TODO: disable pause on not running call - @try { + if([LinphoneManager isLcReady]) { bool ret = false; LinphoneCall* currentCall = [UIPauseButton getCall]; if (currentCall != nil) { @@ -84,7 +84,7 @@ [LinphoneManager set:self enabled:FALSE withName:"PAUSE button" andReason:""]; } return ret; - } @catch(NSException* e) { + } else { //not ready yet return false; } diff --git a/Classes/LinphoneUI/UIStateBar.h b/Classes/LinphoneUI/UIStateBar.h index 33a4a9ca5..e9033cb53 100644 --- a/Classes/LinphoneUI/UIStateBar.h +++ b/Classes/LinphoneUI/UIStateBar.h @@ -20,13 +20,13 @@ #import @interface UIStateBar : UIViewController { - UIImageView* image; - UIActivityIndicatorView* spinner; - UILabel* label; + UIImageView* registrationStateImage; + UILabel* registrationStateLabel; + UIImageView* callQualityImage; } -@property (nonatomic, retain) IBOutlet UIImageView* image; -@property (nonatomic, retain) IBOutlet UIActivityIndicatorView* spinner; -@property (nonatomic, retain) IBOutlet UILabel* label; +@property (nonatomic, retain) IBOutlet UIImageView* registrationStateImage; +@property (nonatomic, retain) IBOutlet UILabel* registrationStateLabel; +@property (nonatomic, retain) IBOutlet UIImageView* callQualityImage; @end diff --git a/Classes/LinphoneUI/UIStateBar.m b/Classes/LinphoneUI/UIStateBar.m index 22059760b..524f1366f 100644 --- a/Classes/LinphoneUI/UIStateBar.m +++ b/Classes/LinphoneUI/UIStateBar.m @@ -24,15 +24,28 @@ @implementation UIStateBar -@synthesize image; -@synthesize spinner; -@synthesize label; +@synthesize registrationStateImage; +@synthesize registrationStateLabel; +@synthesize callQualityImage; + +NSTimer *callQualityTimer; - (void)viewDidLoad { [super viewDidLoad]; // Set observer [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(registrationUpdate:) name:@"LinphoneRegistrationUpdate" object:nil]; + + // Set callQualityTimer + [callQualityImage setHidden: true]; + callQualityTimer = [NSTimer scheduledTimerWithTimeInterval:1 + target:self + selector:@selector(callQualityUpdate) + userInfo:nil + repeats:YES]; + + // Update to default state + [self proxyConfigUpdate: NULL]; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { @@ -40,24 +53,56 @@ } - (void)registrationUpdate: (NSNotification*) notif { - LinphoneProxyConfig* config; + LinphoneProxyConfig* config = NULL; linphone_core_get_default_proxy([LinphoneManager getLc], &config); - + [self proxyConfigUpdate:config]; +} + +- (void)callQualityUpdate { + UIImage *image = nil; + if([LinphoneManager isLcReady]) { + LinphoneCall *call = linphone_core_get_current_call([LinphoneManager getLc]); + if(call != NULL) { + float quality = linphone_call_get_average_quality(call); + if(quality < 1) { + image = [UIImage imageNamed:@"quality-call-0.png"]; + } else if (quality < 2) { + image = [UIImage imageNamed:@"quality-call-1.png"]; + } else if (quality < 3) { + image = [UIImage imageNamed:@"quality-call-2.png"]; + } else { + image = [UIImage imageNamed:@"quality-call-3.png"]; + } + } + } + if(image != nil) { + [callQualityImage setHidden: false]; + [callQualityImage setImage: image]; + } else { + [callQualityImage setHidden: true]; + } +} + +- (void)proxyConfigUpdate: (LinphoneProxyConfig*) config { LinphoneRegistrationState state; NSString* message = nil; - + UIImage* image = nil; + if (config == NULL) { state = LinphoneRegistrationNone; - message = linphone_core_is_network_reachabled([LinphoneManager getLc]) ? NSLocalizedString(@"No SIP account configured", nil) : NSLocalizedString(@"Network down", nil); + if(![LinphoneManager isLcReady] || linphone_core_is_network_reachabled([LinphoneManager getLc])) + message = NSLocalizedString(@"No SIP account configured", nil); + else + message = NSLocalizedString(@"Network down", nil); } else { state = linphone_proxy_config_get_state(config); - + switch (state) { case LinphoneRegistrationOk: message = @"Registered"; break; case LinphoneRegistrationNone: - case LinphoneRegistrationCleared: - message = @"Not registered"; break; + case LinphoneRegistrationCleared: + message = @"Not registered"; break; case LinphoneRegistrationFailed: message = @"Registration failed"; break; case LinphoneRegistrationProgress: @@ -66,44 +111,46 @@ default: break; } } - - label.hidden = NO; + + registrationStateLabel.hidden = NO; switch(state) { case LinphoneRegistrationCleared: -/* image.hidden = NO; - [image setImage:[UIImage imageNamed:@"status_orange.png"]]; - [spinner stopAnimating]; - [label setText:message != nil ? message : NSLocalizedString(@"No SIP account defined", nil)];*/ + /* image.hidden = NO; + [image setImage:[UIImage imageNamed:@"status_orange.png"]]; + [spinner stopAnimating]; + [label setText:message != nil ? message : NSLocalizedString(@"No SIP account defined", nil)];*/ + break; case LinphoneRegistrationFailed: - image.hidden = NO; - [image setImage:[UIImage imageNamed:@"status_error.png"]]; - [spinner stopAnimating]; - [label setText:message]; + registrationStateImage.hidden = NO; + image = [UIImage imageNamed:@"status_error.png"]; + break; case LinphoneRegistrationNone: - image.hidden = NO; - [image setImage:[UIImage imageNamed:@"status_disconnected.png"]]; - [spinner stopAnimating]; - [label setText:message]; + registrationStateImage.hidden = NO; + image =[UIImage imageNamed:@"status_disconnected.png"]; + break; case LinphoneRegistrationProgress: - image.hidden = NO; - [image setImage:[UIImage imageNamed:@"status_inprogress.png"]]; - [spinner stopAnimating]; - [label setText:message]; + registrationStateImage.hidden = NO; + image = [UIImage imageNamed:@"status_inprogress.png"]; + break; case LinphoneRegistrationOk: - image.hidden = NO; - [image setImage:[UIImage imageNamed:@"status_connected.png"]]; - [spinner stopAnimating]; - [label setText:message]; + registrationStateImage.hidden = NO; + image = [UIImage imageNamed:@"status_connected.png"]; + break; } + [registrationStateLabel setText:message]; + [registrationStateImage setImage:image]; } - (void) viewDidUnload { [[NSNotificationCenter defaultCenter] removeObserver:self]; + [callQualityTimer invalidate]; } - (void) dealloc { - [super dealloc]; [[NSNotificationCenter defaultCenter] removeObserver:self]; + [callQualityTimer invalidate]; + [callQualityTimer release]; + [super dealloc]; } @end diff --git a/Classes/LinphoneUI/UIStateBar.xib b/Classes/LinphoneUI/UIStateBar.xib index 013370200..d692bb7d8 100644 --- a/Classes/LinphoneUI/UIStateBar.xib +++ b/Classes/LinphoneUI/UIStateBar.xib @@ -53,7 +53,7 @@ - -2147483356 + 292 {{6, 6}, {10, 10}} @@ -63,16 +63,16 @@ IBCocoaTouchFramework NSImage - status_gray.png + status_disconnected.png - -2147483356 - {{22, 0}, {298, 20}} + 292 + {{22, 0}, {189, 20}} - + _NS:328 NO YES @@ -97,6 +97,17 @@ 16 + + + 292 + {{219, 3}, {27, 17}} + + + + _NS:567 + NO + IBCocoaTouchFramework + {320, 23} @@ -112,22 +123,6 @@ - - - image - - - - 8 - - - - label - - - - 9 - view @@ -136,6 +131,30 @@ 11 + + + registrationStateImage + + + + 14 + + + + registrationStateLabel + + + + 15 + + + + callQualityImage + + + + 16 + @@ -163,6 +182,7 @@ + @@ -170,13 +190,13 @@ 6 - status + registrationStateLabel 5 - image + registrationStateImage 12 @@ -184,6 +204,12 @@ background + + 13 + + + callQualityImage + @@ -192,6 +218,7 @@ UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -200,9 +227,39 @@ - 12 + 16 + + + + + UIStateBar + UIViewController + + UIImageView + UIImageView + UILabel + + + + callQualityImage + UIImageView + + + registrationStateImage + UIImageView + + + registrationStateLabel + UILabel + + + + IBProjectSource + ./Classes/UIStateBar.h + + + - 0 IBCocoaTouchFramework @@ -213,7 +270,7 @@ 3 {640, 46} - {25, 23} + {18, 17} 1181 diff --git a/Classes/LinphoneUI/UIToggleButton.m b/Classes/LinphoneUI/UIToggleButton.m index 73e3caae3..c5a2b62c5 100644 --- a/Classes/LinphoneUI/UIToggleButton.m +++ b/Classes/LinphoneUI/UIToggleButton.m @@ -41,7 +41,7 @@ return self.selected; } -- (id) init { +- (id)init { [self update]; [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; return self; diff --git a/Classes/LinphoneUI/UIVideoButton.m b/Classes/LinphoneUI/UIVideoButton.m index 8d13c0495..98687629a 100644 --- a/Classes/LinphoneUI/UIVideoButton.m +++ b/Classes/LinphoneUI/UIVideoButton.m @@ -66,7 +66,7 @@ } - (bool)onUpdate { - @try { + if([LinphoneManager isLcReady]) { bool val = false; LinphoneCall* currentCall = linphone_core_get_current_call([LinphoneManager getLc]); if (currentCall) { @@ -83,7 +83,7 @@ [self setEnabled:FALSE]; } return val; - } @catch(NSException* e) { + } else { //not ready yet return false; } diff --git a/Classes/LinphoneUI/VideoZoomHandler.h b/Classes/LinphoneUI/VideoZoomHandler.h index 6065d2453..2b4bb3a86 100644 --- a/Classes/LinphoneUI/VideoZoomHandler.h +++ b/Classes/LinphoneUI/VideoZoomHandler.h @@ -1,10 +1,21 @@ -// -// VideoZoomHandler.h -// linphone -// -// Created by Pierre-Eric Pelloux-Prayer on 25/04/12. -// Copyright (c) 2012 __MyCompanyName__. All rights reserved. -// +/* VideoZoomHandler.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 @@ -12,7 +23,8 @@ float zoomLevel, cx, cy; UIView* videoView; } --(void) setup: (UIView*) videoView; --(void) resetZoom; + +- (void) setup: (UIView*) videoView; +- (void) resetZoom; @end diff --git a/Classes/LinphoneUI/VideoZoomHandler.m b/Classes/LinphoneUI/VideoZoomHandler.m index 33c735f8f..ce529ba70 100644 --- a/Classes/LinphoneUI/VideoZoomHandler.m +++ b/Classes/LinphoneUI/VideoZoomHandler.m @@ -1,10 +1,21 @@ -// -// VideoZoomHandler.m -// linphone -// -// Created by Pierre-Eric Pelloux-Prayer on 25/04/12. -// Copyright (c) 2012 __MyCompanyName__. All rights reserved. -// +/* VideoZoomHandler.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 "VideoZoomHandler.h" #include "linphonecore.h" @@ -12,8 +23,7 @@ @implementation VideoZoomHandler - --(void) zoomInOut:(UITapGestureRecognizer*) reco { +- (void)zoomInOut:(UITapGestureRecognizer*) reco { if (zoomLevel != 1) zoomLevel = 1; else @@ -29,7 +39,7 @@ linphone_call_zoom_video(linphone_core_get_current_call([LinphoneManager getLc]), zoomLevel, &cx, &cy); } --(void) videoPan:(UIPanGestureRecognizer*) reco { +- (void)videoPan:(UIPanGestureRecognizer*) reco { if (zoomLevel <= 1.0) return; @@ -53,7 +63,7 @@ cy = y; } --(void) pinch:(UIPinchGestureRecognizer*) reco { +- (void)pinch:(UIPinchGestureRecognizer*) reco { float s = zoomLevel; // CGPoint point = [reco locationInView:videoGroup]; // float ccx = cx + (point.x / videoGroup.frame.size.width - 0.5) / s; @@ -76,13 +86,12 @@ linphone_call_zoom_video(linphone_core_get_current_call([LinphoneManager getLc]), s, &cx, &cy); } --(void) resetZoom { +- (void)resetZoom { zoomLevel = 1; cx = cy = 0.5; } - --(void) setup: (UIView*) view { +- (void)setup: (UIView*) view { videoView = view; UITapGestureRecognizer* doubleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(zoomInOut:)]; @@ -101,4 +110,5 @@ [self resetZoom]; } + @end diff --git a/Classes/MainScreenWithVideoPreview.h b/Classes/MainScreenWithVideoPreview.h index e981e7d63..c02bd0647 100644 --- a/Classes/MainScreenWithVideoPreview.h +++ b/Classes/MainScreenWithVideoPreview.h @@ -19,11 +19,12 @@ #import #import -#import "PhoneViewController.h" + +#import "DialerViewController.h" @interface MainScreenWithVideoPreview : UIViewController { UIWindow *window; - PhoneViewController* phoneMainView; + DialerViewController* phoneMainView; AVCaptureSession* session; @@ -36,6 +37,6 @@ -(void) useCameraAtIndex:(NSInteger)camIndex startSession:(BOOL)start; -@property (nonatomic, retain) IBOutlet PhoneViewController* phoneMainView; +@property (nonatomic, retain) IBOutlet DialerViewController* phoneMainView; @property (nonatomic, retain) IBOutlet UIWindow *window; @end diff --git a/Classes/MainScreenWithVideoPreview.m b/Classes/MainScreenWithVideoPreview.m index c35983820..ff2927ad7 100644 --- a/Classes/MainScreenWithVideoPreview.m +++ b/Classes/MainScreenWithVideoPreview.m @@ -129,12 +129,8 @@ -(void) showPreview:(BOOL) show { LinphoneCore* lc; - @try { + if([LinphoneManager isLcReady]) lc = [LinphoneManager getLc]; - } - @catch (NSException *exception) { - return; - } bool enableVideo = [[NSUserDefaults standardUserDefaults] boolForKey:@"enable_video_preference"]; @@ -160,7 +156,8 @@ -(void) viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; - [phoneMainView.switchCamera addTarget:self action:@selector(switchCameraPressed) forControlEvents:UIControlEventTouchUpInside]; + //TODO + //[phoneMainView.switchCamera addTarget:self action:@selector(switchCameraPressed) forControlEvents:UIControlEventTouchUpInside]; } -(void) viewDidDisappear:(BOOL)animated { diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index d730d95e8..dfe55a503 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -18,9 +18,22 @@ */ #import -#import "LinphoneManager.h" -@interface PhoneMainView : UIViewController { +#import "LinphoneManager.h" +#import "CallDelegate.h" + +@interface ViewsDescription: NSObject{ +@public + UIViewController *content; + UIViewController *tabBar; + bool tabBarEnabled; + bool statusEnabled; + bool fullscreen; +} +-(id) copy; +@end + +@interface PhoneMainView : UIViewController { UIView *stateBarView; UIView *contentView; UIView *tabBarView; @@ -34,8 +47,11 @@ UIViewController *callTabBarController; UIViewController *mainTabBarController; UIViewController *incomingCallTabBarController; + ViewsDescription *currentViewDescription; + UIActionSheet *incomingCallActionSheet; } + @property (nonatomic, retain) IBOutlet UIView* stateBarView; @property (nonatomic, retain) IBOutlet UIView* contentView; @property (nonatomic, retain) IBOutlet UIView* tabBarView; diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index fbc5c5301..72a6936ab 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -18,25 +18,22 @@ */ #import "PhoneMainView.h" -#import "PhoneViewController.h" +#import "DialerViewController.h" #import "HistoryViewController.h" #import "ContactsViewController.h" #import "InCallViewController.h" -typedef enum _TabBar { - TabBar_Main, - TabBar_END -} TabBar; - - -@interface ViewsDescription: NSObject{ - @public - UIViewController *content; - UIViewController *tabBar; - bool statusEnabled; -} -@end @implementation ViewsDescription + +-(id) copy { + ViewsDescription *copy = [ViewsDescription alloc]; + copy->content = self->content; + copy->tabBar = self->tabBar; + copy->tabBarEnabled = self->tabBarEnabled; + copy->statusEnabled = self->statusEnabled; + copy->fullscreen = self->fullscreen; + return copy; +} @end @implementation PhoneMainView @@ -52,33 +49,64 @@ typedef enum _TabBar { @synthesize incomingCallTabBarController; - (void)changeView: (NSNotification*) notif { - PhoneView view = [[notif.userInfo objectForKey: @"view"] intValue]; - ViewsDescription *description = [viewDescriptions objectForKey:[NSNumber numberWithInt: view]]; + NSNumber *viewId = [notif.userInfo objectForKey: @"view"]; + NSNumber *tabBar = [notif.userInfo objectForKey: @"tabBar"]; + NSNumber *fullscreen = [notif.userInfo objectForKey: @"fullscreen"]; - for (UIView *view in contentView.subviews) { - [view removeFromSuperview]; + if(viewId != nil) { + PhoneView view = [viewId intValue]; + currentViewDescription = [[viewDescriptions objectForKey:[NSNumber numberWithInt: view]] copy]; } - for (UIView *view in tabBarView.subviews) { - [view removeFromSuperview]; - } - if(description == nil) + + ViewsDescription *description = currentViewDescription; + if(description == nil) { return; + } UIView *innerView = description->content.view; - [contentView addSubview: innerView]; - CGRect contentFrame = contentView.frame; - if(description->statusEnabled) { - stateBarView.hidden = false; - contentFrame.origin.y = stateBarView.frame.size.height + stateBarView.frame.origin.y; - } else { - stateBarView.hidden = true; - contentFrame.origin.y = 0; + // Change view + if(viewId != nil) { + for (UIView *view in contentView.subviews) { + [view removeFromSuperview]; + } + for (UIView *view in tabBarView.subviews) { + [view removeFromSuperview]; + } + + [contentView addSubview: innerView]; + [tabBarView addSubview: description->tabBar.view]; } - // Resize tabbar + if(tabBar != nil) { + description->tabBarEnabled = [tabBar boolValue]; + } + + if(fullscreen != nil) { + description->fullscreen = [fullscreen boolValue]; + } + + CGRect contentFrame = contentView.frame; + + // Resize StateBar + CGRect stateBarFrame = stateBarView.frame; + if(description->fullscreen) + stateBarFrame.origin.y = -20; + else + stateBarFrame.origin.y = 0; + + if(description->statusEnabled) { + stateBarView.hidden = false; + [stateBarView setFrame: stateBarFrame]; + contentFrame.origin.y = stateBarFrame.size.height + stateBarFrame.origin.y; + } else { + stateBarView.hidden = true; + contentFrame.origin.y = stateBarFrame.origin.y; + } + + // Resize TabBar CGRect tabFrame = tabBarView.frame; - if(description->tabBar != nil) { + if(description->tabBar != nil && description->tabBarEnabled) { tabBarView.hidden = false; tabFrame.origin.y += tabFrame.size.height; tabFrame.origin.x += tabFrame.size.width; @@ -94,17 +122,20 @@ typedef enum _TabBar { break; } } - [tabBarView addSubview: description->tabBar.view]; } else { tabBarView.hidden = true; - contentFrame.size.height = tabFrame.origin.y - tabFrame.size.height; + contentFrame.size.height = tabFrame.origin.y + tabFrame.size.height; + if(description->fullscreen) + contentFrame.size.height += 20; } + // Resize innerView [contentView setFrame: contentFrame]; CGRect innerContentFrame = innerView.frame; innerContentFrame.size = contentFrame.size; [innerView setFrame: innerContentFrame]; + // Call abstractCall NSDictionary *dict = [notif.userInfo objectForKey: @"args"]; if(dict != nil) [LinphoneManager abstractCall:description->content dict:dict]; @@ -126,15 +157,17 @@ typedef enum _TabBar { // // Main View // - PhoneViewController* myPhoneViewController = [[PhoneViewController alloc] - initWithNibName:@"PhoneViewController" + DialerViewController* myDialerViewController = [[DialerViewController alloc] + initWithNibName:@"DialerViewController" bundle:[NSBundle mainBundle]]; //[myPhoneViewController loadView]; - ViewsDescription *mainViewDescription = [ViewsDescription alloc]; - mainViewDescription->content = myPhoneViewController; - mainViewDescription->tabBar = mainTabBarController; - mainViewDescription->statusEnabled = true; - [viewDescriptions setObject:mainViewDescription forKey:[NSNumber numberWithInt: PhoneView_Dialer]]; + ViewsDescription *dialerDescription = [ViewsDescription alloc]; + dialerDescription->content = myDialerViewController; + dialerDescription->tabBar = mainTabBarController; + dialerDescription->statusEnabled = true; + dialerDescription->fullscreen = false; + dialerDescription->tabBarEnabled = true; + [viewDescriptions setObject:dialerDescription forKey:[NSNumber numberWithInt: PhoneView_Dialer]]; // @@ -148,6 +181,8 @@ typedef enum _TabBar { contactsDescription->content = myContactsController; contactsDescription->tabBar = mainTabBarController; contactsDescription->statusEnabled = false; + contactsDescription->fullscreen = false; + contactsDescription->tabBarEnabled = true; [viewDescriptions setObject:contactsDescription forKey:[NSNumber numberWithInt: PhoneView_Contacts]]; @@ -162,6 +197,8 @@ typedef enum _TabBar { historyDescription->content = myHistoryController; historyDescription->tabBar = mainTabBarController; historyDescription->statusEnabled = false; + historyDescription->fullscreen = false; + historyDescription->tabBarEnabled = true; [viewDescriptions setObject:historyDescription forKey:[NSNumber numberWithInt: PhoneView_History]]; @@ -175,18 +212,218 @@ typedef enum _TabBar { ViewsDescription *inCallDescription = [ViewsDescription alloc]; inCallDescription->content = myInCallController; inCallDescription->tabBar = callTabBarController; - inCallDescription->statusEnabled = false; + inCallDescription->statusEnabled = true; + inCallDescription->fullscreen = false; + inCallDescription->tabBarEnabled = true; [viewDescriptions setObject:inCallDescription forKey:[NSNumber numberWithInt: PhoneView_InCall]]; - // Set observer + // Set observers [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeView:) name:@"LinphoneMainViewChange" object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; } - (void)viewDidUnload { [[NSNotificationCenter defaultCenter] removeObserver:self]; } +- (void)callUpdate: (NSNotification*) notif { + LinphoneCallWrapper *callWrapper = [notif.userInfo objectForKey: @"call"]; + LinphoneCall *call = callWrapper->call; + LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; + NSString *message = [notif.userInfo objectForKey: @"message"]; + + bool canHideInCallView = (linphone_core_get_calls([LinphoneManager getLc]) == NULL); + + switch (state) { + case LinphoneCallIncomingReceived: + { + [self displayIncomingCall:call]; + break; + } + case LinphoneCallOutgoingInit: + case LinphoneCallPausedByRemote: + case LinphoneCallConnected: + case LinphoneCallUpdated: + { + if ([[LinphoneManager instance] currentView] != PhoneView_InCall) { + [[LinphoneManager instance] changeView:PhoneView_InCall]; + } + break; + } + case LinphoneCallUpdatedByRemote: + { + const LinphoneCallParams* current = linphone_call_get_current_params(call); + const LinphoneCallParams* remote = linphone_call_get_remote_params(call); + + /* remote wants to add video */ + if (!linphone_call_params_video_enabled(current) && + linphone_call_params_video_enabled(remote) && + !linphone_core_get_video_policy([LinphoneManager getLc])->automatically_accept) { + linphone_core_defer_call_update([LinphoneManager getLc], call); + //TODO + //[self displayAskToEnableVideoCall:call forUser:lUserName withDisplayName:lDisplayName]; + } else if (linphone_call_params_video_enabled(current) && !linphone_call_params_video_enabled(remote)) { + if ([[LinphoneManager instance] currentView] != PhoneView_InCall) { + [[LinphoneManager instance] changeView:PhoneView_InCall]; + } + } + break; + } + case LinphoneCallError: + { + [self displayCallError:call message: message]; + } + case LinphoneCallEnd: + { + [self dismissIncomingCall]; + if (canHideInCallView) { + if ([[LinphoneManager instance] currentView] != PhoneView_Dialer) { + // Go to dialer view + NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys: + [[NSArray alloc] initWithObjects: @"", nil] + , @"setAddress:", + nil]; + [[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict]; + } + } else { + if ([[LinphoneManager instance] currentView] != PhoneView_InCall) { + [[LinphoneManager instance] changeView:PhoneView_InCall]; + } + } + break; + } + case LinphoneCallStreamsRunning: + { + if ([[LinphoneManager instance] currentView] != PhoneView_InCall) { + [[LinphoneManager instance] changeView:PhoneView_InCall]; + } + break; + } + default: + break; + } + +} + +- (void)displayCallError:(LinphoneCall*) call message:(NSString*) message { + const char* lUserNameChars=linphone_address_get_username(linphone_call_get_remote_address(call)); + NSString* lUserName = lUserNameChars?[[[NSString alloc] initWithUTF8String:lUserNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); + NSString* lMessage; + NSString* lTitle; + + //get default proxy + LinphoneProxyConfig* proxyCfg; + linphone_core_get_default_proxy([LinphoneManager getLc],&proxyCfg); + if (proxyCfg == nil) { + lMessage = NSLocalizedString(@"Please make sure your device is connected to the internet and double check your SIP account configuration in the settings.", nil); + } else { + lMessage = [NSString stringWithFormat : NSLocalizedString(@"Cannot call %@", nil), lUserName]; + } + + if (linphone_call_get_reason(call) == LinphoneReasonNotFound) { + lMessage = [NSString stringWithFormat : NSLocalizedString(@"'%@' not registered to Service", nil), lUserName]; + } else { + if (message != nil) { + lMessage = [NSString stringWithFormat : NSLocalizedString(@"%@\nReason was: %@", nil), lMessage, message]; + } + } + lTitle = NSLocalizedString(@"Call failed",nil); + UIAlertView* error = [[UIAlertView alloc] initWithTitle:lTitle + message:lMessage + delegate:nil + cancelButtonTitle:NSLocalizedString(@"Dismiss",nil) + otherButtonTitles:nil]; + [error show]; + [error release]; +} + +- (void)dismissIncomingCall { + //cancel local notification, just in case + if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] + && [UIApplication sharedApplication].applicationState == UIApplicationStateBackground ) { + // cancel local notif if needed + [[UIApplication sharedApplication] cancelAllLocalNotifications]; + } else { + if (incomingCallActionSheet) { + [incomingCallActionSheet dismissWithClickedButtonIndex:1 animated:true]; + incomingCallActionSheet = nil; + } + } + + //TODO + /* + if ([[NSUserDefaults standardUserDefaults] boolForKey:@"firstlogindone_preference" ] == true) { + //first login case, dismmis first login view + [self dismissModalViewControllerAnimated:true]; + }; */ +} + + +- (void)displayIncomingCall:(LinphoneCall*) call{ + const char* userNameChars=linphone_address_get_username(linphone_call_get_remote_address(call)); + NSString* userName = userNameChars?[[[NSString alloc] initWithUTF8String:userNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); + const char* displayNameChars = linphone_address_get_display_name(linphone_call_get_remote_address(call)); + NSString* displayName = [displayNameChars?[[NSString alloc] initWithUTF8String:displayNameChars]:@"" autorelease]; + + //TODO + //[mMainScreenWithVideoPreview showPreview:NO]; + if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] + && [UIApplication sharedApplication].applicationState != UIApplicationStateActive) { + // Create a new notification + UILocalNotification* notif = [[[UILocalNotification alloc] init] autorelease]; + if (notif) + { + notif.repeatInterval = 0; + notif.alertBody =[NSString stringWithFormat:NSLocalizedString(@" %@ is calling you",nil),[displayName length]>0?displayName:userName]; + notif.alertAction = @"Answer"; + notif.soundName = @"oldphone-mono-30s.caf"; + NSData *callData = [NSData dataWithBytes:&call length:sizeof(call)]; + notif.userInfo = [NSDictionary dictionaryWithObject:callData forKey:@"call"]; + + [[UIApplication sharedApplication] presentLocalNotificationNow:notif]; + } + } else { + CallDelegate* cd = [[CallDelegate alloc] init]; + cd.eventType = CD_NEW_CALL; + cd.delegate = self; + cd.call = call; + + incomingCallActionSheet = [[UIActionSheet alloc] initWithTitle:[NSString stringWithFormat:NSLocalizedString(@" %@ is calling you",nil),[displayName length]>0?displayName:userName] + delegate:cd + cancelButtonTitle:nil + destructiveButtonTitle:NSLocalizedString(@"Answer",nil) + otherButtonTitles:NSLocalizedString(@"Decline",nil),nil]; + + incomingCallActionSheet.actionSheetStyle = UIActionSheetStyleDefault; + //TODO + /*if ([LinphoneManager runningOnIpad]) { + if (self.modalViewController != nil) + [incomingCallActionSheet showInView:[self.modalViewController view]]; + else + [incomingCallActionSheet showInView:self.parentViewController.view]; + } else */{ + [incomingCallActionSheet showInView: self.view]; + } + [incomingCallActionSheet release]; + } +} + +- (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; +} + - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; @@ -197,4 +434,5 @@ typedef enum _TabBar { [super dealloc]; } + @end \ No newline at end of file diff --git a/Classes/PhoneMainView.xib b/Classes/PhoneMainView.xib index 178a8c774..c9b528625 100644 --- a/Classes/PhoneMainView.xib +++ b/Classes/PhoneMainView.xib @@ -40,6 +40,17 @@ 292 YES + + + 314 + {{0, 23}, {320, 380}} + + + + _NS:9 + YES + IBCocoaTouchFramework + 274 @@ -55,24 +66,12 @@ YES IBCocoaTouchFramework - - - 314 - {{0, 23}, {320, 380}} - - - - _NS:9 - YES - IBCocoaTouchFramework - 280 {{0, 400}, {320, 60}} - _NS:9 1 @@ -169,7 +168,6 @@ {{160, 0}, {160, 77}} - _NS:9 NO @@ -268,7 +266,6 @@ {{192, 0}, {128, 72}} - _NS:9 NO @@ -364,7 +361,7 @@ NO - UIStatusBar + UIStateBar 1 @@ -1046,8 +1043,8 @@ {254, 144} {320, 154} {320, 154} - {132, 144} - {132, 144} + {128, 154} + {128, 154} {320, 154} {320, 154} diff --git a/Classes/PhoneViewController.h b/Classes/PhoneViewController.h deleted file mode 100644 index 2312ce397..000000000 --- a/Classes/PhoneViewController.h +++ /dev/null @@ -1,101 +0,0 @@ -/* PhoneViewController.h - * - * Copyright (C) 2009 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#import -#import -#import "linphonecore.h" -#import "UILinphone.h" -#import "CallDelegate.h" - -@class MainScreenWithVideoPreview; -@class InCallViewController; -@class FirstLoginViewController; - - -@interface PhoneViewController : UIViewController { - -@private - //UI definition - UIView* dialerView; - UITextField* address; - UILabel* mDisplayName; - UIEraseButton* erase; - UICallButton* callShort; - UICallButton* callLarge; - - UILabel* status; - - //key pad - 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* backToCallView; - UIView* statusViewHolder; - - UITabBarController* myTabBarController; - - UIActionSheet *mIncomingCallActionSheet; - FirstLoginViewController* myFirstLoginViewController; - MainScreenWithVideoPreview* mMainScreenWithVideoPreview; - - UIButton* switchCamera; -} - -@property (nonatomic, retain) IBOutlet UIView* dialerView; - -@property (nonatomic, retain) IBOutlet UITextField* address; -@property (nonatomic, retain) IBOutlet UILabel* mDisplayName; -@property (nonatomic, retain) IBOutlet UIButton* callShort; -@property (nonatomic, retain) IBOutlet UIButton* callLarge; -@property (nonatomic, retain) IBOutlet UILabel* status; -@property (nonatomic, retain) IBOutlet UIEraseButton* erase; - -@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 UIView* statusViewHolder; - -@property (nonatomic, retain) IBOutlet UIButton* backToCallView; - -@property (nonatomic, retain) IBOutlet UIButton* switchCamera; - -@property (nonatomic, retain) IBOutlet UITabBarController* myTabBarController; -@property (nonatomic, retain) IBOutlet MainScreenWithVideoPreview* mMainScreenWithVideoPreview; --(IBAction) onAddContact: (id) event; -@end diff --git a/Classes/PhoneViewController.m b/Classes/PhoneViewController.m deleted file mode 100644 index e8a7f5a48..000000000 --- a/Classes/PhoneViewController.m +++ /dev/null @@ -1,462 +0,0 @@ -/* PhoneViewController.h - * - * Copyright (C) 2009 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#import "PhoneViewController.h" -#import "linphoneAppDelegate.h" -#import "IncallViewController.h" -#import -#import -#import "LinphoneManager.h" -#include "FirstLoginViewController.h" -#include "MainScreenWithVideoPreview.h" -#include "linphonecore.h" -#include "private.h" -#import "PhoneMainView.h" - -@implementation PhoneViewController -@synthesize dialerView; -@synthesize mDisplayName; -@synthesize address; -@synthesize callShort; -@synthesize callLarge; -@synthesize status; -@synthesize erase; - -@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 statusViewHolder; - -@synthesize myTabBarController; -@synthesize mMainScreenWithVideoPreview; -@synthesize backToCallView; - -@synthesize switchCamera; - -- (void)updateCallAndBackButtons { - @try { - bool zeroCall = (linphone_core_get_calls_nb([LinphoneManager getLc]) == 0); - - [LinphoneManager set:callLarge hidden:!zeroCall withName:"CALL_LARGE button" andReason:__FUNCTION__]; - [LinphoneManager set:switchCamera hidden:!zeroCall withName:"SWITCH_CAM button" andReason:__FUNCTION__]; - [LinphoneManager set:callShort hidden:zeroCall withName:"CALL_SHORT button" andReason:__FUNCTION__]; - [LinphoneManager set:backToCallView hidden:zeroCall withName:"BACK button" andReason:__FUNCTION__]; - - [callShort setTitle:[UICallButton transforModeEnabled] ? @"transfer":@"call" forState:UIControlStateNormal]; - - if (!callShort.hidden) - [callShort setEnabled:!linphone_core_sound_resources_locked([LinphoneManager getLc])]; - } @catch (NSException* exc) { - // R.A.S: linphone core si simply not ready... - ms_warning("Catched exception %s: %s", - [exc.name cStringUsingEncoding:[NSString defaultCStringEncoding]], - [exc.reason cStringUsingEncoding:[NSString defaultCStringEncoding]]); - } -} - - -- (void)viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; - if ([[NSUserDefaults standardUserDefaults] boolForKey:@"enable_first_login_view_preference"] == true) { - myFirstLoginViewController = [[FirstLoginViewController alloc] initWithNibName:@"FirstLoginViewController" - bundle:[NSBundle mainBundle]]; - [self presentModalViewController:myFirstLoginViewController animated:true]; - } - // [[LinphoneManager instance] setRegistrationDelegate:self]; - - [mMainScreenWithVideoPreview showPreview:YES]; - [self updateCallAndBackButtons]; -} - -- (void)viewDidDisappear:(BOOL)animated { - [super viewDidDisappear:animated]; -} - - -// Implement viewDidLoad to do additional setup after loading the view, typically from a nib : may be called twice -- (void)viewDidLoad { - [super viewDidLoad]; - - // Set observer - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; - - [mDisplayName release]; - mDisplayName = [UILabel alloc]; - [zero initWithNumber:'0' addressField:address dtmf:false]; - [one initWithNumber:'1' addressField:address dtmf:false]; - [two initWithNumber:'2' addressField:address dtmf:false]; - [three initWithNumber:'3' addressField:address dtmf:false]; - [four initWithNumber:'4' addressField:address dtmf:false]; - [five initWithNumber:'5' addressField:address dtmf:false]; - [six initWithNumber:'6' addressField:address dtmf:false]; - [seven initWithNumber:'7' addressField:address dtmf:false]; - [eight initWithNumber:'8' addressField:address dtmf:false]; - [nine initWithNumber:'9' addressField:address dtmf:false]; - [star initWithNumber:'*' addressField:address dtmf:false]; - [hash initWithNumber:'#' addressField:address dtmf:false]; - [callShort initWithAddress:address]; - [callLarge initWithAddress:address]; - [erase initWithAddressField:address]; - [backToCallView addTarget:self action:@selector(backToCallViewPressed) forControlEvents:UIControlEventTouchUpInside]; - - /*if (statusSubViewController == nil) { - statusSubViewController = [[StatusSubViewController alloc] initWithNibName:@"StatusSubViewController" - bundle:[NSBundle mainBundle]]; - [statusViewHolder addSubview:statusSubViewController.view]; - }*/ - - [self updateCallAndBackButtons]; -} - -- (void)didReceiveMemoryWarning { - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc that aren't in use. -} - -- (void)viewDidUnload { - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - -- (BOOL)textFieldShouldReturn:(UITextField *)theTextField { - if (theTextField == address) { - [address resignFirstResponder]; - [mDisplayName setText:@""]; //display name only relefvant - - } - return YES; -} - -- (void)viewWillAppear:(BOOL)animated { - [self updateCallAndBackButtons]; - [super viewWillAppear:animated]; -} - -- (void)callUpdate: (NSNotification*) notif { - LinphoneCallWrapper *callWrapper = [notif.userInfo objectForKey: @"call"]; - LinphoneCall *call = callWrapper->call; - LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; - - const char* lUserNameChars=linphone_address_get_username(linphone_call_get_remote_address(call)); - NSString* lUserName = lUserNameChars?[[[NSString alloc] initWithUTF8String:lUserNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); - const char* lDisplayNameChars = linphone_address_get_display_name(linphone_call_get_remote_address(call)); - NSString* lDisplayName = [lDisplayNameChars?[[NSString alloc] initWithUTF8String:lDisplayNameChars]:@"" autorelease]; - - bool canHideInCallView = (linphone_core_get_calls([LinphoneManager getLc]) == NULL); - - switch (state) { - case LinphoneCallIncomingReceived: - [self displayIncomingCall:call - NotificationFromUI:nil - forUser:lUserName - withDisplayName:lDisplayName]; - break; - - case LinphoneCallOutgoingInit: - [self displayCall:call - InProgressFromUI:nil - forUser:lUserName - withDisplayName:lDisplayName]; - break; - case LinphoneCallPausedByRemote: - case LinphoneCallConnected: - [self displayInCall: call - FromUI:nil - forUser:lUserName - withDisplayName:lDisplayName]; - break; - case LinphoneCallUpdatedByRemote: - { - const LinphoneCallParams* current = linphone_call_get_current_params(call); - const LinphoneCallParams* remote = linphone_call_get_remote_params(call); - - /* remote wants to add video */ - if (!linphone_call_params_video_enabled(current) && - linphone_call_params_video_enabled(remote) && - !linphone_core_get_video_policy([LinphoneManager getLc])->automatically_accept) { - linphone_core_defer_call_update([LinphoneManager getLc], call); - [self displayAskToEnableVideoCall:call forUser:lUserName withDisplayName:lDisplayName]; - } else if (linphone_call_params_video_enabled(current) && !linphone_call_params_video_enabled(remote)) { - [self displayInCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName]; - } - break; - } - case LinphoneCallUpdated: - { - const LinphoneCallParams* current = linphone_call_get_current_params(call); - if (linphone_call_params_video_enabled(current)) { - [self displayVideoCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName]; - } else { - [self displayInCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName]; - } - 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))) { - [self displayVideoCall:call FromUI:nil - forUser:lUserName - withDisplayName:lDisplayName]; - } else { - [self displayInCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName]; - } - break; - default: - break; - } - -} - -- (void)displayDialerFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { - - //cancel local notification, just in case - if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] - && [UIApplication sharedApplication].applicationState == UIApplicationStateBackground ) { - // cancel local notif if needed - [[UIApplication sharedApplication] cancelAllLocalNotifications]; - } else { - if (mIncomingCallActionSheet) { - [mIncomingCallActionSheet dismissWithClickedButtonIndex:1 animated:true]; - mIncomingCallActionSheet=nil; - } - } - - if (username) { - [address setText:username]; - } //else keep previous - - [mDisplayName setText:displayName]; - - [self updateCallAndBackButtons]; - - if ([[NSUserDefaults standardUserDefaults] boolForKey:@"firstlogindone_preference" ] == true) { - //first login case, dismmis first login view - [self dismissModalViewControllerAnimated:true]; - }; - - [[LinphoneManager instance] changeView:PhoneView_Dialer]; - - [mMainScreenWithVideoPreview showPreview:YES]; -} - -- (void)displayIncomingCall:(LinphoneCall*) call NotificationFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { - [mMainScreenWithVideoPreview showPreview:NO]; - if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] - && [UIApplication sharedApplication].applicationState != UIApplicationStateActive) { - // Create a new notification - UILocalNotification* notif = [[[UILocalNotification alloc] init] autorelease]; - if (notif) - { - notif.repeatInterval = 0; - notif.alertBody =[NSString stringWithFormat:NSLocalizedString(@" %@ is calling you",nil),[displayName length]>0?displayName:username]; - notif.alertAction = @"Answer"; - notif.soundName = @"oldphone-mono-30s.caf"; - NSData *callData = [NSData dataWithBytes:&call length:sizeof(call)]; - notif.userInfo = [NSDictionary dictionaryWithObject:callData forKey:@"call"]; - - [[UIApplication sharedApplication] presentLocalNotificationNow:notif]; - } - } else { - CallDelegate* cd = [[CallDelegate alloc] init]; - cd.eventType = CD_NEW_CALL; - cd.delegate = self; - cd.call = call; - - mIncomingCallActionSheet = [[UIActionSheet alloc] initWithTitle:[NSString stringWithFormat:NSLocalizedString(@" %@ is calling you",nil),[displayName length]>0?displayName:username] - delegate:cd - cancelButtonTitle:nil - destructiveButtonTitle:NSLocalizedString(@"Answer",nil) - otherButtonTitles:NSLocalizedString(@"Decline",nil),nil]; - - mIncomingCallActionSheet.actionSheetStyle = UIActionSheetStyleDefault; - if ([LinphoneManager runningOnIpad]) { - if (self.modalViewController != nil) - [mIncomingCallActionSheet showInView:[self.modalViewController view]]; - else - [mIncomingCallActionSheet showInView:self.parentViewController.view]; - } else { - [mIncomingCallActionSheet showInView:self.parentViewController.view]; - } - [mIncomingCallActionSheet release]; - } - - [mMainScreenWithVideoPreview showPreview:NO]; -} - -- (void)backToCallViewPressed { - [UICallButton enableTransforMode:NO]; - [[LinphoneManager instance] changeView:PhoneView_InCall]; - - LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); - - if (!call || !linphone_call_params_video_enabled(linphone_call_get_current_params(call)) || linphone_call_get_state(call) != LinphoneCallStreamsRunning) { - [self displayInCall: call - FromUI:nil - forUser:nil - withDisplayName:nil]; - } else { - [self displayVideoCall:call FromUI:nil forUser:nil withDisplayName:nil]; - } -} - -- (void)displayCall: (LinphoneCall*) call InProgressFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { - [mMainScreenWithVideoPreview showPreview:NO]; - if ([[LinphoneManager instance]currentView] != PhoneView_InCall) { - [[LinphoneManager instance] changeView:PhoneView_InCall]; - } - - [mMainScreenWithVideoPreview showPreview:NO]; -} - -- (void)displayInCall: (LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { - [mMainScreenWithVideoPreview showPreview:NO]; - if ([[LinphoneManager instance]currentView] != PhoneView_InCall && (call == 0x0 || - linphone_call_get_dir(call)==LinphoneCallIncoming)){ - [[LinphoneManager instance] changeView:PhoneView_InCall]; - } - - [LinphoneManager set:callLarge hidden:YES withName:"CALL_LARGE button" andReason:__FUNCTION__]; - [LinphoneManager set:switchCamera hidden:YES withName:"SWITCH_CAMERA button" andReason:__FUNCTION__]; - [LinphoneManager set:callShort hidden:NO withName:"CALL_SHORT button" andReason:__FUNCTION__]; - [LinphoneManager set:backToCallView hidden:NO withName:"CALL_BACK button" andReason:__FUNCTION__]; - - [self updateCallAndBackButtons]; -} - - -- (void)displayVideoCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { - [mMainScreenWithVideoPreview showPreview:NO]; - - [mMainScreenWithVideoPreview showPreview:NO]; - [self updateCallAndBackButtons]; -} - -- (void)displayAskToEnableVideoCall:(LinphoneCall*) call forUser:(NSString*) username withDisplayName:(NSString*) displayName { -} - -- (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); - } - mIncomingCallActionSheet = nil; -} - -- (void)dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; - [address dealloc]; - [mDisplayName dealloc]; - [dialerView dealloc]; - [callShort dealloc]; - [callLarge dealloc]; - [status dealloc]; - [one dealloc]; - [two dealloc]; - [three dealloc]; - [four dealloc]; - [five dealloc]; - [six dealloc]; - [seven dealloc]; - [eight dealloc]; - [nine dealloc]; - [star dealloc]; - [zero dealloc]; - [hash dealloc]; - [myTabBarController release]; - [super dealloc]; -} - -- (void)displayRegisteredFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName onDomain:(NSString*)domain { - if (myFirstLoginViewController != nil && self.modalViewController == myFirstLoginViewController) { - //[myFirstLoginViewController displayRegisteredFromUI:viewCtrl forUser:username withDisplayName:displayName onDomain:domain]; - } -} - -- (void)displayRegisteringFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName onDomain:(NSString*)domain { - if (myFirstLoginViewController != nil && self.modalViewController == myFirstLoginViewController) { - //[myFirstLoginViewController displayRegisteringFromUI:viewCtrl forUser:username withDisplayName:displayName onDomain:domain]; - } -} - -- (void)displayRegistrationFailedFromUI:(UIViewController*) viewCtrl forUser:(NSString*) user withDisplayName:(NSString*) displayName onDomain:(NSString*)domain forReason:(NSString*) reason { - if (myFirstLoginViewController != nil && self.modalViewController == myFirstLoginViewController) { - //[myFirstLoginViewController displayRegistrationFailedFromUI:viewCtrl forUser:user withDisplayName:displayName onDomain:domain forReason:reason]; - } -} - -- (void)displayNotRegisteredFromUI:(UIViewController*) viewCtrl { - if (myFirstLoginViewController != nil && self.modalViewController == myFirstLoginViewController) { - //[myFirstLoginViewController displayNotRegisteredFromUI:viewCtrl]; - } -} - -- (void)firstVideoFrameDecoded: (LinphoneCall*) call { - // [mIncallViewController firstVideoFrameDecoded:call]; -} - -- (IBAction)onAddContact: (id) event { - -} - - -@end diff --git a/Classes/VideoViewController-ipad.xib b/Classes/VideoViewController-ipad.xib deleted file mode 100644 index 01b0daa4c..000000000 --- a/Classes/VideoViewController-ipad.xib +++ /dev/null @@ -1,993 +0,0 @@ - - - - 1280 - 11C74 - 1938 - 1138.23 - 567.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 933 - - - IBUIButton - IBUIImageView - IBUIView - IBProxyObject - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - - 274 - {768, 1024} - - - - - 4 - MAA - - IBIPadFramework - - - - 274 - - - - 292 - {768, 1024} - - - - _NS:569 - NO - IBIPadFramework - - - - 292 - {{329, 962}, {108, 62}} - - - - NO - IBIPadFramework - 0 - 0 - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - NSImage - stopcall-red.png - - - NSImage - clavier-01-108px.png - - - Helvetica-Bold - Helvetica - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 292 - {{223, 962}, {108, 62}} - - - - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - 292 - {{598, 799}, {170, 225}} - - - - - 3 - MQA - - 2 - - - IBIPadFramework - - - - 292 - {{436, 962}, {108, 62}} - - - - NO - IBIPadFramework - 0 - 0 - 1 - switch - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - 292 - {{20, 976}, {28, 28}} - - - - _NS:567 - NO - IBIPadFramework - - - {768, 1024} - - - - _NS:212 - - 3 - MC42NjY2NjY2NjY3AA - - IBIPadFramework - - - - 274 - - - - 292 - {1024, 768} - - - - _NS:569 - NO - IBIPadFramework - - - - 292 - {{799, 598}, {225, 170}} - - - - 3 - MQA - - - IBIPadFramework - - - - 292 - {{351, 706}, {108, 62}} - - - - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - 292 - {{458, 706}, {108, 62}} - - - - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - - 292 - {{565, 706}, {108, 62}} - - - - NO - IBIPadFramework - 0 - 0 - 1 - switch - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - 292 - {{20, 720}, {28, 28}} - - - _NS:567 - NO - IBIPadFramework - - - {1024, 768} - - - - _NS:212 - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - 3 - 3 - - IBIPadFramework - - - - 274 - - - - 292 - {1024, 768} - - - - _NS:569 - NO - IBIPadFramework - - - - 292 - {{799, 598}, {225, 170}} - - - - 3 - MQA - - - IBIPadFramework - - - - 292 - {{351, 706}, {108, 62}} - - - - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - 292 - {{458, 706}, {108, 62}} - - - - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - - 292 - {{565, 706}, {108, 62}} - - - - NO - IBIPadFramework - 0 - 0 - 1 - switch - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - 292 - {{20, 720}, {28, 28}} - - - _NS:567 - NO - IBIPadFramework - - - {1024, 768} - - - - _NS:212 - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - 3 - 3 - - IBIPadFramework - - - - - - - mCamSwitch - - - - 13 - - - - mHangUp - - - - 16 - - - - mPortrait - - - - 19 - - - - mPreview - - - - 20 - - - - view - - - - 22 - - - - mMute - - - - 23 - - - - mDisplay - - - - 27 - - - - mCamSwitchLandLeft - - - - 35 - - - - mCamSwitchLandRight - - - - 36 - - - - mDisplayLandLeft - - - - 37 - - - - mDisplayLandRight - - - - 38 - - - - mHangUpLandLeft - - - - 39 - - - - mHangUpLandRight - - - - 40 - - - - mLandscapeLeft - - - - 41 - - - - mLandscapeRight - - - - 42 - - - - mMuteLandLeft - - - - 43 - - - - mMuteLandRight - - - - 44 - - - - mPreviewLandLeft - - - - 45 - - - - mPreviewLandRight - - - - 46 - - - - mCallQuality - - - - 51 - - - - mCallQualityLandLeft - - - - 52 - - - - mCallQualityLandRight - - - - 53 - - - - - - 0 - - - - - - 1 - - - - root - - - -1 - - - File's Owner - - - -2 - - - - - 3 - - - - - - - - - - - portrait - - - 4 - - - - - - - - - - - landscape-right - - - 5 - - - Hang Up Button - - - 6 - - - - - 7 - - - preview - - - 8 - - - - - 10 - - - - preview - - - 11 - - - Hang Up Button - - - 12 - - - - - 9 - - - - - 25 - - - - - 26 - - - - - 29 - - - - - - - - - - - landscape-left - - - 30 - - - - - 31 - - - Hang Up Button - - - 32 - - - - - 33 - - - preview - - - 34 - - - - - 48 - - - - - 49 - - - - - 50 - - - - - - - VideoViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIHangUpButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UICamSwitch - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIMuteButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIHangUpButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UICamSwitch - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIHangUpButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIMuteButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UICamSwitch - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIMuteButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 53 - - - - - UICamSwitch - UIButton - - preview - UIView - - - preview - - preview - UIView - - - - IBProjectSource - ./Classes/UICamSwitch.h - - - - UIHangUpButton - UIButton - - IBProjectSource - ./Classes/UIHangUpButton.h - - - - UIMuteButton - UIToggleButton - - IBProjectSource - ./Classes/UIMuteButton.h - - - - UIToggleButton - UIButton - - IBProjectSource - ./Classes/UIToggleButton.h - - - - VideoViewController - UIViewController - - UIImageView - UIImageView - UIImageView - UICamSwitch - UICamSwitch - UICamSwitch - UIView - UIView - UIView - UIHangUpButton - UIHangUpButton - UIHangUpButton - UIView - UIView - UIMuteButton - UIMuteButton - UIMuteButton - UIView - UIView - UIView - UIView - - - - mCallQuality - UIImageView - - - mCallQualityLandLeft - UIImageView - - - mCallQualityLandRight - UIImageView - - - mCamSwitch - UICamSwitch - - - mCamSwitchLandLeft - UICamSwitch - - - mCamSwitchLandRight - UICamSwitch - - - mDisplay - UIView - - - mDisplayLandLeft - UIView - - - mDisplayLandRight - UIView - - - mHangUp - UIHangUpButton - - - mHangUpLandLeft - UIHangUpButton - - - mHangUpLandRight - UIHangUpButton - - - mLandscapeLeft - UIView - - - mLandscapeRight - UIView - - - mMute - UIMuteButton - - - mMuteLandLeft - UIMuteButton - - - mMuteLandRight - UIMuteButton - - - mPortrait - UIView - - - mPreview - UIView - - - mPreviewLandLeft - UIView - - - mPreviewLandRight - UIView - - - - IBProjectSource - ./Classes/VideoViewController.h - - - - - 0 - IBIPadFramework - YES - 3 - - {108, 60} - {62, 54} - - 933 - - diff --git a/Classes/VideoViewController.h b/Classes/VideoViewController.h deleted file mode 100644 index b7a31603a..000000000 --- a/Classes/VideoViewController.h +++ /dev/null @@ -1,74 +0,0 @@ -/* VideoViewController.h - * - * Copyright (C) 2011 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 -#import "UILinphone.h" - -@interface VideoViewController : UIViewController { - UIView* mPortrait; - UIView* mDisplay; - UIView* mPreview; - UIMicroButton* mMute; - UIHangUpButton* mHangUp; - UICamSwitch* mCamSwitch; - - UIView* mLandscapeRight; - UIView* mDisplayLandRight; - UIView* mPreviewLandRight; - UIMicroButton* mMuteLandRight; - UIHangUpButton* mHangUpLandRight; - UICamSwitch* mCamSwitchLandRight; - - UIView* mLandscapeLeft; - UIView* mDisplayLandLeft; - UIView* mPreviewLandLeft; - UIMicroButton* mMuteLandLeft; - UIHangUpButton* mHangUpLandLeft; - UICamSwitch* mCamSwitchLandLeft; - BOOL isFirst; - int maxCall; - -} - -@property (nonatomic, retain) IBOutlet UIView* mPortrait; -@property (nonatomic, retain) IBOutlet UIView* mDisplay; -@property (nonatomic, retain) IBOutlet UIView* mPreview; -@property (nonatomic, retain) IBOutlet UIMicroButton* mMute; -@property (nonatomic, retain) IBOutlet UIHangUpButton* mHangUp; -@property (nonatomic, retain) IBOutlet UICamSwitch* mCamSwitch; -@property (nonatomic, retain) IBOutlet UIImageView *mCallQuality; - -@property (nonatomic, retain) IBOutlet UIView* mLandscapeRight; -@property (nonatomic, retain) IBOutlet UIView* mDisplayLandRight; -@property (nonatomic, retain) IBOutlet UIView* mPreviewLandRight; -@property (nonatomic, retain) IBOutlet UIMicroButton* mMuteLandRight; -@property (nonatomic, retain) IBOutlet UIHangUpButton* mHangUpLandRight; -@property (nonatomic, retain) IBOutlet UICamSwitch* mCamSwitchLandRight; -@property (nonatomic, retain) IBOutlet UIImageView *mCallQualityLandRight; - -@property (nonatomic, retain) IBOutlet UIView* mLandscapeLeft; -@property (nonatomic, retain) IBOutlet UIView* mDisplayLandLeft; -@property (nonatomic, retain) IBOutlet UIView* mPreviewLandLeft; -@property (nonatomic, retain) IBOutlet UIMicroButton* mMuteLandLeft; -@property (nonatomic, retain) IBOutlet UIHangUpButton* mHangUpLandLeft; -@property (nonatomic, retain) IBOutlet UICamSwitch* mCamSwitchLandLeft; -@property (retain, nonatomic) IBOutlet UIImageView *mCallQualityLandLeft; - -- (void) updateCallQualityIndicator; - -@end \ No newline at end of file diff --git a/Classes/VideoViewController.m b/Classes/VideoViewController.m deleted file mode 100644 index 2da07cf5c..000000000 --- a/Classes/VideoViewController.m +++ /dev/null @@ -1,230 +0,0 @@ -/* VideoViewController.m - * - * Copyright (C) 2011 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 "VideoViewController.h" -#import "LinphoneManager.h" -#import - -@implementation VideoViewController -@synthesize mPortrait; -@synthesize mDisplay; -@synthesize mPreview; -@synthesize mMute; -@synthesize mHangUp; -@synthesize mCamSwitch; -@synthesize mCallQuality; - -@synthesize mLandscapeRight; -@synthesize mDisplayLandRight; -@synthesize mPreviewLandRight; -@synthesize mMuteLandRight; -@synthesize mHangUpLandRight; -@synthesize mCamSwitchLandRight; -@synthesize mCallQualityLandRight; - -@synthesize mLandscapeLeft; -@synthesize mDisplayLandLeft; -@synthesize mPreviewLandLeft; -@synthesize mMuteLandLeft; -@synthesize mHangUpLandLeft; -@synthesize mCamSwitchLandLeft; -@synthesize mCallQualityLandLeft; - -NSTimer *callQualityRefresher; - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - return self; -} - -- (void)dealloc -{ - [mCallQuality release]; - [mCallQualityLandRight release]; - [mCallQualityLandLeft release]; - [super dealloc]; -} - -- (void)didReceiveMemoryWarning -{ - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc that aren't in use. -} - -#pragma mark - View lifecycle - -- (void)viewDidLoad -{ - [super viewDidLoad]; - /*[mMute initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE button"]; - [mMuteLandRight initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE2 button"]; - [mMuteLandLeft initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE3 button"];*/ - [mCamSwitch setPreview:mPreview]; - [mCamSwitchLandRight setPreview:mPreviewLandRight]; - [mCamSwitchLandLeft setPreview:mPreviewLandLeft]; - - isFirst=TRUE; -} - -- (void) updateCallQualityIndicator -{ - LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); - if (!call) - return; - - if (linphone_call_get_average_quality(call) >= 4) { - [mCallQuality setImage: [UIImage imageNamed:@"stat_sys_signal_4.png"]]; - [mCallQualityLandRight setImage: [UIImage imageNamed:@"stat_sys_signal_4.png"]]; - [mCallQualityLandLeft setImage: [UIImage imageNamed:@"stat_sys_signal_4.png"]]; - } - else if (linphone_call_get_average_quality(call) >= 3) { - [mCallQuality setImage: [UIImage imageNamed:@"stat_sys_signal_3.png"]]; - [mCallQualityLandRight setImage: [UIImage imageNamed:@"stat_sys_signal_3.png"]]; - [mCallQualityLandLeft setImage: [UIImage imageNamed:@"stat_sys_signal_3.png"]]; - } - else if (linphone_call_get_average_quality(call) >= 2) { - [mCallQuality setImage: [UIImage imageNamed:@"stat_sys_signal_2.png"]]; - [mCallQualityLandRight setImage: [UIImage imageNamed:@"stat_sys_signal_2.png"]]; - [mCallQualityLandLeft setImage: [UIImage imageNamed:@"stat_sys_signal_2.png"]]; - } - else if (linphone_call_get_average_quality(call) >= 1) { - [mCallQuality setImage: [UIImage imageNamed:@"stat_sys_signal_1.png"]]; - [mCallQualityLandRight setImage: [UIImage imageNamed:@"stat_sys_signal_1.png"]]; - [mCallQualityLandLeft setImage: [UIImage imageNamed:@"stat_sys_signal_1.png"]]; - } - else { - [mCallQuality setImage: [UIImage imageNamed:@"stat_sys_signal_0.png"]]; - [mCallQualityLandRight setImage: [UIImage imageNamed:@"stat_sys_signal_0.png"]]; - [mCallQualityLandLeft setImage: [UIImage imageNamed:@"stat_sys_signal_0.png"]]; - } -} - - --(void) configureOrientation:(UIInterfaceOrientation) oritentation { - int oldLinphoneOrientation = linphone_core_get_device_rotation([LinphoneManager getLc]); - if (oritentation == UIInterfaceOrientationPortrait ) { - [self.view addSubview:mPortrait]; - linphone_core_set_native_video_window_id([LinphoneManager getLc],(unsigned long)mDisplay); - linphone_core_set_native_preview_window_id([LinphoneManager getLc],(unsigned long)mPreview); - linphone_core_set_device_rotation([LinphoneManager getLc], 0); - - } else if (oritentation == UIInterfaceOrientationLandscapeRight ) { - [self.view addSubview:mLandscapeRight]; - linphone_core_set_native_video_window_id([LinphoneManager getLc],(unsigned long)mDisplayLandRight); - linphone_core_set_native_preview_window_id([LinphoneManager getLc],(unsigned long)mPreviewLandRight); - linphone_core_set_device_rotation([LinphoneManager getLc], 270); - - } else if (oritentation == UIInterfaceOrientationLandscapeLeft ) { - [self.view addSubview:mLandscapeLeft]; - linphone_core_set_native_video_window_id([LinphoneManager getLc],(unsigned long)mDisplayLandLeft); - linphone_core_set_native_preview_window_id([LinphoneManager getLc],(unsigned long)mPreviewLandLeft); - linphone_core_set_device_rotation([LinphoneManager getLc], 90); - } - if ((oldLinphoneOrientation != linphone_core_get_device_rotation([LinphoneManager getLc])) - && linphone_core_get_current_call([LinphoneManager getLc])) { - //Orientation has change, must call update call - linphone_core_update_call([LinphoneManager getLc], linphone_core_get_current_call([LinphoneManager getLc]), NULL); - } -} - --(void) configureOrientation { - [self configureOrientation:self.interfaceOrientation]; -} - -- (void)viewDidUnload -{ - [mCallQuality release]; - mCallQuality = nil; - [self setMCallQualityLandRight:nil]; - [self setMCallQualityLandLeft:nil]; - [super viewDidUnload]; - - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - - --(void) viewDidDisappear:(BOOL)animated{ - [super viewDidDisappear:animated]; - [[UIApplication sharedApplication] setIdleTimerDisabled:NO]; - linphone_core_set_max_calls([LinphoneManager getLc], maxCall); - - if (callQualityRefresher != nil) { - [callQualityRefresher invalidate]; - callQualityRefresher=nil; - } -} - --(void) viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - - //redirect audio to speaker - UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; - AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute - , sizeof (audioRouteOverride) - , &audioRouteOverride); - - - [self performSelectorOnMainThread:@selector(configureOrientation) - withObject:nil - waitUntilDone:YES]; - [mMute update]; - [mMuteLandRight update]; - [mMuteLandLeft update]; - maxCall = linphone_core_get_max_calls([LinphoneManager getLc]); - linphone_core_set_max_calls([LinphoneManager getLc], 1); -} - -- (void) viewDidAppear:(BOOL)animated{ - [super viewDidAppear:animated]; - [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; - - callQualityRefresher = [NSTimer scheduledTimerWithTimeInterval:1 - target:self - selector:@selector(updateCallQualityIndicator) - userInfo:nil - repeats:YES]; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - BOOL result = interfaceOrientation == UIInterfaceOrientationPortrait - || interfaceOrientation == UIInterfaceOrientationLandscapeRight - || interfaceOrientation == UIInterfaceOrientationLandscapeLeft; - - return result; -} - -- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { - [self configureOrientation:self.interfaceOrientation]; - [mMute update]; - [mMuteLandRight update]; - [mMuteLandLeft update]; -} -- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { - [mLandscapeLeft removeFromSuperview]; - [mLandscapeRight removeFromSuperview]; - [mPortrait removeFromSuperview]; -} -@end diff --git a/Classes/VideoViewController.xib b/Classes/VideoViewController.xib deleted file mode 100644 index f7c680281..000000000 --- a/Classes/VideoViewController.xib +++ /dev/null @@ -1,919 +0,0 @@ - - - - 1280 - 11C74 - 1938 - 1138.23 - 567.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 933 - - - YES - IBUIButton - IBUIImageView - IBUIView - IBProxyObject - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - YES - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 292 - {320, 460} - - - 1 - MCAwIDAAA - - IBCocoaTouchFramework - - - - 274 - - YES - - - 274 - {320, 420} - - - 1 - NO - IBCocoaTouchFramework - - - - 292 - {{1, 418}, {108, 62}} - - - NO - IBCocoaTouchFramework - 0 - 0 - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - NSImage - clavier-01-108px.png - - - Helvetica-Bold - Helvetica - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 292 - {{106, 418}, {106, 63}} - - - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - stopcall-red.png - - - - - - - - 292 - {{211, 418}, {108, 62}} - - NO - IBCocoaTouchFramework - 0 - 0 - 1 - switch - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - 292 - {{233, 309}, {80, 106}} - - - - 3 - MQA - - 2 - - - IBCocoaTouchFramework - - - - 292 - {{6, 387}, {28, 28}} - - - _NS:567 - NO - IBCocoaTouchFramework - - - {320, 480} - - - - 3 - MC42NjY2NjY2NjY3AA - - IBCocoaTouchFramework - - - - 292 - - YES - - - 274 - {420, 320} - - - - 3 - MQA - - - IBCocoaTouchFramework - - - - 292 - {{420, 0}, {60, 108}} - - - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - micro.png - - - NSImage - clavier-01-106px.png - - - - - - - 292 - {{420, 107}, {60, 106}} - - - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - - 292 - {{420, 212}, {60, 108}} - - NO - IBCocoaTouchFramework - 0 - 0 - Switch - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - 274 - {{308, 233}, {106, 80}} - - - - 3 - MQA - - - IBCocoaTouchFramework - - - - 292 - {{8, 285}, {28, 28}} - - - _NS:567 - NO - IBCocoaTouchFramework - - - {480, 320} - - - - 3 - MQA - - - - 3 - 3 - - IBCocoaTouchFramework - - - - 292 - - YES - - - 274 - - YES - - - 292 - {{8, 285}, {28, 28}} - - - _NS:567 - NO - IBCocoaTouchFramework - - - {{60, 0}, {420, 320}} - - - - 3 - MQA - - - IBCocoaTouchFramework - - - - 292 - {60, 108} - - - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - - 292 - {{0, 107}, {60, 106}} - - - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - - 292 - {{0, 212}, {60, 108}} - - - NO - IBCocoaTouchFramework - 0 - 0 - Switch - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - 274 - {{360, 233}, {106, 80}} - - - 3 - MQA - - - IBCocoaTouchFramework - - - {480, 320} - - - - 3 - MQA - - - - 3 - 3 - - IBCocoaTouchFramework - - - - - YES - - - mDisplay - - - - 10 - - - - mPreview - - - - 11 - - - - mCamSwitch - - - - 12 - - - - mMute - - - - 13 - - - - mPortrait - - - - 21 - - - - mHangUp - - - - 26 - - - - view - - - - 32 - - - - mMuteLandRight - - - - 40 - - - - mHangUpLandRight - - - - 41 - - - - mCamSwitchLandRight - - - - 42 - - - - mLandscapeRight - - - - 43 - - - - mPreviewLandRight - - - - 45 - - - - mMuteLandLeft - - - - 47 - - - - mHangUpLandLeft - - - - 48 - - - - mCamSwitchLandLeft - - - - 49 - - - - mPreviewLandLeft - - - - 50 - - - - mLandscapeLeft - - - - 51 - - - - mCallQuality - - - - 54 - - - - mDisplayLandRight - - - - 44 - - - - mCallQualityLandRight - - - - 58 - - - - mDisplayLandLeft - - - - 46 - - - - mCallQualityLandLeft - - - - 60 - - - - - YES - - 0 - - YES - - - - - - -1 - - - File's Owner - - - -2 - - - - - 31 - - - YES - - - root - - - 1 - - - YES - - - - - - - - - portrait - - - 5 - - - display - - - 9 - - - YES - - - preview - - - 6 - - - - - 7 - - - Hang Up Button - - - 8 - - - - - 14 - - - YES - - - - - - - - - landscape-right - - - 19 - - - Cam Switch - - - 18 - - - HangHup - - - 17 - - - Mute - - - 16 - - - preview - - - 34 - - - YES - - - - - - - - landscape-left - - - 35 - - - YES - - - preview - - - 36 - - - Cam Switch - - - 37 - - - HangHup - - - 38 - - - Mute - - - 52 - - - - - 56 - - - - - 15 - - - display - - - 39 - - - YES - - - - display - - - 59 - - - - - - - YES - - YES - -1.CustomClassName - -1.IBPluginDependency - -2.CustomClassName - -2.IBPluginDependency - 1.IBPluginDependency - 14.IBPluginDependency - 15.IBPluginDependency - 16.IBPluginDependency - 17.CustomClassName - 17.IBPluginDependency - 18.CustomClassName - 18.IBPluginDependency - 19.CustomClassName - 19.IBPluginDependency - 31.IBPluginDependency - 34.IBPluginDependency - 35.IBPluginDependency - 36.CustomClassName - 36.IBPluginDependency - 37.CustomClassName - 37.IBPluginDependency - 38.CustomClassName - 38.IBPluginDependency - 39.IBPluginDependency - 5.IBPluginDependency - 52.IBPluginDependency - 56.IBPluginDependency - 59.IBPluginDependency - 6.CustomClassName - 6.IBPluginDependency - 7.CustomClassName - 7.IBPluginDependency - 8.CustomClassName - 8.IBPluginDependency - 9.IBPluginDependency - - - YES - VideoViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIMuteButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIHangUpButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UICamSwitch - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UICamSwitch - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIHangUpButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIMuteButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIMuteButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIHangUpButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UICamSwitch - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - - - - YES - - - - - 60 - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - 3 - - YES - - YES - clavier-01-106px.png - clavier-01-108px.png - micro.png - stopcall-red.png - - - YES - {106, 60} - {108, 60} - {107, 67} - {62, 54} - - - 933 - - diff --git a/Resources/add-contact-actif.png b/Resources/add-contact-actif.png index 2a3f3f6c0b692118418ae0c8b40134434d758730..5da11546086d1908eac12c9caea69ef86b311d4d 100644 GIT binary patch delta 4670 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 delta 4066 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 E0e=*Id;kCd diff --git a/Resources/add-contact-inactif.png b/Resources/add-contact-inactif.png index 812fd0aef5004574e09602e37c75796996630069..f140e980b96cc232dd8a5247e5f237b97123783a 100644 GIT binary patch literal 2002 zcmaJ?dpy%^8y{Y$d1gJL96~Sk$dL0C)`VeZUfP^SrUyB_jyad6u+rmDiZ@1?YS~DR z9b^v4*&`mNC~qWZi(!V@_WbJ4_mB5;f3EAg@9+2eeDBZa{@mAfWxKgLLcpqE5C{Z8 zJK3KDA`7rvGE#s?+=o(uAoV-O(HLe4-*5Glqv(DbUYf1 zlKw0Ol~&V^Q9?!o2oY_67N0!Ho?5{j3^~%p$&k(bhm6y=-_D_=+$TFcLoC%lc?mu= zjkZ=MQ>cUpSso_+c4n>Y1a?o{(;`eu_TL3l-}uF`Ztdy|KF|f;>il1uu@P;L<01;a z7WiYF(WxhwVy>p{7lQm4Pn|1UX(lnxkE>%+&ma*|^`$nm)aF4s^f>B`lHnObru=y& zMrZtspwcqBx4tehbWg|3_bu5tW-{=wLUWIf`k)fj92VF0JKErv(n~El z#C_q8R&oV<`jcB4Hh6kN64!Ok-Jx~3pR`H&qgI``@1JLE3f$P*AC?tuo1kLl*Ig{& zRIhFt+>0|SO>^&>NX?Ppn*4HCmMwfa5%>fVXUR*|P_a@|!RU3KNPBJKY^nfTd-2dTofe#?aT)=? z3b(BA%%ihZ3yO~6*@49PU4o2nGLBii$|nyUZKdx#NJb?;k#Bu=w$l34Elb|@g&BUm z=2oB6vZqZ|ZbOsmnCaQ$cy+TPPqO=7TySGX$;h)>PqieEKtqOuLx649O@c6_YEkAw zid|wdruk5SZB_)m1u@e?3cd7QJ3@fi#@on=6Cz8WvC93yFsiK=xoPs1FMQr|yF$dD zJg#j-757`;X8Rf#80Zp>5;EpMHEZ9#*%v4-Llj``k(uD5co0=wMhRpqc>tE~CiXwa zOfbM&>-8QaiSh0^A1?t1>`TZfwLbu#DVzJ!LS!w^*Vv{p_k<&*QTh4xMyvD~4^j2n zV&^h#2uw5av1@DF!#JFL|JF!2!%(;}_q;8dP*kv_FK1U7Fi2!!`~ zAoYf#tKLf-hJm_~=^SXJI_gy0Gvemaf$98%+-*BQ&ND=r`T7HVP3SkV&yXM|MK6Y)f?1#dA*`T&pOTVfTyldXD65t#CT|U>>ioJ(I!T z+S&>YyWokDYcOwHcsZxUK2{L?kiXkkLF-m#f5gp%H(cS0J;W@p(m^6^JZM&PxlH72 zU0%e2meZ$IuBjnBu7=;Dh1=m`(M;_4%Y&1y$C~b*g7L3J8&%Rdlx8b)ny@ z;_|l3Yri~%$BK9Yw(?*7=PM7+cGh|NA+!@eUw zM~Dx(bSuhpjfKX-j%~r)DZMYRa<_P4u~B5yWBRn2*@5w|pVgVWwd2EIRv=Pa@v*KQ z?GQr04z>%2BrFcuyNq1BDfHXLe;6?6aUgH)be#96ypP6qDKvV<8&wlY`>vGBHwaUc zUVHC$M3UJbZ+^$->%vXmT{jj|{YPgXm1rPIJ-PAYZXJz^vfRQZg#|JP>J|B1>^pJ< z{|c_1L<2a>2s~tBasBAOHp}U5`H#l3&(y3fpGb(?y?M%*v0IEji66#S&Iy)ZeEq~l z>V!wEIq`4kB1)Np6p`ebg^~pcp?bo%qjBr|EO}cVr>}*TThuA$D5tEz< z0iJL?u|^c1I@+lC<#d2?TDqHgaTs9|>HH>6|7D&;HfTqpKOE}w|L{tlx%QfKV3N; z1pVia`fA^i9>#-0Vd*sSP#EYZrw(+l91_3*$v|ES7;s}*{|5s!fIb5>G)opKL%F_h TsCG~nn7$x1%GJKcHsJc-iQ~s( literal 4662 zcmbVQX*iVa-ySAJ_9cxaV@yJr89Uj=44JG=_N-$DV;g2h_ALq_dx|0qQatt&2~S!O zA#H=~MYhPA?H$ka^t|tf|MCCu-p6rY*Y&&Z^Zaesd40K)EX~hxafomL001tGF&fL5 z2N`eLQC0weY3oMg9>V}p4eh8GNgmW-H!=Z$#FKCYFvic#lYk|-;X?zv2-*Mu(1U1Y zN3}CE)p95KDY_kE6hr(17;FGQTQ4NQ&E1DU1>*>wM1LK~a!VToOvLLzY*o$RW&tRI z7tuJ3Ot=_kZsi{4kk3&dd^wB9RGTRYkahJ6sJ8RzoNvlvUK#)#brTa0DC%SArpw6cFlK%1T;rIQX9j z!iYx3duUZqHKe+Mfq|xy(QhuspF(x>cPIRgOJv0Thl~8LTrCut;6^2p ztw;=H^cHKeP{z=kIFK1Tyh50dGVm`GNoHuNLt?#D{BW zYG@iEkO<|!>(($*Q$lJetE#D}svuNVlpz0b@&BKm!5GQF4#n|*#PWNKp}@oCztU$I z|6U$~KjX%b8CN4B?Qt>y!0mxSBdtQ{xZQ&TJzy(904UDnq~Okk3(?Sx+=-poc{}!c zRlu5tK6ak~nu=C}ERKF7>F){^W+v%B<(uu_6TGCRGMQ3$1cO5xP;kx1uUm%*sUnoN*rDyyJ{espka8oS3t|(qF|}mT&lj z4zfBE=k2L79`8IiQ02j@IXjwLJ=@EI58#cD<*t-SceouDh<-fHRhKCC6gQ8|98%u@ zwVsTJb$Gk-9u0h4=EwCk>Mi>PMEP4JqjSwmJ~iXVL^ zF(Ek)?=nzTW>`Vk78QoW*^}ROLSg_onx|-_-Q|i|8~c&ajbC~7C0ee=Y6=W$W)z ze90rB%h>|CTWQXQ7=Pbl!71#oi{`6W#d?n8Jxd}@TSHc^NFy4T*Mcf1&CBu{HizDo zTb#=pOZO_xcR1_XnJv--V|D4P=KQWNLQ1^Zn5-OhE#ZPS72!gw$cC+x|)SX8JNJ*X-mt`mKCf(6dQ z(qhk*27UGBwec|Y+{2FDw06bU`xkR3B1qu^Ka{X}j~`*|`%oM)3VTS_X?dW?&^oWq z0&aI}MXJ~LbJ(mHr0X+ip!}8ANSVEtP4{TiLCQo&{l|c3Mc0_)n&1ch>%4WI`s2H) zY@Gf#n^7N8p8z@w#YqW$Vary>DO1J_=M=K-q7f z9r5_d>Kpj-enR4Ue~T}VDbiYpmHQQd)kddB@|$Gk&q`e}7tpRo8}HDYCD4oZ;$pS} zlDIqo3^?mKI0)x`vErF`^bZ+pzQ=L&>%{{oz7_DKA#X>?SV#3&LnIRE7{FwRR+u$3 zv`oGvZ!JZqeK+++G&MF7wUi^HPe{{HlG_N9^UiU}`eehb_-cS;5id6C^~uTd{R2Ue za#hg#V_V)QR^$04ZKaL__cZe`Kj=WZJ3>X0auun{yag=Jqy@}9dj+r)${PEj7@)GJ?8-Mxgq^^ny7h{{i>pdfq^76 zJ|4Fz!L}yK%P&Cxq#0A+b7?*-0uPX^l~LXRmCdY#9^-t@dt-2V#G%{g99#IsC1{?q zvHuMJH|%`p$Ut_eTsbAz2@zaO@ZE*BT%B48by{Ruph0-FU=Ja{<|vXs z25QWlegw>(34q3ye0r{i=YIZf3lF~f_~lv7O24nePo~?0+hK!a5bGnvJ2dF_A_a7_ zBT42?QNJX}1lPQ8xAe_5rQp2xH5BpmMs}8=i3cBtSmqGNZM#2(Y8^`!^ewNZJj@X2 zu2mIHA97!~prW0z!-Qpt zrj3uios1vs|EK>?Vwl@-)TR_&T{zXoJuxv>bw#3Hd5GaryN*d9}2TJBo9 z#`~Xw?bZAF${BAP*msRz4ji|vu*%-?3Ut`-K(J?`Jk8&=<|{W%j!U~FpMAxF>uwQR zS>!Gx>Stbh>fG~af{W^V#LGi-vmmYQ}?bHBxM3ivFwkJ zxdnd|ZCbgS@3IgdCq-SyS+!y01Ub6x!yaY(|JuB|4VCUPYw9f(^7$@gM z8gJA3%M}83(Ptzc(dm~jYn`WcL5mc*eSV7(a|Uzu)v?sm#e4$2w+gh6Sm>BGsGh&C z5p*H55}vbo^W$!~pz6L}g}o_0!svCpal$E8slN9#gGrtX7wC)PIgUsz4G~&LK&4_s zZ9a<`w5z~=>87e_Rz#E@$jEc^0wn`}EM@349QPsK^3`#(rQB3?DEVzAXj!kQjm2x( zF_^AV42bxk#^lljf^YI4EfP#JDy?#0x1L*mW-U>&Y`K0;;$C#-1MEB244G1We$%WI z{O&boHE~>JXMJGyDJ7pm{65StXH~8QrF(2g^nu6S zUb~eR7H-jY%H!2Fn-lyo^Z_-O)`}Tnd&(xUkty)O&;za{r}|cn_8jziT3X-Ghh=XG zx5mPNxF^+P<|ceKu6(tBh<7mk;Y4%T7*q=mv=t4_pA_oj=>5_W*$8#1qq>~O$stRc z(=UnH1T+}0<2Z7Ag)Uu0mnb+6=jkb*H!`VsXa^}xe{^LET?f3_TpUw=3Xy!~wsnKm zg?Ey-)@j)okw)!8{1vtg$5_y*)Q0tj07|^F(WciMSLIY{AgC++#Z167acDBT$IJZ4-E$+3OL5D7Qr(1H4%uMM55`e* zjjPR|jP{#(>y9=ii{7}@KP7%SKAf6zVftQFKegIsS<~~m&c(RRM0T^3u9>^z^AG5hTu`+CYeGBZsqApAI@eryC=r=kQHV66Z6q3}sTbF+uQpCwEIb*p zlj$!#M*~6YOlVV6?r1VoTXkiZ|L&w==*_k*QzPE1U92%Sv2&!4)6qEvxL=|fj(yR! zO`U62zU2!EL)?WHMpAo9s#?&vJss;!VfM}Lr7t@}=2gD4>@2($_NrL5d;%>W{r!jW z(q60dcGmau8sNV9_Qp@mxkYZJ81v(@SzTbPK+{2h*#`HZ?f!067oYu|d>k0FNYBk_ z{1$|vg>2w#cb(KZivSt)`jhm}^`#Q3tvbqxH!%=wc=7f9wPDlIz55p-8qR(3V;Onv zM(pr{)Ys zo$}Nj0#2GntKSl6-KemI)EDac&9WIUI%KNq+^tVWwH9D2CWdCgz+~ga=Mw{Gr>xk| z+NUkO{^TkldlJ&f^H6k{Yc4o4{M>PmmmpU(Sr2x3^Nha~iLEvS%evD{xZjo^YXl7z zsQ%fIZ=@z2B8w?o9F8x2$;2!pW2D>AJP68S_YB?xU}<{|=dd zO>kO(6qGxt6KT)TMcwvnceGtST7PVz*s%YeWa;TQ>%;eg`ky)PKl=_Lwo|-Eq=P1Q z>9hO1poj5 diff --git a/Resources/add-contact-over.png b/Resources/add-contact-over.png index 8bc6a0fac23d3f6b3a9ea2476e836c9ddc50d9ea..0230d7e768d341d2fee94fc95245f5dc79b59593 100644 GIT binary patch delta 3663 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 WE0~S-nm_#%L7F%{wKA+t*#7|fz1%SX delta 4034 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 Se}DeqM^cnklPQOp1^o{_!FQVg delta 8809 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 YqF|c9cYFBO#b*P+2xg*Jse_34FUYh11poj5 delta 4456 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 GkN*o?8BP2E diff --git a/Resources/backspace-actif.png b/Resources/backspace-actif.png index 387b1ef839d23867c7a610737fbca04e0c9cda94..b19ba4fa147728f365a4c199a347dbbf215d874c 100644 GIT binary patch delta 3429 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 b;v8(l$geYKGqis3lLq0n3^gm&?L+?$&dwq{ diff --git a/Resources/contacts-actif.png b/Resources/contacts-actif.png index 93088dd3e2feca179849a3174c5e38a3967500d0..88039d6c546904d99f35af7519d16565e82f5468 100644 GIT binary patch literal 5070 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 V;&sTWVE$kO^mUDK#TeVLe*r!B!D;{i literal 3684 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 diff --git a/Resources/contacts-over.png b/Resources/contacts-over.png index 2ac5159cf3b547891b4723a9aa0274f3fdaf6f7f..1cf7fd7abb726e62b81cec6ca1522516a621a1c5 100644 GIT binary patch literal 5160 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 ZQC9+SsOIBn0?_1w40TO(-fG*U{s$}YfT#cf diff --git a/Resources/contacts-selectionne.png b/Resources/contacts-selectionne.png index 58ddc4b7d853f9a7f259a34c4bbe5c1f7694943b..002335b08b6746e2a7a4e47885a584e20155d127 100644 GIT binary patch literal 3291 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 literal 3538 zcmV;@4K4DCP)APLLbrxsFXYe zk}3~{RLKjDlD@={Dy@Q{f(k=`gm}$n!S?#LGjsYdJF`1`v5mc6dp!Rq88o|luHW}x z&e=1wOiBrYKf!4Vd`$kWE0@XieG2yP??31wpSQGwh1HzvHn33knyt~m*J#f5{ZBr{ zXc|`u`DJk@Yc#Mm&FD=&nNFP-c9&Okis? zRPElkYP`2dg_8?%xd&cS##qBG7Qgm4#90-hUaG4C`t z)Y5N_0r<{$i-ydNts4-DL`oKIibm1cxMtRtH@3DS5}Df@KeeluE!y%MwRH<$5(xpu zasn2O-k`+RBVPscMUM2n|M3P@xd4;@>c_%i5l2hH@^otG$|6# zHyL<1BJr0Ift2a}@%uLBKi@Qe;&aiZns|A=4wV!6or#n)&n@lB8A815`e}#Hr(lc` z`TixJ6ZyU+pZn1Aug#SAF>Rksd-Jhx3_c|P;v_3;U0&SgWsE`kG2wgnZuy4%;kZYq zFY|~u-;qC}v$6=_;w1CzH+=Rp0)3hAy`2<`iv1}Qcy&a0dYR{2@>3@8hcA=`3BWEp zqI>!Iz7l}+?@}*i0>8Pb+*1hnIK}bv>w&Vb7?#880XoTp*AoKo-sR4>bos})Ms$V? zlML_O<(?)zcaaB4&ca4dMBNAQe?Bl;S!|>r4!-r$s(?XCr|N7SQV?l}MwZe1y zvwc1mmDpJ)@#+XK>o)On!69Gz$naxT5-+be7Id7eNs;*7Is>o9y?=(^mj^h1wRZ96 z_+HRV#H#23r>C&9-Yj`{&b{K9sMmr&vp4qu=|}SG%179iu=JGm=l@=lugKpLmSw-w zW=n_;aC!m{tK}!^i5jnwpY{9MrJfJc{jHJm$LLse9)(OZATF zd}5#6KEapSK7nFBfnq+vSL9a)ssMJ>arD$P#6s?)PiMy@&W=gEe`jUf@7xw*xH`3b zMzO7i;p~`Pdh#nV#156=V5>lcmmaMBck~Mbsb%`bQZ2x+uf^)*!E45{wcin8*mY6& ze$3xq!|>9^?DK8kza!Cq$3%R_@&@f8hTR&67O+IHZ@s|b>&wG_Pd!6Ngkdlxmn9n7 z?JqSi6^Z$(0QR+5O-&fUforG@4khng+7SYhSXHQ#<{0R}CY zy}mjn7Zl#wLJX?7_wiSp{2leyB*oK~tDg<=w8Wbu)@KGr%>vT*t`*o(UzjuurX-Gj zZn!3)LuEJ=Q!=qz$G#Q;E#M~XorH_ z<-FQCFW48=PL|V}5 z^MnDXF1z3RH@L-Tdyn=ILqu5hsRB51GdqU%5X0e^;)unz_72r5v%85yO5kMNaJ8RX zzm$L$oV}iB*9u69c?)34V}5%mJ5j?ka>4EF(S$?T@mmH?C$f{fy_REti!~{G*9jcB zYFjCDS;mRDf&M#|RjLB`>wQ5)1kh8@aqO0rRUf#TMxQ3orwI&A$(*{Z$+w9=J8I(4 zb=@V-!)*byg{;pUxtV=$?>eh*69#bTx{mXiM|b6x>C-q)Cv;c)c7L*oAb09{_VSG5 zT~q-a{dxdefT6dMyXIy#RCI5DF>B_Ydf`lZ{@?~iO`OWS)}b=AhYD|Xyr18iOd*kbHZ89G(&iqEC8`|N6VKjcVN^+Z`8_H zv;f22bpn7uJS{PplITyGCFf_3gl}nL{-@)H(~K6FUpqYw0?k2&^W)ZFa?6bCrOOYe zCE5gY#*P6x+65DEd$@yH!9J|L3y!gKv>}gie)4&~J zX#s{E^;WKNGH&3+u)cCE|LmycuC~_-0CRWjky?&zwH$q#!0wCF1@3jIMDEZQTH4#B zcQp!!_`#Hkfl(7flhU!a?U{bhH;l|@OvP72I!+8*ZFH*KnJ)n7(*y?Y8uO~JA_?C| zquK0sPqQ-TMA!p4J8B|jSQhON9OknoL)lfu5^Pat`gL_m;-#T9PTh7VaP2vLYtC5Z z`Ej#oA9Haq7Qj25RddeGu1109)+tUu;xiKcNdtfUER6$0*;T>zy7|Suijd!*%x=E) zX`-mxbk@V|*{tc*ZNnL)U4BoqC>qnBTd(BA#`1h8(2-6z@0aY-3yG9_HmPqOn4@4M#(Hd}wIdUV7 zOB2>4HV2s_wEm<~;D$@R->GtRR$KK|3x)?GR{pUm%(0=0p+R9_nIyA8VR)#TYU`rA=#$oz+&^O<|6k(-I8|!_!R)o>{9P$SrSj?2ELsH}X(TVf)pBp|hGp6%603 z=76+zG9IrJ_~|+Y4GMGSAZ^YqfQo&kdu7tZOG7jG?bia(g3Q|PT(8U$)AYR1Vc^IO zV1KK%DRMAY_UFp7294a_5PWpf!;<1s<5oh4qa~y>*!D|lKYw!^fedu zdsn7hTZrS+jLUyxScjGo+O}GbZMDIImCB!Pq@DIZ8a2?@T-g5KZyVTNCo(&lyucIL z^^6-U%<=&ssY{$mn)rNL0*oOo;i%P4pkBG2F4)u0x=?F98|2mx0yikuVT(`3OdPwV z7nHND^L)x$59jZC0GB3BOc+2~T3gBgykp?zw8SUl+4h5s;qs)r-*{ zZl6Hp6DZp!kmVDId;%@?2(;8AklQB^`2-@LKwrx(^wr!i!wl!@VcfP&PKKK4Oaemy2sHl~zGM~iC zT#>P=A{FE$;GnUg0RRA;l%%NAzh}U|I};Kd002UFamfEiV7Z8CxG3A3xwsoTnF54N z?2SwbrECq&O_fXyO*|bZOnCtS5Hm{^4Hper8E#{HTYAI)@X&kMI{cFc0C)vF91M-E zOjk!#S1^5YhJ-Gh? z*qXW+5_;I$*g121@DcwPF89Cjf2J9T3IB`5#hQ=!zm3w6RUj0xcQPepqi3WuW@Kk1 zWM`shVqxXr;GiXBW@KVyU}R=sVy0u_;AUawW@IG%Ul;K|ZB8a;+)AS2|4Y|DijUaB z#l?Y}fx+F~o!*^=-rmWafr*QY>pvLG%yj=a=$t+6Tns(v?3_vd2SL=-+1Sa_!Ntuh;Xp~ z-(|T)oJ>UV2l-USn4UH}B{zLy~dH&m5QBx;NH&YXF zCwp7M|B5fS<^MsyC<_ONkT@GV8{>cb&GpZ8adt6gadu%AVJ2n{;{PRU^8Y7h4F8N_ z_)l{Df0E^Yrv7E%e}?}%_5Tt7yLe3P{#A_AztRvOzKsO{q_3q!g;YE?idBADqbQ<& zUvFhhcqgrq+GZ+kh-o+HAApE~Z7&fkIS{>~=$z#t`dmso7QqM&r|k7c*eAw51L1k7sU0HhLlaCYqv9=2lieo-;{ULkXy?u7;JN0u2>r)&z;6O^tS z&4MG~E&&1+K;KftvM=Qh#N~pN8OvT%7c-4uwFtbMpn?HSe76*B5D`JXirA-041xg>Ie$w@Lf#Tw&$ zg0SJxO_`ySEV5H!%c$*(heq0x)1Bbg=(G`~5JZ^~+#igS(HN_q;Shzod67p$ zv8YK)RPYujDwXQU7!x;3*%misi$twK(lj%k(L9XO;7-YV%JOI|#XGgRF?`~@F9J+a zV2BJfg|ZRs_B$^6TZ7y4Ha@AQ9(2;TSoax!AOIq%AMH8Hd=|)^M*DyFqE)s@-7BCu zBEZ{pS72fr#+d(0*>TEET`Xq(ItF(%-Wk^<{2IX9P;A2DLnHrKV_Gq99nbQBb*DmTsGD8 zt(cU`S-HJHyw6RqS~Wuymbq?cWedFrz=yH8++E(TKAU-#W5S7;$Q7`a$H>$r#6ELH z8TCl=rHGMS;|w!x{s_;&mo1XCK(5OE%!m5=*?nX*AM}7GQa5hHhD*O3_OWqnUTLd?+sB%3!pq|tU)2-8s5#jB-pzf>HMv>RSj2^4@1-R ztT=GDIwgAg63m>WAa8{_GF9nQuv5h_G=AB05JyQli$$E)!}Dh0#R{bibFNoea#}Ek z%EGB9A-hnzS30Eo#td|>P7G$dW|6Zho?eC^tGz%ESgM5`nGXljI}AU%?85CT5pIiC zW=aOQoux?<)ff0Z_9?TKzKWC}f9AdA5dI`qX4)W%EXZDVd2xW#?CsZ(|_?WSqWY9-n5Ns9!4P=0JV6dCO;B3{qfDtu_m7W8 zBe}w~`A47<{n4G@m?7=otU`9h9A^`{(+CVFJ6=UMcMALHX3#*_qIJOz6~P|06sMaa z;6WJ^_S#})5J4=DR(Q<24?{)A^?U}T;EiX|_o+qFnxBg|G60nt3bq7RSf0I``?G!L zdY?&FDVahn1k-mRoKm!c7ATAo;$6Nw*nlx2=-qrYh8QAW+qvwc3DO<$Z*;GE)XId^ zQcJf*8}_VA@~VvWtJ&Ay8xEGPIw8-5QbQ|U8G(#v+gDwsPbv-~Re+<$Vi`NH0I>-JZ(RL{`NY@~3rxrH-2z6`*U zDqzoFDhuZG=6ZpR{}Lb>!9p?lh{YO;9o3}#`3MZ^mv5l*ar}ET-w#Dh9{05?2n0?F z%-l?dYH}5cr4dV}-=9Djs*q9c(DJJzFewnZ`*|M^gd?*v8@i-%smklUBaOE-QFjbU z>+ATzl(cQ-YY5ej3tGPh$pJ-Oc{tU37Jhb)vb$}*>=oTKHm~Upe204M){jmiS0>ze zBJ|FSR3&nqtNZ(qY<*4(eYL?TNot!Ya4wfvZ_}zDitdHcmbsTE!&fJ5f0a=_ z8rJ1b6UN`)#v5_tBmk5}89+p&z?j^5_<%azO{>wj@pn%(dY=U$H}`knjw_B~P?TaX zvjiPV)n1$=+>EN|Ne+EACUNQmP_j6}+;3V(D)-?Uxl8!FV5}L5NC&ZH#r7>|g+9~C9VPd<3k62WG`fr+_V%<`KW?|>Kr4CDaks76+CxigN{6HgVi$F8R>S|hmxomTZ*gAbZLr0 zL6lAgEu&F<+=$e&hMUaV5cx`0W;AMU{bDSR3re-p+i)*n=PNMW88Tma%IXgC*;O}D z=G|jyFoJYAAL}$wjx`n?G71=`?$k!dT1%++1_;=VkM1RGrM00?Cs>FGr}`(HCoNQ{ zG0XSAFE_@%u3+|AvZ%@@h=pQA?t5@-M=3p&SQY*#uGCP> z7d9m+4k$|~Wx^O@>`oMF^z^^q3v$HcI;&G?`bn{eH!krJB=Av&925G=i9&AadZnu^SI~t^Cbg{hTdi(V`&+a%#nhnA6*YeEu+QDOncD6pq zIzAo#@nm0pS8IjMdSwhT0vX$f`(Wnr&zPBOjgB6F$#4&s} z=?e6D6+g|TW|7ms;4aE*D>(*r0$7ZuUtr@&WAIi=miacf1Tz^7nP%1$;AK}nX`Amx zmVtC!uFO*Z9Yqdi0IxCWc05}G$$MPl<}yQ*G5INnQeWj?Pzu9qHxT{xs8^eskgvJ; zvB4f=!L;GTY6|?DE-QzMn(k@f+X?r6P>Bc3gIv?-fIl~uS;B%54f$4Oa^HS;VlB*= z0b$%O?`oIN7CqTeZ&itykR@BBp*cLHK&fh>p%KnG6nHA{=$y0|cWxRc}{Pc*zcTskH(366^j-FQX{f%QRes4M{<$;LKy*Ogl#!7C03>CaILbI>|mn#Vg z78EtX^iG7sW)>i57uM9<7;rs4!wJqc^0OG4bHh!wq1W)F3D%tjASB&@1MT>HH_`AyF=0P6l=+D}NQ$NQ7v3!Af)~+?YjV zUdT3!`8uT2P<0qGw-QOQP>8Q%MFVGw3)^--wBjf&gVWoWjd*+P;+o({KxCfkRi7+3 z@(Wf_#ZnEOpTWuaQGiZKx04acgSbi%+i`y%DeP zb~U5SJr?Nb1?FuF?#tsm7lJ>!E3f<%a#VM&cI)>#ad?~kPYoi*TGHC=Y`5S0*H0YM zr}5qvmcwE0{7hpG$rRZ?n;c@v~V0_+gIVHgI(;;}eB$?_k<^z=ie~Yqcz7q?B zOZ0ECM3GO1{JO}x?a=Rqwl1M=9(tyl2A&L?Dvq?VC?{Im>pcm*&gHr%o;5<}h zj8C%Rs?=g4sDoK5T`@dx0a)f0@;n)k;#>cEJWDwZ`wkwaBL&YIWC&tVrRY^35I=Z5)&o?KmIQULcU*}qK#@OO?-_j9C{k)vew1gr0 zAsv9eYRdT=mWR{38z)y*u<|KJj}@wvD~M_~K&yAQl>Xd=`c7U3UKrJU2Rb5~e;lVh zdmk0$j$!elSR*2)TAs#vHu<8Qg*5Wq!CVM;*#{ z=UI=8nI8^;?+1J=dWmW+x>sSaBV>X)e>gyduzh<~Vb|F90!2WjHXg ze9;9#t3ugLCs9@ZK91BniE$&3;f;kl)QENW`;HdwOdGLi@dyetKKdYQz58DmJY;T(t95~7?FpJ}gaNcHBOVMgK)^Vo0e z&kLM&Y9CJ3(D;{*)4Xo8p=C*qc-f;b!D&tv%xe0XA(-$3AR|0oY}~sTCoK3&`ObYu z))OqTcp&EDo~lJali~@@chG>u+B5`Bq^uX+Ica`GuN_D_`gR9<|D7nFC|eYjyZdl; zrRuoZ2Wo;EGahDNv20t@fN{VQMCI552=+LUrltur(sZB#38xi%K1t>vZS|0|>G`)q zS3+)H+iDWpfMlV&HGrBT6_2<2!LRnrk=DBdUt5*CVwxNLJj{SsCT#g_F{oJA-*@qxF1MbePdpeeI+Ix z)WE;b3w^tIj+@3B2n%0sJw!33__PIoggJh}!K*c0z&OUXeEZ(Ua?}a3<|4lZ?o)_t zW7R&hll__bUwAB$wJHcQ;F>3-|2`ac|Q*Z(ZZN(E`y_@V~C?KH%~v)9{rG z-q3sLYX{2w;D3{7p~<-(?P6HnDwYBJLM?Le$^`%nbL82>P(9}UAgA)L1k4R{bYpR; zUWcJgDG2M#SAVQ}vGWPvm+Q&bP_RwaT?^z`_Pb2l@jU3r@_g(K=dF4?t)ntQ=3Pp! z*Ttf-H_mVKjJuLd%$M)S`l)LKL)0K&%8or6NJjRg|aO z;-Nri;Y96x2%)s_WY-SwgG5sM_t&*01>stGCnz0J=**qcFs4+q;s{nmO8%;_2H=Yv zSW5AheBOVpsG~nkA_5U+bLWeL&BU)kB*$&sVcJp__kZ2dX=BS5x_UO(6#u!iwXcosBWSL7v z^GJKi$R%40GH?>oZP4x+b@juLrn4)!cc4?DMQmy@kQbAQSGY5vcYeLm=S}vvF`)nJ zwGRLCnxo4()yw9SQEmvZ9=NI@`>2dkMv1;48KW&QB{MVzwnEZxg8xyB*Te}a7jwfJ zT+^vW(bJ$EO8PT!rNNtci`>(43mEHgKc0?3jbbO550=t)-JM8s4orE}S$_jYBFsXZ|;} znR>|qxk{AwZGA>CW?0gYE|o5|T~g)mKQ3r^AUj*l`wUN@3}J{X5_l+&d1itUALk3p zSHFyTbjOROLE{TW^B{pJyFI~FL%wZ=O7#Lh4r)zj6*y$4yX{n=m}%{~K7VRV{&0V@ z6NG}!GNLI~q)XdrgYjD$>eXXesbl4rc6f{1KjBXgpiUjY7PvZ~DlAv2>ctQ)V}(G& zN?^Ue;#MnTLeEVp$PEmeVyJ1fAgemp$uDey)vcx&-@dg}DVBj#`{!rGaxxxf3tFZfxw(g&`0zhZLI zJ^tc(VPfIo;j#99M)HnrIOLQXfS(N}hyNV~4GAO+Ol+kBhA0U{RG8{7D7gF_Unxx` zoy@MP8i|f142Xn;tgIvyuFmf^T?oh-X0RFCN$Z(gAG_qe`TI8evE}`*1-%+hNwU_R zo4w5Gdht2+*?sH1`Rv{Ggdux2BLK38+MA&dh}N6+xdXc$#cPL+eH9W-*QF8Y3d=dG zFTx4$zb3i-#Nt8dHf-v5y?JX|z1SfzJLS9F^3HvEV;2TuEcxk#+yf>NyD?)xXm*Z5 zOo$AWRxND3RegO1zKieWFRev&VmTg(;yN$Sg;zT@RWo+gm zionS8cG3;%pS>ApS-Eb14}0-V>G@3disu??GA`St>>3$5v`xEiR9E9}WN+q)!eK8p z3eCHGEHR^b*M4F-zkU6iye%%iH@f|o(-3e586FD*9En|h)3fJ&)BvylHy-C$MLOC| z9G0eU`EDb!s6s>M!z-5p(x?4mJ8j6kZpU=x(S(HUHgYY42zbnF@|HoKAn1!?RHz2b ztr=xnd{1)4*?Ydnei2P0lLc?Qg>@P}FAMWx?e^OS@@4na?zO1EFK#WObTn{Q#s$uU z^bI&9%?1R)a%-*cBbOU;m&>8Jh;d%hu1Q>kW(NLF&ZdTrBm_%Mo_Ks#Hs; zWco@n@=&2xin>JSHRZ9{+U?bs=WCsI?djV7*>uC~Ut39H{^TGj`M7tGETSzpEZmID zaQW}s$krfAIK4t&D4A$?rR7#&$R@6`J4?8+2Z^?;VB}Oj0)cd3a}qr4UjA`j|JKA` z0|fYi_Mi8F&zC=cREQqYIGD>S^&taYr!%cML^Qo4$Bx!AmPYlH5cUNGyzo*5K&a-j zIpXYVtOkf!)vtn+qiJsM2zZIs9*lzeE$JDmq&AjeNw;W3W2n_~oKX(pv4bUlpWvz6 z1^%?ZVMoaI0=xKWIgdq*C~Ml$Q*cv9=aGz%5KjGhYPq{OzV|ZmMc3SAS!Kfe`D&`C z(+UfA-#xFTm_%`ehm07FR^1<~1V#i88N8h4QV793AI|;RAh-$HtXl(qJgUO|i$-Mx zmj4dqI=~jorsTLaj9pw?27d*RW#y!z4H&f^%XfPfd);N&9W2#hAObb{5o5;e*4i)J zga*Xor_nY&a_S;VNf2U60IqjF+}hpp)4=K_l4HRdT<{e$F@fabY0$BkyBfg7fh`eOk8&S#GklDJc?tW6lj zO#O*X%8KF$LID4}sOPE}#LJfln&|QMHwLd#s8TB*@)oi|Mt|_49xzVvybi+EJuGeR z*X?O|RwOf4C~BAScz7QsdSyiaOdqdSsDKJFg_DXuM8SRhwJI$SDU!+x0w01v$5)TT zVX(Zzis$knTq!u$g>3+Un@Fr*ln3_2|&_s7i#3vguMr}4&z z@-nU>%r!yXka{bm!lir}$+(&KnoV-NSn$E;-4f^)6KzA}C6-*ZC?oH^TQCAEqEmV% zZs?&5XWB7bG)6&c+pt-Kg&}-zy*q@@%O2J?dt!TqGq}d3kG#$%a*XW#FwQm3v|(Zn z&#?x$9Gs=_Gy`pU{xGzcLV-A)%oETus;b*u(i&siFSBY4D%jFRS!`t#b-K(l_#yM! z4SFL?I|R`WmC>k&dWZh}LOPP5R4~`O631)52EXz*)syczPiRSA`kqnbF@x)kQmo3g(#a1NwOBY2*Xu>xRGQ_~1-9+=DPDK`F zz0AAhn^5m+Y*SNz7a%YVVJ1GX6_JZVNMsx!!I++WDZ^@RZNk#KC8XDTS01)ng%;&w zFkoE#kakrPcRL1Qjf_>1>~j1Ckp)pQ5-e!rJ?$_CWCWV<*DDc~%>&Xnk1%hl2L6uk9D3jY~MlvL=e*XtCg~I(ED<%}=Xa4t4Z` zdfru}!WB4=2A0~oE~`a1qQ^|(Ya=LlGwIu>vUr|cgM5!C7wpIhf9tUA1T3gubUFAO z%6N`dtV_Wy8FZ4>=P;CPjMfMV2S!^qpH6d5m4-_J(D_8IS&QLbvq>G<)8WDRN2n;x5B@i5@dgZ4VBL7 zsxd)~VI1V^%(1D!gtAk+tO66QqhoIaB--^B5EQ^~Y&!tmT8kE$E&&#WX(Mw#jLRS? z5!@+7DnG8!?rE7ih_8OlLVLMT4B)ls9K#TohQ_zM3{Q_=H@pinpbY1liOAPwUCs@P zU>lK*`(MB;eUM$hJULrYx%_t_1%)@X5;JxWMKUdhx^8y9%)8`OJri*ZxfTgzUqR!JOVqeU<|IUS=X4R6dV}5aB5}0SiIQlm39kx&)#q(O zudG3OtSbC56+|H&Qrjmk;hr+ap^t!L(xzKFk}Y{EOWl<(@vHh!G<_IuhoIvGGvx9>Jd0aS+Cnc2 z6wTCgUU!*=JZhCaB&8U!;FG7KP*ck@$X%Rc^PHbma#?g2(^13#+2^dPHPERW5Tk^M6X^IQTT65jEz3sg^8xnHX?Q^(Wk%7R zVl%rNIu~aE#i@BeOHMty6Sa78D&=POucW#4Z(UOBR6I0Bk^sSA-y*UX95Se~LY@|Y znwU;%hq^m|?f+X`xy7Y~ODWG(_D> zPo_TC_knv|eP(hCJtVH%`8P6eK^tTDK)*-vGiZh&*a44TOR;ntMd#^fRf+yU` z;`1m4Mx-pg#fykdOTc}*)f`5y{U<_mEy8@NhIIA!Y$5&AXUd@{iF6*s>vT$x>Wo>= zof`o(58D-Dzo&+NEk=`Hs!J)BAmE?AKX>F}mIYazhL_SAXhdDBxn|lRq{K$qh(_Q& zC@14X9FPkxTY%8`@0ox}o`TloP+Fcq-(IehZF_9nX#?7=oMNcXq<`lg%0F~Rm=eY! z_DfqLj{RDUZR8WY*cjJxCKN>0BtJGx`aOca2@+#osjUa8+#;z~=piK`nNsm-M+TB+ zYMlVb$59Mwdb~{(cGF-qHTqIsfq|jz2JXtI`{Zqv)kzozPaJn+SICp3cOfB)|InD7 zfA`m{RgjvXmnV?6>=4Tc{R!Nt3tEvn9-;fdyZ}pe(@ZNQ8irftTgeU@9<)d9TnjF$ zP(66tPN;EIijg!ZRkWTfIEG6i>f zISZ-?LtZembJM3TBqJaK@%5&d+=j0EvVo4D#UA?V{DjE z^dWE<#S8u8I%EVh-zE6eXS}B%Hz_VquJzME0VRR<71Q^ZZU@$QMMtKu!|nn(#X*yP zol((Ys<0};U;CNI+ls|FhRch-o|5a*i{>V)r9!PO(4Xf?O~|I6y@IR69{t3RG-n{% zlv98vDQXW`P%44`^gwt%wXoz=NikF1#c{d%;EB!_L9dyU<|{!TWZwAi(0Xjo^1H%G zmxYpDk#GM5s#?(x!aThw%7H4F(W8rBHPwXP3$+ITvL-KQ~ zgw*ek&%2eG5j^9|=QUm}o|F)V7|Ko~F+T#0 zD(K$KHI<=Of1V6Q@#K60sK_k-lkmY@)MB7- z(e_uO65yaEss!9%O5_~h#FwpRUZN26#YPl@UV;aRnOHBxJD~td3uet%MV2&$skt;Y z%zbybv3Bj%N3`1wSKh>| zt>fCOn>L_Y3NT0+cmJ1Z>_zTA-JFc```-zf6Bh^t&D8C;1w4A?Q!ycZh}QVl5UyFx z`ds{+IOF6&n2&$p2Q}8z#$jMq+$O5eDIK5$etnYI277Bd!-&t!LxIj=eBb2(7N(#f z>awSX`FA>@S2{>j;yUE6mV`#UmWn11y0(#&_YZF;6+m5bG$mIcJ{A0I1Xzed_8|d=nLkcyGn1MsflaW|K4k?Ol33CgME+2lxB zSD9R{M6J2UPG~{AA?>z{FA3Bq-KzD22^rY>%o%Qfv3){8#Ro{SYqbthyW|+F&=(OC zNNB;HdujAt=RLZIMRU)&ygA36Patzsq2>8hTca12EsIPzcWF)DM5bXWjSe!%6k;Hq zdar4z8J5HIw|iA&s*$Rp1Y`vF%U;AWFcJk$3U?*ZjY&9-s~KmQYNUWb$+IL1ZbcH# zUn}f>Yy1i&^Z!nWthy+H>-i*k?*y&4+Zsq;APBeZ@QM+pw`l8Mb840Q7@`1|AOp%C z++>~$vZ`5NmCWjw>o5)eyFWBQ#dvV=$)V8;YqdoK9E*3UfSpU=R{@}nu6qrh+WYUE z_3QhU54TOn?BRxF&S=NN^m)Vu^gyk^{0K4BKdI;g1ghFga0Ls}wyG890wnZ*Y2{8-szop zw=&*(A8b!~`gTnbN?X~0TU+VC);8#OuNub|HX8xjo5!|5XC?k{kjc&%A%rQAR_r%=3Ic zC!+O%O6lpr*1Qh`-6Q{eB0Z9ukvp3~mquUapUjC?UGE>GGDb)#q+f(cY6_?k_mWSov5mpb34GU=Jha_+PKH zekyhwPJWJHNb(@yzXKawB-VZMO5Ml{pvI7Tx$MHpv+&m;)Ma7^QWg*EjT<3XXJiLd zSx^{HMw|3kXXS)u8$`Zk(Is%XaGFM1*WdW`cLGjlYX>5w@#1RK_K%liL1jw7l^x+X z*M>=_XX#1?Uy&naTytHV7t#7(f;~)I-?{F6>GF=~Sc)bxtky(V83TKLU)(tBebM1< zvQ$&SqA{+><+#HzC8ty7)leYi%BFDEtqee^>>9yH>l}&<<$;BL_CbJ56SJArRYLH! zTJz}Z1`*=uhTL;`faIH24KxN6*=_DK^|#>TfFCf%Fp0chN~!zJ8mx)PwKBm;u2yfa z#WZau^|}o!KnXgJu{{=NJL;DSc+M08p0MYoGmHz<#dUgqL|N{KF$XMnne>t$=V}_H z>ZP6cogIna2Mda(ZjUK)gKzp=sL?)b=iw3q%0|w~wu9V;0!9B?R{_>G_NdB-oQ6~` zFYjrfj;?n=c=bS@Vbtjc!(a5_x_+VTa~H68tyzItys_%}0&8i8w#@$~H1)stHc|d9 zgjKpXeFLy|0`MH~JuxLTW8Wc8gV`^)U)rPprg{rP|o`@1x0`Pir zq(!Idjl?Uz!osn?K3i72G0xlRM z@|${-t*Fd0{PT1{e-($l@Vz1XoFwK6mn=&GC>}SZo1Bq&-Fyf@c4D}sAC~5!_ex`4 zy;`{IGtz|JGXy?rICS7{Ho8c|`RSwHvX>vaDFxfbg{QT@$%M-+Q z`a?LPq>pB?${4CUc{`&5{IO`c_E|oE=7bybr&7P5IrQ*5+Y5OmRRSh=&>Nu195`no* zRyKWo<-iYhV@xMDNQf}CXgXP#!hR%FnXrUGa#*TMo8p`CZB9tcc#q#|2ia-0jyv9w zL7K%KD>=(3N{6LIWlpa;;~3=lqe}W>A6JzSC7Axy^D_?h`sn{f>Y5`O#bsbuV4?vs zX&lVDPKFxbUem>W1s?b6)w97-KO{!rZkH7jzuTO=3#jset~TQ{B~45WabxO;GOQlz zXor@oZ!s76xn&XX0PlTYngWLEZX@3N99mlodB)NLcD9Wy1z>Jx`4x9IAh|x6quI>Q zwO{IdKR#C(jCsIcnxWCA4nDEWZFCFeW%+k>L3^Lt)tjXnbZi75_+CLMTtRkb;cJ2j z@5*3i0IQj(;?_z6Iq-FBO%w&Gk<-jaPxEd1e|%#4xa_tv_K3W<=WnVz{4Gj^HCfPC zuQh_a5OgSbZsBM;#r3%kpJTRm&FrTFYQYUl5oDq z@jl((J0R7d^>?SCsW@R(KAVK2ZF=x5l*`}0&?iPplDpTj!=b3BS=CpJV+ZnUMmi&q zX2bzIk{3iCN{4e8D~5~4pJ;}6nk#T6(6b?>akN}}Xs0`d+~S%MFO?N{LtBwc<({1$ zA{m<;);1eK`=BB7dzPWIKY(IRocl zm4Yu!nDL?33Hp7BMpK9#iAsV7BF9$Ds^c>GeQO*Iu+NauivOulXg^&}5C=WPmP-~+ zAsA=ODPOA*5B?d&sGAxHO5=Ur&9N8~G0npmokq6pJS(S6Zu5|7Inumc&Wa}Kg0}YK zS=)3Q$k0OJf4zwprU3|n3Nu$l86O^ICglTjo`A}MFz}8Pi$-g&C&K~xy!W%G-=}XH z6zv$jndL)AXBH)ilLRS%Ib?k`9Yjx&Q~QwX5iz09qxA0S#Wp$u(O)(18J2q6=SIX+ z`CqtD@FMk&^6E##*JipEf+sQgkqy!q?S0HwBJ_3cof!;XHqZ_d+uZM6=+6*s8LJ_l zO3AfgJG37ReM9lI@)IU5s^mzm0{=|YAl5%*^_UU(e0{kOdiS|eHs_*GxIj^E3Kt+= z9Zt<2F2&w^F|XDlDye!#d^>_7nV|0_bIc628wcv@9xv8X_sbjPlSm2X2?}u}B{bhV zN9NE7Ij{x@f-%vCWfnodb4LOsW_FdJ=*SMJ*(@w6RSPU#5g#Lhgt_eUX|Gc?dh-pw z%2`}C?q=Er!6cNg^CB@sV?Ro^jm=!Y(sBa}t%rL0oDiL|HK-#9TV%NIHJuXSC&SUQ zg6Fd zAJ)HYW-C`g;a+YAk3c0}Jhz5cI~SDNn=1MA%cm5n*8~4qHddJIx>a}I%_mGqP{{y? z4#rw<`(cmL<+T*jkN7!ozHsnO?1!k$25jC4_BJqydPy{101m(!5q*me`jz2mOq)yl z#yD7Lwfz050=~pDJ@F+pB%K+4$;Gt@4dloWXI$j}25{8BUan%$uBA}?T^;`ZLWcqF zn+Zxkjsv%_4Dp@#^Rto!N3eVC6jV12yaadxb{1IgfEX8r;{RBCxV=i7y>H%8$}gOG zMC^(le`?zjZwi@XvS-vibJ;_9kr5318qn~C0}0;&OUwn!Mso69=o)0VnHiuJgj052 zs|Hqiw~x~cNcsd>d1`a~b(dQwFbcHHspcRaHJ)N%=lGGA^|+oSj5EVus%1~lyDICwGX-(A>6aK=A5UH_0I_L$?QPw@MQ_|}}f z$@~yfF`ZZgMO`=e`g8AIy3LXz_T}?6sHb~XCn}0#9oQY8=+MHN15r$ zIYMZcWQXkeQ+hS1uKKi{W*&q}(wAW_u|vUQP6cC!6P;99=1x1j67*V|EE^?A>9DmV z-T%#R7VNc$EE*$o=|U-*S6>r;@7oCgHD=VEKWZ-N|6Dof$}VH^!tHpcs*AKaHI3sU!+Uvk_nQo zwXm99`Js2cc8g%`S!+;Z_NyR?F!O4W!f$Yn6OFVB2LcAjr+i7aJ?dlCww*xABLdIp zFuD1Vti$H^N3CcUq&1!%u*H_aI^*w49AJKq8l?e|ko`2u#2QY9g`6&?tIai|V-0b= zo~2~60ju8N048XOf6e8CdM(g8dg@+G!^klOu!{RL4kmJNEj(^z8nrJfJH2#^H92%WRctkss^peR?oh()uNG)jlTK-`onL1i3?r)b ztax)zrRz|5ne);t1tvqf0^YlZPg1M3JLbc3OPYGd>%;B0Bwr&;uZ(P5Y)cKR5!(7h~?X_5@Iwa7%h;h9YQhvahQQQ_>>tRg>zs$XF*pF2DMP| zsL^61m24B;EeWw{9FAQrgq7){2*7oB^$I31FneRL?lBOKdsW## zu3!NqvcNN5a1ota6i84>q6rbPSTMC<9H>&m6-e<0rlQK*%%Z7;jtoMPCJak{4I89~&?7hm9 z@83y6djR!diko|RHE?04&vVC~w@F=AYdC`-n3fwtB7*vlSvZG{ny3-6l`-neue^eA zSA|94zomC4tX)Ewi|I#pJ+uKnHU=&;KK>X8l8?zDGBtbxwZv}6?{IjnCxpSXqV?(I z-5~+Yr7hk$eFbL*ph+rt%NZb3?fQH=p(--FZtHiz|4#rP4dC)P(?ph2NAwX|gSh}X zi-gp(>&$;lGGE|}DPgS$krDk5>niSROu%v9Nfu@RbRKCXO_85qkovL7I(G-=O=~c% z{o8VZGY@1Hm6Gq{*kA{91Anm4Nxi-!Er8FTww2UWpIk`H2pHG)wkd!Q&XHJ|qkJdLu8PHXn^gSkg zmlvHjSpG_k!nazmF`FzLY-20r;hVJ_{2H=08^3p`;X;eO2t;AaYyyc3HkQr@ZiN=( zWY>r9RBU+rgrB&E2P!uI8`mpFOXUV_HmS4g{O)?26Q*BRP_2fV(vcpPDBJ4sL76M? z*zHNl9gNG}i52z)^i2aT@nyj+e6($IH_-6aX-TT3F1>mHvZjR9Y0Ze-Sz(Myq)t?w zYK@ykWYB6BprXc&5t~iqcvSlV)Iw7nKGLC^O`-x)M*18irq^lD>2)pjM&j7QI9K{d zmp3Br1v#J-XKS{cSKCVL0zeB_$ z6!}}Cu=fg5Tk#sG)<7n*0KEVe#orNGwJ7=!WmJjJq!JNP4I&U1Z~~<+pk5PE9DG#h zA);fI zE1zHxcJygBk=lthia@E_Q5q`*q?UmDH=D?7E|83_sa`F1vfNH}UOl<5GhX8RzJ0XJ zd;a(XEda419!>clHoZ9QRwLQfif#aXEM>t&;KGZ|9PDKpRdNH!vxCWQ=|o1LSccd{ ztD~JH3K-k04(xZD@DnJ&-24J0dnjnn&*q5_zm%`*>7cm5cjjC0T-SwVa5VyRGmuOx zGU59J1t0DxbW`g9@0;qt=T|)D8ao^dsbBL7HQs-Cmcn+AD&*frSgHC=N%Jnup zc(Tf=wK#jc!5}X;T-{Cf?%Pih^w3-Z%x46BWPQx`$!k?G{-^p>)|3ZU8F6VLvGD}Va z8>2sD9HWvoDCAg0J~*`=KzWoHTZ9)_LOtEyfUBv`PZ+y{vs{6hx@VP$rO7->bFf0) zl`E)l2-))VFzQ%51rIC!SO)_+RYm40eqZ3tFw1b4J_+~W+hg*)> zOR7)*L<^Ag<74oJ!R22pwa?jAw3*NE6sO>Ltqq?$vc`pvF&)x+S}CR<*)8jW*e#q3 zP_|~h%FTuv4}=FGf&eeP(1)7t+0{mq`I{t74x?FD~gvjC$q!yq+SsF%^#uHiaiH{#D z1TO+9Ey?nw8AvMqAi6Ti?<#dI0=hyF*$kp~j;W@dQX{1$+Qd&Cg>Sp?jiYPuL=~Wb zG}4}k_#Hbj>4UwEmDRJUcQ}(e68~Uqvcx&6Ba_CjM$9S+B{+K8)KoGK8N90@F4O49BNRi5dY0hkTh+TLg#A2JB&R!9K48 z4pWTTf)`qY9(jHg$S`mDGdc#RA!mFcJ(`wpP{0SQD$J5@W`18~LFSMBG1#EJx^`5D z626)w0ldYl^GqX=pNkKUcO7`V?Lm`fouknjF3iJKZUA=|J3|0q5U4R(;h^D19x0LXuVTRD|F9} z6wMU8?2Mo%7y{V@jGq1lsJ?}wO)Nl-(n?=*dn}5%dm)6goA#pjQm#LQGsgi2U*GmPi$wkY|c;H**UtQ{*u1Q+e+kQ8tr+P=i(r zvjyH?83ySdQm3g23|e*UbzC;$ojkOepYO8!d+*5xoMP4nF%Hn&DI!^SP!ZU(*KWX_ZWW3)^W98yOUyMm!e{jZTiz^JF&x6zg>w}c7}hKgIxM)Z zGs*wksWz0U8=CrDJmO_dpBSSai#sU%QMPk~i)SY>&0+&>Hc?JfDi#3?5Ijb}wS`O} z_OZb2YA0+}E_e=8hFpK)y$)SPl{nCZu(Rm7st*sX28hrpMtd$C@jV2OxqbP}t0SR= zZ;ArQ4NtJNuuaDpl$|WHl-vygjJbPghtIg$_;$Aj(^hy2MWzf>ITqMh)5B zjfG_;EeI!P)>&ZpK-q^i>I$$aG1^^M@$pH)<1B6Y^sBt2e6HK3F^0&pacO>ATtG5n zgg{I&hgKns6)=s&EW+(J;YPawS2!W$T8>?O!Lwo9b2Cc{mx8Nku%sR*jXL6+$6FNs zcb!5Fdlc9RmjxWG;D!F(&V+rFBYrb!^EOoh%ot(ZU?q(qWzi~x%HVUzlul?JI&H2P z_<9>{z#g|9SqIOyILXr(QwYZ*7p1ERC@w>%&}PpPg=d|~>Tng{MHbBAJPQgN1@H1v zo-TBfGIfiEIZ8KQROd|rBKP1pFg?4Jq&rc7r2|eh)#Yx&=dOY&L02dPQxN=Yind^v z)qh+qxjGqJu(aZWkBMw3Q`OSf+ik1@L^+g5@AYUPV*RA8z=t zg-`D%bQ}b$XHT6s7Ss!-0P2=26k&R1p5KIoWq@!UqC_C&sAVFE^aZr3R0e#H`v`lU zAsv_{J}ffDDA_@ZFhhtmM^LZ1mK6!i0;9_V{cF@0NWfQ{G86&fQnQn70%zFsY2N`K z`zHn3sua3>9nQ(?0=ES6T9ORPhxPIqPJ?@)whO8NW_59jDMKz_OqTx@96Om>a#T=J zdF09w_yX?K4?pAYgHVBJ5XBsLj64L8Cjl?>PLUvL=MlJ?;47A(g0p`>_@a_9LMKrK z9tqG6n`U{CrU*Cgzq8{2&S=FpH>{Ol3fJkhUJEh2b_!r_SX00`2Qz?-ErjkiIDiF} zLKe@8&?7~la(O$AQdDYASF4LcM8q8mEW}B)#4{n5fw>bu%l)dL(*%xgty)>-HTv`6 z(=S;CNOKos<5PSxsuu_{)$jzUvQR_C63~%HQl=WU+6JhKU?@er$`(@1xVd4I4Nl55 z8?}q^Heb97kRDLFoRu4uBbP4>{r7{8I5Gn3C!YghLPp~2^BuTdwhGX%2I07}km8A` z+e@Wj9cJsw)D*K4UbATNXOns3Qr%uR3b3_}IB>RZ!IlDSZCeVkwQVWD)^=HL{|~t* Vh{nQ&dB*?%002ovPDHLkV1jUl-9i8W literal 13951 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�Y3S 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 PXPl+kQPVn{SK|Kw_;H{g literal 3451 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 diff --git a/Resources/history-selectionne.png b/Resources/history-selectionne.png index 751c7db9af6bea0cbb4fb3d6aec919479e0bf282..b672b21f3999c6560590cefe7de4beeb80342508 100644 GIT binary patch literal 5108 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 Q!50Itx#(!oVD5M4e!|-0Za7R@ugq6P` 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 UivE0xBLDyZ07*qoM6N<$f;*9`6aWAK diff --git a/Resources/settings-over.png b/Resources/settings-over.png index 13806e0c8fd10586114b556fe9cce7ca6874e5ef..37339b4af18a4bdebfaba9bad03a62862f7e0088 100644 GIT binary patch literal 6003 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 PZwRENt_Q7AwTt>6;SMe$ diff --git a/Resources/settings-selectionne.png b/Resources/settings-selectionne.png index 0844b8c98e97cc892562af9848e423138fb6edfc..1befba3bf617fddebe8f0769f63489733fbf911d 100644 GIT binary patch literal 5832 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 diff --git a/Resources/tchat-actif.png b/Resources/tchat-actif.png index facb65ea9656dd2d6c796f15a3c13c677de66c16..5e9716cc8608a97aa5ad7692d48b9ff2ab46d949 100644 GIT binary patch literal 4313 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 diff --git a/Resources/tchat-over.png b/Resources/tchat-over.png index fddc874b0f7a6ad1323e5e5fc4c09e28407a7f9d..1d945dbfddf1407017d817d5a6702adcaf4d97f7 100644 GIT binary patch literal 4430 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 Go$?>C(io=z diff --git a/Resources/tchat-selectionne.png b/Resources/tchat-selectionne.png index 5b42104d631e5249f661664fe6712f2657c5e984..2638c0c10816315a1ec5eec3c44daa25bdeeebbe 100644 GIT binary patch literal 4355 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

ukygzWD*uk&@f$`-q5N*&}Mp<(7r(~1y! zJlHGy?R&G-n!PQJYCKI*A6v9tR$$Q9h);_91jb97$&be5vQkl^CIPk8geLiqsKIFors1XB|ggUNQm}2<2GC@Qd zc!+ za;6~;1tV-u-8P^U^OOC8 hU)m}O*sy<=8C$8-{18oI7z_R;fTcOotj5&y$$!xmz&-!~ diff --git a/Resources/video-OFF-disabled.png b/Resources/video-OFF-disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..bcbc4d7a83eda07321bf658f4f62b2879af7b725 GIT binary patch literal 3595 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