Add multi call support

Call details
This commit is contained in:
Yann Diorcet 2012-06-27 18:06:59 +02:00
parent c62dabc1bc
commit 6d669665c9
40 changed files with 1567 additions and 734 deletions

View file

@ -26,9 +26,11 @@
@private
//Buttons
UITextField* addressField;
UIButton* addContact;
UIButton* addContactButton;
UIButton* cancelButton;
UIEraseButton* eraseButton;
UICallButton* callButton;
UICallButton* addCallButton;
//Key pad
UIDigitButton* oneButton;
@ -48,8 +50,10 @@
- (void)setAddress:(NSString*) address;
@property (nonatomic, retain) IBOutlet UITextField* addressField;
@property (nonatomic, retain) IBOutlet UIButton* addContact;
@property (nonatomic, retain) IBOutlet UIButton* callButton;
@property (nonatomic, retain) IBOutlet UIButton* addContactButton;
@property (nonatomic, retain) IBOutlet UICallButton* callButton;
@property (nonatomic, retain) IBOutlet UICallButton* addCallButton;
@property (nonatomic, retain) IBOutlet UIButton* cancelButton;
@property (nonatomic, retain) IBOutlet UIEraseButton* eraseButton;
@property (nonatomic, retain) IBOutlet UIButton* oneButton;
@property (nonatomic, retain) IBOutlet UIButton* twoButton;
@ -64,7 +68,9 @@
@property (nonatomic, retain) IBOutlet UIButton* zeroButton;
@property (nonatomic, retain) IBOutlet UIButton* hashButton;
- (IBAction)onAddContact: (id) event;
- (IBAction)onAddContactClick: (id) event;
- (IBAction)onCancelClick: (id) event;
- (IBAction)onAddCallClick: (id) event;
- (IBAction)onAddressChange: (id)sender;
@end

View file

@ -31,7 +31,9 @@
@implementation DialerViewController
@synthesize addressField;
@synthesize addContact;
@synthesize addContactButton;
@synthesize cancelButton;
@synthesize addCallButton;
@synthesize callButton;
@synthesize eraseButton;
@ -52,12 +54,27 @@
return [super initWithNibName:@"DialerViewController" bundle:[NSBundle mainBundle]];
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
- (void)viewWillAppear:(BOOL)animated {
// [[LinphoneManager instance] setRegistrationDelegate:self];
//TODO
//[mMainScreenWithVideoPreview showPreview:YES];
if([LinphoneManager isLcReady]) {
LinphoneCore *lc = [LinphoneManager getLc];
if(linphone_core_get_calls_nb(lc) > 0) {
[addCallButton setHidden:false];
[callButton setHidden:true];
[cancelButton setHidden:false];
[addContactButton setHidden:true];
} else {
[addCallButton setHidden:true];
[callButton setHidden:false];
[cancelButton setHidden:true];
[addContactButton setHidden:false];
}
}
[super viewWillAppear:animated];
}
- (void)viewDidLoad {
@ -76,6 +93,7 @@
[starButton initWithNumber:'*' addressField:addressField dtmf:false];
[hashButton initWithNumber:'#' addressField:addressField dtmf:false];
[callButton initWithAddress:addressField];
[addCallButton initWithAddress:addressField];
[eraseButton initWithAddressField:addressField];
}
@ -85,9 +103,11 @@
- (void)dealloc {
[addressField release];
[addContact release];
[addContactButton release];
[cancelButton release];
[eraseButton release];
[callButton release];
[addCallButton release];
[oneButton release];
[twoButton release];
@ -111,19 +131,29 @@
return YES;
}
- (IBAction)onAddContact: (id) event {
- (IBAction)onAddContactClick: (id) event {
}
- (IBAction)onCancelClick: (id) event {
[[LinphoneManager instance] changeView:PhoneView_InCall];
}
- (IBAction)onAddCallClick: (id) event {
}
- (IBAction)onAddressChange: (id)sender {
if([[addressField text] length] > 0) {
[addContact setEnabled:TRUE];
[addContactButton setEnabled:TRUE];
[eraseButton setEnabled:TRUE];
[callButton setEnabled:TRUE];
[addCallButton setEnabled:TRUE];
} else {
[addContact setEnabled:FALSE];
[addContactButton setEnabled:FALSE];
[eraseButton setEnabled:FALSE];
[callButton setEnabled:FALSE];
[addCallButton setEnabled:FALSE];
}
}

View file

@ -518,13 +518,13 @@
<int key="NSvFlags">288</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBUIButton" id="617539638">
<object class="IBUIButton" id="657970815">
<reference key="NSNextResponder" ref="32193173"/>
<int key="NSvFlags">292</int>
<string key="NSFrameSize">{106, 69}</string>
<reference key="NSSuperview" ref="32193173"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="375677999"/>
<reference key="NSNextKeyView" ref="617539638"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
@ -534,15 +534,15 @@
<bool key="IBUIAdjustsImageWhenHighlighted">NO</bool>
<bool key="IBUIAdjustsImageWhenDisabled">NO</bool>
<reference key="IBUINormalTitleShadowColor" ref="177190558"/>
<object class="NSCustomResource" key="IBUIHighlightedBackgroundImage">
<object class="NSCustomResource" key="IBUIHighlightedBackgroundImage" id="642864408">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">add-contact-over.png</string>
</object>
<object class="NSCustomResource" key="IBUIDisabledBackgroundImage">
<object class="NSCustomResource" key="IBUIDisabledBackgroundImage" id="940547924">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">add-contact-inactif.png</string>
</object>
<object class="NSCustomResource" key="IBUINormalBackgroundImage">
<object class="NSCustomResource" key="IBUINormalBackgroundImage" id="755641438">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">add-contact-actif.png</string>
</object>
@ -552,13 +552,34 @@
</object>
<reference key="IBUIFont" ref="177658264"/>
</object>
<object class="IBUIButton" id="375677999">
<object class="IBUIButton" id="617539638">
<reference key="NSNextResponder" ref="32193173"/>
<int key="NSvFlags">-2147483356</int>
<string key="NSFrameSize">{106, 69}</string>
<reference key="NSSuperview" ref="32193173"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="749717331"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<bool key="IBUIAdjustsImageWhenHighlighted">NO</bool>
<bool key="IBUIAdjustsImageWhenDisabled">NO</bool>
<reference key="IBUINormalTitleShadowColor" ref="177190558"/>
<reference key="IBUIHighlightedBackgroundImage" ref="642864408"/>
<reference key="IBUIDisabledBackgroundImage" ref="940547924"/>
<reference key="IBUINormalBackgroundImage" ref="755641438"/>
<reference key="IBUIFontDescription" ref="769584456"/>
<reference key="IBUIFont" ref="177658264"/>
</object>
<object class="IBUIButton" id="749717331">
<reference key="NSNextResponder" ref="32193173"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{106, 0}, {108, 69}}</string>
<reference key="NSSuperview" ref="32193173"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="992434254"/>
<reference key="NSNextKeyView" ref="375677999"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
@ -583,6 +604,37 @@
<reference key="IBUIFontDescription" ref="769584456"/>
<reference key="IBUIFont" ref="177658264"/>
</object>
<object class="IBUIButton" id="375677999">
<reference key="NSNextResponder" ref="32193173"/>
<int key="NSvFlags">-2147483356</int>
<string key="NSFrame">{{106, 0}, {108, 69}}</string>
<reference key="NSSuperview" ref="32193173"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="992434254"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<bool key="IBUIEnabled">NO</bool>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<bool key="IBUIAdjustsImageWhenHighlighted">NO</bool>
<bool key="IBUIAdjustsImageWhenDisabled">NO</bool>
<reference key="IBUINormalTitleShadowColor" ref="177190558"/>
<object class="NSCustomResource" key="IBUIHighlightedBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">add_call_more_over.png</string>
</object>
<object class="NSCustomResource" key="IBUIDisabledBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">add_call_more_disable.png</string>
</object>
<object class="NSCustomResource" key="IBUINormalBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">add_call_more_default.png</string>
</object>
<reference key="IBUIFontDescription" ref="769584456"/>
<reference key="IBUIFont" ref="177658264"/>
</object>
<object class="IBUIButton" id="992434254">
<reference key="NSNextResponder" ref="32193173"/>
<int key="NSvFlags">292</int>
@ -622,7 +674,7 @@
<string key="NSFrame">{{0, 305}, {320, 69}}</string>
<reference key="NSSuperview" ref="542426306"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="617539638"/>
<reference key="NSNextKeyView" ref="657970815"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
@ -751,14 +803,6 @@
</object>
<int key="connectionID">202</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">callButton</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="375677999"/>
</object>
<int key="connectionID">203</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">eightButton</string>
@ -777,11 +821,35 @@
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">addContact</string>
<string key="label">addContactButton</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="657970815"/>
</object>
<int key="connectionID">225</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">cancelButton</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="617539638"/>
</object>
<int key="connectionID">206</int>
<int key="connectionID">226</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">addCallButton</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="375677999"/>
</object>
<int key="connectionID">227</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">callButton</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="749717331"/>
</object>
<int key="connectionID">231</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
@ -802,12 +870,30 @@
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">onAddContact:</string>
<string key="label">onCancelClick:</string>
<reference key="source" ref="617539638"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">187</int>
<int key="connectionID">229</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">onAddCallClick:</string>
<reference key="source" ref="375677999"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">228</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">onAddContactClick:</string>
<reference key="source" ref="657970815"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">230</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
@ -972,9 +1058,11 @@
<reference key="object" ref="32193173"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="375677999"/>
<reference ref="992434254"/>
<reference ref="657970815"/>
<reference ref="375677999"/>
<reference ref="617539638"/>
<reference ref="749717331"/>
</object>
<reference key="parent" ref="542426306"/>
<string key="objectName">toolBar</string>
@ -983,19 +1071,31 @@
<int key="objectID">183</int>
<reference key="object" ref="617539638"/>
<reference key="parent" ref="32193173"/>
<string key="objectName">addContact</string>
<string key="objectName">cancelButton</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">185</int>
<reference key="object" ref="992434254"/>
<reference key="parent" ref="32193173"/>
<string key="objectName">backspace</string>
<string key="objectName">backspaceButton</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">184</int>
<reference key="object" ref="375677999"/>
<reference key="parent" ref="32193173"/>
<string key="objectName">call</string>
<string key="objectName">addCallButton</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">222</int>
<reference key="object" ref="657970815"/>
<reference key="parent" ref="32193173"/>
<string key="objectName">addContactButton</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">224</int>
<reference key="object" ref="749717331"/>
<reference key="parent" ref="32193173"/>
<string key="objectName">callButton</string>
</object>
</object>
</object>
@ -1021,6 +1121,11 @@
<string>185.CustomClassName</string>
<string>185.IBPluginDependency</string>
<string>185.IBUIButtonInspectorSelectedStateConfigurationMetadataKey</string>
<string>222.IBPluginDependency</string>
<string>222.IBUIButtonInspectorSelectedStateConfigurationMetadataKey</string>
<string>224.CustomClassName</string>
<string>224.IBPluginDependency</string>
<string>224.IBUIButtonInspectorSelectedStateConfigurationMetadataKey</string>
<string>29.CustomClassName</string>
<string>29.IBPluginDependency</string>
<string>30.CustomClassName</string>
@ -1075,10 +1180,15 @@
<real value="3"/>
<string>UICallButton</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="3"/>
<real value="0.0"/>
<string>UIEraseButton</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="3"/>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="3"/>
<string>UICallButton</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="0.0"/>
<string>UIDigitButton</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>UIDigitButton</string>
@ -1130,7 +1240,7 @@
<reference key="dict.values" ref="0"/>
</object>
<nil key="sourceID"/>
<int key="maxID">221</int>
<int key="maxID">231</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@ -1142,41 +1252,57 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>onAddContact:</string>
<string>onAddCallClick:</string>
<string>onAddContactClick:</string>
<string>onAddressChange:</string>
<string>onCancelClick:</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>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>onAddContact:</string>
<string>onAddCallClick:</string>
<string>onAddContactClick:</string>
<string>onAddressChange:</string>
<string>onCancelClick:</string>
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBActionInfo">
<string key="name">onAddContact:</string>
<string key="name">onAddCallClick:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">onAddContactClick:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">onAddressChange:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">onCancelClick:</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>addContact</string>
<string>addCallButton</string>
<string>addContactButton</string>
<string>addressField</string>
<string>callButton</string>
<string>cancelButton</string>
<string>eightButton</string>
<string>eraseButton</string>
<string>fiveButton</string>
@ -1193,8 +1319,10 @@
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>UICallButton</string>
<string>UIButton</string>
<string>UITextField</string>
<string>UICallButton</string>
<string>UIButton</string>
<string>UIButton</string>
<string>UIEraseButton</string>
@ -1215,9 +1343,11 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>addContact</string>
<string>addCallButton</string>
<string>addContactButton</string>
<string>addressField</string>
<string>callButton</string>
<string>cancelButton</string>
<string>eightButton</string>
<string>eraseButton</string>
<string>fiveButton</string>
@ -1235,7 +1365,11 @@
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">addContact</string>
<string key="name">addCallButton</string>
<string key="candidateClassName">UICallButton</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">addContactButton</string>
<string key="candidateClassName">UIButton</string>
</object>
<object class="IBToOneOutletInfo">
@ -1244,6 +1378,10 @@
</object>
<object class="IBToOneOutletInfo">
<string key="name">callButton</string>
<string key="candidateClassName">UICallButton</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">cancelButton</string>
<string key="candidateClassName">UIButton</string>
</object>
<object class="IBToOneOutletInfo">
@ -1389,6 +1527,9 @@
<string>add-contact-actif.png</string>
<string>add-contact-inactif.png</string>
<string>add-contact-over.png</string>
<string>add_call_more_default.png</string>
<string>add_call_more_disable.png</string>
<string>add_call_more_over.png</string>
<string>appeler-actif.png</string>
<string>appeler-disabled.png</string>
<string>appeler-over.png</string>
@ -1429,6 +1570,9 @@
<string>{214, 138}</string>
<string>{214, 138}</string>
<string>{214, 138}</string>
<string>{214, 138}</string>
<string>{214, 138}</string>
<string>{214, 138}</string>
<string>{213, 138}</string>
<string>{213, 138}</string>
<string>{213, 138}</string>

View file

@ -25,5 +25,7 @@
}
- (void) toggleEditMode;
- (void) enterEditMode;
- (void) exitEditMode;
@end

