Add animation

Continue new ui
Fix some issues
This commit is contained in:
Yann Diorcet 2012-06-21 18:38:40 +02:00
parent 4b9ae080cd
commit 2443f37b9c
34 changed files with 5474 additions and 401 deletions

View file

@ -17,9 +17,9 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include "ContactTableViewController.h"
#import "FastAddressBook.h"
#import "ContactTableViewController.h"
#import "UIContactCell.h"
#import "LinphoneManager.h"
@implementation ContactTableViewController
@ -37,24 +37,35 @@ void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info,
NSArray *lContacts = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook);
for (id lPerson in lContacts) {
CFStringRef lFirstName = ABRecordCopyValue((ABRecordRef)lPerson, kABPersonFirstNameProperty);
CFStringRef lLocalizedFirstName = ABAddressBookCopyLocalizedLabel(lFirstName);
CFStringRef lLocalizedFirstName = (lFirstName != nil)? ABAddressBookCopyLocalizedLabel(lFirstName): nil;
CFStringRef lLastName = ABRecordCopyValue((ABRecordRef)lPerson, kABPersonLastNameProperty);
CFStringRef lLocalizedLastName = ABAddressBookCopyLocalizedLabel(lLastName);
NSString *name =[NSString stringWithFormat:@"%@%@", [(NSString *)lLocalizedFirstName retain], [(NSString *)lLocalizedLastName retain]];
// Put in correct subDic
NSString *firstChar = [[name substringToIndex:1] uppercaseString];
OrderedDictionary *subDic =[lAddressBookMap objectForKey: firstChar];
if(subDic == nil) {
subDic = [[OrderedDictionary alloc] init];
[lAddressBookMap insertObject:subDic forKey:firstChar selector:@selector(caseInsensitiveCompare:)];
CFStringRef lLocalizedLastName = (lLastName != nil)? ABAddressBookCopyLocalizedLabel(lLastName): nil;
NSString *name = nil;
if(lLocalizedFirstName != nil && lLocalizedLastName != nil) {
name=[NSString stringWithFormat:@"%@%@", [(NSString *)lLocalizedFirstName retain], [(NSString *)lLocalizedLastName retain]];
} else if(lLocalizedLastName != nil) {
name=[NSString stringWithFormat:@"%@",[(NSString *)lLocalizedLastName retain]];
} else if(lLocalizedFirstName != nil) {
name=[NSString stringWithFormat:@"%@",[(NSString *)lLocalizedFirstName retain]];
}
[subDic insertObject:lPerson forKey:name selector:@selector(caseInsensitiveCompare:)];
CFRelease(lLocalizedLastName);
CFRelease(lLastName);
CFRelease(lLocalizedFirstName);
CFRelease(lFirstName);
if(name != nil) {
// Put in correct subDic
NSString *firstChar = [[name substringToIndex:1] uppercaseString];
OrderedDictionary *subDic =[lAddressBookMap objectForKey: firstChar];
if(subDic == nil) {
subDic = [[OrderedDictionary alloc] init];
[lAddressBookMap insertObject:subDic forKey:firstChar selector:@selector(caseInsensitiveCompare:)];
}
[subDic insertObject:lPerson forKey:name selector:@selector(caseInsensitiveCompare:)];
}
if(lLocalizedLastName != nil)
CFRelease(lLocalizedLastName);
if(lLastName != nil)
CFRelease(lLastName);
if(lLocalizedFirstName != nil)
CFRelease(lLocalizedFirstName);
if(lFirstName != nil)
CFRelease(lFirstName);
}
CFRelease(lContacts);
}
@ -86,20 +97,9 @@ void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info,
NSString *key = [[subDic allKeys] objectAtIndex:[indexPath row]];
ABRecordRef record = [subDic objectForKey:key];
[cell update: record];
CFStringRef lFirstName = ABRecordCopyValue(record, kABPersonFirstNameProperty);
CFStringRef lLocalizedFirstName = ABAddressBookCopyLocalizedLabel(lFirstName);
CFStringRef lLastName = ABRecordCopyValue(record, kABPersonLastNameProperty);
CFStringRef lLocalizedLastName = ABAddressBookCopyLocalizedLabel(lLastName);
[cell.firstName setText: [(NSString *)lLocalizedFirstName retain]];
[cell.lastName setText: [(NSString *)lLocalizedLastName retain]];
[cell update];
CFRelease(lLocalizedLastName);
CFRelease(lLastName);
CFRelease(lLocalizedFirstName);
CFRelease(lFirstName);
return cell;
}
@ -111,6 +111,26 @@ void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info,
OrderedDictionary *subDic = [addressBookMap objectForKey: [addressBookMap keyAtIndex: [indexPath section]]];
ABRecordRef lPerson = [subDic objectForKey: [subDic keyAtIndex:[indexPath row]]];
// TODO
ABMultiValueRef lPhoneNumbers = ABRecordCopyValue((ABRecordRef)lPerson, kABPersonPhoneProperty);
for(CFIndex i = 0; i < ABMultiValueGetCount(lPhoneNumbers); i++) {
CFStringRef lLabel = ABMultiValueCopyLabelAtIndex(lPhoneNumbers, i);
if ([(NSString*)lLabel isEqualToString:(NSString*)kABPersonPhoneMainLabel]) {
CFStringRef lNumber = ABMultiValueCopyValueAtIndex(lPhoneNumbers,i);
NSString *number = [(NSString *)lNumber retain];
// Go to dialer view
NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys:
[[[NSArray alloc] initWithObjects: number, nil] autorelease]
, @"setAddress:",
nil] autorelease];
[[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict];
CFRelease(lNumber);
break;
}
CFRelease(lLabel);
}
CFRelease(lPhoneNumbers);
}
- (void)dealloc {

View file

@ -26,6 +26,7 @@
@private
//Buttons
UITextField* addressField;
UIButton* addContact;
UIEraseButton* eraseButton;
UICallButton* callButton;
@ -47,6 +48,7 @@
- (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 UIEraseButton* eraseButton;
@property (nonatomic, retain) IBOutlet UIButton* oneButton;
@ -63,5 +65,6 @@
@property (nonatomic, retain) IBOutlet UIButton* hashButton;
- (IBAction)onAddContact: (id) event;
- (IBAction)onAddressChange: (id)sender;
@end

View file

@ -21,7 +21,6 @@
#import <AudioToolbox/AudioToolbox.h>
#import "DialerViewController.h"
#import "linphoneAppDelegate.h"
#import "IncallViewController.h"
#import "LinphoneManager.h"
#import "PhoneMainView.h"
@ -32,6 +31,7 @@
@implementation DialerViewController
@synthesize addressField;
@synthesize addContact;
@synthesize callButton;
@synthesize eraseButton;
@ -87,7 +87,10 @@
- (void)dealloc {
[addressField release];
[addContact release];
[eraseButton release];
[callButton release];
[oneButton release];
[twoButton release];
[threeButton release];
@ -114,4 +117,16 @@
}
- (IBAction)onAddressChange: (id)sender {
if([[addressField text] length] > 0) {
[addContact setEnabled:TRUE];
[eraseButton setEnabled:TRUE];
[callButton setEnabled:TRUE];
} else {
[addContact setEnabled:FALSE];
[eraseButton setEnabled:FALSE];
[callButton setEnabled:FALSE];
}
}
@end

View file

@ -529,6 +529,7 @@
<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>
@ -562,6 +563,7 @@
<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>
@ -571,6 +573,10 @@
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">appeler-over.png</string>
</object>
<object class="NSCustomResource" key="IBUIDisabledBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">appeler-disabled.png</string>
</object>
<object class="NSCustomResource" key="IBUINormalBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">appeler-actif.png</string>
@ -584,9 +590,11 @@
<string key="NSFrame">{{214, 0}, {106, 69}}</string>
<reference key="NSSuperview" ref="32193173"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<bool key="IBUIEnabled">NO</bool>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<bool key="IBUIAdjustsImageWhenHighlighted">NO</bool>
@ -601,6 +609,10 @@
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">backspace-over.png</string>
</object>
<object class="NSCustomResource" key="IBUIDisabledBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">backspace-disabled.png</string>
</object>
<object class="NSCustomResource" key="IBUINormalBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">backspace-actif.png</string>
@ -765,6 +777,14 @@
</object>
<int key="connectionID">205</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">addContact</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="617539638"/>
</object>
<int key="connectionID">206</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">delegate</string>
@ -773,6 +793,15 @@
</object>
<int key="connectionID">190</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">onAddressChange:</string>
<reference key="source" ref="751637181"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">18</int>
</object>
<int key="connectionID">208</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">onAddContact:</string>
@ -822,8 +851,8 @@
<reference key="object" ref="312750714"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="751637181"/>
<reference ref="874403835"/>
<reference ref="751637181"/>
</object>
<reference key="parent" ref="542426306"/>
<string key="objectName">dialer</string>
@ -850,7 +879,6 @@
<reference ref="607229252"/>
<reference ref="1070392235"/>
<reference ref="539781036"/>
<reference ref="573280603"/>
<reference ref="539158319"/>
<reference ref="150499342"/>
<reference ref="616388880"/>
@ -858,6 +886,7 @@
<reference ref="310945439"/>
<reference ref="602859574"/>
<reference ref="465571136"/>
<reference ref="573280603"/>
</object>
<reference key="parent" ref="542426306"/>
<string key="objectName">pad</string>
@ -1023,6 +1052,7 @@
<string>39.CustomClassName</string>
<string>39.IBPluginDependency</string>
<string>39.IBUIButtonInspectorSelectedStateConfigurationMetadataKey</string>
<string>4.CustomClassName</string>
<string>4.IBPluginDependency</string>
<string>40.CustomClassName</string>
<string>40.IBPluginDependency</string>
@ -1047,10 +1077,10 @@
<real value="3"/>
<string>UICallButton</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="1"/>
<real value="3"/>
<string>UIEraseButton</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="1"/>
<real value="3"/>
<string>UIDigitButton</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>UIDigitButton</string>
@ -1080,6 +1110,7 @@
<string>UIDigitButton</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="1"/>
<string>UIAddressTextField</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>UIDigitButton</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
@ -1101,7 +1132,7 @@
<reference key="dict.values" ref="0"/>
</object>
<nil key="sourceID"/>
<int key="maxID">205</int>
<int key="maxID">221</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@ -1110,20 +1141,42 @@
<string key="className">DialerViewController</string>
<string key="superclassName">UIViewController</string>
<object class="NSMutableDictionary" key="actions">
<string key="NS.key.0">onAddContact:</string>
<string key="NS.object.0">id</string>
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>onAddContact:</string>
<string>onAddressChange:</string>
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>id</string>
<string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<string key="NS.key.0">onAddContact:</string>
<object class="IBActionInfo" key="NS.object.0">
<string key="name">onAddContact:</string>
<string key="candidateClassName">id</string>
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>onAddContact:</string>
<string>onAddressChange:</string>
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBActionInfo">
<string key="name">onAddContact:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">onAddressChange:</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>addressField</string>
<string>callButton</string>
<string>eightButton</string>
@ -1142,6 +1195,7 @@
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>UIButton</string>
<string>UITextField</string>
<string>UIButton</string>
<string>UIButton</string>
@ -1163,6 +1217,7 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>addContact</string>
<string>addressField</string>
<string>callButton</string>
<string>eightButton</string>
@ -1181,6 +1236,10 @@
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">addContact</string>
<string key="candidateClassName">UIButton</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">addressField</string>
<string key="candidateClassName">UITextField</string>
@ -1248,6 +1307,14 @@
<string key="minorKey">./Classes/DialerViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIAddressTextField</string>
<string key="superclassName">UITextField</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/UIAddressTextField.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UICallButton</string>
<string key="superclassName">UIButton</string>
@ -1258,7 +1325,7 @@
</object>
<object class="IBPartialClassDescription">
<string key="className">UIDigitButton</string>
<string key="superclassName">UIButton</string>
<string key="superclassName">UILongTouchButton</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/UIDigitButton.h</string>
@ -1325,8 +1392,10 @@
<string>add-contact-inactif.png</string>
<string>add-contact-over.png</string>
<string>appeler-actif.png</string>
<string>appeler-disabled.png</string>
<string>appeler-over.png</string>
<string>backspace-actif.png</string>
<string>backspace-disabled.png</string>
<string>backspace-over.png</string>
<string>champ-saisie-numero.png</string>
<string>diese-actif.png</string>
@ -1361,6 +1430,8 @@
<string>{213, 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>
<string>{640, 135}</string>

View file

@ -18,7 +18,6 @@
*/
#import <UIKit/UIKit.h>
#import "LinphoneAppDelegate.h"
@interface FirstLoginViewController : UIViewController <UITextFieldDelegate>{
UIButton* ok;

View file

@ -45,35 +45,10 @@
cell = [[UIHistoryCell alloc] init];
}
// Set up the cell...
LinphoneAddress* partyToDisplay;
const MSList * logs = linphone_core_get_call_logs([LinphoneManager getLc]);
LinphoneCallLog* callLogs = ms_list_nth_data(logs, indexPath.row) ;
NSString *path;
if (callLogs->dir == LinphoneCallIncoming) {
if (callLogs->status == LinphoneCallSuccess) {
path = [[NSBundle mainBundle] pathForResource:callLogs->video_enabled?@"appel-entrant":@"appel-entrant" ofType:@"png"];
} else {
//missed call
path = [[NSBundle mainBundle] pathForResource:@"appel-manque" ofType:@"png"];
}
partyToDisplay=callLogs->from;
} else {
path = [[NSBundle mainBundle] pathForResource:callLogs->video_enabled?@"appel-sortant":@"appel-sortant" ofType:@"png"];
partyToDisplay=callLogs->to;
}
UIImage *image = [UIImage imageWithContentsOfFile:path];
const char* username = linphone_address_get_username(partyToDisplay)!=0?linphone_address_get_username(partyToDisplay):"";
LinphoneCallLog* callLogs = ms_list_nth_data(logs, indexPath.row);
//TODO
//const char* displayName = linphone_address_get_display_name(partyToDisplay);
[cell.displayName setText:[NSString stringWithFormat:@"%s", username]];
cell.imageView.image = image;
[cell update:callLogs];
return cell;
}
@ -109,10 +84,10 @@
NSString* dispName = [[NSString alloc] initWithCString:displayName encoding:[NSString defaultCStringEncoding]];
// Go to dialer view
NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:
[[NSArray alloc] initWithObjects: phoneNumber, nil]
NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys:
[[[NSArray alloc] initWithObjects: phoneNumber, nil] autorelease]
, @"setAddress:",
nil];
nil] autorelease];
[[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict];
[phoneNumber release];

View file

@ -30,7 +30,7 @@
@class VideoViewController;
@interface InCallViewController : UIViewController <UITableViewDelegate, UITableViewDataSource, CallActionSheetDelegate> {
@interface InCallViewController : UIViewController <UITableViewDelegate, UITableViewDataSource, CallActionSheetDelegate, UIGestureRecognizerDelegate> {
UITableView* callTableView;
@ -43,8 +43,6 @@
UICamSwitch* videoCameraSwitch;
UIActivityIndicatorView* videoWaitingForFirstImage;
bool dismissed;
NSTimer *durationRefreasher;
NSTimer *glowingTimer;
@ -69,7 +67,7 @@
}
+ (LinphoneCall*)retrieveCallAtIndex: (NSInteger) index inConference:(bool) conf;
+ (void)updateCellImageView:(UIImageView*)imageView Label:(UILabel*)label DetailLabel:(UILabel*)detailLabel AndAccessoryView:(UIView*)accessoryView withCall:(LinphoneCall*) call;
//+ (void)updateCellImageView:(UIImageView*)imageView Label:(UILabel*)label DetailLabel:(UILabel*)detailLabel AndAccessoryView:(UIView*)accessoryView withCall:(LinphoneCall*) call;
@property (nonatomic, retain) IBOutlet UIViewController* conferenceDetail;
@property (nonatomic, retain) IBOutlet UITableView* callTableView;

View file

@ -175,16 +175,22 @@ void addAnimationFadeTransition(UIView* view, float duration) {
}
#endif
- (void)enableVideoDisplay {
- (void)enableVideoDisplay:(BOOL)animation {
[self orientationChanged:nil];
[videoZoomHandler resetZoom];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
if(animation) {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
}
[videoGroup setAlpha:1.0];
[callTableView setAlpha:0.0];
[UIView commitAnimations];
if(animation) {
[UIView commitAnimations];
}
videoView.alpha = 1.0;
videoView.hidden = FALSE;
@ -195,30 +201,36 @@ void addAnimationFadeTransition(UIView* view, float duration) {
[[LinphoneManager instance] fullScreen: true];
[[LinphoneManager instance] showTabBar: false];
// This is a bit hacky: take into account toolbar removal (only once).
// It's probably possible to do this from the Xib file (?)
static bool done = false;
if (!done) {
ms_message("old center: %f %f", videoView.center.x, videoView.center.y);
videoView.center = CGPointMake(videoView.center.x, videoView.center.y + (self.view.frame.size.height - videoView.window.frame.size.height));
ms_message("new center: %f %f", videoView.center.x, videoView.center.y);
done = true;
}
#ifdef TEST_VIDEO_VIEW_CHANGE
[NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(_debugChangeVideoView) userInfo:nil repeats:YES];
#endif
// [self batteryLevelChanged:nil];
[self updateUIFromLinphoneState: YES];
videoWaitingForFirstImage.hidden = NO;
[videoWaitingForFirstImage startAnimating];
// TODO
LinphoneCall *call = linphone_core_get_current_call([LinphoneManager getLc]);
if (call != NULL && call->videostream) {
linphone_call_set_next_video_frame_decoded_callback(call, hideSpinner, self);
}
}
- (void)disableVideoDisplay {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
- (void)disableVideoDisplay:(BOOL)animation {
if(animation) {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
}
[videoGroup setAlpha:0.0];
[[LinphoneManager instance] showTabBar: true];
[callTableView setAlpha:1.0];
[videoCameraSwitch setAlpha:0.0];
[UIView commitAnimations];
if(animation) {
[UIView commitAnimations];
}
if (hideControlsTimer != nil) {
[hideControlsTimer invalidate];
@ -306,7 +318,8 @@ void addAnimationFadeTransition(UIView* view, float duration) {
UITapGestureRecognizer* singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showControls:)];
[singleFingerTap setNumberOfTapsRequired:1];
[videoGroup addGestureRecognizer:singleFingerTap];
[singleFingerTap setCancelsTouchesInView: FALSE];
[[[UIApplication sharedApplication].delegate window] addGestureRecognizer:singleFingerTap];
[singleFingerTap release];
videoZoomHandler = [[VideoZoomHandler alloc] init];
@ -408,40 +421,34 @@ void addAnimationFadeTransition(UIView* view, float duration) {
- (void)viewDidAppear:(BOOL)animated {
[[UIApplication sharedApplication] setIdleTimerDisabled:YES];
[super viewDidAppear:animated];
if (dismissed) {
[self dismissModalViewControllerAnimated:true];
[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;
mIncallViewIsReady=TRUE;
if (mVideoIsPending) {
mVideoIsPending=FALSE;
[self enableVideoDisplay: FALSE];
} else {
[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;
mIncallViewIsReady=TRUE;
if (mVideoIsPending) {
mVideoIsPending=FALSE;
[self displayVideoCall:nil FromUI:self
forUser:nil
withDisplayName:nil];
}
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];
}
[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];
}
}
- (void)viewWillDisappear:(BOOL)animated {
@ -451,15 +458,20 @@ void addAnimationFadeTransition(UIView* view, float duration) {
}
- (void)viewDidDisappear:(BOOL)animated {
if (hideControlsTimer != nil) {
[hideControlsTimer invalidate];
hideControlsTimer = nil;
}
if (durationRefreasher != nil) {
[durationRefreasher invalidate];
durationRefreasher=nil;
}
if (glowingTimer != nil) {
[glowingTimer invalidate];
glowingTimer = nil;
}
if (!mVideoShown) [[UIApplication sharedApplication] setIdleTimerDisabled:false];
mIncallViewIsReady=FALSE;
dismissed = false;
}
- (void)viewDidUnload {
@ -478,7 +490,6 @@ void addAnimationFadeTransition(UIView* view, float duration) {
- (void)displayCall:(LinphoneCall*) call InProgressFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName {
//restore view
[self displayPad:false];
dismissed = false;
UIDevice *device = [UIDevice currentDevice];
device.proximityMonitoringEnabled = YES;
//if ([speaker isOn])
@ -487,7 +498,6 @@ void addAnimationFadeTransition(UIView* view, float duration) {
}
- (void)displayInCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName {
dismissed = false;
UIDevice *device = [UIDevice currentDevice];
device.proximityMonitoringEnabled = YES;
if (call !=nil && linphone_call_get_dir(call)==LinphoneCallIncoming) {
@ -495,15 +505,14 @@ void addAnimationFadeTransition(UIView* view, float duration) {
}
[self updateUIFromLinphoneState: YES];
[self disableVideoDisplay];
[self disableVideoDisplay: TRUE];
}
- (void)displayDialerFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName {
[self disableVideoDisplay];
[self disableVideoDisplay: TRUE];
UIViewController* modalVC = self.modalViewController;
UIDevice *device = [UIDevice currentDevice];
device.proximityMonitoringEnabled = NO;
dismissed = true;
if (modalVC != nil) {
mVideoIsPending=FALSE;
// clear previous native window ids
@ -513,10 +522,10 @@ void addAnimationFadeTransition(UIView* view, float duration) {
linphone_core_set_native_preview_window_id([LinphoneManager getLc],0);
}*/
[[LinphoneManager instance] fullScreen:false];
[self dismissModalViewControllerAnimated:FALSE];//just in case
//[self dismissModalViewControllerAnimated:FALSE];//just in case
}
[self dismissModalViewControllerAnimated:FALSE]; //disable animation to avoid blanc bar just below status bar*/
//[self dismissModalViewControllerAnimated:FALSE]; //disable animation to avoid blanc bar just below status bar*/
[self updateUIFromLinphoneState: YES];
}
@ -525,12 +534,11 @@ static void hideSpinner(LinphoneCall* lc, void* user_data);
- (void)hideSpinnerIndicator: (LinphoneCall*)call {
if (!videoWaitingForFirstImage.hidden) {
videoWaitingForFirstImage.hidden = TRUE;
} /*else {
} else {
linphone_call_set_next_video_frame_decoded_callback(call, hideSpinner, self);
}*/
}
}
- (void)callUpdate: (NSNotification*) notif {
LinphoneCallWrapper *callWrapper = [notif.userInfo objectForKey: @"call"];
LinphoneCall *call = callWrapper->call;
@ -541,7 +549,7 @@ static void hideSpinner(LinphoneCall* lc, void* user_data);
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);
//bool canHideInCallView = (linphone_core_get_calls([LinphoneManager getLc]) == NULL);
switch (state) {
/*case LinphoneCallIncomingReceived:
@ -584,7 +592,7 @@ static void hideSpinner(LinphoneCall* lc, void* user_data);
{
const LinphoneCallParams* current = linphone_call_get_current_params(call);
if (linphone_call_params_video_enabled(current)) {
[self displayVideoCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName];
[self enableVideoDisplay:TRUE];
} else {
[self displayInCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName];
}
@ -594,15 +602,13 @@ static void hideSpinner(LinphoneCall* lc, void* user_data);
case LinphoneCallPausing:
case LinphoneCallPaused:
{
[self disableVideoDisplay];
[self disableVideoDisplay: TRUE];
break;
}
case LinphoneCallStreamsRunning:
//check video
if (linphone_call_params_video_enabled(linphone_call_get_current_params(call))) {
[self displayVideoCall:call FromUI:nil
forUser:lUserName
withDisplayName:lDisplayName];
[self enableVideoDisplay:TRUE];
} else {
[self displayInCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName];
}
@ -618,19 +624,6 @@ static void hideSpinner(LinphoneCall* call, void* user_data) {
[thiz hideSpinnerIndicator:call];
}
- (void)displayVideoCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName {
[self enableVideoDisplay];
[self updateUIFromLinphoneState: YES];
videoWaitingForFirstImage.hidden = NO;
[videoWaitingForFirstImage startAnimating];
if (call->videostream) {
linphone_call_set_next_video_frame_decoded_callback(call, hideSpinner, self);
}
}
- (void)dismissActionSheet: (id)o {
if (visibleActionSheet != nil) {
[visibleActionSheet dismissWithClickedButtonIndex:visibleActionSheet.cancelButtonIndex animated:TRUE];
@ -672,8 +665,19 @@ static void hideSpinner(LinphoneCall* call, void* user_data) {
}
- (void)dealloc {
[super dealloc];
[videoGroup release];
[callTableView release];
[videoView release];
[videoPreview release];
#ifdef TEST_VIDEO_VIEW_CHANGE
[testVideoView release];
#endif
[videoCameraSwitch release];
[videoWaitingForFirstImage release];
[[NSNotificationCenter defaultCenter] removeObserver:self];
[super dealloc];
}
+ (LinphoneCall*)retrieveCallAtIndex: (NSInteger) index inConference:(bool) conf{
@ -732,6 +736,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) {
[self updateActive:(cell == activeCallCell) cell:cell];
}
/*
+ (void)updateCellImageView:(UIImageView*)imageView Label:(UILabel*)label DetailLabel:(UILabel*)detailLabel AndAccessoryView:(UIView*)accessoryView withCall:(LinphoneCall*) call {
if (call == NULL) {
ms_warning("UpdateCell called with null call");
@ -746,7 +751,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) {
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 */
// contact name
const char* n = linphone_address_get_display_name(addr);
if (n)
[mss appendFormat:@"%s", n, nil];
@ -815,8 +820,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) {
[detailLabel setText:ms];
[ms release];
}
}
}*/
- (void)updateConferenceCell:(UITableViewCell*) cell at:(NSIndexPath*)indexPath {
LinphoneCore* lc = [LinphoneManager getLc];
@ -847,7 +851,6 @@ static void hideSpinner(LinphoneCall* call, void* user_data) {
}
// UITableViewDataSource (required)
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UICallCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UICallCell"];
if (cell == nil) {
@ -861,18 +864,25 @@ static void hideSpinner(LinphoneCall* call, void* user_data) {
}
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];
[self updateConferenceCell:cell at:indexPath];
if (linphone_core_is_in_conference(lc))
activeCallCell = cell;
cell.accessoryView = nil;
if (linphone_core_is_in_conference(lc))
cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
else
cell.accessoryType = UITableViewCellAccessoryNone;*/
cell.accessoryType = UITableViewCellAccessoryNone;
} else {
/*LinphoneCall* call = [InCallViewController retrieveCallAtIndex:indexPath.row inConference:NO];
LinphoneCall* call = [InCallViewController retrieveCallAtIndex:indexPath.row inConference:NO];
if (call == nil)
return cell; // return dummy cell
@ -887,12 +897,12 @@ static void hideSpinner(LinphoneCall* call, void* user_data) {
}
[InCallViewController updateCellImageView:cell.imageView Label:cell.textLabel DetailLabel:cell.detailTextLabel AndAccessoryView:(UIView*)cell.accessoryView withCall:call];
if (linphone_core_get_current_call(lc) == call)
activeCallCell = cell;*/
activeCallCell = cell;
//cell.accessoryType = UITableViewCellAccessoryNone;
// Call Quality Indicator
//TODO
/*UIImageView* callquality = [UIImageView new];
UIImageView* callquality = [UIImageView new];
[callquality setFrame:CGRectMake(0, 0, 28, 28)];
if (call->state == LinphoneCallStreamsRunning)
{
@ -900,9 +910,9 @@ static void hideSpinner(LinphoneCall* call, void* user_data) {
}
else {
[callquality setImage:nil];
}*/
}
/*LinphoneMediaEncryption enc = linphone_call_params_get_media_encryption(linphone_call_get_current_params(call));
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];
@ -922,12 +932,12 @@ static void hideSpinner(LinphoneCall* call, void* user_data) {
if (((UIButton*)accessoryBtn).imageView.image != nil && linphone_call_params_get_media_encryption(linphone_call_get_current_params(call)) == LinphoneMediaEncryptionZRTP) {
[((UIButton*)accessoryBtn) addTarget:self action:@selector(secureIconPressed:withEvent:) forControlEvents:UIControlEventTouchUpInside];
}
} */
}
//[cell.accessoryView addSubview:callquality];
//[callquality release];
}
*/
/*cell.userInteractionEnabled = YES;
cell.selectionStyle = UITableViewCellSelectionStyleNone;*/
return cell;

View file

@ -12,10 +12,10 @@
</object>
<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>IBUIButton</string>
<string>IBUITableView</string>
<string>IBUIActivityIndicatorView</string>
<string>IBUIView</string>
<string>IBUITableView</string>
<string>IBUIButton</string>
<string>IBProxyObject</string>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
@ -49,7 +49,7 @@
<object class="IBUIView" id="1017044170">
<reference key="NSNextResponder" ref="1009068048"/>
<int key="NSvFlags">292</int>
<string key="NSFrameSize">{320, 480}</string>
<string key="NSFrameSize">{320, 460}</string>
<reference key="NSSuperview" ref="1009068048"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="69034748"/>
@ -66,7 +66,7 @@
<string key="NSFrame">{{240, 354}, {80, 106}}</string>
<reference key="NSSuperview" ref="1009068048"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="585808525"/>
<reference key="NSNextKeyView" ref="662692377"/>
<reference key="IBUIBackgroundColor" ref="95762599"/>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
@ -91,69 +91,26 @@
<reference key="NSNextKeyView" ref="1017044170"/>
<string key="NSReuseIdentifierKey">_NS:196</string>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">2</int>
<bytes key="NSRGB">MC4wNTQ5MDE5NjA3OCAwLjA4MjM1Mjk0MTE4IDAuMTI5NDExNzY0NwA</bytes>
</object>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIButton" id="585808525">
<reference key="NSNextResponder" ref="858247959"/>
<int key="NSvFlags">292</int>
<string key="NSFrameSize">{320, 66}</string>
<reference key="NSSuperview" ref="858247959"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="662692377"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MSAwIDAuMDgyMzIwMjU5MDQgMC4xOAA</bytes>
</object>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
<float key="IBUIAlpha">0.0</float>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<string key="IBUINormalTitle">Change camera</string>
<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">MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA</bytes>
</object>
<object class="NSColor" key="IBUINormalTitleShadowColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC41AA</bytes>
</object>
<object class="NSCustomResource" key="IBUINormalBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">clavier-01-106px.png</string>
</object>
<object class="IBUIFontDescription" key="IBUIFontDescription">
<string key="name">Helvetica-Bold</string>
<string key="family">Helvetica</string>
<int key="traits">2</int>
<double key="pointSize">15</double>
</object>
<object class="NSFont" key="IBUIFont">
<string key="NSName">Helvetica-Bold</string>
<double key="NSSize">15</double>
<int key="NSfFlags">16</int>
<bytes key="NSWhite">MAA</bytes>
</object>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUITableView" id="662692377">
<reference key="NSNextResponder" ref="858247959"/>
<int key="NSvFlags">274</int>
<string key="NSFrameSize">{320, 251}</string>
<string key="NSFrameSize">{320, 460}</string>
<reference key="NSSuperview" ref="858247959"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<reference key="NSNextKeyView" ref="972197710"/>
<string key="NSReuseIdentifierKey">_NS:418</string>
<reference key="IBUIBackgroundColor" ref="95762599"/>
<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.left">0.0</double>
<double key="IBUIContentInset.right">0.0</double>
<bool key="IBUIAlwaysBounceVertical">YES</bool>
<bool key="IBUIShowsHorizontalScrollIndicator">NO</bool>
<int key="IBUISectionIndexMinimumDisplayRowCount">0</int>
@ -162,6 +119,41 @@
<float key="IBUISectionHeaderHeight">22</float>
<float key="IBUISectionFooterHeight">22</float>
</object>
<object class="IBUIButton" id="972197710">
<reference key="NSNextResponder" ref="858247959"/>
<int key="NSvFlags">-2147483356</int>
<string key="NSFrameSize">{84, 61}</string>
<reference key="NSSuperview" ref="858247959"/>
<reference key="NSWindow"/>
<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>
<object class="NSColor" key="IBUINormalTitleShadowColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC41AA</bytes>
</object>
<object class="NSCustomResource" key="IBUIHighlightedBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">switch_camera_over.png</string>
</object>
<object class="NSCustomResource" key="IBUINormalBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">switch_camera_default.png</string>
</object>
<object class="IBUIFontDescription" key="IBUIFontDescription">
<int key="type">2</int>
<double key="pointSize">15</double>
</object>
<object class="NSFont" key="IBUIFont">
<string key="NSName">Helvetica-Bold</string>
<double key="NSSize">15</double>
<int key="NSfFlags">16</int>
</object>
</object>
</object>
<string key="NSFrameSize">{320, 460}</string>
<reference key="NSSuperview"/>
@ -178,14 +170,6 @@
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">videoCameraSwitch</string>
<reference key="source" ref="841351856"/>
<reference key="destination" ref="585808525"/>
</object>
<int key="connectionID">141</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">view</string>
@ -234,6 +218,14 @@
</object>
<int key="connectionID">109</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">videoCameraSwitch</string>
<reference key="source" ref="841351856"/>
<reference key="destination" ref="972197710"/>
</object>
<int key="connectionID">161</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">dataSource</string>
@ -278,18 +270,12 @@
<reference key="object" ref="858247959"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="585808525"/>
<reference ref="1009068048"/>
<reference ref="662692377"/>
<reference ref="972197710"/>
</object>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">140</int>
<reference key="object" ref="585808525"/>
<reference key="parent" ref="858247959"/>
<string key="objectName">camSwitch</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">126</int>
<reference key="object" ref="1009068048"/>
@ -329,6 +315,12 @@
<reference key="parent" ref="858247959"/>
<string key="objectName">tableView</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">160</int>
<reference key="object" ref="972197710"/>
<reference key="parent" ref="858247959"/>
<string key="objectName">camSwitch</string>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
@ -343,9 +335,10 @@
<string>126.IBPluginDependency</string>
<string>127.IBPluginDependency</string>
<string>132.IBPluginDependency</string>
<string>140.CustomClassName</string>
<string>140.IBPluginDependency</string>
<string>144.IBPluginDependency</string>
<string>160.CustomClassName</string>
<string>160.IBPluginDependency</string>
<string>160.IBUIButtonInspectorSelectedStateConfigurationMetadataKey</string>
<string>9.IBPluginDependency</string>
</object>
<object class="NSArray" key="dict.values">
@ -358,9 +351,10 @@
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>UICamSwitch</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="1"/>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
</object>
@ -376,7 +370,7 @@
<reference key="dict.values" ref="0"/>
</object>
<nil key="sourceID"/>
<int key="maxID">159</int>
<int key="maxID">161</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@ -508,8 +502,17 @@
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<string key="NS.key.0">clavier-01-106px.png</string>
<string key="NS.object.0">{106, 60}</string>
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>switch_camera_default.png</string>
<string>switch_camera_over.png</string>
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>{167, 122}</string>
<string>{167, 122}</string>
</object>
</object>
<string key="IBCocoaTouchPluginVersion">1181</string>
</data>

View file

@ -72,8 +72,7 @@ typedef struct _LinphoneCallAppData {
NSTimer* mIterateTimer;
id<LogView> mLogView;
bool isbackgroundModeEnabled;
UIViewController* mCurrentViewController;
Connectivity connectivity;
FastAddressBook* mFastAddressBook;
const char* frontCamId;

View file

@ -63,11 +63,13 @@ extern void libmsbcg729_init();
@implementation LinphoneManager
PhoneView currentView = -1;
@synthesize connectivity;
@synthesize frontCamId;
@synthesize backCamId;
-(id) init {
- (id)init {
assert (!theLinphoneManager);
if ((self= [super init])) {
mFastAddressBook = [[FastAddressBook alloc] init];
@ -76,7 +78,7 @@ extern void libmsbcg729_init();
return self;
}
+(LinphoneManager*) instance {
+ (LinphoneManager*)instance {
return theLinphoneManager;
}
@ -86,10 +88,6 @@ extern void libmsbcg729_init();
}
- (void)fullScreen:(BOOL) enabled {
if(enabled)
[[UIApplication sharedApplication] setStatusBarHidden:enabled withAnimation:UIStatusBarAnimationSlide];
else
[[UIApplication sharedApplication] setStatusBarHidden:enabled withAnimation:UIStatusBarAnimationNone];
NSMutableDictionary* mdict = [NSMutableDictionary dictionaryWithObject: [NSNumber numberWithBool:enabled] forKey:@"fullscreen"];
[[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:mdict];
}
@ -203,11 +201,10 @@ extern void libmsbcg729_init();
}
// Post event
NSDictionary* dict = [[NSDictionary alloc] initWithObjectsAndKeys:
NSDictionary* dict = [[[NSDictionary alloc] initWithObjectsAndKeys:
[[[LinphoneCallWrapper alloc] initWithCall: call] autorelease], @"call",
[NSNumber numberWithInt:new_state], @"state",
[[NSString stringWithFormat:@"%c", message] autorelease], @"message",
nil];
[NSString stringWithUTF8String:message], @"message", nil] autorelease];
[[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneCallUpdate" object:self userInfo:dict];
}
@ -228,9 +225,9 @@ extern void libmsbcg729_init();
- (void)displayStatus:(NSString*) message {
// Post event
NSDictionary* dict = [[NSDictionary alloc] initWithObjectsAndKeys:
NSDictionary* dict = [[[NSDictionary alloc] initWithObjectsAndKeys:
message, @"message",
nil];
nil] autorelease];
[[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneDisplayStatus" object:self userInfo:dict];
}
@ -289,10 +286,10 @@ static void linphone_iphone_transfer_state_changed(LinphoneCore* lc, LinphoneCal
ms_warning("NEW REGISTRATION STATE: '%s' (message: '%s')", linphone_registration_state_to_string(state), message);
// Post event
NSDictionary* dict = [[NSDictionary alloc] initWithObjectsAndKeys:
NSDictionary* dict = [[[NSDictionary alloc] initWithObjectsAndKeys:
[NSNumber numberWithInt:state], @"state",
[[NSString stringWithFormat:@"%c", message] autorelease], @"message",
nil];
[NSString stringWithFormat:@"%c", message], @"message",
nil] autorelease];
[[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneRegistrationUpdate" object:self userInfo:dict];
// Show error
@ -344,7 +341,7 @@ static LinphoneCoreVTable linphonec_vtable = {
};
-(void) configurePayloadType:(const char*) type fromPrefKey: (NSString*)key withRate:(int)rate {
- (void)configurePayloadType:(const char*) type fromPrefKey: (NSString*)key withRate:(int)rate {
if ([[NSUserDefaults standardUserDefaults] boolForKey:key]) {
PayloadType* pt;
if((pt = linphone_core_find_payload_type(theLinphoneCore,type,rate))) {
@ -352,11 +349,13 @@ static LinphoneCoreVTable linphonec_vtable = {
}
}
}
-(void) kickOffNetworkConnection {
- (void)kickOffNetworkConnection {
/*start a new thread to avoid blocking the main ui in case of peer host failure*/
[NSThread detachNewThreadSelector:@selector(runNetworkConnection) toTarget:self withObject:nil];
}
-(void) runNetworkConnection {
- (void)runNetworkConnection {
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"192.168.0.200"/*"linphone.org"*/, 15000, nil, &writeStream);
CFWriteStreamOpen (writeStream);
@ -437,7 +436,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
}
}
-(BOOL) reconfigureLinphoneIfNeeded:(NSDictionary *)settings {
- (BOOL)reconfigureLinphoneIfNeeded:(NSDictionary *)settings {
if (theLinphoneCore==nil) {
ms_warning("cannot configure linphone because not initialized yet");
return NO;
@ -708,7 +707,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
[[NSUserDefaults standardUserDefaults] setBool:true forKey:@"check_config_disable_preference"];
}
}
-(void) destroyLibLinphone {
- (void)destroyLibLinphone {
[mIterateTimer invalidate];
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setDelegate:nil];
@ -726,7 +725,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
}
//**********************BG mode management*************************///////////
-(BOOL) enterBackgroundMode {
- (BOOL)enterBackgroundMode {
LinphoneProxyConfig* proxyCfg;
linphone_core_get_default_proxy(theLinphoneCore, &proxyCfg);
linphone_core_stop_dtmf_stream(theLinphoneCore);
@ -777,11 +776,11 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
//scheduling loop
-(void) iterate {
- (void)iterate {
linphone_core_iterate(theLinphoneCore);
}
-(void) setupNetworkReachabilityCallback {
- (void)setupNetworkReachabilityCallback {
SCNetworkReachabilityContext *ctx=NULL;
const char *nodeName="linphone.org";
@ -816,7 +815,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
/*************
*lib linphone init method
*/
-(void)startLibLinphone {
- (void)startLibLinphone {
//get default config from bundle
NSBundle* myBundle = [NSBundle mainBundle];
@ -928,7 +927,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
}
-(void) refreshRegisters{
- (void)refreshRegisters{
/*first check if network is available*/
if (proxyReachability){
SCNetworkReachabilityFlags flags=0;
@ -947,7 +946,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
linphone_core_refresh_registers(theLinphoneCore);//just to make sure REGISTRATION is up to date
}
-(void) becomeActive {
- (void)becomeActive {
if (theLinphoneCore == nil) {
//back from standby and background mode is disabled
[self startLibLinphone];
@ -961,11 +960,11 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
linphone_core_start_dtmf_stream(theLinphoneCore);
}
-(void) registerLogView:(id<LogView>) view {
- (void)registerLogView:(id<LogView>) view {
mLogView = view;
}
-(void) beginInterruption {
- (void)beginInterruption {
LinphoneCall* c = linphone_core_get_current_call(theLinphoneCore);
ms_message("Sound interruption detected!");
if (c) {
@ -973,32 +972,32 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
}
}
-(void) endInterruption {
- (void)endInterruption {
ms_message("Sound interruption ended!");
//let the user resume the call manually.
}
+(BOOL) runningOnIpad {
+ (BOOL)runningOnIpad {
#ifdef UI_USER_INTERFACE_IDIOM
return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad);
#endif
return NO;
}
+(void) set:(UIButton*)view enabled: (BOOL) enabled withName:(const char*)name andReason:(const char*) reason{
+ (void)set:(UIButton*)view enabled: (BOOL) enabled withName:(const char*)name andReason:(const char*) reason{
if (view.enabled != enabled) {
ms_message("UI - '%s' is now '%s' ('%s')", name, enabled ? "ENABLED" : "DISABLED", reason);
[view setEnabled:enabled];
}
}
+(void) set:(UIView*)view hidden: (BOOL) hidden withName:(const char*)name andReason:(const char*) reason{
+ (void)set:(UIView*)view hidden: (BOOL) hidden withName:(const char*)name andReason:(const char*) reason{
if (view.hidden != hidden) {
ms_message("UI - '%s' is now '%s' ('%s')", name, hidden ? "HIDDEN" : "SHOWN", reason);
[view setHidden:hidden];
}
}
+(void) logUIElementPressed:(const char*) name {
+ (void)logUIElementPressed:(const char*) name {
ms_message("UI - '%s' pressed", name);
}
@ -1024,4 +1023,5 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
}
}
}
@end

View file

@ -0,0 +1,24 @@
/* UIAddressTextField.h
*
* Copyright (C) 2012 Belledonne Comunications, Grenoble, France
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Library General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#import <UIKit/UIKit.h>
@interface UIAddressTextField : UITextField
@end

View file

@ -0,0 +1,29 @@
/* UIAddressTextField.h
*
* Copyright (C) 2012 Belledonne Comunications, Grenoble, France
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Library General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#import "UIAddressTextField.h"
@implementation UIAddressTextField
- (void) setText:(NSString *)text {
[super setText:text];
[self sendActionsForControlEvents:UIControlEventEditingChanged];
}
@end

View file

@ -19,11 +19,13 @@
#import <UIKit/UIKit.h>
#include "linphonecore.h"
@interface UICallCell : UITableViewCell {
UIView *firstBackground;
UIView *otherBackground;
UILabel *numberLabel;
UILabel *addressLabel;
UILabel *timeLabel;
UIImageView *stateView;
}
@ -31,11 +33,12 @@
@property (nonatomic, retain) IBOutlet UIView* firstBackground;
@property (nonatomic, retain) IBOutlet UIView* otherBackground;
@property (nonatomic, retain) IBOutlet UILabel* numberLabel;
@property (nonatomic, retain) IBOutlet UILabel* addressLabel;
@property (nonatomic, retain) IBOutlet UILabel* timeLabel;
@property (nonatomic, retain) IBOutlet UIImageView* stateView;
- (void)firstCell;
- (void)otherCell;
- (void)updateCell:(LinphoneCall *)call;
@end

View file

@ -24,7 +24,7 @@
@synthesize firstBackground;
@synthesize otherBackground;
@synthesize stateView;
@synthesize numberLabel;
@synthesize addressLabel;
@synthesize timeLabel;
- (id)init {
@ -50,4 +50,37 @@
[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];
}
@end

File diff suppressed because it is too large Load diff

View file

@ -18,6 +18,7 @@
*/
#import <UIKit/UIKit.h>
#import <AddressBook/AddressBook.h>
@interface UIContactCell : UITableViewCell {
UILabel *firstName;
@ -27,5 +28,5 @@
@property (nonatomic, retain) IBOutlet UILabel* firstName;
@property (nonatomic, retain) IBOutlet UILabel* lastName;
- (void) update;
- (void)update:(ABRecordRef) record;
@end

View file

@ -45,7 +45,31 @@
[self setHighlighted:false animated:true];
}
- (void) update {
- (void) update:(ABRecordRef) record {
CFStringRef lFirstName = ABRecordCopyValue(record, kABPersonFirstNameProperty);
CFStringRef lLocalizedFirstName = (lFirstName != nil)?ABAddressBookCopyLocalizedLabel(lFirstName):nil;
CFStringRef lLastName = ABRecordCopyValue(record, kABPersonLastNameProperty);
CFStringRef lLocalizedLastName = (lFirstName != nil)?ABAddressBookCopyLocalizedLabel(lLastName):nil;
if(lLocalizedFirstName != nil)
[firstName setText: [(NSString *)lLocalizedFirstName retain]];
else
[firstName setText: @""];
if(lLocalizedLastName != nil)
[lastName setText: [(NSString *)lLocalizedLastName retain]];
else
[lastName setText: @""];
if(lLocalizedLastName != nil)
CFRelease(lLocalizedLastName);
if(lLastName != nil)
CFRelease(lLastName);
if(lLocalizedFirstName != nil)
CFRelease(lLocalizedFirstName);
if(lFirstName != nil)
CFRelease(lFirstName);
CGRect firstNameFrame = [firstName frame];
CGRect lastNameFrame = [lastName frame];

View file

@ -16,21 +16,24 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#import <UIKit/UIKit.h>
#include "linphonecore.h"
@interface UIDigitButton : UIButton {
#import <UIKit/UIKit.h>
#import "UILongTouchButton.h"
@interface UIDigitButton : UILongTouchButton<UILongTouchButtonDelegate> {
@private
char mDigit;
UITextField* mAddress;
bool_t sendDtmfDuringCall;
bool sendDtmfDuringCall;
}
-(void) initWithNumber:(char)digit ;
-(void) initWithNumber:(char)digit addressField:(UITextField*) address dtmf:(bool_t)send;
-(void) initWithNumber:(char)digit addressField:(UITextField*) address dtmf:(bool)send;
@property bool_t sendDtmfDuringCall;
@property bool sendDtmfDuringCall;
@end

View file

@ -25,58 +25,43 @@
@synthesize sendDtmfDuringCall;
-(void) touchDown:(id) sender {
- (void)touchDown:(id) sender {
if (mAddress && (!sendDtmfDuringCall || !linphone_core_in_call([LinphoneManager getLc]))) {
NSString* newAddress = [NSString stringWithFormat:@"%@%c",mAddress.text,mDigit];
[mAddress setText:newAddress];
linphone_core_play_dtmf([LinphoneManager getLc], mDigit, -1);
if (mDigit == '0') {
//start timer for +
[self performSelector:@selector(doKeyZeroLongPress) withObject:nil afterDelay:0.5];
}
} else {
linphone_core_send_dtmf([LinphoneManager getLc],mDigit);
linphone_core_send_dtmf([LinphoneManager getLc], mDigit);
linphone_core_play_dtmf([LinphoneManager getLc], mDigit, 100);
}
}
-(void) touchUp:(id) sender {
- (void)touchUp:(id) sender {
linphone_core_stop_dtmf([LinphoneManager getLc]);
if (mDigit == '0') {
//cancel timer for +
[NSObject cancelPreviousPerformRequestsWithTarget:self
selector:@selector(doKeyZeroLongPress)
object:nil];
}
}
-(void)doKeyZeroLongPress {
NSString* newAddress = [[mAddress.text substringToIndex: [mAddress.text length]-1] stringByAppendingString:@"+"];
[mAddress setText:newAddress];
- (void)onRepeatTouch {
}
-(void) initWithNumber:(char)digit {
- (void)onLongTouch {
if (mDigit == '0') {
NSString* newAddress = [[mAddress.text substringToIndex: [mAddress.text length]-1] stringByAppendingString:@"+"];
[mAddress setText:newAddress];
[mAddress sendActionsForControlEvents:UIControlEventEditingChanged];
}
}
- (void)initWithNumber:(char)digit {
[self initWithNumber:digit addressField:nil dtmf:true];
}
-(void) initWithNumber:(char)digit addressField:(UITextField*) address dtmf:(bool_t)sendDtmf{
- (void)initWithNumber:(char)digit addressField:(UITextField*) address dtmf:(bool)sendDtmf{
sendDtmfDuringCall = sendDtmf;
mDigit=digit ;
mDigit=digit;
mAddress=address?[address retain]:nil;
[self addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown];
[self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside|UIControlEventTouchUpOutside];
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
// Drawing code.
}
*/
- (void)dealloc {
[super dealloc];

View file

@ -21,6 +21,7 @@
@implementation UIEraseButton
-(void) touchDown:(id) sender {
if ([mAddress.text length] > 0) {
[mAddress setText:[mAddress.text substringToIndex:[mAddress.text length]-1]];

View file

@ -19,6 +19,8 @@
#import <UIKit/UIKit.h>
#include "linphonecore.h"
@interface UIHistoryCell : UITableViewCell {
UIImageView* imageView;
UILabel* displayName;
@ -28,5 +30,6 @@
@property (nonatomic, retain) IBOutlet UILabel* displayName;
-(IBAction) onDetails: (id) event;
- (void)update:(LinphoneCallLog*) callLogs;
@end

View file

@ -37,10 +37,39 @@
return self;
}
-(IBAction) onDetails: (id) event {
- (IBAction)onDetails: (id) event {
}
- (void)update:(LinphoneCallLog*) callLogs {
// Set up the cell...
LinphoneAddress* partyToDisplay;
NSString *path;
if (callLogs->dir == LinphoneCallIncoming) {
if (callLogs->status == LinphoneCallSuccess) {
path = [[NSBundle mainBundle] pathForResource:callLogs->video_enabled?@"appel-entrant":@"appel-entrant" ofType:@"png"];
} else {
//missed call
path = [[NSBundle mainBundle] pathForResource:@"appel-manque" ofType:@"png"];
}
partyToDisplay=callLogs->from;
} else {
path = [[NSBundle mainBundle] pathForResource:callLogs->video_enabled?@"appel-sortant":@"appel-sortant" ofType:@"png"];
partyToDisplay=callLogs->to;
}
UIImage *image = [UIImage imageWithContentsOfFile:path];
const char* username = linphone_address_get_username(partyToDisplay)!=0?linphone_address_get_username(partyToDisplay):"";
//TODO
//const char* displayName = linphone_address_get_display_name(partyToDisplay);
[displayName setText:[NSString stringWithFormat:@"%s", username]];
[imageView setImage: image];
}
- (void) dealloc {
[displayName release];
[imageView release];

View file

@ -87,7 +87,7 @@
<object class="IBUIButton" id="364135044">
<reference key="NSNextResponder" ref="702431052"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{289, 11}, {22, 22}}</string>
<string key="NSFrame">{{276, 0}, {44, 44}}</string>
<reference key="NSSuperview" ref="702431052"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
@ -97,6 +97,10 @@
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<bool key="IBUIAdjustsImageWhenHighlighted">NO</bool>
<double key="IBUIImageEdgeInsets.top">11</double>
<double key="IBUIImageEdgeInsets.bottom">11</double>
<double key="IBUIImageEdgeInsets.left">11</double>
<double key="IBUIImageEdgeInsets.right">11</double>
<object class="NSColor" key="IBUIHighlightedTitleColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
@ -109,11 +113,11 @@
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC41AA</bytes>
</object>
<object class="NSCustomResource" key="IBUIHighlightedBackgroundImage">
<object class="NSCustomResource" key="IBUIHighlightedImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">bouton-detail-contact-over.png</string>
</object>
<object class="NSCustomResource" key="IBUINormalBackgroundImage">
<object class="NSCustomResource" key="IBUINormalImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">bouton-detail-contact-actif.png</string>
</object>
@ -131,7 +135,7 @@
<string key="NSFrameSize">{320, 44}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<reference key="NSNextKeyView" ref="811339934"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
@ -185,9 +189,9 @@
<int key="objectID">12</int>
<reference key="object" ref="702431052"/>
<array class="NSMutableArray" key="children">
<reference ref="364135044"/>
<reference ref="123093962"/>
<reference ref="811339934"/>
<reference ref="364135044"/>
</array>
<reference key="parent" ref="0"/>
</object>
@ -207,7 +211,7 @@
<int key="objectID">7</int>
<reference key="object" ref="364135044"/>
<reference key="parent" ref="702431052"/>
<string key="objectName">details</string>
<string key="objectName">detailsButton</string>
</object>
</array>
</object>
@ -220,13 +224,14 @@
<string key="5.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="6.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="7.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<real value="2" key="7.IBUIButtonInspectorSelectedEdgeInsetMetadataKey"/>
<real value="1" key="7.IBUIButtonInspectorSelectedStateConfigurationMetadataKey"/>
</dictionary>
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">12</int>
<int key="maxID">13</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">

View file

@ -18,10 +18,6 @@
*/
#import <UIKit/UIKit.h>
#include "linphoneAppDelegate.h"
@class ConsoleViewController;
@interface MoreViewController : UITableViewController {

View file

@ -29,6 +29,7 @@
bool tabBarEnabled;
bool statusEnabled;
bool fullscreen;
PhoneView viewId;
}
-(id) copy;
@end

View file

@ -17,6 +17,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#import <QuartzCore/QuartzCore.h>
#import "PhoneMainView.h"
#import "DialerViewController.h"
#import "HistoryViewController.h"
@ -25,13 +27,14 @@
@implementation ViewsDescription
-(id) copy {
- (id)copy {
ViewsDescription *copy = [ViewsDescription alloc];
copy->content = self->content;
copy->tabBar = self->tabBar;
copy->tabBarEnabled = self->tabBarEnabled;
copy->statusEnabled = self->statusEnabled;
copy->fullscreen = self->fullscreen;
copy->viewId = self->viewId;
return copy;
}
@end
@ -48,54 +51,105 @@
@synthesize mainTabBarController;
@synthesize incomingCallTabBarController;
+ (void)addSubView:(UIViewController*)controller view:(UIView*)view {
if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) {
[controller viewWillAppear:NO];
}
[view addSubview: controller.view];
if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) {
[controller viewDidAppear:NO];
}
}
+ (void)removeSubView:(UIViewController*)controller {
if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) {
[controller viewWillDisappear:NO];
}
[controller.view removeFromSuperview];
if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) {
[controller viewDidDisappear:NO];
}
}
- (void)changeView: (NSNotification*) notif {
NSNumber *viewId = [notif.userInfo objectForKey: @"view"];
NSNumber *tabBar = [notif.userInfo objectForKey: @"tabBar"];
NSNumber *fullscreen = [notif.userInfo objectForKey: @"fullscreen"];
// Copy view description
ViewsDescription *oldViewDescription = (currentViewDescription != nil)? [currentViewDescription copy]: nil;
// Check view change
if(viewId != nil) {
PhoneView view = [viewId intValue];
currentViewDescription = [[viewDescriptions objectForKey:[NSNumber numberWithInt: view]] copy];
ViewsDescription* description = [viewDescriptions objectForKey:[NSNumber numberWithInt: view]];
if(description == nil)
return;
description->viewId = view; // Auto-set viewId
if(currentViewDescription == nil || description->viewId != currentViewDescription->viewId) {
if(currentViewDescription != nil)
[currentViewDescription dealloc];
currentViewDescription = [description copy];
} else {
viewId = nil;
}
}
ViewsDescription *description = currentViewDescription;
if(description == nil) {
if(currentViewDescription == nil) {
return;
}
UIView *innerView = description->content.view;
// Change view
if(viewId != nil) {
for (UIView *view in contentView.subviews) {
[view removeFromSuperview];
}
for (UIView *view in tabBarView.subviews) {
[view removeFromSuperview];
}
[contentView addSubview: innerView];
[tabBarView addSubview: description->tabBar.view];
}
if(tabBar != nil) {
description->tabBarEnabled = [tabBar boolValue];
currentViewDescription->tabBarEnabled = [tabBar boolValue];
}
if(fullscreen != nil) {
description->fullscreen = [fullscreen boolValue];
currentViewDescription->fullscreen = [fullscreen boolValue];
[[UIApplication sharedApplication] setStatusBarHidden:currentViewDescription->fullscreen withAnimation:UIStatusBarAnimationSlide ];
} else {
[[UIApplication sharedApplication] setStatusBarHidden:currentViewDescription->fullscreen withAnimation:UIStatusBarAnimationNone];
}
// View Transitions
if(viewId != nil) {
if(oldViewDescription != nil) {
CATransition* trans = [CATransition animation];
[trans setType:kCATransitionPush];
[trans setDuration:0.35];
[trans setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[trans setSubtype:kCATransitionFromRight];
[contentView.layer addAnimation:trans forKey:@"Transition"];
if((oldViewDescription->statusEnabled == true && currentViewDescription->statusEnabled == false) ||
(oldViewDescription->statusEnabled == false && currentViewDescription->statusEnabled == true)) {
[stateBarView.layer addAnimation:trans forKey:@"Transition"];
}
if(oldViewDescription->tabBar != currentViewDescription->tabBar) {
[tabBarView.layer addAnimation:trans forKey:@"Transition"];
}
[PhoneMainView removeSubView: oldViewDescription->content];
[PhoneMainView removeSubView: oldViewDescription->tabBar];
}
}
// Start animation
if(tabBar != nil || fullscreen != nil) {
[UIView beginAnimations:@"resize" context:nil];
[UIView setAnimationDuration:0.35];
[UIView setAnimationBeginsFromCurrentState:TRUE];
}
UIView *innerView = currentViewDescription->content.view;
CGRect contentFrame = contentView.frame;
// Resize StateBar
CGRect stateBarFrame = stateBarView.frame;
if(description->fullscreen)
if(currentViewDescription->fullscreen)
stateBarFrame.origin.y = -20;
else
stateBarFrame.origin.y = 0;
if(description->statusEnabled) {
if(currentViewDescription->statusEnabled) {
stateBarView.hidden = false;
[stateBarView setFrame: stateBarFrame];
contentFrame.origin.y = stateBarFrame.size.height + stateBarFrame.origin.y;
@ -106,39 +160,57 @@
// Resize TabBar
CGRect tabFrame = tabBarView.frame;
if(description->tabBar != nil && description->tabBarEnabled) {
tabBarView.hidden = false;
tabFrame.origin.y += tabFrame.size.height;
tabFrame.origin.x += tabFrame.size.width;
tabFrame.size.height = description->tabBar.view.frame.size.height;
tabFrame.size.width = description->tabBar.view.frame.size.width;
if(currentViewDescription->tabBar != nil && currentViewDescription->tabBarEnabled) {
tabFrame.origin.y = [[UIScreen mainScreen] bounds].size.height - 20;
tabFrame.origin.x = [[UIScreen mainScreen] bounds].size.width;
tabFrame.size.height = currentViewDescription->tabBar.view.frame.size.height;
tabFrame.size.width = currentViewDescription->tabBar.view.frame.size.width;
tabFrame.origin.y -= tabFrame.size.height;
tabFrame.origin.x -= tabFrame.size.width;
[tabBarView setFrame: tabFrame];
contentFrame.size.height = tabFrame.origin.y - contentFrame.origin.y;
for (UIView *view in description->tabBar.view.subviews) {
for (UIView *view in currentViewDescription->tabBar.view.subviews) {
if(view.tag == -1) {
contentFrame.size.height += view.frame.origin.y;
break;
}
}
} else {
tabBarView.hidden = true;
contentFrame.size.height = tabFrame.origin.y + tabFrame.size.height;
if(description->fullscreen)
if(currentViewDescription->fullscreen)
contentFrame.size.height += 20;
tabFrame.origin.y = [[UIScreen mainScreen] bounds].size.height - 20;
}
// Resize innerView
[contentView setFrame: contentFrame];
CGRect innerContentFrame = innerView.frame;
innerContentFrame.size = contentFrame.size;
// Set frames
[contentView setFrame: contentFrame];
[innerView setFrame: innerContentFrame];
[tabBarView setFrame: tabFrame];
// Commit animation
if(tabBar != nil || fullscreen != nil) {
[UIView commitAnimations];
}
// Change view
if(viewId != nil) {
[PhoneMainView addSubView: currentViewDescription->content view:contentView];
[PhoneMainView addSubView: currentViewDescription->tabBar view:tabBarView];
}
// Call abstractCall
NSDictionary *dict = [notif.userInfo objectForKey: @"args"];
if(dict != nil)
[LinphoneManager abstractCall:description->content dict:dict];
[LinphoneManager abstractCall:currentViewDescription->content dict:dict];
// Dealloc old view description
if(oldViewDescription != nil) {
[oldViewDescription dealloc];
}
}
- (void)viewDidLoad {
@ -290,10 +362,10 @@
if (canHideInCallView) {
if ([[LinphoneManager instance] currentView] != PhoneView_Dialer) {
// Go to dialer view
NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:
[[NSArray alloc] initWithObjects: @"", nil]
NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys:
[[[NSArray alloc] initWithObjects: @"", nil] autorelease]
, @"setAddress:",
nil];
nil] autorelease];
[[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict];
}
} else {

View file

@ -59,9 +59,9 @@
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="813768660"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MCAxIDAuMDkwOTI0NTczOTEAA</bytes>
<object class="NSColor" key="IBUIBackgroundColor" id="197650205">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
<bool key="IBUIClipsSubviews">YES</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
@ -74,8 +74,8 @@
<reference key="NSWindow"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MSAwLjI4MzE1ODM3MjYgMC4wNTY3ODY4OTE2MSAwAA</bytes>
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MCAwAA</bytes>
</object>
<bool key="IBUIClipsSubviews">YES</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
@ -132,10 +132,7 @@
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<object class="NSColor" key="IBUIHighlightedTitleColor" id="197650205">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
<reference key="IBUIHighlightedTitleColor" ref="197650205"/>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
@ -935,38 +932,38 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>image</string>
<string>label</string>
<string>spinner</string>
<string>callQualityImage</string>
<string>registrationStateImage</string>
<string>registrationStateLabel</string>
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>UIImageView</string>
<string>UIImageView</string>
<string>UILabel</string>
<string>UIActivityIndicatorView</string>
</object>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>image</string>
<string>label</string>
<string>spinner</string>
<string>callQualityImage</string>
<string>registrationStateImage</string>
<string>registrationStateLabel</string>
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">image</string>
<string key="name">callQualityImage</string>
<string key="candidateClassName">UIImageView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">label</string>
<string key="candidateClassName">UILabel</string>
<string key="name">registrationStateImage</string>
<string key="candidateClassName">UIImageView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">spinner</string>
<string key="candidateClassName">UIActivityIndicatorView</string>
<string key="name">registrationStateLabel</string>
<string key="candidateClassName">UILabel</string>
</object>
</object>
</object>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

View file

@ -255,6 +255,16 @@
D35498221587716B000081D8 /* UIStateBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D354981F1587716B000081D8 /* UIStateBar.m */; };
D35498231587716B000081D8 /* UIStateBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35498201587716B000081D8 /* UIStateBar.xib */; };
D35498241587716B000081D8 /* UIStateBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35498201587716B000081D8 /* UIStateBar.xib */; };
D35E757815931E5D0066B1C1 /* switch_camera_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E757515931E5D0066B1C1 /* switch_camera_default.png */; };
D35E757915931E5D0066B1C1 /* switch_camera_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E757515931E5D0066B1C1 /* switch_camera_default.png */; };
D35E757A15931E5D0066B1C1 /* switch_camera_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E757615931E5D0066B1C1 /* switch_camera_over.png */; };
D35E757B15931E5D0066B1C1 /* switch_camera_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E757615931E5D0066B1C1 /* switch_camera_over.png */; };
D35E7581159328EB0066B1C1 /* UIAddressTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E7580159328EB0066B1C1 /* UIAddressTextField.m */; };
D35E7582159328EB0066B1C1 /* UIAddressTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E7580159328EB0066B1C1 /* UIAddressTextField.m */; };
D35E758915932DE60066B1C1 /* backspace-disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E758815932DE60066B1C1 /* backspace-disabled.png */; };
D35E758A15932DE60066B1C1 /* backspace-disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E758815932DE60066B1C1 /* backspace-disabled.png */; };
D35E758D15934F360066B1C1 /* appeler-disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E758C15934F360066B1C1 /* appeler-disabled.png */; };
D35E758E15934F360066B1C1 /* appeler-disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E758C15934F360066B1C1 /* appeler-disabled.png */; };
D36C43C6158F2E5A0048BA40 /* UICallCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D36C43C5158F2E5A0048BA40 /* UICallCell.m */; };
D36C43C7158F2E5A0048BA40 /* UICallCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D36C43C5158F2E5A0048BA40 /* UICallCell.m */; };
D36C43CA158F2EE50048BA40 /* UICallCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D36C43C9158F2EE50048BA40 /* UICallCell.xib */; };
@ -833,6 +843,12 @@
D354981E1587716B000081D8 /* UIStateBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIStateBar.h; sourceTree = "<group>"; };
D354981F1587716B000081D8 /* UIStateBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIStateBar.m; sourceTree = "<group>"; };
D35498201587716B000081D8 /* UIStateBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIStateBar.xib; sourceTree = "<group>"; };
D35E757515931E5D0066B1C1 /* switch_camera_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = switch_camera_default.png; path = Resources/switch_camera_default.png; sourceTree = "<group>"; };
D35E757615931E5D0066B1C1 /* switch_camera_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = switch_camera_over.png; path = Resources/switch_camera_over.png; sourceTree = "<group>"; };
D35E757F159328EA0066B1C1 /* UIAddressTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIAddressTextField.h; sourceTree = "<group>"; };
D35E7580159328EB0066B1C1 /* UIAddressTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIAddressTextField.m; sourceTree = "<group>"; };
D35E758815932DE60066B1C1 /* backspace-disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "backspace-disabled.png"; path = "Resources/backspace-disabled.png"; sourceTree = "<group>"; };
D35E758C15934F360066B1C1 /* appeler-disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "appeler-disabled.png"; path = "Resources/appeler-disabled.png"; sourceTree = "<group>"; };
D36C43C4158F2E5A0048BA40 /* UICallCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICallCell.h; sourceTree = "<group>"; };
D36C43C5158F2E5A0048BA40 /* UICallCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UICallCell.m; sourceTree = "<group>"; };
D36C43C9158F2EE50048BA40 /* UICallCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UICallCell.xib; sourceTree = "<group>"; };
@ -1315,6 +1331,8 @@
2248E99D12F801C200220D9C /* LinphoneManager.h */,
2248E99E12F801C200220D9C /* LinphoneManager.m */,
2218A5CE12F973450088A667 /* LogView.h */,
D35E757F159328EA0066B1C1 /* UIAddressTextField.h */,
D35E7580159328EB0066B1C1 /* UIAddressTextField.m */,
22C7555E1317E59C007BC101 /* UIBluetoothButton.h */,
22C7555F1317E59C007BC101 /* UIBluetoothButton.m */,
D326483B1588950F00930C67 /* UICallBar.h */,
@ -1554,8 +1572,10 @@
D31C9C8E158A1C1000756B45 /* appel-manque.png */,
D31C9C8F158A1C1000756B45 /* appel-sortant.png */,
D3ED3E7015861ABD006C0DE4 /* appeler-actif.png */,
D35E758C15934F360066B1C1 /* appeler-disabled.png */,
D3ED3E7115861ABD006C0DE4 /* appeler-over.png */,
D3ED3E7615861B1B006C0DE4 /* backspace-actif.png */,
D35E758815932DE60066B1C1 /* backspace-disabled.png */,
D3ED3E7715861B1B006C0DE4 /* backspace-over.png */,
D3ED3E511585FFFD006C0DE4 /* barre-noire-top.png */,
D354981815876FE7000081D8 /* bouton-detail-contact-actif.png */,
@ -1642,6 +1662,8 @@
D3432A5D158A4446001C6B0B /* status_error.png */,
D3432A6F158A45AF001C6B0B /* status_inprogress.png */,
22226C13118197EC000CA27B /* stopcall-red.png */,
D35E757515931E5D0066B1C1 /* switch_camera_default.png */,
D35E757615931E5D0066B1C1 /* switch_camera_over.png */,
D38327F11580FE3A00FA0D23 /* tchat-actif.png */,
D38327FF158100E400FA0D23 /* tchat-over.png */,
D38327F21580FE3A00FA0D23 /* tchat-selectionne.png */,
@ -1902,6 +1924,10 @@
D36C43F3158F61EA0048BA40 /* pause-champ-numero-over.png in Resources */,
D36C43F5158F61EA0048BA40 /* play-champ-numero-actif.png in Resources */,
D36C43F7158F61EA0048BA40 /* play-champ-numero-over.png in Resources */,
D35E757815931E5D0066B1C1 /* switch_camera_default.png in Resources */,
D35E757A15931E5D0066B1C1 /* switch_camera_over.png in Resources */,
D35E758915932DE60066B1C1 /* backspace-disabled.png in Resources */,
D35E758D15934F360066B1C1 /* appeler-disabled.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -2049,6 +2075,10 @@
D36C43F4158F61EA0048BA40 /* pause-champ-numero-over.png in Resources */,
D36C43F6158F61EA0048BA40 /* play-champ-numero-actif.png in Resources */,
D36C43F8158F61EA0048BA40 /* play-champ-numero-over.png in Resources */,
D35E757915931E5D0066B1C1 /* switch_camera_default.png in Resources */,
D35E757B15931E5D0066B1C1 /* switch_camera_over.png in Resources */,
D35E758A15932DE60066B1C1 /* backspace-disabled.png in Resources */,
D35E758E15934F360066B1C1 /* appeler-disabled.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -2097,6 +2127,7 @@
D31C9C98158A1CDF00756B45 /* UIHistoryCell.m in Sources */,
D32409C3158B49A600C8C119 /* UILongTouchButton.m in Sources */,
D36C43C6158F2E5A0048BA40 /* UICallCell.m in Sources */,
D35E7581159328EB0066B1C1 /* UIAddressTextField.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -2142,6 +2173,7 @@
D31C9C99158A1CDF00756B45 /* UIHistoryCell.m in Sources */,
D32409C4158B49A600C8C119 /* UILongTouchButton.m in Sources */,
D36C43C7158F2E5A0048BA40 /* UICallCell.m in Sources */,
D35E7582159328EB0066B1C1 /* UIAddressTextField.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

2
main.m
View file

@ -18,8 +18,6 @@
*/
#import <UIKit/UIKit.h>
#import "LinphoneAppDelegate.h"
int main(int argc, char *argv[]) {