Remove delagate stuff ... working on incall view

This commit is contained in:
Yann Diorcet 2012-06-13 18:39:33 +02:00
parent 075c6f6a0a
commit f88aff3f18
35 changed files with 1439 additions and 1373 deletions

View file

@ -185,9 +185,13 @@
NSString* dispName = [[NSString alloc] initWithCString:displayName encoding:[NSString defaultCStringEncoding]];
[[LinphoneManager instance].callDelegate displayDialerFromUI:self
[[LinphoneManager instance] changeView:PhoneView_Dialer];
//TODO
/*[[LinphoneManager instance].callDelegate displayDialerFromUI:self
forUser:phoneNumber
withDisplayName:dispName];
withDisplayName:dispName];*/
[phoneNumber release];
[dispName release];
}

View file

@ -17,12 +17,12 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#import <UIKit/UIKit.h>
#import "LinphoneUI/UIMuteButton.h"
#import "LinphoneUI/UIMicroButton.h"
#import "LinphoneUI/UISpeakerButton.h"
@interface ConferenceCallDetailView : UIViewController<UITableViewDelegate, UITableViewDataSource> {
UIMuteButton* mute;
UIMicroButton* mute;
UISpeakerButton* speaker;
UIButton* back;
UIButton* hangup;

View file

@ -62,8 +62,9 @@ NSTimer *callQualityRefresher;
table.rowHeight = 80;
[mute initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE button"];
/*[mute initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE button"];
[speaker initWithOnImage:[UIImage imageNamed:@"HP_inverse.png"] offImage:[UIImage imageNamed:@"HP.png"] debugName:"SPEAKER button"];
*/
}
-(void) backButtonPressed {

View file

@ -1,30 +0,0 @@
/* ContactPickerDelegate.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 <Foundation/Foundation.h>
#import <AddressBookUI/ABPeoplePickerNavigationController.h>
#import "PhoneViewController.h"
#import "linphoneAppDelegate.h"
@interface ContactPickerDelegate : NSObject<ABPeoplePickerNavigationControllerDelegate> {
}
@end

View file

@ -1,53 +0,0 @@
/* ContactPickerDelegate.m
*
* 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 "ContactPickerDelegate.h"
#import "LinphoneManager.h"
@implementation ContactPickerDelegate
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker
shouldContinueAfterSelectingPerson:(ABRecordRef)person {
return true;
}
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker
shouldContinueAfterSelectingPerson:(ABRecordRef)person
property:(ABPropertyID)property
identifier:(ABMultiValueIdentifier)identifier {
CFTypeRef multiValue = ABRecordCopyValue(person, property);
CFIndex valueIdx = ABMultiValueGetIndexForIdentifier(multiValue,identifier);
NSString *phoneNumber = (NSString *)ABMultiValueCopyValueAtIndex(multiValue, valueIdx);
[[LinphoneManager instance].callDelegate displayDialerFromUI:nil
forUser:phoneNumber
withDisplayName:[(NSString*)ABRecordCopyCompositeName(person) autorelease]];
[phoneNumber release];
CFRelease(multiValue);
return false;
}
- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker {
[[LinphoneManager instance].callDelegate displayDialerFromUI:nil
forUser:nil
withDisplayName:@""];
}
@end

View file

@ -90,6 +90,7 @@ void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info,
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
OrderedDictionary *subDic = [addressBookMap objectForKey: [addressBookMap keyAtIndex: [indexPath section]]];
ABRecordRef lPerson = [subDic objectForKey: [subDic keyAtIndex:[indexPath row]]];
// TODO
}
- (void)dealloc {

View file

@ -19,17 +19,14 @@
#import <UIKit/UIKit.h>
#import "LinphoneAppDelegate.h"
#import "LinphoneUIDelegates.h"
@interface FirstLoginViewController : UIViewController <UITextFieldDelegate>{
UIButton* ok;
UIButton* site;
UITextField* username;
UIView* activityIndicator;
}
-(void) doOk:(id)sender;
@property (nonatomic, retain) IBOutlet UIButton* ok;
@ -37,4 +34,5 @@
@property (nonatomic, retain) IBOutlet UITextField* username;
@property (nonatomic, retain) IBOutlet UITextField* passwd;
@property (nonatomic, retain) IBOutlet UIView* activityIndicator;
@end

View file

@ -1,4 +1,4 @@
/* IncallViewController.h
/* InCallViewController.h
*
* Copyright (C) 2009 Belledonne Comunications, Grenoble, France
*
@ -16,24 +16,28 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#import <UIKit/UIKit.h>
#import <AddressBookUI/ABPeoplePickerNavigationController.h>
#import "linphonecore.h"
#import "PhoneViewController.h"
#import "ConferenceCallDetailView.h"
#import <AddressBookUI/ABPeoplePickerNavigationController.h>
#include "UILinphone.h"
#import "UIToggleVideoButton.h"
#import "VideoZoomHandler.h"
#include "UILinphone.h"
@class VideoViewController;
@interface InCallViewController : UIViewController <ABPeoplePickerNavigationControllerDelegate,LinphoneUICallDelegate, UITableViewDelegate, UITableViewDataSource, UIActionSheetCustomDelegate> {
@interface InCallViewController : UIViewController <ABPeoplePickerNavigationControllerDelegate, UITableViewDelegate, UITableViewDataSource, UIActionSheetCustomDelegate> {
UIView* controlSubView, *hangUpView;
UIButton* endCtrl;
UIButton* dialer;
UIMuteButton* mute;
UIMicroButton* mute;
UIButton* pause;
UISpeakerButton* speaker;
UIButton* contacts;
@ -97,8 +101,6 @@
VideoZoomHandler* videoZoomHandler;
}
-(void)displayStatus:(NSString*) message;
- (IBAction)doAction:(id)sender;
+(LinphoneCall*) retrieveCallAtIndex: (NSInteger) index inConference:(bool) conf;

View file

@ -1,4 +1,4 @@
/* IncallViewController.h
/* InCallViewController.h
*
* Copyright (C) 2009 Belledonne Comunications, Grenoble, France
*
@ -15,20 +15,21 @@
* 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 "IncallViewController.h"
#import "VideoViewController.h"
#import "LinphoneManager.h"
#import <AudioToolbox/AudioToolbox.h>
#import <AddressBook/AddressBook.h>
#import "linphonecore.h"
#include "LinphoneManager.h"
#include "private.h"
#import "ContactPickerDelegate.h"
#import <QuartzCore/CAAnimation.h>
#import <QuartzCore/QuartzCore.h>
#import <OpenGLES/EAGL.h>
#import <OpenGLES/EAGLDrawable.h>
#include "linphonecore.h"
#include "private.h"
#define STRINGIFY(x) #x
#define TOSTRING(x) STRINGIFY(x)
#define AT __FILE__ ":" TOSTRING(__LINE__)
@ -397,10 +398,14 @@ void addAnimationFadeTransition(UIView* view, float duration) {
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
//Controls
[mute initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE button"];
[speaker initWithOnImage:[UIImage imageNamed:@"HP_inverse.png"] offImage:[UIImage imageNamed:@"HP.png"] debugName:"SPEAKER button"];
// Set observer
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil];
//Controls
/*[mute initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE button"];
[speaker initWithOnImage:[UIImage imageNamed:@"HP_inverse.png"] offImage:[UIImage imageNamed:@"HP.png"] debugName:"SPEAKER button"];
*/
verified = [[UIImage imageNamed:@"secured.png"] retain];
unverified = [[UIImage imageNamed:@"unverified.png"] retain];
@ -420,7 +425,6 @@ void addAnimationFadeTransition(UIView* view, float duration) {
[addCall addTarget:self action:@selector(addCallPressed) forControlEvents:UIControlEventTouchUpInside];
[mergeCalls addTarget:self action:@selector(mergeCallsPressed) forControlEvents:UIControlEventTouchUpInside];
[pause addTarget:self action:@selector(pauseCallPressed) forControlEvents:UIControlEventTouchUpInside];
[LinphoneManager set:mergeCalls hidden:YES withName:"MERGE button" andReason:"initialisation"];
if ([LinphoneManager runningOnIpad]) {
@ -517,7 +521,7 @@ void addAnimationFadeTransition(UIView* view, float duration) {
visibleActionSheet = nil;
[UICallButton enableTransforMode:YES];
[[LinphoneManager instance] displayDialer];
[[LinphoneManager instance] changeView:PhoneView_Dialer];
} else {
// add 'Other' option
[visibleActionSheet addButtonWithTitle:NSLocalizedString(@"Other...",nil)];
@ -537,46 +541,15 @@ void addAnimationFadeTransition(UIView* view, float duration) {
-(void) addCallPressed {
[LinphoneManager logUIElementPressed:"CALL button"];
[[LinphoneManager instance] displayDialer];
[[LinphoneManager instance] changeView:PhoneView_Dialer];
}
-(void) mergeCallsPressed {
[LinphoneManager logUIElementPressed:"MERGE button"];
LinphoneCore* lc = [LinphoneManager getLc];
linphone_core_add_all_to_conference(lc);
}
-(void) pauseCallPressed {
[LinphoneManager logUIElementPressed:"PAUSE button"];
LinphoneCore* lc = [LinphoneManager getLc];
LinphoneCall* currentCall = linphone_core_get_current_call(lc);
if (currentCall) {
if (linphone_call_get_state(currentCall) == LinphoneCallStreamsRunning) {
[pause setSelected:NO];
linphone_core_pause_call(lc, currentCall);
// hide video view
[self disableVideoDisplay];
}
} else {
if (linphone_core_get_calls_nb(lc) == 1) {
LinphoneCall* c = (LinphoneCall*) linphone_core_get_calls(lc)->data;
if (linphone_call_get_state(c) == LinphoneCallPaused) {
linphone_core_resume_call(lc, c);
[pause setSelected:YES];
const LinphoneCallParams* p = linphone_call_get_current_params(c);
if (linphone_call_params_video_enabled(p)) {
[self enableVideoDisplay];
}
}
}
}
}
-(void)updateCallsDurations {
[self updateUIFromLinphoneState: NO];
}
@ -646,12 +619,7 @@ void addAnimationFadeTransition(UIView* view, float duration) {
- (void)viewDidUnload {
[verified release];
[unverified release];
}
-(void) displayStatus:(NSString*) message; {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
-(void) displayPad:(bool) enable {
@ -719,6 +687,108 @@ static void hideSpinner(LinphoneCall* lc, void* user_data);
}*/
}
- (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;
}
}
static void hideSpinner(LinphoneCall* call, void* user_data) {
InCallViewController* thiz = (InCallViewController*) user_data;
[thiz hideSpinnerIndicator:call];
@ -798,7 +868,8 @@ static void hideSpinner(LinphoneCall* call, void* user_data) {
} else if (sender == contacts) {
// start people picker
myPeoplePickerController = [[[ABPeoplePickerNavigationController alloc] init] autorelease];
[myPeoplePickerController setPeoplePickerDelegate:[[ContactPickerDelegate alloc] init] ];
// TODO
//[myPeoplePickerController setPeoplePickerDelegate:[[ContactPickerDelegate alloc] init] ];
[self presentModalViewController: myPeoplePickerController animated:true];
} else if (sender == close) {
@ -831,6 +902,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) {
- (void)dealloc {
[super dealloc];
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
+(LinphoneCall*) retrieveCallAtIndex: (NSInteger) index inConference:(bool) conf{
@ -1177,7 +1249,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) {
// user must jhave pressed 'other...' button as we did not find a call
// with the correct indice
[UICallButton enableTransforMode:YES];
[[LinphoneManager instance] displayDialer];
[[LinphoneManager instance] changeView:PhoneView_Dialer];
break;
}
default:

File diff suppressed because it is too large Load diff

View file

@ -20,7 +20,6 @@
#import "PhoneMainView.h"
#import "PhoneViewController.h"
#import "linphoneAppDelegate.h"
#import "ContactPickerDelegate.h"
#import "AddressBook/ABPerson.h"
#import "CoreTelephony/CTCallCenter.h"

View file

@ -19,8 +19,18 @@
#import <UIKit/UIKit.h>
#import "UIMicroButton.h"
@interface LinphoneCallBar : UIViewController {
UIButton* pauseButton;
UIButton* videoButton;
UIMicroButton* microButton;
UIButton* speakerButton;
}
@property (nonatomic, retain) IBOutlet UIButton* pauseButton;
@property (nonatomic, retain) IBOutlet UIButton* videoButton;
@property (nonatomic, retain) IBOutlet UIMicroButton* microButton;
@property (nonatomic, retain) IBOutlet UIButton* speakerButton;
-(IBAction) onPauseClick: (id) event;
@end

View file

@ -18,7 +18,135 @@
*/
#import "LinphoneCallBar.h"
#import "LinphoneManager.h"
#include "linphonecore.h"
#include "private.h"
#define STRINGIFY(x) #x
#define TOSTRING(x) STRINGIFY(x)
#define AT __FILE__ ":" TOSTRING(__LINE__)
@implementation LinphoneCallBar
@synthesize pauseButton;
@synthesize videoButton;
@synthesize microButton;
@synthesize speakerButton;
- (void) viewDidLoad {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil];
}
bool isInConference2(LinphoneCall* call) {
if (!call)
return false;
return linphone_call_get_current_params(call)->in_conference;
}
int callCount2(LinphoneCore* lc) {
int count = 0;
const MSList* calls = linphone_core_get_calls(lc);
while (calls != 0) {
if (!isInConference2((LinphoneCall*)calls->data)) {
count++;
}
calls = calls->next;
}
return count;
}
-(IBAction) onPauseClick: (id) event {
[LinphoneManager logUIElementPressed:"PAUSE button"];
LinphoneCore* lc = [LinphoneManager getLc];
LinphoneCall* currentCall = linphone_core_get_current_call(lc);
if (currentCall) {
if (linphone_call_get_state(currentCall) == LinphoneCallStreamsRunning) {
[pauseButton setSelected:NO];
linphone_core_pause_call(lc, currentCall);
// hide video view
//TODO
//[self disableVideoDisplay];
}
} else {
if (linphone_core_get_calls_nb(lc) == 1) {
LinphoneCall* c = (LinphoneCall*) linphone_core_get_calls(lc)->data;
if (linphone_call_get_state(c) == LinphoneCallPaused) {
linphone_core_resume_call(lc, c);
[pauseButton setSelected:YES];
const LinphoneCallParams* p = linphone_call_get_current_params(c);
if (linphone_call_params_video_enabled(p)) {
//TODO
//[self enableVideoDisplay];
}
}
}
}
}
- (void) callUpdate: (NSNotification*) notif {
bool fullUpdate = true;
// check LinphoneCore is initialized
LinphoneCore* lc = nil;
@try {
lc = [LinphoneManager getLc];
} @catch (NSException* exc) {
return;
}
// 1 call: show pause button, otherwise show merge btn
[LinphoneManager set:pauseButton enabled:(callCount2(lc) == 1) withName:"PAUSE button" andReason:"call count"];
//TODO
//[LinphoneManager set:mergeCalls hidden:!pause.hidden withName:"MERGE button" andReason:"call count"];
LinphoneCall* currentCall = linphone_core_get_current_call([LinphoneManager getLc]);
int callsCount = linphone_core_get_calls_nb(lc);
// hide pause/resume if in conference
if (currentCall) {
[microButton reset];
if (linphone_core_is_in_conference(lc)) {
[LinphoneManager set:pauseButton enabled:FALSE withName:"PAUSE button" andReason:"is in conference"];
}
else if (callCount2(lc) == callsCount && callsCount == 1) {
[LinphoneManager set:pauseButton enabled:TRUE withName:"PAUSE button" andReason:"call count == 1"];
pauseButton.selected = NO;
} else {
[LinphoneManager set:pauseButton enabled:FALSE withName:"PAUSE button" andReason:AT];
}
if (fullUpdate) {
//TODO
//videoUpdateIndicator.hidden = YES;
LinphoneCallState state = linphone_call_get_state(currentCall);
if (state == LinphoneCallStreamsRunning || state == LinphoneCallUpdated || state == LinphoneCallUpdatedByRemote) {
if (linphone_call_params_video_enabled(linphone_call_get_current_params(currentCall))) {
[videoButton setSelected:TRUE];
} else {
[videoButton setSelected:FALSE];
}
[videoButton setEnabled:YES];
} else {
[videoButton setEnabled:NO];
//[videoCallQuality setImage:nil];
}
}
} else {
if (callsCount == 1) {
LinphoneCall* c = (LinphoneCall*)linphone_core_get_calls(lc)->data;
if (linphone_call_get_state(c) == LinphoneCallPaused ||
linphone_call_get_state(c) == LinphoneCallPausing) {
pauseButton.selected = YES;
}
[LinphoneManager set:pauseButton enabled:TRUE withName:"PAUSE button" andReason:AT];
} else {
[LinphoneManager set:pauseButton enabled:FALSE withName:"PAUSE button" andReason:AT];
}
[videoButton setEnabled:NO];
}
}
@end

View file

@ -31,17 +31,17 @@
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIView" id="590484871">
<object class="IBUIView" id="931774220">
<reference key="NSNextResponder"/>
<int key="NSvFlags">292</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="IBUIView" id="109354525">
<reference key="NSNextResponder" ref="590484871"/>
<object class="IBUIView" id="464536687">
<reference key="NSNextResponder" ref="931774220"/>
<int key="NSvFlags">-2147483356</int>
<string key="NSFrameSize">{320, 135}</string>
<reference key="NSSuperview" ref="590484871"/>
<reference key="NSSuperview" ref="931774220"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1013099198"/>
<reference key="NSNextKeyView" ref="262544423"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
@ -54,13 +54,13 @@
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIButton" id="1013099198">
<reference key="NSNextResponder" ref="590484871"/>
<object class="IBUIButton" id="262544423">
<reference key="NSNextResponder" ref="931774220"/>
<int key="NSvFlags">292</int>
<string key="NSFrameSize">{80, 67}</string>
<reference key="NSSuperview" ref="590484871"/>
<reference key="NSSuperview" ref="931774220"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1023772893"/>
<reference key="NSNextKeyView" ref="693636558"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<object class="IBUIAccessibilityConfiguration" key="IBUIAccessibilityConfiguration">
@ -69,7 +69,8 @@
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<object class="NSColor" key="IBUIHighlightedTitleColor" id="855460971">
<bool key="IBUIAdjustsImageWhenHighlighted">NO</bool>
<object class="NSColor" key="IBUIHighlightedTitleColor" id="707105299">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
@ -77,7 +78,7 @@
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<object class="NSColor" key="IBUINormalTitleShadowColor" id="829474675">
<object class="NSColor" key="IBUINormalTitleShadowColor" id="838911807">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC41AA</bytes>
</object>
@ -93,23 +94,23 @@
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">video-OFF-actif.png</string>
</object>
<object class="IBUIFontDescription" key="IBUIFontDescription" id="950385486">
<object class="IBUIFontDescription" key="IBUIFontDescription" id="794091713">
<int key="type">2</int>
<double key="pointSize">15</double>
</object>
<object class="NSFont" key="IBUIFont" id="839162475">
<object class="NSFont" key="IBUIFont" id="993152718">
<string key="NSName">Helvetica-Bold</string>
<double key="NSSize">15</double>
<int key="NSfFlags">16</int>
</object>
</object>
<object class="IBUIButton" id="1023772893">
<reference key="NSNextResponder" ref="590484871"/>
<object class="IBUIButton" id="693636558">
<reference key="NSNextResponder" ref="931774220"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{80, 0}, {80, 67}}</string>
<reference key="NSSuperview" ref="590484871"/>
<reference key="NSSuperview" ref="931774220"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="908144004"/>
<reference key="NSNextKeyView" ref="264394465"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<object class="IBUIAccessibilityConfiguration" key="IBUIAccessibilityConfiguration">
@ -118,12 +119,13 @@
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<reference key="IBUIHighlightedTitleColor" ref="855460971"/>
<bool key="IBUIAdjustsImageWhenHighlighted">NO</bool>
<reference key="IBUIHighlightedTitleColor" ref="707105299"/>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<reference key="IBUINormalTitleShadowColor" ref="829474675"/>
<reference key="IBUINormalTitleShadowColor" ref="838911807"/>
<object class="NSCustomResource" key="IBUIHighlightedBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">micro-ON-over.png</string>
@ -136,16 +138,16 @@
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">micro-OFF-actif.png</string>
</object>
<reference key="IBUIFontDescription" ref="950385486"/>
<reference key="IBUIFont" ref="839162475"/>
<reference key="IBUIFontDescription" ref="794091713"/>
<reference key="IBUIFont" ref="993152718"/>
</object>
<object class="IBUIButton" id="908144004">
<reference key="NSNextResponder" ref="590484871"/>
<object class="IBUIButton" id="264394465">
<reference key="NSNextResponder" ref="931774220"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{160, 0}, {80, 67}}</string>
<reference key="NSSuperview" ref="590484871"/>
<reference key="NSSuperview" ref="931774220"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1057022694"/>
<reference key="NSNextKeyView" ref="62185125"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<object class="IBUIAccessibilityConfiguration" key="IBUIAccessibilityConfiguration">
@ -154,31 +156,32 @@
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<reference key="IBUIHighlightedTitleColor" ref="855460971"/>
<bool key="IBUIAdjustsImageWhenHighlighted">NO</bool>
<reference key="IBUIHighlightedTitleColor" ref="707105299"/>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<reference key="IBUINormalTitleShadowColor" ref="829474675"/>
<reference key="IBUINormalTitleShadowColor" ref="838911807"/>
<object class="NSCustomResource" key="IBUIHighlightedBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">speacker-ON-over.png</string>
</object>
<object class="NSCustomResource" key="IBUISelectedBackgroundImage" id="86150103">
<object class="NSCustomResource" key="IBUISelectedBackgroundImage" id="314442052">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">speacker-OFF-actif.png</string>
</object>
<reference key="IBUINormalBackgroundImage" ref="86150103"/>
<reference key="IBUIFontDescription" ref="950385486"/>
<reference key="IBUIFont" ref="839162475"/>
<reference key="IBUINormalBackgroundImage" ref="314442052"/>
<reference key="IBUIFontDescription" ref="794091713"/>
<reference key="IBUIFont" ref="993152718"/>
</object>
<object class="IBUIButton" id="1057022694">
<reference key="NSNextResponder" ref="590484871"/>
<object class="IBUIButton" id="62185125">
<reference key="NSNextResponder" ref="931774220"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{240, 0}, {80, 67}}</string>
<reference key="NSSuperview" ref="590484871"/>
<reference key="NSSuperview" ref="931774220"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="98146943"/>
<reference key="NSNextKeyView" ref="542459126"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<object class="IBUIAccessibilityConfiguration" key="IBUIAccessibilityConfiguration">
@ -187,31 +190,32 @@
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<reference key="IBUIHighlightedTitleColor" ref="855460971"/>
<bool key="IBUIAdjustsImageWhenHighlighted">NO</bool>
<reference key="IBUIHighlightedTitleColor" ref="707105299"/>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<reference key="IBUINormalTitleShadowColor" ref="829474675"/>
<object class="NSCustomResource" key="IBUIHighlightedBackgroundImage" id="1002842964">
<reference key="IBUINormalTitleShadowColor" ref="838911807"/>
<object class="NSCustomResource" key="IBUIHighlightedBackgroundImage" id="387794121">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">add-call-over.png</string>
</object>
<reference key="IBUISelectedBackgroundImage" ref="1002842964"/>
<reference key="IBUISelectedBackgroundImage" ref="387794121"/>
<object class="NSCustomResource" key="IBUINormalBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">add-call-actif.png</string>
</object>
<reference key="IBUIFontDescription" ref="950385486"/>
<reference key="IBUIFont" ref="839162475"/>
<reference key="IBUIFontDescription" ref="794091713"/>
<reference key="IBUIFont" ref="993152718"/>
</object>
<object class="IBUIButton" id="98146943">
<reference key="NSNextResponder" ref="590484871"/>
<object class="IBUIButton" id="542459126">
<reference key="NSNextResponder" ref="931774220"/>
<int key="NSvFlags">264</int>
<string key="NSFrame">{{0, 67}, {105, 68}}</string>
<reference key="NSSuperview" ref="590484871"/>
<reference key="NSSuperview" ref="931774220"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="616216167"/>
<reference key="NSNextKeyView" ref="99607181"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<object class="IBUIAccessibilityConfiguration" key="IBUIAccessibilityConfiguration">
@ -220,13 +224,14 @@
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<reference key="IBUIHighlightedTitleColor" ref="855460971"/>
<bool key="IBUIAdjustsImageWhenHighlighted">NO</bool>
<reference key="IBUIHighlightedTitleColor" ref="707105299"/>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<reference key="IBUINormalTitleShadowColor" ref="829474675"/>
<object class="NSCustomResource" key="IBUIHighlightedBackgroundImage" id="106950836">
<reference key="IBUINormalTitleShadowColor" ref="838911807"/>
<object class="NSCustomResource" key="IBUIHighlightedBackgroundImage" id="509735403">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">pause-over.png</string>
</object>
@ -234,17 +239,17 @@
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">pause-actif.png</string>
</object>
<reference key="IBUINormalBackgroundImage" ref="106950836"/>
<reference key="IBUIFontDescription" ref="950385486"/>
<reference key="IBUIFont" ref="839162475"/>
<reference key="IBUINormalBackgroundImage" ref="509735403"/>
<reference key="IBUIFontDescription" ref="794091713"/>
<reference key="IBUIFont" ref="993152718"/>
</object>
<object class="IBUIButton" id="616216167">
<reference key="NSNextResponder" ref="590484871"/>
<object class="IBUIButton" id="99607181">
<reference key="NSNextResponder" ref="931774220"/>
<int key="NSvFlags">264</int>
<string key="NSFrame">{{105, 67}, {111, 68}}</string>
<reference key="NSSuperview" ref="590484871"/>
<reference key="NSSuperview" ref="931774220"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="583527516"/>
<reference key="NSNextKeyView" ref="976589610"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<object class="IBUIAccessibilityConfiguration" key="IBUIAccessibilityConfiguration">
@ -253,13 +258,14 @@
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<reference key="IBUIHighlightedTitleColor" ref="855460971"/>
<bool key="IBUIAdjustsImageWhenHighlighted">NO</bool>
<reference key="IBUIHighlightedTitleColor" ref="707105299"/>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<reference key="IBUINormalTitleShadowColor" ref="829474675"/>
<object class="NSCustomResource" key="IBUIHighlightedBackgroundImage" id="107972492">
<reference key="IBUINormalTitleShadowColor" ref="838911807"/>
<object class="NSCustomResource" key="IBUIHighlightedBackgroundImage" id="462657270">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">raccrocher-over.png</string>
</object>
@ -267,16 +273,17 @@
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">raccrocher-actif.png</string>
</object>
<reference key="IBUINormalBackgroundImage" ref="107972492"/>
<reference key="IBUIFontDescription" ref="950385486"/>
<reference key="IBUIFont" ref="839162475"/>
<reference key="IBUINormalBackgroundImage" ref="462657270"/>
<reference key="IBUIFontDescription" ref="794091713"/>
<reference key="IBUIFont" ref="993152718"/>
</object>
<object class="IBUIButton" id="583527516">
<reference key="NSNextResponder" ref="590484871"/>
<object class="IBUIButton" id="976589610">
<reference key="NSNextResponder" ref="931774220"/>
<int key="NSvFlags">264</int>
<string key="NSFrame">{{215, 67}, {105, 68}}</string>
<reference key="NSSuperview" ref="590484871"/>
<reference key="NSSuperview" ref="931774220"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<object class="IBUIAccessibilityConfiguration" key="IBUIAccessibilityConfiguration">
@ -285,13 +292,14 @@
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<reference key="IBUIHighlightedTitleColor" ref="855460971"/>
<bool key="IBUIAdjustsImageWhenHighlighted">NO</bool>
<reference key="IBUIHighlightedTitleColor" ref="707105299"/>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<reference key="IBUINormalTitleShadowColor" ref="829474675"/>
<object class="NSCustomResource" key="IBUIHighlightedBackgroundImage" id="401528858">
<reference key="IBUINormalTitleShadowColor" ref="838911807"/>
<object class="NSCustomResource" key="IBUIHighlightedBackgroundImage" id="1031230911">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">dialer-meteo-sortir-over.png</string>
</object>
@ -299,15 +307,15 @@
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">dialer-meteo-sortir-actif.png</string>
</object>
<reference key="IBUINormalBackgroundImage" ref="401528858"/>
<reference key="IBUIFontDescription" ref="950385486"/>
<reference key="IBUIFont" ref="839162475"/>
<reference key="IBUINormalBackgroundImage" ref="1031230911"/>
<reference key="IBUIFontDescription" ref="794091713"/>
<reference key="IBUIFont" ref="993152718"/>
</object>
</array>
<string key="NSFrameSize">{320, 135}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="109354525"/>
<reference key="NSNextKeyView" ref="464536687"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">1</int>
@ -323,10 +331,51 @@
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">view</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="590484871"/>
<reference key="destination" ref="931774220"/>
</object>
<int key="connectionID">13</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">pauseButton</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="542459126"/>
</object>
<int key="connectionID">15</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">speakerButton</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="264394465"/>
</object>
<int key="connectionID">16</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">videoButton</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="262544423"/>
</object>
<int key="connectionID">17</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">microButton</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="693636558"/>
</object>
<int key="connectionID">14</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">onPauseClick:</string>
<reference key="source" ref="542459126"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">18</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
@ -349,67 +398,68 @@
</object>
<object class="IBObjectRecord">
<int key="objectID">4</int>
<reference key="object" ref="590484871"/>
<reference key="object" ref="931774220"/>
<array class="NSMutableArray" key="children">
<reference ref="109354525"/>
<reference ref="583527516"/>
<reference ref="616216167"/>
<reference ref="98146943"/>
<reference ref="908144004"/>
<reference ref="1057022694"/>
<reference ref="1023772893"/>
<reference ref="1013099198"/>
<reference ref="464536687"/>
<reference ref="976589610"/>
<reference ref="99607181"/>
<reference ref="542459126"/>
<reference ref="264394465"/>
<reference ref="62185125"/>
<reference ref="262544423"/>
<reference ref="693636558"/>
</array>
<reference key="parent" ref="0"/>
<string key="objectName">callTabBar</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">5</int>
<reference key="object" ref="109354525"/>
<reference key="parent" ref="590484871"/>
<reference key="object" ref="464536687"/>
<array class="NSMutableArray" key="children"/>
<reference key="parent" ref="931774220"/>
<string key="objectName">mask</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">6</int>
<reference key="object" ref="583527516"/>
<reference key="parent" ref="590484871"/>
<reference key="object" ref="976589610"/>
<reference key="parent" ref="931774220"/>
<string key="objectName">back</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">7</int>
<reference key="object" ref="616216167"/>
<reference key="parent" ref="590484871"/>
<reference key="object" ref="99607181"/>
<reference key="parent" ref="931774220"/>
<string key="objectName">hangup</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">8</int>
<reference key="object" ref="98146943"/>
<reference key="parent" ref="590484871"/>
<reference key="object" ref="542459126"/>
<reference key="parent" ref="931774220"/>
<string key="objectName">pause</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">9</int>
<reference key="object" ref="908144004"/>
<reference key="parent" ref="590484871"/>
<reference key="object" ref="264394465"/>
<reference key="parent" ref="931774220"/>
<string key="objectName">speaker</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">10</int>
<reference key="object" ref="1057022694"/>
<reference key="parent" ref="590484871"/>
<reference key="object" ref="62185125"/>
<reference key="parent" ref="931774220"/>
<string key="objectName">addCall</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">11</int>
<reference key="object" ref="1023772893"/>
<reference key="parent" ref="590484871"/>
<string key="objectName">micro</string>
<int key="objectID">12</int>
<reference key="object" ref="262544423"/>
<reference key="parent" ref="931774220"/>
<string key="objectName">video</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">12</int>
<reference key="object" ref="1013099198"/>
<reference key="parent" ref="590484871"/>
<string key="objectName">video</string>
<int key="objectID">11</int>
<reference key="object" ref="693636558"/>
<reference key="parent" ref="931774220"/>
<string key="objectName">micro</string>
</object>
</array>
</object>
@ -420,18 +470,22 @@
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="10.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="2" key="10.IBUIButtonInspectorSelectedStateConfigurationMetadataKey"/>
<string key="11.CustomClassName">UIMicroButton</string>
<string key="11.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="0.0" key="11.IBUIButtonInspectorSelectedStateConfigurationMetadataKey"/>
<string key="12.CustomClassName">UIToggleVideoButton</string>
<string key="12.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="0.0" key="12.IBUIButtonInspectorSelectedStateConfigurationMetadataKey"/>
<string key="4.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="5.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="6.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="1" key="6.IBUIButtonInspectorSelectedStateConfigurationMetadataKey"/>
<string key="7.CustomClassName">UIHangUpButton</string>
<string key="7.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="2" key="7.IBUIButtonInspectorSelectedStateConfigurationMetadataKey"/>
<string key="8.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="2" key="8.IBUIButtonInspectorSelectedStateConfigurationMetadataKey"/>
<string key="9.CustomClassName">UISpeakerButton</string>
<string key="9.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="0.0" key="9.IBUIButtonInspectorSelectedStateConfigurationMetadataKey"/>
</dictionary>
@ -439,18 +493,104 @@
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">13</int>
<int key="maxID">18</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">LinphoneCallBar</string>
<string key="superclassName">UIViewController</string>
<object class="NSMutableDictionary" key="actions">
<string key="NS.key.0">onPauseClick:</string>
<string key="NS.object.0">id</string>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<string key="NS.key.0">onPauseClick:</string>
<object class="IBActionInfo" key="NS.object.0">
<string key="name">onPauseClick:</string>
<string key="candidateClassName">id</string>
</object>
</object>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="microButton">UIMicroButton</string>
<string key="pauseButton">UIButton</string>
<string key="speakerButton">UIButton</string>
<string key="videoButton">UIButton</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="microButton">
<string key="name">microButton</string>
<string key="candidateClassName">UIMicroButton</string>
</object>
<object class="IBToOneOutletInfo" key="pauseButton">
<string key="name">pauseButton</string>
<string key="candidateClassName">UIButton</string>
</object>
<object class="IBToOneOutletInfo" key="speakerButton">
<string key="name">speakerButton</string>
<string key="candidateClassName">UIButton</string>
</object>
<object class="IBToOneOutletInfo" key="videoButton">
<string key="name">videoButton</string>
<string key="candidateClassName">UIButton</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/LinphoneCallBar.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIHangUpButton</string>
<string key="superclassName">UIButton</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/UIHangUpButton.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIMicroButton</string>
<string key="superclassName">UIToggleButton</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/UIMicroButton.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISpeakerButton</string>
<string key="superclassName">UIToggleButton</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/UISpeakerButton.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIToggleButton</string>
<string key="superclassName">UIButton</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/UIToggleButton.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIToggleVideoButton</string>
<string key="superclassName">UIButton</string>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">videoUpdateIndicator</string>
<string key="NS.object.0">UIActivityIndicatorView</string>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<string key="NS.key.0">videoUpdateIndicator</string>
<object class="IBToOneOutletInfo" key="NS.object.0">
<string key="name">videoUpdateIndicator</string>
<string key="candidateClassName">UIActivityIndicatorView</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/UIToggleVideoButton.h</string>
</object>
</object>
</array>
</object>
<int key="IBDocument.localizationMode">0</int>

View file

@ -63,11 +63,16 @@
- (void) viewDidUnload {
[[NSNotificationCenter defaultCenter] removeObserver:self];
[historyButton release];
[contactsButton release];
[dialerButton release];
[settingsButton release];
[chatButton release];
}
- (void) dealloc {
[super dealloc];
[[NSNotificationCenter defaultCenter] removeObserver:self];
[super dealloc];
}
- (IBAction) onHistoryClick: (id) sender {

View file

@ -20,9 +20,9 @@
#import <Foundation/Foundation.h>
#import <AVFoundation/AVAudioSession.h>
#import <SystemConfiguration/SCNetworkReachability.h>
#include "linphonecore.h"
#import "LogView.h"
#import "LinphoneUIDelegates.h"
#include "linphonecore.h"
typedef enum _PhoneView {
PhoneView_Dialer,
@ -58,6 +58,12 @@ typedef struct _LinphoneCallAppData {
int transferButtonIndex;
} LinphoneCallAppData;
@interface LinphoneCallWrapper : NSObject {
@public
LinphoneCall* call;
}
- (id) initWithCall: (LinphoneCall*) call;
@end
@interface LinphoneManager : NSObject <AVAudioSessionDelegate> {
@protected
@ -66,7 +72,6 @@ typedef struct _LinphoneCallAppData {
NSTimer* mIterateTimer;
id<LogView> mLogView;
bool isbackgroundModeEnabled;
id<LinphoneUICallDelegate> callDelegate;
UIViewController* mCurrentViewController;
Connectivity connectivity;
@ -85,10 +90,9 @@ typedef struct _LinphoneCallAppData {
+(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;
-(void) displayDialer;
-(void) registerLogView:(id<LogView>) view;
-(void) startLibLinphone;
@ -106,9 +110,9 @@ typedef struct _LinphoneCallAppData {
-(void) refreshRegisters;
-(void) changeView:(PhoneView) view;
-(void) changeView:(PhoneView) view dict:(NSDictionary *)dict;
-(PhoneView) currentView;
@property (nonatomic, retain) id<LinphoneUICallDelegate> callDelegate;
@property Connectivity connectivity;
@property (readonly) const char* frontCamId;
@property (readonly) const char* backCamId;

View file

@ -49,8 +49,20 @@ extern void libmssilk_init();
#if HAVE_G729
extern void libmsbcg729_init();
#endif
@implementation LinphoneCallWrapper
- (id) initWithCall: (LinphoneCall*) acall {
if((self = [super init]) != nil) {
call = acall;
}
return self;
}
@end
@implementation LinphoneManager
@synthesize callDelegate;
@synthesize connectivity;
@synthesize frontCamId;
@synthesize backCamId;
@ -69,16 +81,23 @@ extern void libmsbcg729_init();
}
-(void) changeView:(PhoneView) view {
[self changeView:view dict:nil];
}
-(void) changeView:(PhoneView) view dict:(NSDictionary *)dict {
currentView = view;
NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:currentView] forKey:@"view"];
[[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:dict];
NSMutableDictionary* mdict = [NSMutableDictionary dictionaryWithObject: [NSNumber numberWithInt:currentView] forKey:@"view"];
if(dict != nil)
[mdict addEntriesFromDictionary:dict];
[[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:mdict];
}
-(PhoneView) currentView {
return currentView;
}
-(NSString*) getDisplayNameFromAddressBook:(NSString*) number andUpdateCallLog:(LinphoneCallLog*)log {
//1 normalize
NSString* lNormalizedNumber = [FastAddressBook normalizePhoneNumber:number];
@ -151,6 +170,7 @@ extern void libmsbcg729_init();
}
-(void) onCall:(LinphoneCall*) call StateChanged: (LinphoneCallState) new_state withMessage: (const char *) message {
// Handling wrapper
if(new_state == LinphoneCallReleased) {
if(linphone_call_get_user_pointer(call) != NULL) {
free (linphone_call_get_user_pointer(call));
@ -158,85 +178,43 @@ extern void libmsbcg729_init();
}
return;
}
const char* lUserNameChars=linphone_address_get_username(linphone_call_get_remote_address(call));
NSString* lUserName = lUserNameChars?[[[NSString alloc] initWithUTF8String:lUserNameChars] autorelease]:NSLocalizedString(@"Unknown",nil);
if (new_state == LinphoneCallIncomingReceived) {
[self updateCallWithAddressBookData:call]; // display name is updated
}
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);
if (!linphone_call_get_user_pointer(call)) {
LinphoneCallAppData* data = (LinphoneCallAppData*) malloc(sizeof(LinphoneCallAppData));
data->batteryWarningShown = FALSE;
linphone_call_set_user_pointer(call, data);
}
switch (new_state) {
case LinphoneCallIncomingReceived:
[callDelegate displayIncomingCall:call
NotificationFromUI:mCurrentViewController
forUser:lUserName
withDisplayName:lDisplayName];
break;
case LinphoneCallOutgoingInit:
[callDelegate displayCall:call
InProgressFromUI:mCurrentViewController
forUser:lUserName
withDisplayName:lDisplayName];
break;
case LinphoneCallPausedByRemote:
case LinphoneCallConnected:
[callDelegate displayInCall: call
FromUI:mCurrentViewController
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(theLinphoneCore)->automatically_accept) {
linphone_core_defer_call_update(theLinphoneCore, call);
[callDelegate displayAskToEnableVideoCall:call forUser:lUserName withDisplayName:lDisplayName];
} else if (linphone_call_params_video_enabled(current) && !linphone_call_params_video_enabled(remote)) {
[callDelegate displayInCall:call FromUI:mCurrentViewController forUser:lUserName withDisplayName:lDisplayName];
}
break;
}
case LinphoneCallUpdated:
{
const LinphoneCallParams* current = linphone_call_get_current_params(call);
if (linphone_call_params_video_enabled(current)) {
[callDelegate displayVideoCall:call FromUI:mCurrentViewController forUser:lUserName withDisplayName:lDisplayName];
if (new_state == LinphoneCallIncomingReceived) {
[self updateCallWithAddressBookData:call]; // display name is updated
}
// Post event
NSDictionary* dict = [[NSDictionary alloc] initWithObjectsAndKeys:
[[[LinphoneCallWrapper alloc] initWithCall: call] autorelease], @"call",
[NSNumber numberWithInt:new_state], @"state",
[[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 {
[callDelegate displayInCall:call FromUI:mCurrentViewController forUser:lUserName withDisplayName:lDisplayName];
lMessage=[NSString stringWithFormat : NSLocalizedString(@"Cannot call %@",nil),lUserName];
}
break;
}
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 {
@ -244,59 +222,20 @@ extern void libmsbcg729_init();
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];
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];
if (canHideInCallView) {
[callDelegate displayDialerFromUI:mCurrentViewController
forUser:@""
withDisplayName:@""];
} else {
[callDelegate displayInCall:call
FromUI:mCurrentViewController
forUser:lUserName
withDisplayName:lDisplayName];
}
break;
}
case LinphoneCallEnd:
if (canHideInCallView) {
[callDelegate displayDialerFromUI:mCurrentViewController
forUser:@""
withDisplayName:@""];
} else {
[callDelegate displayInCall:call
FromUI:mCurrentViewController
forUser:lUserName
withDisplayName:lDisplayName];
}
break;
case LinphoneCallStreamsRunning:
//check video
if (linphone_call_params_video_enabled(linphone_call_get_current_params(call))) {
[callDelegate displayVideoCall:call FromUI:mCurrentViewController
forUser:lUserName
withDisplayName:lDisplayName];
} else {
[callDelegate displayInCall:call FromUI:mCurrentViewController forUser:lUserName withDisplayName:lDisplayName];
}
break;
break;
}
default:
break;
}
}
-(void) displayDialer {
[callDelegate displayDialerFromUI:mCurrentViewController
forUser:@""
withDisplayName:@""];
}
}
+(LinphoneCore*) getLc {
@ -306,12 +245,18 @@ extern void libmsbcg729_init();
return theLinphoneCore;
}
-(void) addLog:(NSString*) log {
- (void)addLog:(NSString*) log {
[mLogView addLog:log];
}
-(void)displayStatus:(NSString*) message {
[callDelegate displayStatus:message];
- (void)displayStatus:(NSString*) message {
// Post event
NSDictionary* dict = [[NSDictionary alloc] initWithObjectsAndKeys:
message, @"message",
nil];
[[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneDisplayStatus" object:self userInfo:dict];
}
//generic log handler for debug version
static void linphone_iphone_log_handler(int lev, const char *fmt, va_list args){
NSString* format = [[NSString alloc] initWithCString:fmt encoding:[NSString defaultCStringEncoding]];
@ -1062,6 +1007,13 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
return NO;
}
+(void) set:(UIButton*)view enabled: (BOOL) enabled withName:(const char*)name andReason:(const char*) reason{
if (view.enabled != enabled) {
ms_message("UI - '%s' is now '%s' ('%s')", name, enabled ? "ENABLED" : "DISABLED", reason);
[view setEnabled:enabled];
}
}
+(void) set:(UIView*)view hidden: (BOOL) hidden withName:(const char*)name andReason:(const char*) reason{
if (view.hidden != hidden) {
ms_message("UI - '%s' is now '%s' ('%s')", name, hidden ? "HIDDEN" : "SHOWN", reason);

View file

@ -1,34 +0,0 @@
/* LinphoneUIControler.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 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 <UIKit/UIKit.h>
#include "linphonecore.h"
@protocol LinphoneUICallDelegate
// UI changes
-(void) displayDialerFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName;
-(void) displayCall: (LinphoneCall*) call InProgressFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName;
-(void) displayIncomingCall: (LinphoneCall*) call NotificationFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName;
-(void) displayInCall: (LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName;
-(void) displayVideoCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName;
//status reporting
-(void) displayStatus:(NSString*) message;
-(void) displayAskToEnableVideoCall:(LinphoneCall*) call forUser:(NSString*) username withDisplayName:(NSString*) displayName;
-(void) firstVideoFrameDecoded:(LinphoneCall*) call;
@end

View file

@ -21,10 +21,9 @@
#import "UIHangUpButton.h"
#import "UIDigitButton.h"
#import "UIToggleButton.h"
#import "UIMuteButton.h"
#import "UIMicroButton.h"
#import "UISpeakerButton.h"
#import "UIDuration.h"
#import "UIEraseButton.h"
#import "LinphoneUIDelegates.h"
#import "UICamSwitch.h"
#import "UIPauseResumeButton.h"

View file

@ -21,7 +21,7 @@
#import "UIToggleButton.h"
@interface UIMuteButton : UIToggleButton<UIToggleButtonDelegate> {
@interface UIMicroButton : UIToggleButton<UIToggleButtonDelegate> {
}

View file

@ -15,42 +15,33 @@
* 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 "UIMuteButton.h"
#include "LinphoneManager.h"
*/
#import "UIMicroButton.h"
@implementation UIMuteButton
#import "LinphoneManager.h"
@implementation UIMicroButton
-(void) onOn {
linphone_core_mute_mic([LinphoneManager getLc], true);
}
-(void) onOff {
- (void)onOn {
linphone_core_mute_mic([LinphoneManager getLc], false);
}
-(bool) isInitialStateOn {
@try {
return true == linphone_core_is_mic_muted([LinphoneManager getLc]);
} @catch(NSException* e) {
//not ready yet
return false;
}
- (void)onOff {
linphone_core_mute_mic([LinphoneManager getLc], true);
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
// Drawing code.
- (bool)isInitialStateOn {
@try {
return linphone_core_is_mic_muted([LinphoneManager getLc]) == false;
} @catch(NSException* e) {
//not ready yet
return true;
}
}
*/
- (void)dealloc {
[super dealloc];
}
@end

View file

@ -35,14 +35,16 @@ static void audioRouteChangeListenerCallback (
}
-(void) initWithOnImage:(UIImage*) onImage offImage:(UIImage*) offImage debugName:(const char *)name{
[super initWithOnImage:onImage offImage:offImage debugName:name];
- (id)init {
if((self = [super init]) != nil) {
AudioSessionInitialize(NULL, NULL, NULL, NULL);
OSStatus lStatus = AudioSessionAddPropertyListener(routeChangeID, audioRouteChangeListenerCallback, self);
if (lStatus) {
ms_error ("cannot register route change handler [%ld]",lStatus);
}
AudioSessionInitialize(NULL, NULL, NULL, NULL);
OSStatus lStatus = AudioSessionAddPropertyListener(routeChangeID, audioRouteChangeListenerCallback, self);
if (lStatus) {
ms_error ("cannot register route change handler [%ld]",lStatus);
}
}
return self;
}

View file

@ -25,18 +25,9 @@
-(bool) isInitialStateOn;
@end
@interface UIToggleButton : UIButton <UIToggleButtonDelegate> {
@private
UIImage* mOnImage;
UIImage* mOffImage;
bool mIsOn;
const char* debugName;
@interface UIToggleButton : UIButton <UIToggleButtonDelegate> {
}
-(void) initWithOnImage:(UIImage*) onImage offImage:(UIImage*) offImage debugName:(const char*) name;
-(bool) reset;
-(bool) isOn;
-(bool) toggle;
@end

View file

@ -16,60 +16,55 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#import "UIToggleButton.h"
#include "linphonecore.h"
@implementation UIToggleButton
-(void) touchUp:(id) sender {
- (void)touchUp:(id) sender {
[self toggle];
}
-(bool) isOn {
return mIsOn;
}
-(bool) toggle {
ms_message("UI - Toggle button '%s' state change %d -> %d",
debugName, mIsOn, !mIsOn);
if (mIsOn) {
[self setImage:mOffImage forState:UIControlStateNormal];
mIsOn=!mIsOn;
- (bool)toggle {
if (self.selected) {
self.selected=!self.selected;
[self onOff];
} else {
[self setImage:mOnImage forState:UIControlStateNormal];
mIsOn=!mIsOn;
self.selected=!self.selected;
[self onOn];
}
return mIsOn;
}
-(bool) reset {
mIsOn = [self isInitialStateOn];
[self setImage:mIsOn?mOnImage:mOffImage forState:UIControlStateNormal];
return mIsOn;
return self.selected;
}
-(void) initWithOnImage:(UIImage*) onImage offImage:(UIImage*) offImage debugName:(const char *)name{
mOnImage = [onImage retain];
mOffImage = [offImage retain];
mIsOn=false;
debugName = name;
[self reset];
- (bool)reset {
self.selected = [self isInitialStateOn];
return self.selected;
}
- (id) init {
[self reset];
[self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside];
return self;
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
// Drawing code.
}
*/
- (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)dealloc {
[super dealloc];
[mOffImage release];
[mOffImage release];
}
-(void) onOn {
@ -86,5 +81,4 @@
return false;
}
@end

View file

@ -55,14 +55,15 @@
[self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside];
return self;
}
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self init];
}
return self;
}
- (id)initWithCoder:(NSCoder *)decoder {
self = [super initWithCoder:decoder];
if (self) {

View file

@ -21,7 +21,6 @@
#include "ConsoleViewController.h"
#import "LinphoneManager.h"
@implementation MoreViewController
@synthesize web;
@synthesize credit;
@ -29,7 +28,6 @@
@synthesize creditText;
@synthesize weburi;
//Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
@ -40,8 +38,6 @@
}
/*
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
@ -62,16 +58,12 @@
// e.g. self.myOutlet = nil;
}
- (void)dealloc {
[super dealloc];
}
-(void) enableLogView {
isLogViewEnabled = true;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
@ -99,9 +91,6 @@
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.section == 0) {
return credit;

View file

@ -29,20 +29,23 @@
@private
NSMutableDictionary *viewDescriptions;
NSArray *views;
UIViewController *callTabBarController;
UIViewController *statusBarController;
UIViewController *callTabBarController;
UIViewController *mainTabBarController;
UIView *addCallTabBar;
UIViewController *incomingCallTabBarController;
}
@property (nonatomic, retain) IBOutlet UIView* statusBarView;
@property (nonatomic, retain) IBOutlet UIView* contentView;
@property (nonatomic, retain) IBOutlet UIView* tabBarView;
@property (nonatomic, retain) IBOutlet UIViewController* callTabBarController;
@property (nonatomic, retain) IBOutlet UIViewController* statusBarController;
@property (nonatomic, retain) IBOutlet UIViewController* callTabBarController;
@property (nonatomic, retain) IBOutlet UIViewController* mainTabBarController;
@property (nonatomic, retain) IBOutlet UIView* addCallTabBar;
@property (nonatomic, retain) IBOutlet UIViewController* incomingCallTabBarController;
-(void) changeView: (NSNotification*) notif;
@end

View file

@ -45,13 +45,14 @@ typedef enum _TabBar {
@synthesize contentView;
@synthesize tabBarView;
@synthesize callTabBarController;
@synthesize statusBarController;
@synthesize mainTabBarController;
@synthesize addCallTabBar;
- (void) changeView: (NSNotification*) notif {
PhoneView view = [[notif.userInfo objectForKey: @"PhoneView"] intValue];
@synthesize callTabBarController;
@synthesize mainTabBarController;
@synthesize incomingCallTabBarController;
- (void)changeView: (NSNotification*) notif {
PhoneView view = [[notif.userInfo objectForKey: @"view"] intValue];
ViewsDescription *description = [viewDescriptions objectForKey:[NSNumber numberWithInt: view]];
for (UIView *view in contentView.subviews) {
@ -101,7 +102,7 @@ typedef enum _TabBar {
contentView.frame = contentFrame;
}
-(void)viewDidLoad {
- (void)viewDidLoad {
[super viewDidLoad];
UIView *dumb;
@ -174,11 +175,11 @@ typedef enum _TabBar {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeView:) name:@"LinphoneMainViewChange" object:nil];
}
- (void) viewDidUnload {
- (void)viewDidUnload {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (void) dealloc {
- (void)dealloc {
[super dealloc];
[viewDescriptions dealloc];
[statusBarView dealloc];

View file

@ -161,7 +161,7 @@
<int key="type">2</int>
<double key="pointSize">15</double>
</object>
<object class="NSFont" key="IBUIFont" id="869093493">
<object class="NSFont" key="IBUIFont" id="756910294">
<string key="NSName">Helvetica-Bold</string>
<double key="NSSize">15</double>
<int key="NSfFlags">16</int>
@ -196,7 +196,7 @@
<string key="NSResourceName">refuser-actif.png</string>
</object>
<reference key="IBUIFontDescription" ref="9235248"/>
<reference key="IBUIFont" ref="869093493"/>
<reference key="IBUIFont" ref="756910294"/>
</object>
</object>
<string key="NSFrameSize">{320, 77}</string>
@ -263,7 +263,7 @@
<string key="NSResourceName">contact-actif-add-call.png</string>
</object>
<reference key="IBUIFontDescription" ref="9235248"/>
<reference key="IBUIFont" ref="869093493"/>
<reference key="IBUIFont" ref="756910294"/>
</object>
<object class="IBUIButton" id="242616498">
<reference key="NSNextResponder" ref="909644813"/>
@ -294,7 +294,7 @@
<string key="NSResourceName">cancel-actif.png</string>
</object>
<reference key="IBUIFontDescription" ref="9235248"/>
<reference key="IBUIFont" ref="869093493"/>
<reference key="IBUIFont" ref="756910294"/>
</object>
<object class="IBUIButton" id="143858935">
<reference key="NSNextResponder" ref="909644813"/>
@ -327,7 +327,7 @@
</object>
<reference key="IBUINormalBackgroundImage" ref="754280770"/>
<reference key="IBUIFontDescription" ref="9235248"/>
<reference key="IBUIFont" ref="869093493"/>
<reference key="IBUIFont" ref="756910294"/>
</object>
</object>
<string key="NSFrameSize">{320, 72}</string>
@ -352,7 +352,7 @@
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<bool key="IBUIHorizontal">NO</bool>
</object>
<object class="IBUIViewController" id="233122513">
<object class="IBUIViewController" id="355474761">
<bool key="IBUIAutoresizesArchivedViewToFullSize">NO</bool>
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
<object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
@ -400,14 +400,6 @@
</object>
<int key="connectionID">159</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">addCallTabBar</string>
<reference key="source" ref="841351856"/>
<reference key="destination" ref="909644813"/>
</object>
<int key="connectionID">164</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">statusBarView</string>
@ -436,7 +428,7 @@
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">callTabBarController</string>
<reference key="source" ref="841351856"/>
<reference key="destination" ref="233122513"/>
<reference key="destination" ref="355474761"/>
</object>
<int key="connectionID">196</int>
</object>
@ -583,7 +575,7 @@
</object>
<object class="IBObjectRecord">
<int key="objectID">194</int>
<reference key="object" ref="233122513"/>
<reference key="object" ref="355474761"/>
<reference key="parent" ref="0"/>
<string key="objectName">callBarController</string>
</object>
@ -682,112 +674,6 @@
<object class="IBPartialClassDescription">
<string key="className">LinphoneMainBar</string>
<string key="superclassName">UIViewController</string>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>onChatClick:</string>
<string>onContactsClick:</string>
<string>onDialerClick:</string>
<string>onHistoryClick:</string>
<string>onSettingsClick:</string>
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>onChatClick:</string>
<string>onContactsClick:</string>
<string>onDialerClick:</string>
<string>onHistoryClick:</string>
<string>onSettingsClick:</string>
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBActionInfo">
<string key="name">onChatClick:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">onContactsClick:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">onDialerClick:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">onHistoryClick:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">onSettingsClick:</string>
<string key="candidateClassName">id</string>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>chatButton</string>
<string>contactsButton</string>
<string>dialerButton</string>
<string>historyButton</string>
<string>settingsButton</string>
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>UIButton</string>
<string>UIButton</string>
<string>UIButton</string>
<string>UIButton</string>
<string>UIButton</string>
</object>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>chatButton</string>
<string>contactsButton</string>
<string>dialerButton</string>
<string>historyButton</string>
<string>settingsButton</string>
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">chatButton</string>
<string key="candidateClassName">UIButton</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">contactsButton</string>
<string key="candidateClassName">UIButton</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">dialerButton</string>
<string key="candidateClassName">UIButton</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">historyButton</string>
<string key="candidateClassName">UIButton</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">settingsButton</string>
<string key="candidateClassName">UIButton</string>
</object>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/LinphoneMainBar.h</string>
@ -847,9 +733,9 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>addCallTabBar</string>
<string>callTabBarController</string>
<string>contentView</string>
<string>incomingCallTabBarController</string>
<string>mainTabBarController</string>
<string>statusBarController</string>
<string>statusBarView</string>
@ -857,11 +743,11 @@
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>UIView</string>
<string>UIViewController</string>
<string>UIView</string>
<string>UIViewController</string>
<string>UIViewController</string>
<string>UIViewController</string>
<string>UIView</string>
<string>UIView</string>
</object>
@ -870,9 +756,9 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>addCallTabBar</string>
<string>callTabBarController</string>
<string>contentView</string>
<string>incomingCallTabBarController</string>
<string>mainTabBarController</string>
<string>statusBarController</string>
<string>statusBarView</string>
@ -880,10 +766,6 @@
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">addCallTabBar</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">callTabBarController</string>
<string key="candidateClassName">UIViewController</string>
@ -892,6 +774,10 @@
<string key="name">contentView</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">incomingCallTabBarController</string>
<string key="candidateClassName">UIViewController</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">mainTabBarController</string>
<string key="candidateClassName">UIViewController</string>

View file

@ -28,7 +28,7 @@
@class FirstLoginViewController;
@interface PhoneViewController : UIViewController <UITextFieldDelegate,LinphoneUICallDelegate, UIActionSheetCustomDelegate> {
@interface PhoneViewController : UIViewController <UITextFieldDelegate, UIActionSheetCustomDelegate> {
@private
//UI definition
@ -62,7 +62,6 @@
UIActionSheet *mIncomingCallActionSheet;
FirstLoginViewController* myFirstLoginViewController;
InCallViewController* mIncallViewController;
MainScreenWithVideoPreview* mMainScreenWithVideoPreview;
UIButton* switchCamera;

View file

@ -102,6 +102,9 @@
- (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];
@ -121,10 +124,6 @@
[erase initWithAddressField:address];
[backToCallView addTarget:self action:@selector(backToCallViewPressed) forControlEvents:UIControlEventTouchUpInside];
if (mIncallViewController == nil)
mIncallViewController = [[InCallViewController alloc] initWithNibName:[LinphoneManager runningOnIpad]?@"InCallViewController-ipad":@"InCallViewController"
bundle:[NSBundle mainBundle]];
/*if (statusSubViewController == nil) {
statusSubViewController = [[StatusSubViewController alloc] initWithNibName:@"StatusSubViewController"
bundle:[NSBundle mainBundle]];
@ -144,6 +143,7 @@
- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
@ -160,6 +160,107 @@
[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
@ -186,19 +287,12 @@
//first login case, dismmis first login view
[self dismissModalViewControllerAnimated:true];
};
[mIncallViewController displayDialerFromUI:viewCtrl
forUser:username
withDisplayName:displayName];
//[myTabBarController setSelectedIndex:DIALER_TAB_INDEX];
[[LinphoneManager instance] changeView:PhoneView_Dialer];
[mMainScreenWithVideoPreview showPreview:YES];
}
- (void)displayStatus:(NSString*) message {
[mIncallViewController displayStatus:message];
}
- (void)displayIncomingCall:(LinphoneCall*) call NotificationFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName {
[mMainScreenWithVideoPreview showPreview:NO];
if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)]
@ -245,7 +339,7 @@
- (void)backToCallViewPressed {
[UICallButton enableTransforMode:NO];
[self presentModalViewController:(UIViewController*)mIncallViewController animated:true];
[[LinphoneManager instance] changeView:PhoneView_InCall];
LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]);
@ -261,29 +355,20 @@
- (void)displayCall: (LinphoneCall*) call InProgressFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName {
[mMainScreenWithVideoPreview showPreview:NO];
if (self.presentedViewController != (UIViewController*)mIncallViewController) {
[self presentModalViewController:(UIViewController*)mIncallViewController animated:true];
if ([[LinphoneManager instance]currentView] != PhoneView_InCall) {
[[LinphoneManager instance] changeView:PhoneView_InCall];
}
[mIncallViewController displayCall:call InProgressFromUI:viewCtrl
forUser:username
withDisplayName:displayName];
[mMainScreenWithVideoPreview showPreview:NO];
}
- (void)displayInCall: (LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName {
[mMainScreenWithVideoPreview showPreview:NO];
if (self.presentedViewController != (UIViewController*)mIncallViewController && (call == 0x0 ||
if ([[LinphoneManager instance]currentView] != PhoneView_InCall && (call == 0x0 ||
linphone_call_get_dir(call)==LinphoneCallIncoming)){
[self presentModalViewController:(UIViewController*)mIncallViewController animated:true];
[[LinphoneManager instance] changeView:PhoneView_InCall];
}
[mIncallViewController displayInCall:call FromUI:viewCtrl
forUser:username
withDisplayName:displayName];
[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__];
@ -295,20 +380,14 @@
- (void)displayVideoCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName {
[mMainScreenWithVideoPreview showPreview:NO];
[mIncallViewController displayVideoCall:call FromUI:viewCtrl
forUser:username
withDisplayName:displayName];
[mMainScreenWithVideoPreview showPreview:NO];
[self updateCallAndBackButtons];
}
- (void)displayAskToEnableVideoCall:(LinphoneCall*) call forUser:(NSString*) username withDisplayName:(NSString*) displayName {
[mIncallViewController displayAskToEnableVideoCall:call forUser:username withDisplayName:displayName];
}
- (void)actionSheet:(UIActionSheet *)actionSheet ofType:(enum CallDelegateType)type clickedButtonAtIndex:(NSInteger)buttonIndex withUserDatas:(void *)datas {
if (type != CD_NEW_CALL)
return;
@ -323,8 +402,9 @@
}
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
[address dealloc];
[ mDisplayName dealloc];
[mDisplayName dealloc];
[dialerView dealloc];
[callShort dealloc];
[callLarge dealloc];
@ -342,7 +422,6 @@
[zero dealloc];
[hash dealloc];
[myTabBarController release];
[mIncallViewController release];
[super dealloc];
}
@ -371,7 +450,7 @@
}
- (void)firstVideoFrameDecoded: (LinphoneCall*) call {
[mIncallViewController firstVideoFrameDecoded:call];
// [mIncallViewController firstVideoFrameDecoded:call];
}
- (IBAction)onAddContact: (id) event {

View file

@ -127,7 +127,6 @@
<string key="NSFrame">{{215, 0}, {105, 72}}</string>
<reference key="NSSuperview" ref="32193173"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
@ -770,6 +769,14 @@
</object>
<int key="connectionID">186</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">callLarge</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="375677999"/>
</object>
<int key="connectionID">189</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">delegate</string>
@ -1106,7 +1113,7 @@
<reference key="dict.values" ref="0"/>
</object>
<nil key="sourceID"/>
<int key="maxID">188</int>
<int key="maxID">189</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">

View file

@ -23,21 +23,21 @@
UIView* mPortrait;
UIView* mDisplay;
UIView* mPreview;
UIMuteButton* mMute;
UIMicroButton* mMute;
UIHangUpButton* mHangUp;
UICamSwitch* mCamSwitch;
UIView* mLandscapeRight;
UIView* mDisplayLandRight;
UIView* mPreviewLandRight;
UIMuteButton* mMuteLandRight;
UIMicroButton* mMuteLandRight;
UIHangUpButton* mHangUpLandRight;
UICamSwitch* mCamSwitchLandRight;
UIView* mLandscapeLeft;
UIView* mDisplayLandLeft;
UIView* mPreviewLandLeft;
UIMuteButton* mMuteLandLeft;
UIMicroButton* mMuteLandLeft;
UIHangUpButton* mHangUpLandLeft;
UICamSwitch* mCamSwitchLandLeft;
BOOL isFirst;
@ -48,7 +48,7 @@
@property (nonatomic, retain) IBOutlet UIView* mPortrait;
@property (nonatomic, retain) IBOutlet UIView* mDisplay;
@property (nonatomic, retain) IBOutlet UIView* mPreview;
@property (nonatomic, retain) IBOutlet UIMuteButton* mMute;
@property (nonatomic, retain) IBOutlet UIMicroButton* mMute;
@property (nonatomic, retain) IBOutlet UIHangUpButton* mHangUp;
@property (nonatomic, retain) IBOutlet UICamSwitch* mCamSwitch;
@property (nonatomic, retain) IBOutlet UIImageView *mCallQuality;
@ -56,7 +56,7 @@
@property (nonatomic, retain) IBOutlet UIView* mLandscapeRight;
@property (nonatomic, retain) IBOutlet UIView* mDisplayLandRight;
@property (nonatomic, retain) IBOutlet UIView* mPreviewLandRight;
@property (nonatomic, retain) IBOutlet UIMuteButton* mMuteLandRight;
@property (nonatomic, retain) IBOutlet UIMicroButton* mMuteLandRight;
@property (nonatomic, retain) IBOutlet UIHangUpButton* mHangUpLandRight;
@property (nonatomic, retain) IBOutlet UICamSwitch* mCamSwitchLandRight;
@property (nonatomic, retain) IBOutlet UIImageView *mCallQualityLandRight;
@ -64,7 +64,7 @@
@property (nonatomic, retain) IBOutlet UIView* mLandscapeLeft;
@property (nonatomic, retain) IBOutlet UIView* mDisplayLandLeft;
@property (nonatomic, retain) IBOutlet UIView* mPreviewLandLeft;
@property (nonatomic, retain) IBOutlet UIMuteButton* mMuteLandLeft;
@property (nonatomic, retain) IBOutlet UIMicroButton* mMuteLandLeft;
@property (nonatomic, retain) IBOutlet UIHangUpButton* mHangUpLandLeft;
@property (nonatomic, retain) IBOutlet UICamSwitch* mCamSwitchLandLeft;
@property (retain, nonatomic) IBOutlet UIImageView *mCallQualityLandLeft;

View file

@ -78,9 +78,9 @@ NSTimer *callQualityRefresher;
- (void)viewDidLoad
{
[super viewDidLoad];
[mMute initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE button"];
/*[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"];
[mMuteLandLeft initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE3 button"];*/
[mCamSwitch setPreview:mPreview];
[mCamSwitchLandRight setPreview:mPreviewLandRight];
[mCamSwitchLandLeft setPreview:mPreviewLandLeft];

View file

@ -56,8 +56,7 @@
2214783D1386A2030020F8B8 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2214783B1386A2030020F8B8 /* Localizable.strings */; };
2214EB7A12F846B1002A5394 /* UICallButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EB7912F846B1002A5394 /* UICallButton.m */; };
2214EB8912F84EBB002A5394 /* UIHangUpButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EB8812F84EBB002A5394 /* UIHangUpButton.m */; };
2214EBDA12F8558F002A5394 /* UIToggleButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EBD912F8558F002A5394 /* UIToggleButton.m */; };
2214EBF312F86360002A5394 /* UIMuteButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EBF212F86360002A5394 /* UIMuteButton.m */; };
2214EBF312F86360002A5394 /* UIMicroButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EBF212F86360002A5394 /* UIMicroButton.m */; };
2218A92512FBE1340088A667 /* FirstLoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2218A92312FBE1340088A667 /* FirstLoginViewController.m */; };
2218A92612FBE1340088A667 /* FirstLoginViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2218A92412FBE1340088A667 /* FirstLoginViewController.xib */; };
22226C12118197C0000CA27B /* startcall-green.png in Resources */ = {isa = PBXBuildFile; fileRef = 22226C11118197C0000CA27B /* startcall-green.png */; };
@ -105,7 +104,6 @@
22AA8AFE13D7125600B30535 /* libmsx264.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22AA8AFC13D7125500B30535 /* libmsx264.a */; };
22AA8B0113D83F6300B30535 /* UICamSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = 22AA8B0013D83F6300B30535 /* UICamSwitch.m */; };
22B5EFA310CE50BD00777D97 /* AddressBookUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22B5EFA210CE50BD00777D97 /* AddressBookUI.framework */; };
22B5EFE510CE5E5800777D97 /* ContactPickerDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 22B5EFE410CE5E5800777D97 /* ContactPickerDelegate.m */; };
22B5F03510CE6B2F00777D97 /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22B5F03410CE6B2F00777D97 /* AddressBook.framework */; };
22BB1A69132FF16A005CD7AA /* UIEraseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22BB1A68132FF16A005CD7AA /* UIEraseButton.m */; };
22C755601317E59C007BC101 /* UIBluetoothButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22C7555F1317E59C007BC101 /* UIBluetoothButton.m */; };
@ -138,15 +136,13 @@
22D8F144147548E2008C97DB /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
22D8F145147548E2008C97DB /* LinphoneAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* LinphoneAppDelegate.m */; };
22D8F146147548E2008C97DB /* PhoneViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22F2508C107141E100AC9B3F /* PhoneViewController.m */; };
22D8F147147548E2008C97DB /* ContactPickerDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 22B5EFE410CE5E5800777D97 /* ContactPickerDelegate.m */; };
22D8F14A147548E2008C97DB /* MoreViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22E0A81C111C44E100B04932 /* MoreViewController.m */; };
22D8F14B147548E2008C97DB /* ConsoleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22E0A81F111C44E100B04932 /* ConsoleViewController.m */; };
22D8F14C147548E2008C97DB /* UIDigitButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2248E90D12F7E4CF00220D9C /* UIDigitButton.m */; };
22D8F14D147548E2008C97DB /* LinphoneManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2248E99E12F801C200220D9C /* LinphoneManager.m */; };
22D8F14E147548E2008C97DB /* UICallButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EB7912F846B1002A5394 /* UICallButton.m */; };
22D8F14F147548E2008C97DB /* UIHangUpButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EB8812F84EBB002A5394 /* UIHangUpButton.m */; };
22D8F150147548E2008C97DB /* UIToggleButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EBD912F8558F002A5394 /* UIToggleButton.m */; };
22D8F151147548E2008C97DB /* UIMuteButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EBF212F86360002A5394 /* UIMuteButton.m */; };
22D8F151147548E2008C97DB /* UIMicroButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EBF212F86360002A5394 /* UIMicroButton.m */; };
22D8F152147548E2008C97DB /* UISpeakerButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22968A5E12F875C600588287 /* UISpeakerButton.m */; };
22D8F153147548E2008C97DB /* UIDuration.m in Sources */ = {isa = PBXBuildFile; fileRef = 22968A8712F87C2000588287 /* UIDuration.m */; };
22D8F154147548E2008C97DB /* FirstLoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2218A92312FBE1340088A667 /* FirstLoginViewController.m */; };
@ -264,6 +260,8 @@
D326483F1588950F00930C67 /* LinphoneCallBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D326483C1588950F00930C67 /* LinphoneCallBar.m */; };
D32648401588950F00930C67 /* LinphoneCallBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D326483D1588950F00930C67 /* LinphoneCallBar.xib */; };
D32648411588950F00930C67 /* LinphoneCallBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D326483D1588950F00930C67 /* LinphoneCallBar.xib */; };
D32648441588F6FC00930C67 /* UIToggleButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D32648431588F6FB00930C67 /* UIToggleButton.m */; };
D32648451588F6FC00930C67 /* UIToggleButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D32648431588F6FB00930C67 /* UIToggleButton.m */; };
D347347A1580DDF1003C7B8C /* PhoneMainView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D34734791580DDF1003C7B8C /* PhoneMainView.xib */; };
D347347E1580E5F8003C7B8C /* history-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D347347C1580E5F8003C7B8C /* history-actif.png */; };
D347347F1580E5F8003C7B8C /* history-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D347347D1580E5F8003C7B8C /* history-selectionne.png */; };
@ -635,11 +633,8 @@
2214EB8712F84EBB002A5394 /* UIHangUpButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIHangUpButton.h; sourceTree = "<group>"; };
2214EB8812F84EBB002A5394 /* UIHangUpButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIHangUpButton.m; sourceTree = "<group>"; };
2214EB8A12F84FE9002A5394 /* UILinphone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UILinphone.h; sourceTree = "<group>"; };
2214EBD812F8558F002A5394 /* UIToggleButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIToggleButton.h; sourceTree = "<group>"; };
2214EBD912F8558F002A5394 /* UIToggleButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIToggleButton.m; sourceTree = "<group>"; };
2214EBF112F86360002A5394 /* UIMuteButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIMuteButton.h; sourceTree = "<group>"; };
2214EBF212F86360002A5394 /* UIMuteButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIMuteButton.m; sourceTree = "<group>"; };
2218A5C412F9597B0088A667 /* LinphoneUIDelegates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneUIDelegates.h; sourceTree = "<group>"; };
2214EBF112F86360002A5394 /* UIMicroButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIMicroButton.h; sourceTree = "<group>"; };
2214EBF212F86360002A5394 /* UIMicroButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIMicroButton.m; sourceTree = "<group>"; };
2218A5CE12F973450088A667 /* LogView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LogView.h; sourceTree = "<group>"; };
2218A92212FBE1340088A667 /* FirstLoginViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FirstLoginViewController.h; sourceTree = "<group>"; };
2218A92312FBE1340088A667 /* FirstLoginViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FirstLoginViewController.m; sourceTree = "<group>"; };
@ -696,8 +691,6 @@
22AA8AFF13D83F6300B30535 /* UICamSwitch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICamSwitch.h; sourceTree = "<group>"; };
22AA8B0013D83F6300B30535 /* UICamSwitch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UICamSwitch.m; sourceTree = "<group>"; };
22B5EFA210CE50BD00777D97 /* AddressBookUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBookUI.framework; path = System/Library/Frameworks/AddressBookUI.framework; sourceTree = SDKROOT; };
22B5EFE310CE5E5800777D97 /* ContactPickerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactPickerDelegate.h; sourceTree = "<group>"; };
22B5EFE410CE5E5800777D97 /* ContactPickerDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactPickerDelegate.m; sourceTree = "<group>"; };
22B5F03410CE6B2F00777D97 /* AddressBook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBook.framework; path = System/Library/Frameworks/AddressBook.framework; sourceTree = SDKROOT; };
22BB1A67132FF16A005CD7AA /* UIEraseButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIEraseButton.h; sourceTree = "<group>"; };
22BB1A68132FF16A005CD7AA /* UIEraseButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIEraseButton.m; sourceTree = "<group>"; };
@ -842,6 +835,8 @@
D326483B1588950F00930C67 /* LinphoneCallBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneCallBar.h; sourceTree = "<group>"; };
D326483C1588950F00930C67 /* LinphoneCallBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneCallBar.m; sourceTree = "<group>"; };
D326483D1588950F00930C67 /* LinphoneCallBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LinphoneCallBar.xib; sourceTree = "<group>"; };
D32648421588F6FA00930C67 /* UIToggleButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIToggleButton.h; sourceTree = "<group>"; };
D32648431588F6FB00930C67 /* UIToggleButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIToggleButton.m; sourceTree = "<group>"; };
D34734791580DDF1003C7B8C /* PhoneMainView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PhoneMainView.xib; sourceTree = "<group>"; };
D347347C1580E5F8003C7B8C /* history-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history-actif.png"; path = "Resources/history-actif.png"; sourceTree = "<group>"; };
D347347D1580E5F8003C7B8C /* history-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history-selectionne.png"; path = "Resources/history-selectionne.png"; sourceTree = "<group>"; };
@ -1074,8 +1069,6 @@
22E0A820111C44E100B04932 /* ConsoleViewController.h */,
22E0A81F111C44E100B04932 /* ConsoleViewController.m */,
22E0A81E111C44E100B04932 /* ConsoleViewController.xib */,
22B5EFE310CE5E5800777D97 /* ContactPickerDelegate.h */,
22B5EFE410CE5E5800777D97 /* ContactPickerDelegate.m */,
D35497FB15875372000081D8 /* ContactsController.h */,
D35497FC15875372000081D8 /* ContactsController.m */,
D35497FD15875372000081D8 /* ContactsController.xib */,
@ -1342,7 +1335,6 @@
D354981E1587716B000081D8 /* LinphoneStatusBar.h */,
D354981F1587716B000081D8 /* LinphoneStatusBar.m */,
D35498201587716B000081D8 /* LinphoneStatusBar.xib */,
2218A5C412F9597B0088A667 /* LinphoneUIDelegates.h */,
2218A5CE12F973450088A667 /* LogView.h */,
22C7555E1317E59C007BC101 /* UIBluetoothButton.h */,
22C7555F1317E59C007BC101 /* UIBluetoothButton.m */,
@ -1359,12 +1351,12 @@
2214EB8712F84EBB002A5394 /* UIHangUpButton.h */,
2214EB8812F84EBB002A5394 /* UIHangUpButton.m */,
2214EB8A12F84FE9002A5394 /* UILinphone.h */,
2214EBF112F86360002A5394 /* UIMuteButton.h */,
2214EBF212F86360002A5394 /* UIMuteButton.m */,
2214EBF112F86360002A5394 /* UIMicroButton.h */,
2214EBF212F86360002A5394 /* UIMicroButton.m */,
22968A5D12F875C600588287 /* UISpeakerButton.h */,
22968A5E12F875C600588287 /* UISpeakerButton.m */,
2214EBD812F8558F002A5394 /* UIToggleButton.h */,
2214EBD912F8558F002A5394 /* UIToggleButton.m */,
D32648421588F6FA00930C67 /* UIToggleButton.h */,
D32648431588F6FB00930C67 /* UIToggleButton.m */,
340751E5150F38FC00B89C47 /* UIToggleVideoButton.h */,
340751E6150F38FD00B89C47 /* UIToggleVideoButton.m */,
);
@ -2086,15 +2078,13 @@
1D60589B0D05DD56006BFB54 /* main.m in Sources */,
1D3623260D0F684500981E51 /* LinphoneAppDelegate.m in Sources */,
22F2508E107141E100AC9B3F /* PhoneViewController.m in Sources */,
22B5EFE510CE5E5800777D97 /* ContactPickerDelegate.m in Sources */,
22E0A822111C44E100B04932 /* MoreViewController.m in Sources */,
22E0A824111C44E100B04932 /* ConsoleViewController.m in Sources */,
2248E90E12F7E4CF00220D9C /* UIDigitButton.m in Sources */,
2248E99F12F801C200220D9C /* LinphoneManager.m in Sources */,
2214EB7A12F846B1002A5394 /* UICallButton.m in Sources */,
2214EB8912F84EBB002A5394 /* UIHangUpButton.m in Sources */,
2214EBDA12F8558F002A5394 /* UIToggleButton.m in Sources */,
2214EBF312F86360002A5394 /* UIMuteButton.m in Sources */,
2214EBF312F86360002A5394 /* UIMicroButton.m in Sources */,
22968A5F12F875C600588287 /* UISpeakerButton.m in Sources */,
22968A8812F87C2000588287 /* UIDuration.m in Sources */,
2218A92512FBE1340088A667 /* FirstLoginViewController.m in Sources */,
@ -2119,6 +2109,7 @@
D3A55FBC15877E5E003FD403 /* ContactCell.m in Sources */,
D326483815887D5200930C67 /* OrderedDictionary.m in Sources */,
D326483E1588950F00930C67 /* LinphoneCallBar.m in Sources */,
D32648441588F6FC00930C67 /* UIToggleButton.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -2129,15 +2120,13 @@
22D8F144147548E2008C97DB /* main.m in Sources */,
22D8F145147548E2008C97DB /* LinphoneAppDelegate.m in Sources */,
22D8F146147548E2008C97DB /* PhoneViewController.m in Sources */,
22D8F147147548E2008C97DB /* ContactPickerDelegate.m in Sources */,
22D8F14A147548E2008C97DB /* MoreViewController.m in Sources */,
22D8F14B147548E2008C97DB /* ConsoleViewController.m in Sources */,
22D8F14C147548E2008C97DB /* UIDigitButton.m in Sources */,
22D8F14D147548E2008C97DB /* LinphoneManager.m in Sources */,
22D8F14E147548E2008C97DB /* UICallButton.m in Sources */,
22D8F14F147548E2008C97DB /* UIHangUpButton.m in Sources */,
22D8F150147548E2008C97DB /* UIToggleButton.m in Sources */,
22D8F151147548E2008C97DB /* UIMuteButton.m in Sources */,
22D8F151147548E2008C97DB /* UIMicroButton.m in Sources */,
22D8F152147548E2008C97DB /* UISpeakerButton.m in Sources */,
22D8F153147548E2008C97DB /* UIDuration.m in Sources */,
22D8F154147548E2008C97DB /* FirstLoginViewController.m in Sources */,
@ -2162,6 +2151,7 @@
D3A55FBD15877E5E003FD403 /* ContactCell.m in Sources */,
D326483915887D5200930C67 /* OrderedDictionary.m in Sources */,
D326483F1588950F00930C67 /* LinphoneCallBar.m in Sources */,
D32648451588F6FC00930C67 /* UIToggleButton.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};