View file

@ -30,8 +30,6 @@
return self;
}
#pragma mark Table view methods
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
@ -104,6 +102,18 @@
[(UITableView*)[self view] reloadData];
}
- (void) enterEditMode {
if(!editMode) {
[self toggleEditMode];
}
}
- (void) exitEditMode {
if(editMode) {
[self toggleEditMode];
}
}
- (void)dealloc {
[super dealloc];
}

View file

@ -20,6 +20,7 @@
#import <UIKit/UIKit.h>
#import "HistoryTableViewController.h"
#import "UIToggleButton.h"
@interface HistoryViewController : UIViewController {
@private
@ -28,7 +29,7 @@
UIButton *allButton;
UIButton *missedButton;
UIButton *editButton;
UIToggleButton *editButton;
}
@property (nonatomic, retain) IBOutlet HistoryTableViewController* tableController;
@ -36,7 +37,7 @@
@property (nonatomic, retain) IBOutlet UIButton* allButton;
@property (nonatomic, retain) IBOutlet UIButton* missedButton;
@property (nonatomic, retain) IBOutlet UIButton* editButton;
@property (nonatomic, retain) IBOutlet UIToggleButton* editButton;
- (IBAction)onAllClick:(id) event;
- (IBAction)onMissedClick:(id) event;

View file

@ -78,6 +78,13 @@ typedef enum _HistoryView {
[tableController toggleEditMode];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[tableController exitEditMode];
[editButton setOff];
}
- (void)dealloc {
[allButton release];
[missedButton release];

View file

@ -0,0 +1,37 @@
/* InCallTableViewController.h
*
* Copyright (C) 2012 Belledonne Comunications, Grenoble, France
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU 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>
#import "UICallCell.h"
#include "linphonecore.h"
@interface InCallTableViewController : UITableViewController {
NSMutableDictionary* callCellData;
NSTimer *updateTime;
}
- (void)removeCallData:(LinphoneCall*) call;
- (UICallCellData*)addCallData:(LinphoneCall*) call;
- (UICallCellData*)getCallData:(LinphoneCall*) call;
- (void)minimizeAll;
- (void)maximizeAll;
@end

View file

@ -0,0 +1,277 @@
/* InCallTableViewController.h
*
* Copyright (C) 2012 Belledonne Comunications, Grenoble, France
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU 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 "InCallTableViewController.h"
#import "UICallCell.h"
#import "LinphoneManager.h"
#include "private.h"
@implementation InCallTableViewController
- (void)myInit {
self->callCellData = [[NSMutableDictionary alloc] init];
}
- (id)init{
self = [super init];
if (self) {
[self myInit];
}
return self;
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
[self myInit];
}
return self;
}
- (id)initWithCoder:(NSCoder *)decoder {
self = [super initWithCoder:decoder];
if (self) {
[self myInit];
}
return self;
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
updateTime = [NSTimer scheduledTimerWithTimeInterval:1
target:self
selector:@selector(update)
userInfo:nil
repeats:YES];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
if (updateTime != nil) {
[updateTime invalidate];
updateTime = nil;
}
}
+ (bool)isInConference:(LinphoneCall*) call {
if (!call)
return false;
return linphone_call_get_current_params(call)->in_conference;
}
+ (int)callCount:(LinphoneCore*) lc {
int count = 0;
const MSList* calls = linphone_core_get_calls(lc);
while (calls != 0) {
if (![InCallTableViewController isInConference:((LinphoneCall*)calls->data)]) {
count++;
}
calls = calls->next;
}
return count;
}
+ (LinphoneCall*)retrieveCallAtIndex: (NSInteger) index inConference:(bool) conf{
const MSList* calls = linphone_core_get_calls([LinphoneManager getLc]);
if (!conf && linphone_core_get_conference_size([LinphoneManager getLc]))
index--;
while (calls != 0) {
if ([InCallTableViewController isInConference:(LinphoneCall*)calls->data] == conf) {
if (index == 0)
break;
index--;
}
calls = calls->next;
}
if (calls == 0) {
ms_error("Cannot find call with index %d (in conf: %d)", index, conf);
return nil;
} else {
return (LinphoneCall*)calls->data;
}
}
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UICallCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UICallCell"];
if (cell == nil) {
cell = [[UICallCell alloc] init];
}
LinphoneCore* lc = [LinphoneManager getLc];
LinphoneCall* call = [InCallTableViewController retrieveCallAtIndex:indexPath.row inConference:NO];
[cell setData:[self addCallData:call]];
[cell update];
if ([indexPath row] == 0) {
[cell firstCell];
} else {
[cell otherCell];
}
if (linphone_core_get_calls_nb(lc) > 1) {
tableView.scrollEnabled = TRUE;
} else {
tableView.scrollEnabled = FALSE;
}
return cell;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
LinphoneCore* lc = [LinphoneManager getLc];
return [InCallTableViewController callCount:lc] + (int)(linphone_core_get_conference_size(lc) > 0);
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
LinphoneCore* lc = [LinphoneManager getLc];
int count = 0;
if ([InCallTableViewController callCount:lc] > 0)
count++;
if (linphone_core_get_conference_size([LinphoneManager getLc]) > 0)
count ++;
return count;
}
- (NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
return nil;
}
- (NSString*)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
return nil;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
LinphoneCall* call = [InCallTableViewController retrieveCallAtIndex:indexPath.row inConference:NO];
UICallCellData* data = [callCellData objectForKey:[NSValue valueWithPointer:call]];
if(data != nil &&data->minimize)
return [UICallCell getMinimizedHeight];
return [UICallCell getMaximizedHeight];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:NO];
LinphoneCore* lc = [LinphoneManager getLc];
bool inConf = (indexPath.row == 0 && linphone_core_get_conference_size(lc) > 0);
LinphoneCall* selectedCall = [InCallTableViewController retrieveCallAtIndex:indexPath.row inConference:inConf];
if (inConf) {
if (linphone_core_is_in_conference(lc))
return;
LinphoneCall* current = linphone_core_get_current_call(lc);
if (current)
linphone_core_pause_call(lc, current);
linphone_core_enter_conference([LinphoneManager getLc]);
} else if (selectedCall) {
if (linphone_core_is_in_conference(lc)) {
linphone_core_leave_conference(lc);
}
if(!linphone_core_sound_resources_locked(lc)) {
linphone_core_resume_call([LinphoneManager getLc], selectedCall);
}
}
}
- (void)removeCallData:(LinphoneCall*) call {
// Remove data associated with the call
if(call != NULL) {
NSValue *value = [NSValue valueWithPointer:call];
UICallCellData * data = [callCellData objectForKey:value];
if(data == nil) {
[callCellData removeObjectForKey:value];
}
}
}
- (UICallCellData*)addCallData:(LinphoneCall*) call {
// Handle data associated with the call
UICallCellData * data = nil;
if(call != NULL) {
NSValue *value = [NSValue valueWithPointer:call];
data = [callCellData objectForKey:value];
if(data == nil) {
data = [[UICallCellData alloc] init:call];
[callCellData setObject:data forKey:value];
}
}
return data;
}
- (UICallCellData*)getCallData:(LinphoneCall*) call {
// Handle data associated with the call
UICallCellData * data = nil;
if(call != NULL) {
NSValue *value = [NSValue valueWithPointer:call];
data = [callCellData objectForKey:value];
}
return data;
}
- (void)update {
UITableView *tableView = [self tableView];
for (int section = 0; section < [tableView numberOfSections]; section++) {
for (int row = 0; row < [tableView numberOfRowsInSection:section]; row++) {
NSIndexPath* cellPath = [NSIndexPath indexPathForRow:row inSection:section];
UICallCell* cell = (UICallCell*) [tableView cellForRowAtIndexPath:cellPath];
[cell update];
}
}
}
- (void)dealloc {
[callCellData removeAllObjects];
[callCellData dealloc];
[super dealloc];
}
- (void)minimizeAll {
for(id key in callCellData) {
UICallCellData *data = [callCellData objectForKey:key];
data->minimize = true;
}
[[self tableView] reloadData];
}
- (void)maximizeAll {
for(id key in callCellData) {
UICallCellData *data = [callCellData objectForKey:key];
data->minimize = false;
}
[[self tableView] reloadData];
}
@end

View file

@ -18,20 +18,18 @@
*/
#import <UIKit/UIKit.h>
#import <AddressBookUI/ABPeoplePickerNavigationController.h>
#import "ConferenceCallDetailView.h"
#import "UIVideoButton.h"
#import "VideoZoomHandler.h"
#import "UILinphone.h"
#import "UICamSwitch.h"
#import "CallDelegate.h"
#include "linphonecore.h"
#import "InCallTableViewController.h"
@class VideoViewController;
@interface InCallViewController : UIViewController <UITableViewDelegate, UITableViewDataSource, CallActionSheetDelegate, UIGestureRecognizerDelegate> {
@interface InCallViewController : UIViewController <CallActionSheetDelegate, UIGestureRecognizerDelegate> {
InCallTableViewController* callTableController;
UITableView* callTableView;
UIView* videoGroup;
@ -41,38 +39,20 @@
UIView* testVideoView;
#endif
UICamSwitch* videoCameraSwitch;
UIActivityIndicatorView* videoWaitingForFirstImage;
NSTimer *durationRefreasher;
NSTimer *glowingTimer;
float glow;
NSIndexPath* activePath;
ABPeoplePickerNavigationController* myPeoplePickerController;
UITableViewCell* activeCallCell;
VideoViewController* mVideoViewController;
ConferenceCallDetailView* conferenceDetail;
BOOL mVideoShown;
BOOL mVideoIsPending;
UIImage* verified, *unverified;
UIActionSheet* visibleActionSheet;
NSTimer* hideControlsTimer;
BOOL videoShown;
VideoZoomHandler* videoZoomHandler;
UIActionSheet* visibleActionSheet;
}
+ (LinphoneCall*)retrieveCallAtIndex: (NSInteger) index inConference:(bool) conf;
//+ (void)updateCellImageView:(UIImageView*)imageView Label:(UILabel*)label DetailLabel:(UILabel*)detailLabel AndAccessoryView:(UIView*)accessoryView withCall:(LinphoneCall*) call;
@property (nonatomic, retain) IBOutlet UIViewController* conferenceDetail;
@property (nonatomic, retain) IBOutlet InCallTableViewController* callTableController;
@property (nonatomic, retain) IBOutlet UITableView* callTableView;
@property (nonatomic, retain) IBOutlet VideoViewController* videoViewController;
@property (nonatomic, retain) IBOutlet UIView* videoGroup;
@property (nonatomic, retain) IBOutlet UIView* videoView;
#ifdef TEST_VIDEO_VIEW_CHANGE

View file

@ -33,11 +33,11 @@
const NSInteger SECURE_BUTTON_TAG=5;
@implementation InCallViewController
@synthesize conferenceDetail;
@synthesize callTableController;
@synthesize callTableView;
@synthesize videoViewController;
@synthesize videoGroup;
@synthesize videoView;
@ -52,32 +52,6 @@ const NSInteger SECURE_BUTTON_TAG=5;
return [super initWithNibName:@"InCallViewController" bundle:[NSBundle mainBundle]];
}
+ (bool)isInConference:(LinphoneCall*) call {
if (!call)
return false;
return linphone_call_get_current_params(call)->in_conference;
}
+ (int)callCount:(LinphoneCore*) lc {
int count = 0;
const MSList* calls = linphone_core_get_calls(lc);
while (calls != 0) {
if (![InCallViewController isInConference:((LinphoneCall*)calls->data)]) {
count++;
}
calls = calls->next;
}
return count;
}
void addAnimationFadeTransition(UIView* view, float duration) {
CATransition* animation = [CATransition animation];
animation.type = kCATransitionFromBottom; // kCATransitionFade;
animation.duration = duration;
[view.layer addAnimation:animation forKey:nil];
}
- (void)orientationChanged: (NSNotification*) notif {
int oldLinphoneOrientation = linphone_core_get_device_rotation([LinphoneManager getLc]);
UIDeviceOrientation orientation = [UIDevice currentDevice].orientation;
@ -163,7 +137,7 @@ void addAnimationFadeTransition(UIView* view, float duration) {
[videoCameraSwitch setAlpha:0.0];
[UIView commitAnimations];
if([[LinphoneManager instance] currentView] == PhoneView_InCall)
if([[LinphoneManager instance] currentView] == PhoneView_InCall && videoShown)
[[LinphoneManager instance] showTabBar: false];
if (hideControlsTimer) {
@ -186,6 +160,7 @@ void addAnimationFadeTransition(UIView* view, float duration) {
#endif
- (void)enableVideoDisplay:(BOOL)animation {
videoShown = true;
[self orientationChanged:nil];
[videoZoomHandler resetZoom];
@ -228,6 +203,7 @@ void addAnimationFadeTransition(UIView* view, float duration) {
}
- (void)disableVideoDisplay:(BOOL)animation {
videoShown = false;
if(animation) {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
@ -264,8 +240,6 @@ void addAnimationFadeTransition(UIView* view, float duration) {
/* Update in call view buttons (visibility, state, ...) and call duration text.
This is called periodically. The fullUpdate boolean is set when called after an event (call state change for instance) */
- (void)updateUIFromLinphoneState:(BOOL) fullUpdate {
activeCallCell = nil;
// check LinphoneCore is initialized
LinphoneCore* lc = nil;
if([LinphoneManager isLcReady])
@ -277,12 +251,13 @@ void addAnimationFadeTransition(UIView* view, float duration) {
[callTableView reloadData];
// update conference details view if displayed
if (self.presentedViewController == conferenceDetail) {
//TODO
/*if (self.presentedViewController == conferenceDetail) {
if (!linphone_core_is_in_conference(lc))
[self dismissModalViewControllerAnimated:YES];
else
[conferenceDetail.table reloadData];
}
}*/
}
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
@ -296,8 +271,6 @@ void addAnimationFadeTransition(UIView* view, float duration) {
/*[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];
//Dialer init
/*[zero initWithNumber:'0'];
@ -317,6 +290,8 @@ void addAnimationFadeTransition(UIView* view, float duration) {
[mergeCalls addTarget:self action:@selector(mergeCallsPressed) forControlEvents:UIControlEventTouchUpInside];
[LinphoneManager set:mergeCalls hidden:YES withName:"MERGE button" andReason:"initialisation"];*/
//TODO
/*
if ([LinphoneManager runningOnIpad]) {
ms_message("Running on iPad");
conferenceDetail = [[ConferenceCallDetailView alloc] initWithNibName:@"ConferenceCallDetailView-ipad"
@ -324,7 +299,7 @@ void addAnimationFadeTransition(UIView* view, float duration) {
} else {
conferenceDetail = [[ConferenceCallDetailView alloc] initWithNibName:@"ConferenceCallDetailView"
bundle:[NSBundle mainBundle]];
}
}*/
UITapGestureRecognizer* singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showControls:)];
[singleFingerTap setNumberOfTapsRequired:1];
@ -335,9 +310,7 @@ void addAnimationFadeTransition(UIView* view, float duration) {
videoZoomHandler = [[VideoZoomHandler alloc] init];
[videoZoomHandler setup:videoGroup];
videoGroup.alpha = 0;
mVideoShown=FALSE;
mVideoIsPending=FALSE;
//selectedCall = nil;
//callTableView.rowHeight = 80;
@ -361,7 +334,6 @@ void addAnimationFadeTransition(UIView* view, float duration) {
contacts.imageView.contentMode = UIViewContentModeCenter;
addCall.imageView.contentMode = UIViewContentModeCenter;
dialer.imageView.contentMode = UIViewContentModeCenter;*/
}
- (void)transferPressed {
@ -404,7 +376,8 @@ void addAnimationFadeTransition(UIView* view, float duration) {
[visibleActionSheet release];
visibleActionSheet = nil;
[UICallButton enableTransforMode:YES];
//TODO
/*[UICallButton enableTransforMode:YES];*/
[[LinphoneManager instance] changeView:PhoneView_Dialer];
} else {
// add 'Other' option
@ -423,40 +396,9 @@ void addAnimationFadeTransition(UIView* view, float duration) {
}
}
- (void)updateCallsDurations {
[self updateUIFromLinphoneState: NO];
}
- (void)viewDidAppear:(BOOL)animated {
[[UIApplication sharedApplication] setIdleTimerDisabled:YES];
[super viewDidAppear:animated];
[self updateCallsDurations];
durationRefreasher = [NSTimer scheduledTimerWithTimeInterval:1
target:self
selector:@selector(updateCallsDurations)
userInfo:nil
repeats:YES];
glowingTimer = [NSTimer scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(updateGlow)
userInfo:nil
repeats:YES];
glow = 0;
if (mVideoIsPending) {
mVideoIsPending=FALSE;
[self enableVideoDisplay: FALSE];
} else {
[self disableVideoDisplay: FALSE];
}
UIDevice* device = [UIDevice currentDevice];
if ([device respondsToSelector:@selector(isMultitaskingSupported)]
&& [device isMultitaskingSupported]) {
//bool enableVideo = [[NSUserDefaults standardUserDefaults] boolForKey:@"enable_video_preference"];
//[LinphoneManager set:contacts hidden:enableVideo withName:"CONTACT button" andReason:AT];
//[LinphoneManager set:addVideo hidden:!contacts.hidden withName:"ADD_VIDEO button" andReason:AT];
}
[super viewDidAppear:animated];
}
- (void)viewWillDisappear:(BOOL)animated {
@ -467,23 +409,13 @@ void addAnimationFadeTransition(UIView* view, float duration) {
[hideControlsTimer invalidate];
hideControlsTimer = nil;
}
if (durationRefreasher != nil) {
[durationRefreasher invalidate];
durationRefreasher = nil;
}
if (glowingTimer != nil) {
[glowingTimer invalidate];
glowingTimer = nil;
}
}
- (void)viewDidDisappear:(BOOL)animated {
if (!mVideoShown) [[UIApplication sharedApplication] setIdleTimerDisabled:false];
if (!videoShown) [[UIApplication sharedApplication] setIdleTimerDisabled:false];
}
- (void)viewDidUnload {
[verified release];
[unverified release];
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
@ -494,17 +426,19 @@ void addAnimationFadeTransition(UIView* view, float duration) {
[LinphoneManager set:controlSubView hidden:enable withName:"CONTROL view" andReason:AT];
[LinphoneManager set:padSubView hidden:!enable withName:"PAD view" andReason:AT];*/
}
- (void)displayCall:(LinphoneCall*) call InProgressFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName {
//restore view
[self displayPad:false];
- (void)displayVideoCall:(LinphoneCall*) call {
UIDevice *device = [UIDevice currentDevice];
device.proximityMonitoringEnabled = YES;
//if ([speaker isOn])
// [speaker toggle];
[self updateUIFromLinphoneState: YES];
if (call !=nil && linphone_call_get_dir(call)==LinphoneCallIncoming) {
//if ([speaker isOn]) [speaker toggle];
}
[self updateUIFromLinphoneState: YES];
[self enableVideoDisplay: TRUE];
}
- (void)displayInCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName {
- (void)displayInCall:(LinphoneCall*) call {
UIDevice *device = [UIDevice currentDevice];
device.proximityMonitoringEnabled = YES;
if (call !=nil && linphone_call_get_dir(call)==LinphoneCallIncoming) {
@ -515,27 +449,6 @@ void addAnimationFadeTransition(UIView* view, float duration) {
[self disableVideoDisplay: TRUE];
}
- (void)displayDialerFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName {
[self disableVideoDisplay: TRUE];
UIViewController* modalVC = self.modalViewController;
UIDevice *device = [UIDevice currentDevice];
device.proximityMonitoringEnabled = NO;
if (modalVC != nil) {
mVideoIsPending=FALSE;
// clear previous native window ids
/*if (modalVC == mVideoViewController) {
mVideoShown=FALSE;
linphone_core_set_native_video_window_id([LinphoneManager getLc],0);
linphone_core_set_native_preview_window_id([LinphoneManager getLc],0);
}*/
[[LinphoneManager instance] fullScreen:false];
//[self dismissModalViewControllerAnimated:FALSE];//just in case
}
//[self dismissModalViewControllerAnimated:FALSE]; //disable animation to avoid blanc bar just below status bar*/
[self updateUIFromLinphoneState: YES];
}
static void hideSpinner(LinphoneCall* lc, void* user_data);
- (void)hideSpinnerIndicator: (LinphoneCall*)call {
@ -550,33 +463,31 @@ static void hideSpinner(LinphoneCall* lc, void* user_data);
LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue];
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);
// Handle data associated with the call
if(state == LinphoneCallReleased) {
[callTableController removeCallData: call];
} else {
[callTableController addCallData: call];
}
switch (state) {
/*case LinphoneCallIncomingReceived:
[self displayIncomingCall:call
NotificationFromUI:nil
forUser:lUserName
withDisplayName:lDisplayName];
break;*/
case LinphoneCallIncomingReceived:
case LinphoneCallOutgoingInit:
[self displayCall:call
InProgressFromUI:nil
forUser:lUserName
withDisplayName:lDisplayName];
break;
{
if(linphone_core_get_calls_nb([LinphoneManager getLc]) > 1) {
[callTableController minimizeAll];
}
}
case LinphoneCallPausedByRemote:
case LinphoneCallConnected:
[self displayInCall: call
FromUI:nil
forUser:lUserName
withDisplayName:lDisplayName];
case LinphoneCallStreamsRunning:
case LinphoneCallUpdated:
//check video
if (linphone_call_params_video_enabled(linphone_call_get_current_params(call))) {
[self displayVideoCall:call];
} else {
[self displayInCall:call];
}
break;
case LinphoneCallUpdatedByRemote:
{
@ -588,37 +499,27 @@ static void hideSpinner(LinphoneCall* lc, void* user_data);
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];
[self displayAskToEnableVideoCall:call];
} else if (linphone_call_params_video_enabled(current) && !linphone_call_params_video_enabled(remote)) {
[self displayInCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName];
[self displayInCall:call];
}
break;
}
case LinphoneCallUpdated:
{
const LinphoneCallParams* current = linphone_call_get_current_params(call);
if (linphone_call_params_video_enabled(current)) {
[self enableVideoDisplay:TRUE];
} else {
[self displayInCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName];
}
break;
}
case LinphoneCallPausing:
case LinphoneCallPaused:
{
[self disableVideoDisplay: TRUE];
break;
}
case LinphoneCallStreamsRunning:
//check video
if (linphone_call_params_video_enabled(linphone_call_get_current_params(call))) {
[self enableVideoDisplay:TRUE];
} else {
[self displayInCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName];
case LinphoneCallEnd:
case LinphoneCallError:
{
if(linphone_core_get_calls_nb([LinphoneManager getLc]) <= 1) {
[callTableController maximizeAll];
}
break;
//[self updateUIFromLinphoneState: YES];
break;
}
default:
break;
}
@ -637,10 +538,15 @@ static void hideSpinner(LinphoneCall* call, void* user_data) {
}
}
- (void)displayAskToEnableVideoCall:(LinphoneCall*) call forUser:(NSString*) username withDisplayName:(NSString*) displayName {
- (void)displayAskToEnableVideoCall:(LinphoneCall*) call {
if (linphone_core_get_video_policy([LinphoneManager getLc])->automatically_accept)
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);
const char* lDisplayNameChars = linphone_address_get_display_name(linphone_call_get_remote_address(call));
NSString* lDisplayName = [lDisplayNameChars?[[NSString alloc] initWithUTF8String:lDisplayNameChars]:@"" autorelease];
// ask the user if he agrees
CallDelegate* cd = [[CallDelegate alloc] init];
cd.eventType = CD_VIDEO_UPDATE;
@ -650,7 +556,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) {
if (visibleActionSheet != nil) {
[visibleActionSheet dismissWithClickedButtonIndex:visibleActionSheet.cancelButtonIndex animated:TRUE];
}
NSString* title = [NSString stringWithFormat : NSLocalizedString(@"'%@' would like to enable video",nil), ([displayName length] > 0) ?displayName:username];
NSString* title = [NSString stringWithFormat : NSLocalizedString(@"'%@' would like to enable video",nil), ([lDisplayName length] > 0)?lDisplayName:lUserName];
visibleActionSheet = [[UIActionSheet alloc] initWithTitle:title
delegate:cd
cancelButtonTitle:NSLocalizedString(@"Decline",nil)
@ -682,66 +588,11 @@ static void hideSpinner(LinphoneCall* call, void* user_data) {
[videoWaitingForFirstImage release];
[[NSNotificationCenter defaultCenter] removeObserver:self];
[super dealloc];
}
+ (LinphoneCall*)retrieveCallAtIndex: (NSInteger) index inConference:(bool) conf{
const MSList* calls = linphone_core_get_calls([LinphoneManager getLc]);
if (!conf && linphone_core_get_conference_size([LinphoneManager getLc]))
index--;
while (calls != 0) {
if ([InCallViewController isInConference:(LinphoneCall*)calls->data] == conf) {
if (index == 0)
break;
index--;
}
calls = calls->next;
}
if (calls == 0) {
ms_error("Cannot find call with index %d (in conf: %d)", index, conf);
return nil;
} else {
return (LinphoneCall*)calls->data;
}
}
- (void)updateActive:(bool_t)active cell:(UITableViewCell*) cell {
if (!active) {
cell.backgroundColor = [UIColor colorWithRed:0.2 green:0.2 blue:0.2 alpha:0.2];
UIColor* c = [[UIColor blackColor] colorWithAlphaComponent:0.5];
[cell.textLabel setTextColor:c];
[cell.detailTextLabel setTextColor:c];
} else {
cell.backgroundColor = [UIColor colorWithRed:0.4 green:0.4 blue:0.4 alpha:(0.7+sin(2*glow)*0.3)];
[cell.textLabel setTextColor:[UIColor whiteColor]];
[cell.detailTextLabel setTextColor:[UIColor whiteColor]];
}
[cell.textLabel setBackgroundColor:[UIColor clearColor]];
[cell.detailTextLabel setBackgroundColor:[UIColor clearColor]];
}
- (void)updateGlow {
if (!activeCallCell)
return;
glow += 0.1;
[self updateActive:YES cell:activeCallCell];
[activeCallCell.backgroundView setNeedsDisplay];
[activeCallCell setNeedsDisplay];
[callTableView setNeedsDisplay];
}
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
[self updateActive:(cell == activeCallCell) cell:cell];
}
//TODO
/*
+ (void)updateCellImageView:(UIImageView*)imageView Label:(UILabel*)label DetailLabel:(UILabel*)detailLabel AndAccessoryView:(UIView*)accessoryView withCall:(LinphoneCall*) call {
if (call == NULL) {
@ -827,7 +678,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) {
[ms release];
}
}*/
/*
- (void)updateConferenceCell:(UITableViewCell*) cell at:(NSIndexPath*)indexPath {
LinphoneCore* lc = [LinphoneManager getLc];
@ -850,105 +701,6 @@ static void hideSpinner(LinphoneCall* call, void* user_data) {
cell.imageView.image = nil;
}
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
// show conference detail view
[self presentModalViewController:conferenceDetail animated:true];
}
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UICallCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UICallCell"];
if (cell == nil) {
cell = [[UICallCell alloc] init];
}
if([indexPath row] == 0) {
[cell firstCell];
} else {
[cell otherCell];
}
LinphoneCore* lc = [LinphoneManager getLc];
LinphoneCall* call = [InCallViewController retrieveCallAtIndex:indexPath.row inConference:NO];
[cell updateCell:call];
if(linphone_core_get_conference_size(lc) > 0) {
tableView.scrollEnabled = TRUE;
} else {
tableView.scrollEnabled = FALSE;
}
/*
if (indexPath.row == 0 && linphone_core_get_conference_size(lc) > 0) {
[self updateConferenceCell:cell at:indexPath];
if (linphone_core_is_in_conference(lc))
activeCallCell = cell;
cell.accessoryView = nil;
if (linphone_core_is_in_conference(lc))
cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
else
cell.accessoryType = UITableViewCellAccessoryNone;
} else {
LinphoneCall* call = [InCallViewController retrieveCallAtIndex:indexPath.row inConference:NO];
if (call == nil)
return cell; // return dummy cell
if (cell.accessoryView == nil) {
UIView *containerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 28, 28)] autorelease];
cell.accessoryView = containerView;
}
else {
for (UIView *view in cell.accessoryView.subviews) {
[view removeFromSuperview];
}
}
[InCallViewController updateCellImageView:cell.imageView Label:cell.textLabel DetailLabel:cell.detailTextLabel AndAccessoryView:(UIView*)cell.accessoryView withCall:call];
if (linphone_core_get_current_call(lc) == call)
activeCallCell = cell;
//cell.accessoryType = UITableViewCellAccessoryNone;
// Call Quality Indicator
//TODO
UIImageView* callquality = [UIImageView new];
[callquality setFrame:CGRectMake(0, 0, 28, 28)];
if (call->state == LinphoneCallStreamsRunning)
{
[InCallViewController updateIndicator: callquality withCallQuality:linphone_call_get_average_quality(call)];
}
else {
[callquality setImage:nil];
}
LinphoneMediaEncryption enc = linphone_call_params_get_media_encryption(linphone_call_get_current_params(call));
if (enc != LinphoneMediaEncryptionNone) {
cell.accessoryView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 60, 28)] autorelease];
UIButton* accessoryBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[accessoryBtn setFrame:CGRectMake(30, 0, 28, 28)];
[accessoryBtn setImage:nil forState:UIControlStateNormal];
[accessoryBtn setTag:SECURE_BUTTON_TAG];
accessoryBtn.backgroundColor = [UIColor clearColor];
accessoryBtn.userInteractionEnabled = YES;
if (enc == LinphoneMediaEncryptionSRTP || linphone_call_get_authentication_token_verified(call)) {
[accessoryBtn setImage: verified forState:UIControlStateNormal];
} else {
[accessoryBtn setImage: unverified forState:UIControlStateNormal];
}
[cell.accessoryView addSubview:accessoryBtn];
if (((UIButton*)accessoryBtn).imageView.image != nil && linphone_call_params_get_media_encryption(linphone_call_get_current_params(call)) == LinphoneMediaEncryptionZRTP) {
[((UIButton*)accessoryBtn) addTarget:self action:@selector(secureIconPressed:withEvent:) forControlEvents:UIControlEventTouchUpInside];
}
}
//[cell.accessoryView addSubview:callquality];
//[callquality release];
}
*/
/*cell.userInteractionEnabled = YES;
cell.selectionStyle = UITableViewCellSelectionStyleNone;*/
return cell;
}
- (void)secureIconPressed:(UIControl*) button withEvent: (UIEvent*) evt {
NSSet* touches = [evt allTouches];
UITouch* touch = [touches anyObject];
@ -979,7 +731,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) {
[visibleActionSheet release];
}
}
*/
- (void)actionSheet:(UIActionSheet *)actionSheet ofType:(enum CallDelegateType)type clickedButtonAtIndex:(NSInteger)buttonIndex withUserDatas:(void *)datas {
LinphoneCall* call = (LinphoneCall*)datas;
// maybe we could verify call validity
@ -1029,7 +781,8 @@ 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];
//TODO
//[UICallButton enableTransforMode:YES];
[[LinphoneManager instance] changeView:PhoneView_Dialer];
break;
}
@ -1037,65 +790,4 @@ static void hideSpinner(LinphoneCall* call, void* user_data) {
ms_error("Unhandled CallDelegate event of type: %d received - ignoring", type);
}
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
LinphoneCore* lc = [LinphoneManager getLc];
return [InCallViewController callCount:lc] + (int)(linphone_core_get_conference_size(lc) > 0);
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
LinphoneCore* lc = [LinphoneManager getLc];
int count = 0;
if ([InCallViewController callCount:lc] > 0)
count++;
if (linphone_core_get_conference_size([LinphoneManager getLc]) > 0)
count ++;
return count;
}
- (NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
return nil;
}
- (NSString*)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
return nil;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:NO];
LinphoneCore* lc = [LinphoneManager getLc];
bool inConf = (indexPath.row == 0 && linphone_core_get_conference_size(lc) > 0);
LinphoneCall* selectedCall = [InCallViewController retrieveCallAtIndex:indexPath.row inConference:inConf];
if (inConf) {
if (linphone_core_is_in_conference(lc))
return;
LinphoneCall* current = linphone_core_get_current_call(lc);
if (current)
linphone_core_pause_call(lc, current);
linphone_core_enter_conference([LinphoneManager getLc]);
} else if (selectedCall) {
if (linphone_core_is_in_conference(lc)) {
linphone_core_leave_conference(lc);
}
if(!linphone_core_sound_resources_locked(lc)) {
linphone_core_resume_call([LinphoneManager getLc], selectedCall);
}
}
[self updateUIFromLinphoneState: YES];
}
@end

View file

@ -12,6 +12,7 @@
</object>
<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>IBUITableViewController</string>
<string>IBUITableView</string>
<string>IBUIActivityIndicatorView</string>
<string>IBUIView</string>
@ -108,7 +109,7 @@
<bool key="IBUIClipsSubviews">YES</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<double key="IBUIContentInset.top">0.0</double>
<double key="IBUIContentInset.bottom">10</double>
<double key="IBUIContentInset.bottom">20</double>
<double key="IBUIContentInset.left">0.0</double>
<double key="IBUIContentInset.right">0.0</double>
<bool key="IBUIAlwaysBounceVertical">YES</bool>
@ -166,6 +167,15 @@
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUITableViewController" id="52918460">
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
<object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
<int key="IBUIInterfaceOrientation">1</int>
<int key="interfaceOrientation">1</int>
</object>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<bool key="IBUIHorizontal">NO</bool>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
@ -226,21 +236,37 @@
</object>
<int key="connectionID">161</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">callTableController</string>
<reference key="source" ref="841351856"/>
<reference key="destination" ref="52918460"/>
</object>
<int key="connectionID">167</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">dataSource</string>
<reference key="source" ref="662692377"/>
<reference key="destination" ref="841351856"/>
<reference key="destination" ref="52918460"/>
</object>
<int key="connectionID">107</int>
<int key="connectionID">168</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="662692377"/>
<reference key="destination" ref="841351856"/>
<reference key="destination" ref="52918460"/>
</object>
<int key="connectionID">108</int>
<int key="connectionID">169</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">view</string>
<reference key="source" ref="52918460"/>
<reference key="destination" ref="662692377"/>
</object>
<int key="connectionID">166</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
@ -313,7 +339,7 @@
<int key="objectID">106</int>
<reference key="object" ref="662692377"/>
<reference key="parent" ref="858247959"/>
<string key="objectName">tableView</string>
<string key="objectName">callTableView</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">160</int>
@ -321,6 +347,15 @@
<reference key="parent" ref="858247959"/>
<string key="objectName">camSwitch</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">162</int>
<reference key="object" ref="52918460"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<reference key="parent" ref="0"/>
<string key="objectName">callTableController</string>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
@ -339,6 +374,8 @@
<string>160.CustomClassName</string>
<string>160.IBPluginDependency</string>
<string>160.IBUIButtonInspectorSelectedStateConfigurationMetadataKey</string>
<string>162.CustomClassName</string>
<string>162.IBPluginDependency</string>
<string>9.IBPluginDependency</string>
</object>
<object class="NSArray" key="dict.values">
@ -355,6 +392,8 @@
<string>UICamSwitch</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="1"/>
<string>InCallTableViewController</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
</object>
@ -370,11 +409,19 @@
<reference key="dict.values" ref="0"/>
</object>
<nil key="sourceID"/>
<int key="maxID">161</int>
<int key="maxID">169</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">InCallTableViewController</string>
<string key="superclassName">UITableViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/InCallTableViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">InCallViewController</string>
<string key="superclassName">UIViewController</string>
@ -382,26 +429,24 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>callTableController</string>
<string>callTableView</string>
<string>conferenceDetail</string>
<string>testVideoView</string>
<string>videoCameraSwitch</string>
<string>videoGroup</string>
<string>videoPreview</string>
<string>videoView</string>
<string>videoViewController</string>
<string>videoWaitingForFirstImage</string>
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>InCallTableViewController</string>
<string>UITableView</string>
<string>UIViewController</string>
<string>UIView</string>
<string>UICamSwitch</string>
<string>UIView</string>
<string>UIView</string>
<string>UIView</string>
<string>VideoViewController</string>
<string>UIActivityIndicatorView</string>
</object>
</object>
@ -409,25 +454,24 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>callTableController</string>
<string>callTableView</string>
<string>conferenceDetail</string>
<string>testVideoView</string>
<string>videoCameraSwitch</string>
<string>videoGroup</string>
<string>videoPreview</string>
<string>videoView</string>
<string>videoViewController</string>
<string>videoWaitingForFirstImage</string>
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">callTableView</string>
<string key="candidateClassName">UITableView</string>
<string key="name">callTableController</string>
<string key="candidateClassName">InCallTableViewController</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">conferenceDetail</string>
<string key="candidateClassName">UIViewController</string>
<string key="name">callTableView</string>
<string key="candidateClassName">UITableView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">testVideoView</string>
@ -449,10 +493,6 @@
<string key="name">videoView</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">videoViewController</string>
<string key="candidateClassName">VideoViewController</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">videoWaitingForFirstImage</string>
<string key="candidateClassName">UIActivityIndicatorView</string>

View file

@ -26,14 +26,22 @@
@interface UICallBar: UIViewController {
UIPauseButton* pauseButton;
UIButton* startConferenceButton;
UIButton* stopConferenceButton;
UIVideoButton* videoButton;
UIMicroButton* microButton;
UISpeakerButton* speakerButton;
UISpeakerButton* speakerButton;
UIButton* optionsButton;
}
@property (nonatomic, retain) IBOutlet UIPauseButton* pauseButton;
@property (nonatomic, retain) IBOutlet UIButton* startConferenceButton;
@property (nonatomic, retain) IBOutlet UIButton* stopConferenceButton;
@property (nonatomic, retain) IBOutlet UIVideoButton* videoButton;
@property (nonatomic, retain) IBOutlet UIMicroButton* microButton;
@property (nonatomic, retain) IBOutlet UISpeakerButton* speakerButton;
@property (nonatomic, retain) IBOutlet UIButton* optionsButton;
- (IBAction)onOptionsClick:(id)sender;
@end

View file

@ -26,9 +26,12 @@
@implementation UICallBar
@synthesize pauseButton;
@synthesize startConferenceButton;
@synthesize stopConferenceButton;
@synthesize videoButton;
@synthesize microButton;
@synthesize speakerButton;
@synthesize speakerButton;
@synthesize optionsButton;
- (id)init {
return [super initWithNibName:@"UICallBar" bundle:[NSBundle mainBundle]];
@ -38,6 +41,10 @@
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil];
}
- (void)viewDidUnload {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (void)callUpdate: (NSNotification*) notif {
// check LinphoneCore is initialized
LinphoneCore* lc = nil;
@ -51,6 +58,45 @@
[microButton update];
[pauseButton update];
[videoButton update];
if(linphone_core_get_calls_nb(lc) > 1) {
[pauseButton setHidden:true];
LinphoneCall *currentCall = linphone_core_get_current_call(lc);
if(currentCall == NULL || !linphone_call_get_current_params(currentCall)->in_conference) {
[startConferenceButton setHidden:false];
[stopConferenceButton setHidden:true];
} else {
[startConferenceButton setHidden:true];
[stopConferenceButton setHidden:false];
}
} else {
[pauseButton setHidden:false];
[startConferenceButton setHidden:true];
[stopConferenceButton setHidden:true];
}
}
- (void)dealloc {
[pauseButton release];
[startConferenceButton release];
[stopConferenceButton release];
[videoButton release];
[microButton release];
[speakerButton release];
[optionsButton release];
[[NSNotificationCenter defaultCenter] removeObserver:self];
[super dealloc];
}
- (IBAction)onOptionsClick:(id)sender {
// Go to dialer view
NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys:
[[[NSArray alloc] initWithObjects: @"", nil] autorelease]
, @"setAddress:",
nil] autorelease];
[[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict];
}
@end

View file

@ -185,14 +185,17 @@
<int key="IBUIContentVerticalAlignment">0</int>
<bool key="IBUIAdjustsImageWhenHighlighted">NO</bool>
<reference key="IBUINormalTitleShadowColor" ref="838911807"/>
<object class="NSCustomResource" key="IBUIHighlightedBackgroundImage" id="387794121">
<object class="NSCustomResource" key="IBUIHighlightedBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">options_over.png</string>
</object>
<object class="NSCustomResource" key="IBUISelectedBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">add-call-over.png</string>
</object>
<reference key="IBUISelectedBackgroundImage" ref="387794121"/>
<object class="NSCustomResource" key="IBUINormalBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">add-call-actif.png</string>
<string key="NSResourceName">options_default.png</string>
</object>
<reference key="IBUIFontDescription" ref="794091713"/>
<reference key="IBUIFont" ref="993152718"/>
@ -203,7 +206,7 @@
<string key="NSFrame">{{0, 67}, {105, 68}}</string>
<reference key="NSSuperview" ref="931774220"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="99607181"/>
<reference key="NSNextKeyView" ref="351323248"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<object class="IBUIAccessibilityConfiguration" key="IBUIAccessibilityConfiguration">
@ -218,7 +221,7 @@
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">pause-over.png</string>
</object>
<object class="NSCustomResource" key="IBUISelectedBackgroundImage">
<object class="NSCustomResource" key="IBUISelectedBackgroundImage" id="176604418">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">play-actif.png</string>
</object>
@ -229,6 +232,58 @@
<reference key="IBUIFontDescription" ref="794091713"/>
<reference key="IBUIFont" ref="993152718"/>
</object>
<object class="IBUIButton" id="351323248">
<reference key="NSNextResponder" ref="931774220"/>
<int key="NSvFlags">-2147483384</int>
<string key="NSFrame">{{0, 67}, {105, 68}}</string>
<reference key="NSSuperview" ref="931774220"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="882972580"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<object class="IBUIAccessibilityConfiguration" key="IBUIAccessibilityConfiguration">
<string key="IBUIAccessibilityLabel">Start Conference</string>
</object>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<bool key="IBUIAdjustsImageWhenHighlighted">NO</bool>
<reference key="IBUINormalTitleShadowColor" ref="838911807"/>
<object class="NSCustomResource" key="IBUIHighlightedBackgroundImage" id="636202283">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">start-conference-over.png</string>
</object>
<reference key="IBUISelectedBackgroundImage" ref="176604418"/>
<object class="NSCustomResource" key="IBUINormalBackgroundImage" id="441455868">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">start-conference-actif.png</string>
</object>
<reference key="IBUIFontDescription" ref="794091713"/>
<reference key="IBUIFont" ref="993152718"/>
</object>
<object class="IBUIButton" id="882972580">
<reference key="NSNextResponder" ref="931774220"/>
<int key="NSvFlags">-2147483384</int>
<string key="NSFrame">{{0, 67}, {105, 68}}</string>
<reference key="NSSuperview" ref="931774220"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="99607181"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<object class="IBUIAccessibilityConfiguration" key="IBUIAccessibilityConfiguration">
<string key="IBUIAccessibilityLabel">Stop conference</string>
</object>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<bool key="IBUIAdjustsImageWhenHighlighted">NO</bool>
<reference key="IBUINormalTitleShadowColor" ref="838911807"/>
<reference key="IBUIHighlightedBackgroundImage" ref="636202283"/>
<reference key="IBUISelectedBackgroundImage" ref="176604418"/>
<reference key="IBUINormalBackgroundImage" ref="441455868"/>
<reference key="IBUIFontDescription" ref="794091713"/>
<reference key="IBUIFont" ref="993152718"/>
</object>
<object class="IBUIButton" id="99607181">
<reference key="NSNextResponder" ref="931774220"/>
<int key="NSvFlags">264</int>
@ -263,7 +318,6 @@
<string key="NSFrame">{{215, 67}, {105, 68}}</string>
<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">
@ -342,6 +396,39 @@
</object>
<int key="connectionID">16</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">optionsButton</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="62185125"/>
</object>
<int key="connectionID">19</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">stopConferenceButton</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="882972580"/>
</object>
<int key="connectionID">25</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">startConferenceButton</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="351323248"/>
</object>
<int key="connectionID">26</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">onOptionsClick:</string>
<reference key="source" ref="62185125"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">20</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
@ -374,6 +461,8 @@
<reference ref="62185125"/>
<reference ref="262544423"/>
<reference ref="693636558"/>
<reference ref="351323248"/>
<reference ref="882972580"/>
</array>
<reference key="parent" ref="0"/>
<string key="objectName">callTabBar</string>
@ -389,43 +478,55 @@
<int key="objectID">6</int>
<reference key="object" ref="976589610"/>
<reference key="parent" ref="931774220"/>
<string key="objectName">back</string>
<string key="objectName">dialerButton</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">7</int>
<reference key="object" ref="99607181"/>
<reference key="parent" ref="931774220"/>
<string key="objectName">hangup</string>
<string key="objectName">hangupButton</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">8</int>
<reference key="object" ref="542459126"/>
<reference key="parent" ref="931774220"/>
<string key="objectName">pause</string>
<string key="objectName">pauseButton</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">10</int>
<reference key="object" ref="62185125"/>
<reference key="parent" ref="931774220"/>
<string key="objectName">addCall</string>
<string key="objectName">optionsButton</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">12</int>
<reference key="object" ref="262544423"/>
<reference key="parent" ref="931774220"/>
<string key="objectName">video</string>
<string key="objectName">videoButton</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">11</int>
<reference key="object" ref="693636558"/>
<reference key="parent" ref="931774220"/>
<string key="objectName">micro</string>
<string key="objectName">microButton</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">9</int>
<reference key="object" ref="264394465"/>
<reference key="parent" ref="931774220"/>
<string key="objectName">speaker</string>
<string key="objectName">speakerButton</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">21</int>
<reference key="object" ref="351323248"/>
<reference key="parent" ref="931774220"/>
<string key="objectName">startConferenceButton</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">23</int>
<reference key="object" ref="882972580"/>
<reference key="parent" ref="931774220"/>
<string key="objectName">stopConferenceButton</string>
</object>
</array>
</object>
@ -435,13 +536,17 @@
<string key="-2.CustomClassName">UIResponder</string>
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="10.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="1" key="10.IBUIButtonInspectorSelectedStateConfigurationMetadataKey"/>
<real value="0.0" key="10.IBUIButtonInspectorSelectedStateConfigurationMetadataKey"/>
<string key="11.CustomClassName">UIMicroButton</string>
<string key="11.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="1" key="11.IBUIButtonInspectorSelectedStateConfigurationMetadataKey"/>
<string key="12.CustomClassName">UIVideoButton</string>
<string key="12.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="0.0" key="12.IBUIButtonInspectorSelectedStateConfigurationMetadataKey"/>
<string key="21.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="1" key="21.IBUIButtonInspectorSelectedStateConfigurationMetadataKey"/>
<string key="23.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="1" key="23.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>
@ -451,7 +556,7 @@
<real value="0.0" key="7.IBUIButtonInspectorSelectedStateConfigurationMetadataKey"/>
<string key="8.CustomClassName">UIPauseButton</string>
<string key="8.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="0.0" key="8.IBUIButtonInspectorSelectedStateConfigurationMetadataKey"/>
<real value="3" key="8.IBUIButtonInspectorSelectedStateConfigurationMetadataKey"/>
<string key="9.CustomClassName">UISpeakerButton</string>
<string key="9.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="1" key="9.IBUIButtonInspectorSelectedStateConfigurationMetadataKey"/>
@ -460,17 +565,31 @@
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">18</int>
<int key="maxID">26</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">UICallBar</string>
<string key="superclassName">UIViewController</string>
<object class="NSMutableDictionary" key="actions">
<string key="NS.key.0">onOptionsClick:</string>
<string key="NS.object.0">id</string>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<string key="NS.key.0">onOptionsClick:</string>
<object class="IBActionInfo" key="NS.object.0">
<string key="name">onOptionsClick:</string>
<string key="candidateClassName">id</string>
</object>
</object>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="microButton">UIMicroButton</string>
<string key="optionsButton">UIButton</string>
<string key="pauseButton">UIPauseButton</string>
<string key="speakerButton">UISpeakerButton</string>
<string key="startConferenceButton">UIButton</string>
<string key="stopConferenceButton">UIButton</string>
<string key="videoButton">UIVideoButton</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
@ -478,6 +597,10 @@
<string key="name">microButton</string>
<string key="candidateClassName">UIMicroButton</string>
</object>
<object class="IBToOneOutletInfo" key="optionsButton">
<string key="name">optionsButton</string>
<string key="candidateClassName">UIButton</string>
</object>
<object class="IBToOneOutletInfo" key="pauseButton">
<string key="name">pauseButton</string>
<string key="candidateClassName">UIPauseButton</string>
@ -486,6 +609,14 @@
<string key="name">speakerButton</string>
<string key="candidateClassName">UISpeakerButton</string>
</object>
<object class="IBToOneOutletInfo" key="startConferenceButton">
<string key="name">startConferenceButton</string>
<string key="candidateClassName">UIButton</string>
</object>
<object class="IBToOneOutletInfo" key="stopConferenceButton">
<string key="name">stopConferenceButton</string>
<string key="candidateClassName">UIButton</string>
</object>
<object class="IBToOneOutletInfo" key="videoButton">
<string key="name">videoButton</string>
<string key="candidateClassName">UIVideoButton</string>
@ -504,22 +635,6 @@
<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">UIPauseButton</string>
<string key="superclassName">UIToggleButton</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/UIPauseButton.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISpeakerButton</string>
<string key="superclassName">UIToggleButton</string>
@ -566,13 +681,14 @@
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<string key="add-call-actif.png">{160, 134}</string>
<string key="add-call-over.png">{160, 134}</string>
<string key="add-call-over.png">{16, 16}</string>
<string key="clavier-secondaire-actif.png">{209, 136}</string>
<string key="clavier-secondaire-over.png">{209, 136}</string>
<string key="micro-OFF-actif.png">{160, 134}</string>
<string key="micro-ON-actif.png">{160, 134}</string>
<string key="micro-ON-over.png">{160, 134}</string>
<string key="options_default.png">{160, 134}</string>
<string key="options_over.png">{160, 134}</string>
<string key="pause-actif.png">{209, 136}</string>
<string key="pause-over.png">{209, 136}</string>
<string key="play-actif.png">{209, 136}</string>
@ -581,6 +697,8 @@
<string key="speacker-OFF-actif.png">{160, 134}</string>
<string key="speacker-ON-actif.png">{160, 134}</string>
<string key="speacker-ON-over.png">{160, 134}</string>
<string key="start-conference-actif.png">{209, 136}</string>
<string key="start-conference-over.png">{209, 136}</string>
<string key="video-OFF-actif.png">{160, 134}</string>
<string key="video-OFF-disabled.png">{160, 134}</string>
<string key="video-ON-actif.png">{160, 134}</string>

View file

@ -21,7 +21,6 @@
#import "LinphoneManager.h"
#import "CoreTelephony/CTCallCenter.h"
@implementation UICallButton
static BOOL transferMode = NO;

View file

@ -21,24 +21,53 @@
#include "linphonecore.h"
@interface UICallCellData : NSObject {
@public
bool minimize;
LinphoneCall *call;
}
- (id)init:(LinphoneCall*) call;
@end
@interface UICallCell : UITableViewCell {
@private
UIView *firstBackground;
UIView *otherBackground;
UILabel *addressLabel;
UILabel *timeLabel;
UIImageView *stateView;
UILabel *stateLabel;
UIImageView *stateImage;
UIImageView *avatarImage;
UIView *headerView;
UIView *avatarView;
UICallCellData *data;
}
@property (weak) UICallCellData *data;
@property (nonatomic, retain) IBOutlet UIView* firstBackground;
@property (nonatomic, retain) IBOutlet UIView* otherBackground;
@property (nonatomic, retain) IBOutlet UILabel* addressLabel;
@property (nonatomic, retain) IBOutlet UILabel* timeLabel;
@property (nonatomic, retain) IBOutlet UIImageView* stateView;
@property (nonatomic, retain) IBOutlet UILabel* stateLabel;
@property (nonatomic, retain) IBOutlet UIImageView* stateImage;
@property (nonatomic, retain) IBOutlet UIImageView* avatarImage;
@property (nonatomic, retain) IBOutlet UIView* headerView;
@property (nonatomic, retain) IBOutlet UIView* avatarView;
- (void)firstCell;
- (void)otherCell;
- (void)updateCell:(LinphoneCall *)call;
- (void)update;
- (IBAction)doHeaderClick:(id)sender;
+ (int)getMaximizedHeight;
+ (int)getMinimizedHeight;
@end

View file

@ -19,13 +19,32 @@
#import "UICallCell.h"
@implementation UICallCellData
- (id)init:(LinphoneCall*) acall {
self = [super init];
if(self != nil) {
self->minimize = false;
self->call = acall;
}
return self;
}
@end
@implementation UICallCell
@synthesize data;
@synthesize firstBackground;
@synthesize otherBackground;
@synthesize stateView;
@synthesize addressLabel;
@synthesize timeLabel;
@synthesize stateLabel;
@synthesize stateImage;
@synthesize avatarImage;
@synthesize headerView;
@synthesize avatarView;
- (id)init {
if ((self = [super init]) != nil) {
@ -50,37 +69,106 @@
[otherBackground setHidden:false];
}
- (void)updateCell:(LinphoneCall *)call {
const LinphoneAddress* addr = linphone_call_get_remote_address(call);
if (addr) {
const char* lUserNameChars=linphone_address_get_username(addr);
NSString* lUserName = lUserNameChars?[[[NSString alloc] initWithUTF8String:lUserNameChars] autorelease]:NSLocalizedString(@"Unknown",nil);
NSMutableString* mss = [[NSMutableString alloc] init];
// contact name
const char* n = linphone_address_get_display_name(addr);
if (n)
[mss appendFormat:@"%s", n, nil];
else
[mss appendFormat:@"%@",lUserName , nil];
[addressLabel setText:mss];
// TODO
//imageView.image = [[LinphoneManager instance] getImageFromAddressBook:lUserName];
[mss release];
} else {
[addressLabel setText:@"Unknown"];
//TODO
//imageView.image = nil;
}
NSMutableString* msDuration = [[NSMutableString alloc] init ];
int duration = linphone_call_get_duration(call);
[msDuration appendFormat:@"%02i:%02i", (duration/60), duration - 60 * (duration / 60), nil];
[timeLabel setText:msDuration];
[msDuration release];
- (void)update:(UICallCellData*) adata {
self->data = adata;
[self update];
}
- (void)update {
if(data) {
LinphoneCall *call = data->call;
const LinphoneAddress* addr = linphone_call_get_remote_address(call);
if (addr) {
const char* lUserNameChars=linphone_address_get_username(addr);
NSString* lUserName = lUserNameChars?[[[NSString alloc] initWithUTF8String:lUserNameChars] autorelease]:NSLocalizedString(@"Unknown",nil);
NSMutableString* mss = [[NSMutableString alloc] init];
// contact name
const char* n = linphone_address_get_display_name(addr);
if (n)
[mss appendFormat:@"%s", n, nil];
else
[mss appendFormat:@"%@",lUserName , nil];
[addressLabel setText:mss];
// TODO
//imageView.image = [[LinphoneManager instance] getImageFromAddressBook:lUserName];
[mss release];
} else {
[addressLabel setText:@"Unknown"];
//TODO
//imageView.image = nil;
}
LinphoneCallState state = linphone_call_get_state(call);
if(state == LinphoneCallPaused || state == LinphoneCallPausing) {
[stateImage setImage:[UIImage imageNamed:@"pause-champ-numero-actif"]];
} else if(state == LinphoneCallOutgoingRinging) {
[stateImage setImage:[UIImage imageNamed:@"ring-champ-numero-actif"]];
} else if(state == LinphoneCallOutgoingInit || state == LinphoneCallOutgoingProgress){
[stateImage setImage:nil];
} else {
[stateImage setImage:[UIImage imageNamed:@"play-champ-numero-actif"]];
}
NSMutableString* msDuration = [[NSMutableString alloc] init];
int duration = linphone_call_get_duration(call);
[msDuration appendFormat:@"%02i:%02i", (duration/60), duration - 60 * (duration / 60), nil];
[stateLabel setText:msDuration];
[msDuration release];
if(!data->minimize) {
CGRect frame = [self frame];
frame.size.height = [avatarView frame].size.height;
[self setFrame:frame];
[avatarView setHidden:false];
} else {
CGRect frame = [self frame];
frame.size.height = [headerView frame].size.height;
[self setFrame:frame];
[avatarView setHidden:true];
}
}
}
- (IBAction)doHeaderClick:(id)sender {
NSLog(@"Toggle UICallCell");
if(data) {
data->minimize = !data->minimize;
[self selfUpdate];
}
}
- (void)selfUpdate {
UITableView *parentTable = (UITableView *)self.superview;
if(parentTable) {
NSIndexPath *index= [parentTable indexPathForCell:self];
if(index != nil) {
[parentTable reloadRowsAtIndexPaths:[[NSArray alloc] initWithObjects:index, nil] withRowAnimation:false];
}
}
}
- (void)dealloc {
[firstBackground release];
[otherBackground release];
[addressLabel release];
[stateLabel release];
[stateImage release];
[avatarImage release];
[headerView release];
[super dealloc];
}
+ (int)getMaximizedHeight {
return 300;
}
+ (int)getMinimizedHeight {
return 58;
}
@end

View file

@ -37,83 +37,158 @@
<reference key="NSNextResponder"/>
<int key="NSvFlags">288</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="IBUIButton" id="111701986">
<object class="IBUIView" id="176711572">
<reference key="NSNextResponder" ref="675878782"/>
<int key="NSvFlags">292</int>
<string key="NSFrameSize">{320, 63}</string>
<array class="NSMutableArray" key="NSSubviews">
<object class="IBUIButton" id="846233730">
<reference key="NSNextResponder" ref="176711572"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{0, 63}, {320, 250}}</string>
<reference key="NSSuperview" ref="176711572"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="617455101"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<object class="NSColor" key="IBUIHighlightedTitleColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<object class="NSColor" key="IBUINormalTitleShadowColor" id="127131304">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC41AA</bytes>
</object>
<object class="IBUIFontDescription" key="IBUIFontDescription" id="955169232">
<int key="type">2</int>
<double key="pointSize">15</double>
</object>
<object class="NSFont" key="IBUIFont" id="269414177">
<string key="NSName">Helvetica-Bold</string>
<double key="NSSize">15</double>
<int key="NSfFlags">16</int>
</object>
</object>
<object class="IBUIImageView" id="942473668">
<reference key="NSNextResponder" ref="176711572"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{0, 48}, {320, 262}}</string>
<reference key="NSSuperview" ref="176711572"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="846233730"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">ombre-cotes-avatar.png</string>
</object>
</object>
<object class="IBUIImageView" id="617455101">
<reference key="NSNextResponder" ref="176711572"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{80, 65}, {160, 170}}</string>
<reference key="NSSuperview" ref="176711572"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="227927177"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">avatar-inconnu.png</string>
</object>
</object>
</array>
<string key="NSFrameSize">{320, 300}</string>
<reference key="NSSuperview" ref="675878782"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1003079266"/>
<reference key="NSNextKeyView" ref="942473668"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<bool key="IBUIAdjustsImageWhenHighlighted">NO</bool>
<object class="NSColor" key="IBUINormalTitleShadowColor" id="127131304">
<object class="NSColor" key="IBUIBackgroundColor" id="293312528">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC41AA</bytes>
<bytes key="NSWhite">MCAwAA</bytes>
</object>
<object class="NSCustomResource" key="IBUINormalBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">champ-courbe-autres-numeros.png</string>
</object>
<object class="IBUIFontDescription" key="IBUIFontDescription" id="955169232">
<int key="type">2</int>
<double key="pointSize">15</double>
</object>
<object class="NSFont" key="IBUIFont" id="867473255">
<string key="NSName">Helvetica-Bold</string>
<double key="NSSize">15</double>
<int key="NSfFlags">16</int>
</object>
</object>
<object class="IBUIButton" id="1003079266">
<reference key="NSNextResponder" ref="675878782"/>
<int key="NSvFlags">-2147483356</int>
<string key="NSFrameSize">{320, 68}</string>
<reference key="NSSuperview" ref="675878782"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1040042446"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<bool key="IBUIAdjustsImageWhenHighlighted">NO</bool>
<reference key="IBUINormalTitleShadowColor" ref="127131304"/>
<object class="NSCustomResource" key="IBUINormalBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">champ-saisie-numero.png</string>
</object>
<reference key="IBUIFontDescription" ref="955169232"/>
<reference key="IBUIFont" ref="867473255"/>
</object>
<object class="IBUILabel" id="1040042446">
<object class="IBUIView" id="227927177">
<reference key="NSNextResponder" ref="675878782"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{10, 0}, {206, 51}}</string>
<reference key="NSSuperview" ref="675878782"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="256572861"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<int key="IBUIContentMode">7</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<string key="IBUIText">0102030405</string>
<object class="NSColor" key="IBUITextColor" id="611364446">
<int key="NSColorSpace">10</int>
<object class="NSImage" key="NSImage">
<int key="NSImageFlags">549453824</int>
<string key="NSSize">{256, 256}</string>
<array class="NSMutableArray" key="NSReps">
<array>
<integer value="0"/>
<object class="NSBitmapImageRep">
<object class="NSData" key="NSTIFFRepresentation">
<bytes key="NS.bytes">TU0AKgAEAAh1eIH/cHJ5/3Bzff9vcXX/bnB3/3Byef9vcXX/bG51/2xudf9ucHf/cHN9/2dqdP9ucXv/
<array class="NSMutableArray" key="NSSubviews">
<object class="IBUIButton" id="111701986">
<reference key="NSNextResponder" ref="227927177"/>
<int key="NSvFlags">292</int>
<string key="NSFrameSize">{320, 63}</string>
<reference key="NSSuperview" ref="227927177"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1003079266"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<bool key="IBUIAdjustsImageWhenHighlighted">NO</bool>
<reference key="IBUINormalTitleShadowColor" ref="127131304"/>
<object class="NSCustomResource" key="IBUINormalBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">champ-courbe-autres-numeros.png</string>
</object>
<reference key="IBUIFontDescription" ref="955169232"/>
<reference key="IBUIFont" ref="269414177"/>
</object>
<object class="IBUIButton" id="1003079266">
<reference key="NSNextResponder" ref="227927177"/>
<int key="NSvFlags">-2147483356</int>
<string key="NSFrameSize">{320, 68}</string>
<reference key="NSSuperview" ref="227927177"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="544229628"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<bool key="IBUIAdjustsImageWhenHighlighted">NO</bool>
<reference key="IBUINormalTitleShadowColor" ref="127131304"/>
<object class="NSCustomResource" key="IBUINormalBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">champ-saisie-numero.png</string>
</object>
<reference key="IBUIFontDescription" ref="955169232"/>
<reference key="IBUIFont" ref="269414177"/>
</object>
<object class="IBUILabel" id="1040042446">
<reference key="NSNextResponder" ref="227927177"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{10, 0}, {206, 51}}</string>
<reference key="NSSuperview" ref="227927177"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="256572861"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<int key="IBUIContentMode">7</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<string key="IBUIText">0102030405</string>
<object class="NSColor" key="IBUITextColor" id="611364446">
<int key="NSColorSpace">10</int>
<object class="NSImage" key="NSImage">
<int key="NSImageFlags">549453824</int>
<string key="NSSize">{256, 256}</string>
<array class="NSMutableArray" key="NSReps">
<array>
<integer value="0"/>
<object class="NSBitmapImageRep">
<object class="NSData" key="NSTIFFRepresentation">
<bytes key="NS.bytes">TU0AKgAEAAh1eIH/cHJ5/3Bzff9vcXX/bnB3/3Byef9vcXX/bG51/2xudf9ucHf/cHN9/2dqdP9ucXv/
cHJ5/3Bzff9qbHP/b3F1/3N1fP9sbnX/am13/2ptd/9sbnX/am13/3l7gf91d33/bG95/2xudf9sb3n/
bG95/2dqdP9qbXf/c3V8/3Bzff93eoP/bG51/3Bzff9sbnX/dXd9/2dqdP9qbHP/bG51/2psc/9sb3n/
am13/2ptd/9sb3n/bG51/3V3ff97fYP/YmVu/25xe/9sb3n/c3Z//2psc/9zdXz/cHN9/2dqcf9qbHP/
@ -4486,75 +4561,100 @@ cHN9/2xvef9wc33/AA0BAAADAAAAAQEAAAABAQADAAAAAQEAAAABAgADAAAABAAEAKoBAwADAAAAAQAB
AAABBgADAAAAAQACAAABEQAEAAAAAgAEALIBEgADAAAAAQABAAABFQADAAAAAQAEAAABFgADAAAAAQCA
AAABFwAEAAAAAgAEALoBHAADAAAAAQABAAABUgADAAAAAQABAAABUwADAAAABAAEAMIAAAAAAAgACAAI
AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE</bytes>
</object>
</object>
</array>
</array>
<object class="NSColor" key="NSColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MCAwAA</bytes>
</object>
</object>
</array>
</array>
<reference key="NSColor" ref="293312528"/>
</object>
<string key="IBUIColorCocoaTouchKeyPath">scrollViewTexturedBackgroundColor</string>
</object>
<nil key="IBUIHighlightedColor"/>
<int key="IBUIBaselineAdjustment">0</int>
<float key="IBUIMinimumFontSize">10</float>
<object class="IBUIFontDescription" key="IBUIFontDescription">
<int key="type">1</int>
<double key="pointSize">30</double>
</object>
<object class="NSFont" key="IBUIFont">
<string key="NSName">Helvetica</string>
<double key="NSSize">30</double>
<int key="NSfFlags">16</int>
</object>
</object>
<string key="IBUIColorCocoaTouchKeyPath">scrollViewTexturedBackgroundColor</string>
</object>
<nil key="IBUIHighlightedColor"/>
<int key="IBUIBaselineAdjustment">0</int>
<float key="IBUIMinimumFontSize">10</float>
<object class="IBUIFontDescription" key="IBUIFontDescription">
<int key="type">1</int>
<double key="pointSize">30</double>
</object>
<object class="NSFont" key="IBUIFont">
<string key="NSName">Helvetica</string>
<double key="NSSize">30</double>
<int key="NSfFlags">16</int>
</object>
</object>
<object class="IBUIImageView" id="256572861">
<reference key="NSNextResponder" ref="675878782"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{224, 14}, {25, 25}}</string>
<object class="IBUIImageView" id="256572861">
<reference key="NSNextResponder" ref="227927177"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{224, 14}, {25, 25}}</string>
<reference key="NSSuperview" ref="227927177"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="932476762"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUILabel" id="932476762">
<reference key="NSNextResponder" ref="227927177"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{262, 12}, {50, 29}}</string>
<reference key="NSSuperview" ref="227927177"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<string key="IBUIText">12:34</string>
<reference key="IBUITextColor" ref="611364446"/>
<nil key="IBUIHighlightedColor"/>
<int key="IBUIBaselineAdjustment">0</int>
<float key="IBUIMinimumFontSize">10</float>
<int key="IBUITextAlignment">1</int>
<object class="IBUIFontDescription" key="IBUIFontDescription">
<int key="type">1</int>
<double key="pointSize">15</double>
</object>
<object class="NSFont" key="IBUIFont">
<string key="NSName">Helvetica</string>
<double key="NSSize">15</double>
<int key="NSfFlags">16</int>
</object>
</object>
<object class="IBUIButton" id="544229628">
<reference key="NSNextResponder" ref="227927177"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{0, 5}, {200, 40}}</string>
<reference key="NSSuperview" ref="227927177"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1040042446"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<reference key="IBUIHighlightedTitleColor" ref="293312528"/>
<reference key="IBUINormalTitleColor" ref="293312528"/>
<reference key="IBUINormalTitleShadowColor" ref="127131304"/>
<reference key="IBUIFontDescription" ref="955169232"/>
<reference key="IBUIFont" ref="269414177"/>
</object>
</array>
<string key="NSFrameSize">{320, 63}</string>
<reference key="NSSuperview" ref="675878782"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="932476762"/>
<reference key="NSNextKeyView" ref="111701986"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<reference key="IBUIBackgroundColor" ref="293312528"/>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUILabel" id="932476762">
<reference key="NSNextResponder" ref="675878782"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{262, 12}, {50, 29}}</string>
<reference key="NSSuperview" ref="675878782"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<string key="IBUIText">00:01</string>
<reference key="IBUITextColor" ref="611364446"/>
<nil key="IBUIHighlightedColor"/>
<int key="IBUIBaselineAdjustment">0</int>
<float key="IBUIMinimumFontSize">10</float>
<int key="IBUITextAlignment">1</int>
<object class="IBUIFontDescription" key="IBUIFontDescription">
<int key="type">1</int>
<double key="pointSize">15</double>
</object>
<object class="NSFont" key="IBUIFont">
<string key="NSName">Helvetica</string>
<double key="NSSize">15</double>
<int key="NSfFlags">16</int>
</object>
</object>
</array>
<string key="NSFrameSize">{320, 53}</string>
<string key="NSFrameSize">{320, 300}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="111701986"/>
<reference key="NSNextKeyView" ref="176711572"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
@ -4564,27 +4664,11 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE</bytes>
<array class="NSMutableArray" key="connectionRecords">
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">stateView</string>
<string key="label">avatarImage</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="256572861"/>
<reference key="destination" ref="617455101"/>
</object>
<int key="connectionID">24</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">timeLabel</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="932476762"/>
</object>
<int key="connectionID">25</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">firstBackground</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="1003079266"/>
</object>
<int key="connectionID">26</int>
<int key="connectionID">34</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
@ -4594,6 +4678,14 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE</bytes>
</object>
<int key="connectionID">27</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">firstBackground</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="1003079266"/>
</object>
<int key="connectionID">26</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">addressLabel</string>
@ -4602,6 +4694,47 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE</bytes>
</object>
<int key="connectionID">28</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">stateImage</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="256572861"/>
</object>
<int key="connectionID">33</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">stateLabel</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="932476762"/>
</object>
<int key="connectionID">32</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">avatarView</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="176711572"/>
</object>
<int key="connectionID">41</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">headerView</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="227927177"/>
</object>
<int key="connectionID">42</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">doHeaderClick:</string>
<reference key="source" ref="544229628"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">39</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
@ -4626,43 +4759,88 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE</bytes>
<int key="objectID">16</int>
<reference key="object" ref="675878782"/>
<array class="NSMutableArray" key="children">
<reference ref="111701986"/>
<reference ref="1003079266"/>
<reference ref="932476762"/>
<reference ref="1040042446"/>
<reference ref="256572861"/>
<reference ref="176711572"/>
<reference ref="227927177"/>
</array>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">31</int>
<reference key="object" ref="176711572"/>
<array class="NSMutableArray" key="children">
<reference ref="942473668"/>
<reference ref="617455101"/>
<reference ref="846233730"/>
</array>
<reference key="parent" ref="675878782"/>
<string key="objectName">avatarView</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">29</int>
<reference key="object" ref="617455101"/>
<reference key="parent" ref="176711572"/>
<string key="objectName">avatarImage</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">36</int>
<reference key="object" ref="227927177"/>
<array class="NSMutableArray" key="children">
<reference ref="932476762"/>
<reference ref="256572861"/>
<reference ref="1040042446"/>
<reference ref="1003079266"/>
<reference ref="111701986"/>
<reference ref="544229628"/>
</array>
<reference key="parent" ref="675878782"/>
<string key="objectName">headerView</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">14</int>
<reference key="object" ref="111701986"/>
<reference key="parent" ref="675878782"/>
<reference key="parent" ref="227927177"/>
<string key="objectName">otherBackground</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">20</int>
<reference key="object" ref="1003079266"/>
<reference key="parent" ref="227927177"/>
<string key="objectName">firstBackground</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">17</int>
<reference key="object" ref="1040042446"/>
<reference key="parent" ref="675878782"/>
<reference key="parent" ref="227927177"/>
<string key="objectName">addressLabel</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">18</int>
<reference key="object" ref="256572861"/>
<reference key="parent" ref="675878782"/>
<reference key="parent" ref="227927177"/>
<string key="objectName">stateView</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">19</int>
<reference key="object" ref="932476762"/>
<reference key="parent" ref="675878782"/>
<string key="objectName">timeLabel</string>
<reference key="parent" ref="227927177"/>
<string key="objectName">stateLabel</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">20</int>
<reference key="object" ref="1003079266"/>
<reference key="parent" ref="675878782"/>
<string key="objectName">firstBackground</string>
<int key="objectID">38</int>
<reference key="object" ref="544229628"/>
<reference key="parent" ref="227927177"/>
<string key="objectName">toggleButton</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">30</int>
<reference key="object" ref="942473668"/>
<reference key="parent" ref="176711572"/>
<string key="objectName">avatarShadowImage</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">44</int>
<reference key="object" ref="846233730"/>
<reference key="parent" ref="176711572"/>
</object>
</array>
</object>
@ -4679,44 +4857,77 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE</bytes>
<string key="19.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="20.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="0.0" key="20.IBUIButtonInspectorSelectedStateConfigurationMetadataKey"/>
<string key="29.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="30.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="31.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="36.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="38.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="1" key="38.IBUIButtonInspectorSelectedStateConfigurationMetadataKey"/>
<string key="44.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">28</int>
<int key="maxID">44</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">UICallCell</string>
<string key="superclassName">UITableViewCell</string>
<object class="NSMutableDictionary" key="actions">
<string key="NS.key.0">doHeaderClick:</string>
<string key="NS.object.0">id</string>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<string key="NS.key.0">doHeaderClick:</string>
<object class="IBActionInfo" key="NS.object.0">
<string key="name">doHeaderClick:</string>
<string key="candidateClassName">id</string>
</object>
</object>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="addressLabel">UILabel</string>
<string key="avatarImage">UIImageView</string>
<string key="avatarView">UIView</string>
<string key="firstBackground">UIView</string>
<string key="headerView">UIView</string>
<string key="otherBackground">UIView</string>
<string key="stateView">UIImageView</string>
<string key="timeLabel">UILabel</string>
<string key="stateImage">UIImageView</string>
<string key="stateLabel">UILabel</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="addressLabel">
<string key="name">addressLabel</string>
<string key="candidateClassName">UILabel</string>
</object>
<object class="IBToOneOutletInfo" key="avatarImage">
<string key="name">avatarImage</string>
<string key="candidateClassName">UIImageView</string>
</object>
<object class="IBToOneOutletInfo" key="avatarView">
<string key="name">avatarView</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo" key="firstBackground">
<string key="name">firstBackground</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo" key="headerView">
<string key="name">headerView</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo" key="otherBackground">
<string key="name">otherBackground</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo" key="stateView">
<string key="name">stateView</string>
<object class="IBToOneOutletInfo" key="stateImage">
<string key="name">stateImage</string>
<string key="candidateClassName">UIImageView</string>
</object>
<object class="IBToOneOutletInfo" key="timeLabel">
<string key="name">timeLabel</string>
<object class="IBToOneOutletInfo" key="stateLabel">
<string key="name">stateLabel</string>
<string key="candidateClassName">UILabel</string>
</object>
</dictionary>
@ -4736,8 +4947,10 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE</bytes>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<string key="avatar-inconnu.png">{320, 339}</string>
<string key="champ-courbe-autres-numeros.png">{640, 125}</string>
<string key="champ-saisie-numero.png">{640, 135}</string>
<string key="ombre-cotes-avatar.png">{640, 523}</string>
</dictionary>
<string key="IBCocoaTouchPluginVersion">1181</string>
</data>

View file

@ -27,6 +27,8 @@
@synthesize deleteButton;
@synthesize detailsButton;
#define DETAILS_DISABLED
- (id)init {
if ((self = [super init]) != nil) {
NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"UIHistoryCell"
@ -87,7 +89,11 @@
}
- (void)exitEditMode {
#ifdef DETAILS_DISABLED
[detailsButton setHidden:true];
#else
[detailsButton setHidden:false];
#endif
[deleteButton setHidden:true];
}

View file

@ -37,9 +37,10 @@
[self update:[[LinphoneManager instance] currentView]];
}
- (void)receiveLinphoneMainViewChangeEvent: (NSNotification*) notif {
PhoneView view = [[notif.userInfo objectForKey: @"view"] intValue];
[self update:view];
- (void)receiveLinphoneMainViewChangeEvent: (NSNotification*) notif {
NSNumber *viewNumber = [notif.userInfo objectForKey: @"view"];
if(viewNumber != nil)
[self update:[viewNumber intValue]];
}
- (void)update:(PhoneView) view {

View file

@ -20,14 +20,17 @@
#import <UIKit/UIKit.h>
@protocol UIToggleButtonDelegate
-(void) onOn;
-(void) onOff;
-(bool) onUpdate;
- (void)onOn;
- (void)onOff;
- (bool)onUpdate;
@end
@interface UIToggleButton : UIButton <UIToggleButtonDelegate> {
}
-(bool) update;
-(bool) toggle;
- (bool)update;
- (void)setOn;
- (void)setOff;
- (bool)toggle;
@end

View file

@ -36,6 +36,18 @@
return self.selected;
}
- (void)setOn {
if (!self.selected) {
[self toggle];
}
}
- (void)setOff {
if (self.selected) {
[self toggle];
}
}
- (bool)update {
self.selected = [self onUpdate];
return self.selected;
@ -63,18 +75,22 @@
return self;
}
- (void)dealloc {
[super dealloc];
}
-(void) onOn {
/*[NSException raise:NSInternalInconsistencyException
format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)];*/
}
-(void) onOff {
/*[NSException raise:NSInternalInconsistencyException
format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)];*/
}
-(bool) onUpdate {
/*[NSException raise:NSInternalInconsistencyException
format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)];*/

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
Resources/cadenas-barre.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
Resources/cadenas.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

BIN
Resources/options_over.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

View file

@ -181,6 +181,18 @@
7066FC0C13E830E400EFC6DC /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7066FC0B13E830E400EFC6DC /* libvpx.a */; };
70E542F313E147E3002BA2C0 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F213E147E3002BA2C0 /* OpenGLES.framework */; };
70E542F513E147EB002BA2C0 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F413E147EB002BA2C0 /* QuartzCore.framework */; };
D31AAF5E159B3919002C6B02 /* InCallTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */; };
D31AAF5F159B3919002C6B02 /* InCallTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */; };
D31AAF63159B5B6F002C6B02 /* start-conference-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF61159B5B6E002C6B02 /* start-conference-actif.png */; };
D31AAF64159B5B6F002C6B02 /* start-conference-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF61159B5B6E002C6B02 /* start-conference-actif.png */; };
D31AAF65159B5B6F002C6B02 /* start-conference-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF62159B5B6E002C6B02 /* start-conference-over.png */; };
D31AAF66159B5B6F002C6B02 /* start-conference-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF62159B5B6E002C6B02 /* start-conference-over.png */; };
D31AAF69159B5C68002C6B02 /* finir-conference-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF67159B5C68002C6B02 /* finir-conference-actif.png */; };
D31AAF6A159B5C68002C6B02 /* finir-conference-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF67159B5C68002C6B02 /* finir-conference-actif.png */; };
D31AAF6B159B5C68002C6B02 /* finir-conference-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF68159B5C68002C6B02 /* finir-conference-over.png */; };
D31AAF6C159B5C68002C6B02 /* finir-conference-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF68159B5C68002C6B02 /* finir-conference-over.png */; };
D31AAF6E159B65E1002C6B02 /* ring-champ-numero-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF6D159B65E1002C6B02 /* ring-champ-numero-actif.png */; };
D31AAF6F159B65E1002C6B02 /* ring-champ-numero-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF6D159B65E1002C6B02 /* ring-champ-numero-actif.png */; };
D31AC4B0158A29C600C2638B /* UIHistoryCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D31AC4AF158A29C600C2638B /* UIHistoryCell.xib */; };
D31AC4B1158A29C600C2638B /* UIHistoryCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D31AC4AF158A29C600C2638B /* UIHistoryCell.xib */; };
D31B4B21159876C0002E6C72 /* UICompositeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D31B4B1F159876C0002E6C72 /* UICompositeViewController.m */; };
@ -370,6 +382,24 @@
D3A55FBD15877E5E003FD403 /* UIContactCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A55FBB15877E5E003FD403 /* UIContactCell.m */; };
D3A55FBF15877E69003FD403 /* UIContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A55FBE15877E69003FD403 /* UIContactCell.xib */; };
D3A55FC015877E69003FD403 /* UIContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A55FBE15877E69003FD403 /* UIContactCell.xib */; };
D3D6A39E159B0EEF005F692C /* add_call_more_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39B159B0EEF005F692C /* add_call_more_default.png */; };
D3D6A39F159B0EEF005F692C /* add_call_more_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39B159B0EEF005F692C /* add_call_more_default.png */; };
D3D6A3A0159B0EEF005F692C /* add_call_more_disable.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39C159B0EEF005F692C /* add_call_more_disable.png */; };
D3D6A3A1159B0EEF005F692C /* add_call_more_disable.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39C159B0EEF005F692C /* add_call_more_disable.png */; };
D3D6A3A2159B0EEF005F692C /* add_call_more_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39D159B0EEF005F692C /* add_call_more_over.png */; };
D3D6A3A3159B0EEF005F692C /* add_call_more_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39D159B0EEF005F692C /* add_call_more_over.png */; };
D3D6A3AB159B0EFE005F692C /* cadenas-barre.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A5159B0EFE005F692C /* cadenas-barre.png */; };
D3D6A3AC159B0EFE005F692C /* cadenas-barre.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A5159B0EFE005F692C /* cadenas-barre.png */; };
D3D6A3AD159B0EFE005F692C /* cadenas-interrogation.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A6159B0EFE005F692C /* cadenas-interrogation.png */; };
D3D6A3AE159B0EFE005F692C /* cadenas-interrogation.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A6159B0EFE005F692C /* cadenas-interrogation.png */; };
D3D6A3AF159B0EFE005F692C /* cadenas.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A7159B0EFE005F692C /* cadenas.png */; };
D3D6A3B0159B0EFE005F692C /* cadenas.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A7159B0EFE005F692C /* cadenas.png */; };
D3D6A3B1159B0EFE005F692C /* options_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A8159B0EFE005F692C /* options_default.png */; };
D3D6A3B2159B0EFE005F692C /* options_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A8159B0EFE005F692C /* options_default.png */; };
D3D6A3B3159B0EFE005F692C /* options_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A9159B0EFE005F692C /* options_disabled.png */; };
D3D6A3B4159B0EFE005F692C /* options_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A9159B0EFE005F692C /* options_disabled.png */; };
D3D6A3B5159B0EFE005F692C /* options_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3AA159B0EFE005F692C /* options_over.png */; };
D3D6A3B6159B0EFE005F692C /* options_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3AA159B0EFE005F692C /* options_over.png */; };
D3EA53FD159850E80037DC6B /* LinphoneManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA53FC159850E80037DC6B /* LinphoneManager.m */; };
D3EA53FE159850E80037DC6B /* LinphoneManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA53FC159850E80037DC6B /* LinphoneManager.m */; };
D3EA5403159852080037DC6B /* tchat-edit-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA53FF159852080037DC6B /* tchat-edit-actif.png */; };
@ -452,10 +482,6 @@
D3F83EED1582021700336684 /* InCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83EEA1582021700336684 /* InCallViewController.m */; };
D3F83EEE1582021700336684 /* InCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EEB1582021700336684 /* InCallViewController.xib */; };
D3F83EEF1582021700336684 /* InCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EEB1582021700336684 /* InCallViewController.xib */; };
D3F83F04158205A100336684 /* add-call-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF0158205A100336684 /* add-call-actif.png */; };
D3F83F05158205A100336684 /* add-call-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF0158205A100336684 /* add-call-actif.png */; };
D3F83F06158205A100336684 /* add-call-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF1158205A100336684 /* add-call-over.png */; };
D3F83F07158205A100336684 /* add-call-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF1158205A100336684 /* add-call-over.png */; };
D3F83F08158205A100336684 /* dialer-meteo-sortir-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF2158205A100336684 /* dialer-meteo-sortir-actif.png */; };
D3F83F09158205A100336684 /* dialer-meteo-sortir-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF2158205A100336684 /* dialer-meteo-sortir-actif.png */; };
D3F83F0A158205A100336684 /* dialer-meteo-sortir-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF3158205A100336684 /* dialer-meteo-sortir-over.png */; };
@ -888,6 +914,13 @@
70E542F213E147E3002BA2C0 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
70E542F413E147EB002BA2C0 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
8D1107310486CEB800E47090 /* linphone-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "linphone-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = "<group>"; };
D31AAF5C159B3919002C6B02 /* InCallTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InCallTableViewController.h; sourceTree = "<group>"; };
D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InCallTableViewController.m; sourceTree = "<group>"; };
D31AAF61159B5B6E002C6B02 /* start-conference-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "start-conference-actif.png"; path = "Resources/start-conference-actif.png"; sourceTree = "<group>"; };
D31AAF62159B5B6E002C6B02 /* start-conference-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "start-conference-over.png"; path = "Resources/start-conference-over.png"; sourceTree = "<group>"; };
D31AAF67159B5C68002C6B02 /* finir-conference-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "finir-conference-actif.png"; path = "Resources/finir-conference-actif.png"; sourceTree = "<group>"; };
D31AAF68159B5C68002C6B02 /* finir-conference-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "finir-conference-over.png"; path = "Resources/finir-conference-over.png"; sourceTree = "<group>"; };
D31AAF6D159B65E1002C6B02 /* ring-champ-numero-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "ring-champ-numero-actif.png"; path = "Resources/ring-champ-numero-actif.png"; sourceTree = "<group>"; };
D31AC4AF158A29C600C2638B /* UIHistoryCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIHistoryCell.xib; sourceTree = "<group>"; };
D31B4B1E159876C0002E6C72 /* UICompositeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICompositeViewController.h; sourceTree = "<group>"; };
D31B4B1F159876C0002E6C72 /* UICompositeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UICompositeViewController.m; sourceTree = "<group>"; };
@ -1022,6 +1055,15 @@
D3A55FBA15877E5E003FD403 /* UIContactCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIContactCell.h; sourceTree = "<group>"; };
D3A55FBB15877E5E003FD403 /* UIContactCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIContactCell.m; sourceTree = "<group>"; };
D3A55FBE15877E69003FD403 /* UIContactCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIContactCell.xib; sourceTree = "<group>"; };
D3D6A39B159B0EEF005F692C /* add_call_more_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = add_call_more_default.png; path = Resources/add_call_more_default.png; sourceTree = "<group>"; };
D3D6A39C159B0EEF005F692C /* add_call_more_disable.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = add_call_more_disable.png; path = Resources/add_call_more_disable.png; sourceTree = "<group>"; };
D3D6A39D159B0EEF005F692C /* add_call_more_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = add_call_more_over.png; path = Resources/add_call_more_over.png; sourceTree = "<group>"; };
D3D6A3A5159B0EFE005F692C /* cadenas-barre.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "cadenas-barre.png"; path = "Resources/cadenas-barre.png"; sourceTree = "<group>"; };
D3D6A3A6159B0EFE005F692C /* cadenas-interrogation.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "cadenas-interrogation.png"; path = "Resources/cadenas-interrogation.png"; sourceTree = "<group>"; };
D3D6A3A7159B0EFE005F692C /* cadenas.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cadenas.png; path = Resources/cadenas.png; sourceTree = "<group>"; };
D3D6A3A8159B0EFE005F692C /* options_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_default.png; path = Resources/options_default.png; sourceTree = "<group>"; };
D3D6A3A9159B0EFE005F692C /* options_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_disabled.png; path = Resources/options_disabled.png; sourceTree = "<group>"; };
D3D6A3AA159B0EFE005F692C /* options_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_over.png; path = Resources/options_over.png; sourceTree = "<group>"; };
D3EA53FB159850E80037DC6B /* LinphoneManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneManager.h; sourceTree = "<group>"; };
D3EA53FC159850E80037DC6B /* LinphoneManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneManager.m; sourceTree = "<group>"; };
D3EA53FF159852080037DC6B /* tchat-edit-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "tchat-edit-actif.png"; path = "Resources/tchat-edit-actif.png"; sourceTree = "<group>"; };
@ -1073,8 +1115,6 @@
D3F83EE91582021700336684 /* InCallViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InCallViewController.h; sourceTree = "<group>"; };
D3F83EEA1582021700336684 /* InCallViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InCallViewController.m; sourceTree = "<group>"; };
D3F83EEB1582021700336684 /* InCallViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = InCallViewController.xib; sourceTree = "<group>"; };
D3F83EF0158205A100336684 /* add-call-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add-call-actif.png"; path = "Resources/add-call-actif.png"; sourceTree = "<group>"; };
D3F83EF1158205A100336684 /* add-call-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add-call-over.png"; path = "Resources/add-call-over.png"; sourceTree = "<group>"; };
D3F83EF2158205A100336684 /* dialer-meteo-sortir-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer-meteo-sortir-actif.png"; path = "Resources/dialer-meteo-sortir-actif.png"; sourceTree = "<group>"; };
D3F83EF3158205A100336684 /* dialer-meteo-sortir-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer-meteo-sortir-over.png"; path = "Resources/dialer-meteo-sortir-over.png"; sourceTree = "<group>"; };
D3F83EF4158205A100336684 /* micro-OFF-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "micro-OFF-actif.png"; path = "Resources/micro-OFF-actif.png"; sourceTree = "<group>"; };
@ -1264,6 +1304,8 @@
D3ED3EB515873928006C0DE4 /* HistoryViewController.h */,
D3ED3EB615873929006C0DE4 /* HistoryViewController.m */,
D3ED3EB2158738FA006C0DE4 /* HistoryViewController.xib */,
D31AAF5C159B3919002C6B02 /* InCallTableViewController.h */,
D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */,
3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */,
D3F83EE91582021700336684 /* InCallViewController.h */,
D3F83EEA1582021700336684 /* InCallViewController.m */,
@ -1744,13 +1786,14 @@
D3F83F3D1582223B00336684 /* 8-over.png */,
D3F83F3E1582223B00336684 /* 9-actif.png */,
D3F83F3F1582223B00336684 /* 9-over.png */,
D3F83EF0158205A100336684 /* add-call-actif.png */,
D3F83EF1158205A100336684 /* add-call-over.png */,
D3ED3E6715861A53006C0DE4 /* add-contact-actif.png */,
D354980E15875608000081D8 /* add-contact-depuis-detail-actif.png */,
D354980F15875608000081D8 /* add-contact-depuis-detail-over.png */,
D3ED3E6815861A53006C0DE4 /* add-contact-inactif.png */,
D3ED3E6915861A53006C0DE4 /* add-contact-over.png */,
D3D6A39B159B0EEF005F692C /* add_call_more_default.png */,
D3D6A39C159B0EEF005F692C /* add_call_more_disable.png */,
D3D6A39D159B0EEF005F692C /* add_call_more_over.png */,
D3ED3E9215872EF1006C0DE4 /* all-call-actif.png */,
D3ED3E9315872EF1006C0DE4 /* all-call-selectionne.png */,
D354980215875534000081D8 /* all-contacts-actif.png */,
@ -1769,6 +1812,9 @@
D3ED3E511585FFFD006C0DE4 /* barre-noire-top.png */,
D354981815876FE7000081D8 /* bouton-detail-contact-actif.png */,
D354981915876FE7000081D8 /* bouton-detail-contact-over.png */,
D3D6A3A5159B0EFE005F692C /* cadenas-barre.png */,
D3D6A3A6159B0EFE005F692C /* cadenas-interrogation.png */,
D3D6A3A7159B0EFE005F692C /* cadenas.png */,
D3F83F801582278D00336684 /* cancel-actif.png */,
D3F83F811582278D00336684 /* cancel-over.png */,
D36C43CC158F2F370048BA40 /* champ-courbe-autres-numeros.png */,
@ -1798,6 +1844,8 @@
D3ED3E9515872EF1006C0DE4 /* edit-history-over.png */,
D3F83F421582223B00336684 /* etoile-actif.png */,
D3F83F431582223B00336684 /* etoile-over.png */,
D31AAF67159B5C68002C6B02 /* finir-conference-actif.png */,
D31AAF68159B5C68002C6B02 /* finir-conference-over.png */,
D3ED3E401585FB4A006C0DE4 /* fond-clavier.png */,
D31C9C89158A179A00756B45 /* fond-detail-numero.png */,
D347347C1580E5F8003C7B8C /* history-actif.png */,
@ -1825,6 +1873,9 @@
2242E312125235120061DDCE /* oldphone-mono-30s.caf */,
2237D4081084D7A9001383EE /* oldphone-mono.wav */,
D3F34F2F1599B008005BE94F /* ombre-cotes-avatar.png */,
D3D6A3A8159B0EFE005F692C /* options_default.png */,
D3D6A3A9159B0EFE005F692C /* options_disabled.png */,
D3D6A3AA159B0EFE005F692C /* options_over.png */,
D3F83EF8158205A100336684 /* pause-actif.png */,
D36C43ED158F61EA0048BA40 /* pause-champ-numero-actif.png */,
D36C43EE158F61EA0048BA40 /* pause-champ-numero-over.png */,
@ -1842,6 +1893,7 @@
D3F83F761582253100336684 /* refuser-actif.png */,
D3F83F771582253100336684 /* refuser-over.png */,
D37295C9158B1E2D00D2C0C7 /* registration_inprogress.png */,
D31AAF6D159B65E1002C6B02 /* ring-champ-numero-actif.png */,
22F254801073D99800AC9B3F /* ringback.wav */,
70571E1913FABCB000CDD3C2 /* rootca.pem */,
D38327EF1580FE3A00FA0D23 /* settings-actif.png */,
@ -1851,6 +1903,8 @@
D3F83EFD158205A100336684 /* speacker-OFF-over.png */,
D3F83EFE158205A100336684 /* speacker-ON-actif.png */,
D3F83EFF158205A100336684 /* speacker-ON-over.png */,
D31AAF61159B5B6E002C6B02 /* start-conference-actif.png */,
D31AAF62159B5B6E002C6B02 /* start-conference-over.png */,
22226C11118197C0000CA27B /* startcall-green.png */,
D3432A5C158A4446001C6B0B /* status_connected.png */,
D3432A70158A45AF001C6B0B /* status_disconnected.png */,
@ -2100,8 +2154,6 @@
D3832802158100E400FA0D23 /* settings-over.png in Resources */,
D3832803158100E400FA0D23 /* tchat-over.png in Resources */,
D3F83EEE1582021700336684 /* InCallViewController.xib in Resources */,
D3F83F04158205A100336684 /* add-call-actif.png in Resources */,
D3F83F06158205A100336684 /* add-call-over.png in Resources */,
D3F83F08158205A100336684 /* dialer-meteo-sortir-actif.png in Resources */,
D3F83F0A158205A100336684 /* dialer-meteo-sortir-over.png in Resources */,
D3F83F0C158205A100336684 /* micro-OFF-actif.png in Resources */,
@ -2238,6 +2290,20 @@
D31B4B281598A390002E6C72 /* avatar-inconnu.png in Resources */,
D31B4B2A1598A390002E6C72 /* avatar-small.png in Resources */,
D3F34F301599B008005BE94F /* ombre-cotes-avatar.png in Resources */,
D3D6A39E159B0EEF005F692C /* add_call_more_default.png in Resources */,
D3D6A3A0159B0EEF005F692C /* add_call_more_disable.png in Resources */,
D3D6A3A2159B0EEF005F692C /* add_call_more_over.png in Resources */,
D3D6A3AB159B0EFE005F692C /* cadenas-barre.png in Resources */,
D3D6A3AD159B0EFE005F692C /* cadenas-interrogation.png in Resources */,
D3D6A3AF159B0EFE005F692C /* cadenas.png in Resources */,
D3D6A3B1159B0EFE005F692C /* options_default.png in Resources */,
D3D6A3B3159B0EFE005F692C /* options_disabled.png in Resources */,
D3D6A3B5159B0EFE005F692C /* options_over.png in Resources */,
D31AAF63159B5B6F002C6B02 /* start-conference-actif.png in Resources */,
D31AAF65159B5B6F002C6B02 /* start-conference-over.png in Resources */,
D31AAF69159B5C68002C6B02 /* finir-conference-actif.png in Resources */,
D31AAF6B159B5C68002C6B02 /* finir-conference-over.png in Resources */,
D31AAF6E159B65E1002C6B02 /* ring-champ-numero-actif.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -2273,8 +2339,6 @@
57282931154AF1460076F540 /* history-orange.png in Resources */,
57282933154AF14D0076F540 /* dialer-orange.png in Resources */,
D3F83EEF1582021700336684 /* InCallViewController.xib in Resources */,
D3F83F05158205A100336684 /* add-call-actif.png in Resources */,
D3F83F07158205A100336684 /* add-call-over.png in Resources */,
D3F83F09158205A100336684 /* dialer-meteo-sortir-actif.png in Resources */,
D3F83F0B158205A100336684 /* dialer-meteo-sortir-over.png in Resources */,
D3F83F0D158205A100336684 /* micro-OFF-actif.png in Resources */,
@ -2411,6 +2475,20 @@
D31B4B291598A390002E6C72 /* avatar-inconnu.png in Resources */,
D31B4B2B1598A390002E6C72 /* avatar-small.png in Resources */,
D3F34F311599B008005BE94F /* ombre-cotes-avatar.png in Resources */,
D3D6A39F159B0EEF005F692C /* add_call_more_default.png in Resources */,
D3D6A3A1159B0EEF005F692C /* add_call_more_disable.png in Resources */,
D3D6A3A3159B0EEF005F692C /* add_call_more_over.png in Resources */,
D3D6A3AC159B0EFE005F692C /* cadenas-barre.png in Resources */,
D3D6A3AE159B0EFE005F692C /* cadenas-interrogation.png in Resources */,
D3D6A3B0159B0EFE005F692C /* cadenas.png in Resources */,
D3D6A3B2159B0EFE005F692C /* options_default.png in Resources */,
D3D6A3B4159B0EFE005F692C /* options_disabled.png in Resources */,
D3D6A3B6159B0EFE005F692C /* options_over.png in Resources */,
D31AAF64159B5B6F002C6B02 /* start-conference-actif.png in Resources */,
D31AAF66159B5B6F002C6B02 /* start-conference-over.png in Resources */,
D31AAF6A159B5C68002C6B02 /* finir-conference-actif.png in Resources */,
D31AAF6C159B5C68002C6B02 /* finir-conference-over.png in Resources */,
D31AAF6F159B65E1002C6B02 /* ring-champ-numero-actif.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -2484,6 +2562,7 @@
D3F26BF115986B73005F9CAB /* IncomingCallViewController.m in Sources */,
D31B4B21159876C0002E6C72 /* UICompositeViewController.m in Sources */,
D3F34F351599C354005BE94F /* UIModalViewController.m in Sources */,
D31AAF5E159B3919002C6B02 /* InCallTableViewController.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -2554,6 +2633,7 @@
D3F26BF215986B73005F9CAB /* IncomingCallViewController.m in Sources */,
D31B4B22159876C0002E6C72 /* UICompositeViewController.m in Sources */,
D3F34F361599C354005BE94F /* UIModalViewController.m in Sources */,
D31AAF5F159B3919002C6B02 /* InCallTableViewController.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};