diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index f03e74c18..ece60dc47 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -90,7 +90,7 @@ void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UIContactCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UIContactCell"]; if (cell == nil) { - cell = [[UIContactCell alloc] init]; + cell = [[UIContactCell alloc] initWithIdentifier:@"UIContactCell"]; } OrderedDictionary *subDic = [addressBookMap objectForKey: [addressBookMap keyAtIndex: [indexPath section]]]; diff --git a/Classes/DialerViewController.xib b/Classes/DialerViewController.xib index 5063349d6..c3ef74098 100644 --- a/Classes/DialerViewController.xib +++ b/Classes/DialerViewController.xib @@ -534,15 +534,15 @@ NO NO - + NSImage add-contact-over.png - + NSImage add-contact-inactif.png - + NSImage add-contact-actif.png @@ -567,9 +567,18 @@ NO NO - - - + + NSImage + cancel_white_bg_over.png + + + NSImage + cancel_white_bg_disabled.png + + + NSImage + cancel_white_bg_default.png + @@ -641,6 +650,7 @@ {{214, 0}, {106, 69}} + _NS:9 NO IBCocoaTouchFramework @@ -1177,7 +1187,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UICallButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1536,6 +1546,9 @@ backspace-actif.png backspace-disabled.png backspace-over.png + cancel_white_bg_default.png + cancel_white_bg_disabled.png + cancel_white_bg_over.png champ-saisie-numero.png diese-actif.png diese-over.png @@ -1576,6 +1589,9 @@ {213, 138} {213, 138} {213, 138} + {213, 138} + {213, 138} + {213, 138} {640, 135} {210, 113} {210, 113} diff --git a/Classes/HistoryTableViewController.m b/Classes/HistoryTableViewController.m index abef2df6c..7f9f7a04e 100644 --- a/Classes/HistoryTableViewController.m +++ b/Classes/HistoryTableViewController.m @@ -42,7 +42,7 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UIHistoryCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UIHistoryCell"]; if (cell == nil) { - cell = [[UIHistoryCell alloc] init]; + cell = [[UIHistoryCell alloc] initWithIdentifier:@"UIHistoryCell"]; } const MSList * logs = linphone_core_get_call_logs([LinphoneManager getLc]); diff --git a/Classes/InCallTableViewController.h b/Classes/InCallTableViewController.h index 518cf947a..99abc4d60 100644 --- a/Classes/InCallTableViewController.h +++ b/Classes/InCallTableViewController.h @@ -24,6 +24,7 @@ #include "linphonecore.h" @interface InCallTableViewController : UITableViewController { + @private NSMutableDictionary* callCellData; NSTimer *updateTime; } diff --git a/Classes/InCallTableViewController.m b/Classes/InCallTableViewController.m index f5db69eeb..edd9fe1ce 100644 --- a/Classes/InCallTableViewController.m +++ b/Classes/InCallTableViewController.m @@ -19,12 +19,18 @@ #import "InCallTableViewController.h" #import "UICallCell.h" +#import "UIConferenceHeader.h" #import "LinphoneManager.h" #include "private.h" @implementation InCallTableViewController +enum TableSection { + ConferenceSection = 0, + CallSection = 1 +}; + - (void)myInit { self->callCellData = [[NSMutableDictionary alloc] init]; } @@ -53,6 +59,7 @@ return self; } + - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; updateTime = [NSTimer scheduledTimerWithTimeInterval:1 @@ -92,9 +99,6 @@ + (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) @@ -113,24 +117,72 @@ } +- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { + if(section == CallSection) { + return [[UIView alloc] initWithFrame:CGRectZero]; + } else if(section == ConferenceSection) { + LinphoneCore* lc = [LinphoneManager getLc]; + if(linphone_core_get_conference_size(lc) > 0){ + UIConferenceHeader *headerController = [[UIConferenceHeader alloc] init]; + [headerController update]; + UIView *headerView = [headerController view]; + [headerController release]; + return headerView; + } else { + return [[UIView alloc] initWithFrame:CGRectZero]; + } + } + return [[UIView alloc] initWithFrame:CGRectZero]; +} + +- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { + return [[UIView alloc] initWithFrame:CGRectZero]; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { + LinphoneCore* lc = [LinphoneManager getLc]; + if(section == CallSection) { + return 0.000001f; // Hack UITableView = 0 + } else if(section == ConferenceSection) { + if(linphone_core_get_conference_size(lc) > 0) { + return [UIConferenceHeader getHeight]; + } + } + return 0.000001f; // Hack UITableView = 0 +} + +- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { + LinphoneCore* lc = [LinphoneManager getLc]; + if(section == CallSection) { + return 0.000000f; // Hack UITableView = 0 + } else if(section == ConferenceSection) { + if(linphone_core_get_conference_size(lc) > 0) { + return 20; + } + } + return 0.000001f; // Hack UITableView = 0 +} + - (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UICallCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UICallCell"]; if (cell == nil) { - cell = [[UICallCell alloc] init]; + cell = [[UICallCell alloc] initWithIdentifier:@"UICallCell"]; } + bool inConference = indexPath.section == ConferenceSection; + LinphoneCore* lc = [LinphoneManager getLc]; - LinphoneCall* call = [InCallTableViewController retrieveCallAtIndex:indexPath.row inConference:NO]; + LinphoneCall* call = [InCallTableViewController retrieveCallAtIndex:indexPath.row inConference:inConference]; [cell setData:[self addCallData:call]]; [cell update]; - if ([indexPath row] == 0) { + if ([indexPath section] == CallSection && [indexPath row] == 0 && linphone_core_get_conference_size(lc) == 0) { [cell firstCell]; } else { [cell otherCell]; } - if (linphone_core_get_calls_nb(lc) > 1) { + if (linphone_core_get_calls_nb(lc) > 1 || linphone_core_get_conference_size(lc) > 0) { tableView.scrollEnabled = TRUE; } else { tableView.scrollEnabled = FALSE; @@ -138,40 +190,40 @@ return cell; } -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section -{ +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + int count = 0; + LinphoneCore* lc = [LinphoneManager getLc]; - return [InCallTableViewController callCount:lc] + (int)(linphone_core_get_conference_size(lc) > 0); + if(section == CallSection) { + count = [InCallTableViewController callCount:lc]; + } else { + count = linphone_core_get_conference_size(lc); + if(linphone_core_is_in_conference(lc)) { + count--; + } + } + return count; } - (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; + return 2; } - (NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { - return nil; + return @""; } - (NSString*)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section { - return nil; + return @""; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - LinphoneCall* call = [InCallTableViewController retrieveCallAtIndex:indexPath.row inConference:NO]; + bool inConference = indexPath.section == ConferenceSection; + LinphoneCall* call = [InCallTableViewController retrieveCallAtIndex:indexPath.row inConference:inConference]; UICallCellData* data = [callCellData objectForKey:[NSValue valueWithPointer:call]]; if(data != nil &&data->minimize) return [UICallCell getMinimizedHeight]; @@ -184,11 +236,11 @@ LinphoneCore* lc = [LinphoneManager getLc]; - bool inConf = (indexPath.row == 0 && linphone_core_get_conference_size(lc) > 0); + bool inConference = indexPath.section == ConferenceSection; - LinphoneCall* selectedCall = [InCallTableViewController retrieveCallAtIndex:indexPath.row inConference:inConf]; + LinphoneCall* selectedCall = [InCallTableViewController retrieveCallAtIndex:indexPath.row inConference:inConference]; - if (inConf) { + if (inConference) { if (linphone_core_is_in_conference(lc)) return; LinphoneCall* current = linphone_core_get_current_call(lc); diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index e7b625855..ef5b48163 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -397,11 +397,17 @@ const NSInteger SECURE_BUTTON_TAG=5; } - (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; - [super viewDidAppear:animated]; + + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [callTableController viewDidAppear:NO]; + } } - (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; if (visibleActionSheet != nil) { [visibleActionSheet dismissWithClickedButtonIndex:visibleActionSheet.cancelButtonIndex animated:NO]; } @@ -409,10 +415,26 @@ const NSInteger SECURE_BUTTON_TAG=5; [hideControlsTimer invalidate]; hideControlsTimer = nil; } + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [callTableController viewWillDisappear:NO]; + } +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [callTableController viewWillAppear:NO]; + } } - (void)viewDidDisappear:(BOOL)animated { + [super viewDidDisappear:animated]; + if (!videoShown) [[UIApplication sharedApplication] setIdleTimerDisabled:false]; + + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [callTableController viewDidDisappear:NO]; + } } - (void)viewDidUnload { @@ -463,6 +485,12 @@ static void hideSpinner(LinphoneCall* lc, void* user_data); LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; + // Fake call update: Refresh UI + if(call == NULL) { + [self updateUIFromLinphoneState: YES]; + return; + } + // Handle data associated with the call if(state == LinphoneCallReleased) { [callTableController removeCallData: call]; @@ -517,7 +545,7 @@ static void hideSpinner(LinphoneCall* lc, void* user_data); if(linphone_core_get_calls_nb([LinphoneManager getLc]) <= 1) { [callTableController maximizeAll]; } - //[self updateUIFromLinphoneState: YES]; + [self updateUIFromLinphoneState: YES]; break; } default: @@ -790,4 +818,8 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { ms_error("Unhandled CallDelegate event of type: %d received - ignoring", type); } } + + + + @end diff --git a/Classes/InCallViewController.xib b/Classes/InCallViewController.xib index bbec5dd1a..26a28d6a4 100644 --- a/Classes/InCallViewController.xib +++ b/Classes/InCallViewController.xib @@ -67,7 +67,7 @@ {{240, 354}, {80, 106}} - + IBCocoaTouchFramework @@ -100,25 +100,33 @@ 274 - {320, 460} + {{0, -10}, {320, 480}} - + _NS:418 YES IBCocoaTouchFramework - 0.0 - 20 + 10 + 25 0.0 0.0 - YES + NO NO + 10 + 25 + 0.0 + 0.0 + 1 + 1 + 0 + NO YES - 53 - 22 - 22 + 44 + 10 + 10 @@ -159,7 +167,7 @@ {320, 460} - + 3 MC42NjY2NjY2NjY3AA diff --git a/Classes/LinphoneUI/UICallBar.h b/Classes/LinphoneUI/UICallBar.h index 9733ee39a..b93362fbc 100644 --- a/Classes/LinphoneUI/UICallBar.h +++ b/Classes/LinphoneUI/UICallBar.h @@ -23,25 +23,27 @@ #import "UIPauseButton.h" #import "UISpeakerButton.h" #import "UIVideoButton.h" +#import "UIHangUpButton.h" @interface UICallBar: UIViewController { UIPauseButton* pauseButton; - UIButton* startConferenceButton; - UIButton* stopConferenceButton; + UIButton* conferenceButton; UIVideoButton* videoButton; UIMicroButton* microButton; UISpeakerButton* speakerButton; UIButton* optionsButton; + UIHangUpButton* hangupButton; } @property (nonatomic, retain) IBOutlet UIPauseButton* pauseButton; -@property (nonatomic, retain) IBOutlet UIButton* startConferenceButton; -@property (nonatomic, retain) IBOutlet UIButton* stopConferenceButton; +@property (nonatomic, retain) IBOutlet UIButton* conferenceButton; @property (nonatomic, retain) IBOutlet UIVideoButton* videoButton; @property (nonatomic, retain) IBOutlet UIMicroButton* microButton; @property (nonatomic, retain) IBOutlet UISpeakerButton* speakerButton; -@property (nonatomic, retain) IBOutlet UIButton* optionsButton; +@property (nonatomic, retain) IBOutlet UIButton* optionsButton; +@property (nonatomic, retain) IBOutlet UIHangUpButton* hangupButton; - (IBAction)onOptionsClick:(id)sender; +- (IBAction)onConferenceClick:(id)sender; @end diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index b568553a3..74e7f2f75 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -26,18 +26,19 @@ @implementation UICallBar @synthesize pauseButton; -@synthesize startConferenceButton; -@synthesize stopConferenceButton; +@synthesize conferenceButton; @synthesize videoButton; @synthesize microButton; @synthesize speakerButton; @synthesize optionsButton; +@synthesize hangupButton; - (id)init { return [super initWithNibName:@"UICallBar" bundle:[NSBundle mainBundle]]; } - (void)viewDidLoad { + [pauseButton setType:UIPauseButtonType_CurrentCall call:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; } @@ -58,28 +59,24 @@ [microButton update]; [pauseButton update]; [videoButton update]; + [hangupButton 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]; + if(![pauseButton isHidden]) { + [pauseButton setHidden:true]; + [conferenceButton setHidden:false]; } } else { - [pauseButton setHidden:false]; - [startConferenceButton setHidden:true]; - [stopConferenceButton setHidden:true]; + if([pauseButton isHidden]) { + [pauseButton setHidden:false]; + [conferenceButton setHidden:true]; + } } } - (void)dealloc { [pauseButton release]; - [startConferenceButton release]; - [stopConferenceButton release]; + [conferenceButton release]; [videoButton release]; [microButton release]; [speakerButton release]; @@ -99,4 +96,8 @@ [[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict]; } +- (IBAction)onConferenceClick:(id)sender { + linphone_core_add_all_to_conference([LinphoneManager getLc]); +} + @end diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/UICallBar.xib index 76785e424..92d108fa6 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -221,7 +221,7 @@ NSImage pause-over.png - + NSImage play-actif.png @@ -238,7 +238,7 @@ {{0, 67}, {105, 68}} - + _NS:9 NO @@ -248,42 +248,19 @@ 0 0 NO + NO - + NSImage start-conference-over.png - - + NSImage start-conference-actif.png - - - -2147483384 - {{0, 67}, {105, 68}} - - - - _NS:9 - NO - - Stop conference - - IBCocoaTouchFramework - 0 - 0 - NO - - - - - - - 264 @@ -318,6 +295,7 @@ {{215, 67}, {105, 68}} + _NS:9 NO @@ -406,19 +384,19 @@ - stopConferenceButton - - - - 25 - - - - startConferenceButton + conferenceButton - 26 + 27 + + + + hangupButton + + + + 29 @@ -429,6 +407,15 @@ 20 + + + onConferenceClick: + + + 7 + + 28 + @@ -462,7 +449,6 @@ - callTabBar @@ -520,13 +506,7 @@ 21 - startConferenceButton - - - 23 - - - stopConferenceButton + conferenceButton @@ -545,8 +525,6 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -565,34 +543,45 @@ - 26 + 29 UICallBar UIViewController - - onOptionsClick: - id - - - onOptionsClick: - + + id + id + + + + onConferenceClick: + id + + onOptionsClick: id - + + UIButton + UIHangUpButton UIMicroButton UIButton UIPauseButton UISpeakerButton - UIButton - UIButton UIVideoButton + + conferenceButton + UIButton + + + hangupButton + UIHangUpButton + microButton UIMicroButton @@ -609,14 +598,6 @@ speakerButton UISpeakerButton - - startConferenceButton - UIButton - - - stopConferenceButton - UIButton - videoButton UIVideoButton @@ -635,6 +616,22 @@ ./Classes/UIHangUpButton.h + + UIMicroButton + UIToggleButton + + IBProjectSource + ./Classes/UIMicroButton.h + + + + UIPauseButton + UIToggleButton + + IBProjectSource + ./Classes/UIPauseButton.h + + UISpeakerButton UIToggleButton diff --git a/Classes/LinphoneUI/UICallCell.h b/Classes/LinphoneUI/UICallCell.h index 306c53423..05a7eccc0 100644 --- a/Classes/LinphoneUI/UICallCell.h +++ b/Classes/LinphoneUI/UICallCell.h @@ -20,7 +20,7 @@ #import #include "linphonecore.h" - +#include "UIPauseButton.h" @interface UICallCellData : NSObject { @public @@ -40,6 +40,7 @@ UILabel *addressLabel; UILabel *stateLabel; UIImageView *stateImage; + UIPauseButton *pauseButton; UIImageView *avatarImage; UIView *headerView; @@ -57,6 +58,7 @@ @property (nonatomic, retain) IBOutlet UILabel* stateLabel; @property (nonatomic, retain) IBOutlet UIImageView* stateImage; @property (nonatomic, retain) IBOutlet UIImageView* avatarImage; +@property (nonatomic, retain) IBOutlet UIPauseButton *pauseButton; @property (nonatomic, retain) IBOutlet UIView* headerView; @property (nonatomic, retain) IBOutlet UIView* avatarView; @@ -65,6 +67,8 @@ - (void)otherCell; - (void)update; +- (id)initWithIdentifier:(NSString*)identifier; + - (IBAction)doHeaderClick:(id)sender; + (int)getMaximizedHeight; diff --git a/Classes/LinphoneUI/UICallCell.m b/Classes/LinphoneUI/UICallCell.m index adcddb327..cfdd143c7 100644 --- a/Classes/LinphoneUI/UICallCell.m +++ b/Classes/LinphoneUI/UICallCell.m @@ -42,12 +42,13 @@ @synthesize stateLabel; @synthesize stateImage; @synthesize avatarImage; +@synthesize pauseButton; @synthesize headerView; @synthesize avatarView; -- (id)init { - if ((self = [super init]) != nil) { +- (id)initWithIdentifier:(NSString*)identifier { + if ((self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]) != nil) { NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"UICallCell" owner:self options:nil]; @@ -55,6 +56,9 @@ if ([arrayOfViews count] >= 1) { [self addSubview:[[arrayOfViews objectAtIndex:0] retain]]; } + // Set selected+over background: IB lack ! + [pauseButton setImage:[UIImage imageNamed:@"pause-champ-numero-over.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; } return self; } @@ -75,12 +79,13 @@ } - (void)update { - if(data) { - LinphoneCall *call = data->call; + LinphoneCall *call = NULL; + if(data != nil && data->call != NULL) { + call = data->call; const LinphoneAddress* addr = linphone_call_get_remote_address(call); - if (addr) { - const char* lUserNameChars=linphone_address_get_username(addr); + if (addr != NULL) { + 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 @@ -103,14 +108,19 @@ LinphoneCallState state = linphone_call_get_state(call); - if(state == LinphoneCallPaused || state == LinphoneCallPausing) { - [stateImage setImage:[UIImage imageNamed:@"pause-champ-numero-actif"]]; - } else if(state == LinphoneCallOutgoingRinging) { + + if(state == LinphoneCallOutgoingRinging) { [stateImage setImage:[UIImage imageNamed:@"ring-champ-numero-actif"]]; + [stateImage setHidden:false]; + [pauseButton setHidden:true]; } else if(state == LinphoneCallOutgoingInit || state == LinphoneCallOutgoingProgress){ - [stateImage setImage:nil]; + [stateImage setImage:[UIImage imageNamed:@"outgoing-champ-numero-actif"]]; + [stateImage setHidden:false]; + [pauseButton setHidden:true]; } else { - [stateImage setImage:[UIImage imageNamed:@"play-champ-numero-actif"]]; + [stateImage setHidden:true]; + [pauseButton setHidden:false]; + [pauseButton update]; } NSMutableString* msDuration = [[NSMutableString alloc] init]; @@ -131,6 +141,7 @@ [avatarView setHidden:true]; } } + [pauseButton setType:UIPauseButtonType_Call call:call]; } - (IBAction)doHeaderClick:(id)sender { @@ -143,12 +154,16 @@ - (void)selfUpdate { UITableView *parentTable = (UITableView *)self.superview; + [parentTable beginUpdates]; + [parentTable reloadData]; + [parentTable endUpdates]; + /* if(parentTable) { NSIndexPath *index= [parentTable indexPathForCell:self]; if(index != nil) { [parentTable reloadRowsAtIndexPaths:[[NSArray alloc] initWithObjects:index, nil] withRowAnimation:false]; } - } + }*/ } - (void)dealloc { @@ -163,11 +178,11 @@ } + (int)getMaximizedHeight { - return 300; + return 280; } + (int)getMinimizedHeight { - return 58; + return 54; } diff --git a/Classes/LinphoneUI/UICallCell.xib b/Classes/LinphoneUI/UICallCell.xib index c64c44004..265869dbc 100644 --- a/Classes/LinphoneUI/UICallCell.xib +++ b/Classes/LinphoneUI/UICallCell.xib @@ -49,6 +49,10 @@ _NS:9 + + 3 + MCAwAA + NO IBCocoaTouchFramework 0 @@ -83,6 +87,7 @@ _NS:9 + NO IBCocoaTouchFramework @@ -98,6 +103,7 @@ _NS:9 + NO IBCocoaTouchFramework @@ -111,10 +117,8 @@ _NS:9 - - 3 - MCAwAA - + + NO NO IBCocoaTouchFramework @@ -130,7 +134,7 @@ _NS:9 - NO + IBCocoaTouchFramework 0 0 @@ -146,12 +150,12 @@ -2147483356 - {320, 68} + {320, 63} _NS:9 - NO + IBCocoaTouchFramework 0 0 @@ -159,7 +163,7 @@ NSImage - champ-saisie-numero.png + champ-courbe-autres-numeros-first.png @@ -170,7 +174,7 @@ {{10, 0}, {206, 51}} - + _NS:9 NO NO @@ -4593,6 +4597,40 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE NO IBCocoaTouchFramework + + + 292 + {{216, 6}, {41, 41}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + NO + 8 + 8 + 8 + 8 + + + NSImage + play-champ-numero-over.png + + + NSImage + pause-champ-numero-actif.png + + + NSImage + play-champ-numero-actif.png + + + + 292 @@ -4656,6 +4694,19 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE _NS:9 + + NO + IBCocoaTouchFramework + + + + 292 + {320, 460} + + + + _NS:9 + NO IBCocoaTouchFramework @@ -4726,6 +4777,22 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 42 + + + backgroundView + + + + 46 + + + + pauseButton + + + + 48 + doHeaderClick: @@ -4791,6 +4858,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE + headerView @@ -4817,7 +4885,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 18 - stateView + stateImage 19 @@ -4842,6 +4910,18 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE + + 45 + + + background + + + 47 + + + pauseButton + @@ -4864,12 +4944,16 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIPauseButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + - 44 + 48 @@ -4894,6 +4978,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE UIView UIView UIView + UIPauseButton UIImageView UILabel @@ -4922,6 +5007,10 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE otherBackground UIView + + pauseButton + UIPauseButton + stateImage UIImageView @@ -4936,6 +5025,22 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE ./Classes/UICallCell.h + + UIPauseButton + UIToggleButton + + IBProjectSource + ./Classes/UIPauseButton.h + + + + UIToggleButton + UIButton + + IBProjectSource + ./Classes/UIToggleButton.h + + 0 @@ -4948,9 +5053,12 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 3 {320, 339} + {640, 125} {640, 125} - {640, 135} {640, 523} + {43, 50} + {43, 46} + {43, 46} 1181 diff --git a/Classes/LinphoneUI/UIConferenceHeader.h b/Classes/LinphoneUI/UIConferenceHeader.h new file mode 100644 index 000000000..22b87cfaa --- /dev/null +++ b/Classes/LinphoneUI/UIConferenceHeader.h @@ -0,0 +1,35 @@ +/* UIConferenceHeader.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 + +#import "UIPauseButton.h" + +@interface UIConferenceHeader : UIViewController { + UIImageView *stateImage; + UIPauseButton *pauseButton; +} + +@property (nonatomic, retain) IBOutlet UIImageView* stateImage; +@property (nonatomic, retain) IBOutlet UIPauseButton *pauseButton; + ++ (int)getHeight; +- (void)update; + +@end diff --git a/Classes/LinphoneUI/UIConferenceHeader.m b/Classes/LinphoneUI/UIConferenceHeader.m new file mode 100644 index 000000000..240453ff8 --- /dev/null +++ b/Classes/LinphoneUI/UIConferenceHeader.m @@ -0,0 +1,51 @@ +/* UIConferenceHeader.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "UIConferenceHeader.h" + +#import "LinphoneManager.h" + +@implementation UIConferenceHeader + +@synthesize stateImage; +@synthesize pauseButton; + +- (id)init { + return [super initWithNibName:@"UIConferenceHeader" bundle:[NSBundle mainBundle]]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + // Set selected+over background: IB lack ! + [pauseButton setImage:[UIImage imageNamed:@"pause-champ-numero-over.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + [pauseButton setType:UIPauseButtonType_Conference call:nil]; +} + ++ (int)getHeight { + return 50; +} + +- (void)update { + [self view]; + [stateImage setHidden:true]; + [pauseButton update]; +} + +@end diff --git a/Classes/LinphoneUI/UIConferenceHeader.xib b/Classes/LinphoneUI/UIConferenceHeader.xib new file mode 100644 index 000000000..6839db24a --- /dev/null +++ b/Classes/LinphoneUI/UIConferenceHeader.xib @@ -0,0 +1,277 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBUIButton + IBUIImageView + IBUIView + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + + + 292 + {320, 68} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + champ-titre-conference.png + + + + + 292 + {{224, 14}, {25, 25}} + + + _NS:9 + NO + IBCocoaTouchFramework + + + + 292 + {{216, 6}, {41, 41}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + NO + 8 + 8 + 8 + 8 + + 3 + MC41AA + + + NSImage + play-champ-numero-over.png + + + NSImage + pause-champ-numero-actif.png + + + NSImage + play-champ-numero-actif.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + {320, 68} + + + + _NS:9 + + 3 + MQA + + 2 + + + NO + IBCocoaTouchFramework + + + + + + + view + + + + 5 + + + + stateImage + + + + 9 + + + + pauseButton + + + + 14 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + + + + + + 7 + + + backgroundImage + + + 8 + + + stateImage + + + 13 + + + pauseButton + + + + + UIConferenceHeader + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIPauseButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 14 + + + + + UIConferenceHeader + UIViewController + + UIPauseButton + UIImageView + + + + pauseButton + UIPauseButton + + + stateImage + UIImageView + + + + IBProjectSource + ./Classes/UIConferenceHeader.h + + + + UIPauseButton + UIToggleButton + + IBProjectSource + ./Classes/UIPauseButton.h + + + + UIToggleButton + UIButton + + IBProjectSource + ./Classes/UIToggleButton.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + + {640, 135} + {43, 50} + {43, 46} + {43, 46} + + 1181 + + diff --git a/Classes/LinphoneUI/UIContactCell.h b/Classes/LinphoneUI/UIContactCell.h index 5b2217399..d7376d0ad 100644 --- a/Classes/LinphoneUI/UIContactCell.h +++ b/Classes/LinphoneUI/UIContactCell.h @@ -30,4 +30,6 @@ - (void)update:(ABRecordRef) record; +- (id)initWithIdentifier:(NSString*)identifier; + @end diff --git a/Classes/LinphoneUI/UIContactCell.m b/Classes/LinphoneUI/UIContactCell.m index 92dbee030..a0b292195 100644 --- a/Classes/LinphoneUI/UIContactCell.m +++ b/Classes/LinphoneUI/UIContactCell.m @@ -24,8 +24,8 @@ @synthesize firstNameLabel; @synthesize lastNameLabel; -- (id)init { - if ((self = [super init]) != nil) { +- (id)initWithIdentifier:(NSString*)identifier { + if ((self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]) != nil) { NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"UIContactCell" owner:self options:nil]; diff --git a/Classes/LinphoneUI/UIHangUpButton.h b/Classes/LinphoneUI/UIHangUpButton.h index d279493a3..596a81213 100644 --- a/Classes/LinphoneUI/UIHangUpButton.h +++ b/Classes/LinphoneUI/UIHangUpButton.h @@ -16,11 +16,13 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#import +#import @interface UIHangUpButton : UIButton { } +- (void)update; + @end diff --git a/Classes/LinphoneUI/UIHangUpButton.m b/Classes/LinphoneUI/UIHangUpButton.m index a7a291e61..bc7b5da2f 100644 --- a/Classes/LinphoneUI/UIHangUpButton.m +++ b/Classes/LinphoneUI/UIHangUpButton.m @@ -20,46 +20,91 @@ #import "UIHangUpButton.h" #import "LinphoneManager.h" +#import "private.h" + @implementation UIHangUpButton --(void) touchUp:(id) sender { - LinphoneCore* lc = [LinphoneManager getLc]; - if (!lc) - return; - LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); - - if (call) - linphone_core_terminate_call(lc,call); - else if (linphone_core_is_in_conference(lc)) { - linphone_core_terminate_conference(lc); - } else { - const MSList* calls = linphone_core_get_calls(lc); - if (ms_list_size(calls) == 1 - && !linphone_call_params_local_conference_mode(linphone_call_get_current_params((LinphoneCall*)(calls->data)))) { - //Only one call in the list, hangin up! - linphone_core_terminate_call(lc,(LinphoneCall*)(calls->data)); - } else { - ms_message("Cannot make a decision on which call to terminate"); - } - } ++ (bool)isInConference:(LinphoneCall*) call { + if (!call) + return false; + return linphone_call_get_current_params(call)->in_conference; } -- (id)initWithFrame:(CGRect)frame { ++ (int)callCount:(LinphoneCore*) lc { + int count = 0; + const MSList* calls = linphone_core_get_calls(lc); - self = [super initWithFrame:frame]; + while (calls != 0) { + if (![UIHangUpButton isInConference:((LinphoneCall*)calls->data)]) { + count++; + } + calls = calls->next; + } + return count; +} + +-(void) touchUp:(id) sender { + if([LinphoneManager isLcReady]) { + LinphoneCore* lc = [LinphoneManager getLc]; + LinphoneCall* currentcall = linphone_core_get_current_call(lc); + if (linphone_core_is_in_conference(lc) || // In conference + (linphone_core_get_conference_size(lc) > 0 && [UIHangUpButton callCount:lc] == 0) // Only one conf + ) { + linphone_core_terminate_conference(lc); + } else if(currentcall != NULL) { // In a call + linphone_core_terminate_call(lc, currentcall); + } else { + const MSList* calls = linphone_core_get_calls(lc); + if (ms_list_size(calls) == 1) { // Only one call + linphone_core_terminate_call(lc,(LinphoneCall*)(calls->data)); + } + } + } +} + +- (void)myInit { + [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; +} + +- (id)init{ + self = [super init]; if (self) { - [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; + [self myInit]; } return self; } + - (id)initWithCoder:(NSCoder *)decoder { self = [super initWithCoder:decoder]; if (self) { - [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; - } + [self myInit]; + } return self; } +- (id)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self myInit]; + } + return self; +} + +- (void)update { + if([LinphoneManager isLcReady]) { + LinphoneCore * lc = [LinphoneManager getLc]; + if(linphone_core_get_calls_nb(lc) == 1 || // One call + linphone_core_get_current_call(lc) != NULL || // In call + linphone_core_is_in_conference(lc) || // In conference + (linphone_core_get_conference_size(lc) > 0 && [UIHangUpButton callCount:lc] == 0) // Only one conf + ) { + [self setEnabled:true]; + return; + } + } + [self setEnabled:false]; +} + /* // Only override drawRect: if you perform custom drawing. // An empty implementation adversely affects performance during animation. diff --git a/Classes/LinphoneUI/UIHistoryCell.h b/Classes/LinphoneUI/UIHistoryCell.h index 2d7575d32..7500e1c8a 100644 --- a/Classes/LinphoneUI/UIHistoryCell.h +++ b/Classes/LinphoneUI/UIHistoryCell.h @@ -35,6 +35,8 @@ @property (nonatomic, retain) IBOutlet UIButton* detailsButton; @property (nonatomic, retain) IBOutlet UIButton* deleteButton; +- (id)initWithIdentifier:(NSString*)identifier; + - (IBAction)onDetails:(id) event; - (IBAction)onDelete:(id) event; diff --git a/Classes/LinphoneUI/UIHistoryCell.m b/Classes/LinphoneUI/UIHistoryCell.m index 4b6ba19d1..81dafdde6 100644 --- a/Classes/LinphoneUI/UIHistoryCell.m +++ b/Classes/LinphoneUI/UIHistoryCell.m @@ -29,8 +29,8 @@ #define DETAILS_DISABLED -- (id)init { - if ((self = [super init]) != nil) { +- (id)initWithIdentifier:(NSString*)identifier { + if ((self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]) != nil) { NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"UIHistoryCell" owner:self options:nil]; diff --git a/Classes/LinphoneUI/UIPauseButton.h b/Classes/LinphoneUI/UIPauseButton.h index 963378287..105b8b828 100644 --- a/Classes/LinphoneUI/UIPauseButton.h +++ b/Classes/LinphoneUI/UIPauseButton.h @@ -19,7 +19,20 @@ #import "UIToggleButton.h" +#import "linphonecore.h" + +typedef enum _UIPauseButtonType { + UIPauseButtonType_CurrentCall, + UIPauseButtonType_Call, + UIPauseButtonType_Conference +} UIPauseButtonType; + @interface UIPauseButton : UIToggleButton { - + @private + UIPauseButtonType type; + LinphoneCall* call; } + +- (void)setType:(UIPauseButtonType) type call:(LinphoneCall*)call; + @end diff --git a/Classes/LinphoneUI/UIPauseButton.m b/Classes/LinphoneUI/UIPauseButton.m index 1ff3186cc..615babfa7 100644 --- a/Classes/LinphoneUI/UIPauseButton.m +++ b/Classes/LinphoneUI/UIPauseButton.m @@ -25,17 +25,91 @@ @implementation UIPauseButton +- (void)myInit { + self->type = UIPauseButtonType_CurrentCall; +} + +- (id)init{ + self = [super init]; + if (self) { + [self myInit]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (self) { + [self myInit]; + } + return self; +} + +- (id)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self myInit]; + } + return self; +} + +- (void)setType:(UIPauseButtonType) atype call:(LinphoneCall*)acall { + self->type = atype; + self->call = acall; +} + - (void)onOn { - LinphoneCall* currentCall = [UIPauseButton getCall]; - if (currentCall != nil) { - linphone_core_pause_call([LinphoneManager getLc], currentCall); + switch (type) { + case UIPauseButtonType_Call: + { + if (call != nil) { + linphone_core_pause_call([LinphoneManager getLc], call); + } + break; + } + case UIPauseButtonType_Conference: + { + linphone_core_leave_conference([LinphoneManager getLc]); + + // Fake event + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneCallUpdate" object:self]; + break; + } + case UIPauseButtonType_CurrentCall: + { + LinphoneCall* currentCall = [UIPauseButton getCall]; + if (currentCall != nil) { + linphone_core_pause_call([LinphoneManager getLc], currentCall); + } + break; + } } } - (void)onOff { - LinphoneCall* currentCall = [UIPauseButton getCall]; - if (currentCall != nil) { - linphone_core_resume_call([LinphoneManager getLc], currentCall); + switch (type) { + case UIPauseButtonType_Call: + { + if (call != nil) { + linphone_core_resume_call([LinphoneManager getLc], call); + } + break; + } + case UIPauseButtonType_Conference: + { + linphone_core_enter_conference([LinphoneManager getLc]); + // Fake event + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneCallUpdate" object:self]; + break; + } + case UIPauseButtonType_CurrentCall: + { + LinphoneCall* currentCall = [UIPauseButton getCall]; + if (currentCall != nil) { + linphone_core_resume_call([LinphoneManager getLc], currentCall); + } + break; + } } } @@ -59,35 +133,53 @@ } - (bool)onUpdate { + bool ret = false; // TODO: disable pause on not running call if([LinphoneManager isLcReady]) { - bool ret = false; - LinphoneCall* currentCall = [UIPauseButton getCall]; - if (currentCall != nil) { - LinphoneCallState state = linphone_call_get_state(currentCall); - if(state == LinphoneCallPaused || state == LinphoneCallPausing) { - ret = true; + LinphoneCore *lc = [LinphoneManager getLc]; + switch (type) { + case UIPauseButtonType_Call: + { + if (call != nil) { + LinphoneCallState state = linphone_call_get_state(call); + if(state == LinphoneCallPaused || state == LinphoneCallPausing) { + ret = true; + } + [LinphoneManager set:self enabled:TRUE withName:"PAUSE button" andReason:""]; + } else { + [LinphoneManager set:self enabled:FALSE withName:"PAUSE button" andReason:""]; + } + break; + } + case UIPauseButtonType_Conference: + { + if(linphone_core_get_conference_size(lc) > 0) { + if (!linphone_core_is_in_conference(lc)) { + ret = true; + } + [LinphoneManager set:self enabled:TRUE withName:"PAUSE button" andReason:""]; + } else { + [LinphoneManager set:self enabled:FALSE withName:"PAUSE button" andReason:""]; + } + break; + } + case UIPauseButtonType_CurrentCall: + { + LinphoneCall* currentCall = [UIPauseButton getCall]; + if (currentCall != nil) { + LinphoneCallState state = linphone_call_get_state(currentCall); + if(state == LinphoneCallPaused || state == LinphoneCallPausing) { + ret = true; + } + [LinphoneManager set:self enabled:TRUE withName:"PAUSE button" andReason:""]; + } else { + [LinphoneManager set:self enabled:FALSE withName:"PAUSE button" andReason:""]; + } + break; } } - LinphoneCore* lc = [LinphoneManager getLc]; - int callsCount = linphone_core_get_calls_nb(lc); - - if (currentCall) { - if (linphone_core_is_in_conference(lc)) { - [LinphoneManager set:self enabled:FALSE withName:"PAUSE button" andReason:"is in conference"]; - } else if ([UIPauseButton notInConferenceCallCount: lc] == callsCount && callsCount == 1) { - [LinphoneManager set:self enabled:TRUE withName:"PAUSE button" andReason:"call count == 1"]; - } else { - [LinphoneManager set:self enabled:FALSE withName:"PAUSE button" andReason:""]; - } - } else { - [LinphoneManager set:self enabled:FALSE withName:"PAUSE button" andReason:""]; - } - return ret; - } else { - //not ready yet - return false; - } + } + return ret; } + (LinphoneCall*)getCall { diff --git a/Resources/cancel_white_bg_default.png b/Resources/cancel_white_bg_default.png new file mode 100644 index 000000000..b68fb8744 Binary files /dev/null and b/Resources/cancel_white_bg_default.png differ diff --git a/Resources/cancel_white_bg_disabled.png b/Resources/cancel_white_bg_disabled.png new file mode 100644 index 000000000..f07f35e2d Binary files /dev/null and b/Resources/cancel_white_bg_disabled.png differ diff --git a/Resources/cancel_white_bg_over.png b/Resources/cancel_white_bg_over.png new file mode 100644 index 000000000..7b045d222 Binary files /dev/null and b/Resources/cancel_white_bg_over.png differ diff --git a/Resources/champ-courbe-autres-numeros-first.png b/Resources/champ-courbe-autres-numeros-first.png new file mode 100644 index 000000000..c4b177df9 Binary files /dev/null and b/Resources/champ-courbe-autres-numeros-first.png differ diff --git a/Resources/outgoing-champ-numero-actif.png b/Resources/outgoing-champ-numero-actif.png new file mode 100644 index 000000000..ca1f8f99b Binary files /dev/null and b/Resources/outgoing-champ-numero-actif.png differ diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index d6a3dc5c7..e4529577b 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -213,6 +213,20 @@ D31C9C95158A1C1000756B45 /* appel-sortant.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C8F158A1C1000756B45 /* appel-sortant.png */; }; D31C9C98158A1CDF00756B45 /* UIHistoryCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D31C9C97158A1CDE00756B45 /* UIHistoryCell.m */; }; D31C9C99158A1CDF00756B45 /* UIHistoryCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D31C9C97158A1CDE00756B45 /* UIHistoryCell.m */; }; + D3211BA6159C3D410098460B /* outgoing-champ-numero-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BA5159C3D410098460B /* outgoing-champ-numero-actif.png */; }; + D3211BA7159C3D410098460B /* outgoing-champ-numero-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BA5159C3D410098460B /* outgoing-champ-numero-actif.png */; }; + D3211BB0159C4EF10098460B /* UIConferenceHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = D3211BAE159C4EF00098460B /* UIConferenceHeader.m */; }; + D3211BB1159C4EF10098460B /* UIConferenceHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = D3211BAE159C4EF00098460B /* UIConferenceHeader.m */; }; + D3211BB2159C4EF10098460B /* UIConferenceHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3211BAF159C4EF10098460B /* UIConferenceHeader.xib */; }; + D3211BB3159C4EF10098460B /* UIConferenceHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3211BAF159C4EF10098460B /* UIConferenceHeader.xib */; }; + D3211BB9159C8A820098460B /* champ-courbe-autres-numeros-first.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BB8159C8A820098460B /* champ-courbe-autres-numeros-first.png */; }; + D3211BBA159C8A820098460B /* champ-courbe-autres-numeros-first.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BB8159C8A820098460B /* champ-courbe-autres-numeros-first.png */; }; + D3211BBE159CBFD60098460B /* cancel_white_bg_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBB159CBFD60098460B /* cancel_white_bg_default.png */; }; + D3211BBF159CBFD70098460B /* cancel_white_bg_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBB159CBFD60098460B /* cancel_white_bg_default.png */; }; + D3211BC0159CBFD70098460B /* cancel_white_bg_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBC159CBFD60098460B /* cancel_white_bg_disabled.png */; }; + D3211BC1159CBFD70098460B /* cancel_white_bg_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBC159CBFD60098460B /* cancel_white_bg_disabled.png */; }; + D3211BC2159CBFD70098460B /* cancel_white_bg_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBD159CBFD60098460B /* cancel_white_bg_over.png */; }; + D3211BC3159CBFD70098460B /* cancel_white_bg_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBD159CBFD60098460B /* cancel_white_bg_over.png */; }; D32409C3158B49A600C8C119 /* UILongTouchButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D32409C2158B49A600C8C119 /* UILongTouchButton.m */; }; D32409C4158B49A600C8C119 /* UILongTouchButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D32409C2158B49A600C8C119 /* UILongTouchButton.m */; }; D326483815887D5200930C67 /* OrderedDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = D326483715887D5200930C67 /* OrderedDictionary.m */; }; @@ -933,6 +947,14 @@ D31C9C8F158A1C1000756B45 /* appel-sortant.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "appel-sortant.png"; path = "Resources/appel-sortant.png"; sourceTree = ""; }; D31C9C96158A1CDE00756B45 /* UIHistoryCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIHistoryCell.h; sourceTree = ""; }; D31C9C97158A1CDE00756B45 /* UIHistoryCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIHistoryCell.m; sourceTree = ""; }; + D3211BA5159C3D410098460B /* outgoing-champ-numero-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "outgoing-champ-numero-actif.png"; path = "Resources/outgoing-champ-numero-actif.png"; sourceTree = ""; }; + D3211BAD159C4EF00098460B /* UIConferenceHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIConferenceHeader.h; sourceTree = ""; }; + D3211BAE159C4EF00098460B /* UIConferenceHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIConferenceHeader.m; sourceTree = ""; }; + D3211BAF159C4EF10098460B /* UIConferenceHeader.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIConferenceHeader.xib; sourceTree = ""; }; + D3211BB8159C8A820098460B /* champ-courbe-autres-numeros-first.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "champ-courbe-autres-numeros-first.png"; path = "Resources/champ-courbe-autres-numeros-first.png"; sourceTree = ""; }; + D3211BBB159CBFD60098460B /* cancel_white_bg_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cancel_white_bg_default.png; path = Resources/cancel_white_bg_default.png; sourceTree = ""; }; + D3211BBC159CBFD60098460B /* cancel_white_bg_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cancel_white_bg_disabled.png; path = Resources/cancel_white_bg_disabled.png; sourceTree = ""; }; + D3211BBD159CBFD60098460B /* cancel_white_bg_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cancel_white_bg_over.png; path = Resources/cancel_white_bg_over.png; sourceTree = ""; }; D32409C1158B49A600C8C119 /* UILongTouchButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UILongTouchButton.h; sourceTree = ""; }; D32409C2158B49A600C8C119 /* UILongTouchButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UILongTouchButton.m; sourceTree = ""; }; D326483615887D5200930C67 /* OrderedDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OrderedDictionary.h; path = Utils/OrderedDictionary.h; sourceTree = ""; }; @@ -1572,6 +1594,9 @@ D31B4B1E159876C0002E6C72 /* UICompositeViewController.h */, D31B4B1F159876C0002E6C72 /* UICompositeViewController.m */, D31B4B20159876C0002E6C72 /* UICompositeViewController.xib */, + D3211BAD159C4EF00098460B /* UIConferenceHeader.h */, + D3211BAE159C4EF00098460B /* UIConferenceHeader.m */, + D3211BAF159C4EF10098460B /* UIConferenceHeader.xib */, D3A55FBA15877E5E003FD403 /* UIContactCell.h */, D3A55FBB15877E5E003FD403 /* UIContactCell.m */, D3A55FBE15877E69003FD403 /* UIContactCell.xib */, @@ -1817,6 +1842,10 @@ D3D6A3A7159B0EFE005F692C /* cadenas.png */, D3F83F801582278D00336684 /* cancel-actif.png */, D3F83F811582278D00336684 /* cancel-over.png */, + D3211BBB159CBFD60098460B /* cancel_white_bg_default.png */, + D3211BBC159CBFD60098460B /* cancel_white_bg_disabled.png */, + D3211BBD159CBFD60098460B /* cancel_white_bg_over.png */, + D3211BB8159C8A820098460B /* champ-courbe-autres-numeros-first.png */, D36C43CC158F2F370048BA40 /* champ-courbe-autres-numeros.png */, D36C43CD158F2F370048BA40 /* champ-courbe-participant-conf.png */, D3ED3E441585FB8C006C0DE4 /* champ-saisie-numero.png */, @@ -1876,6 +1905,7 @@ D3D6A3A8159B0EFE005F692C /* options_default.png */, D3D6A3A9159B0EFE005F692C /* options_disabled.png */, D3D6A3AA159B0EFE005F692C /* options_over.png */, + D3211BA5159C3D410098460B /* outgoing-champ-numero-actif.png */, D3F83EF8158205A100336684 /* pause-actif.png */, D36C43ED158F61EA0048BA40 /* pause-champ-numero-actif.png */, D36C43EE158F61EA0048BA40 /* pause-champ-numero-over.png */, @@ -2304,6 +2334,12 @@ D31AAF69159B5C68002C6B02 /* finir-conference-actif.png in Resources */, D31AAF6B159B5C68002C6B02 /* finir-conference-over.png in Resources */, D31AAF6E159B65E1002C6B02 /* ring-champ-numero-actif.png in Resources */, + D3211BA6159C3D410098460B /* outgoing-champ-numero-actif.png in Resources */, + D3211BB2159C4EF10098460B /* UIConferenceHeader.xib in Resources */, + D3211BB9159C8A820098460B /* champ-courbe-autres-numeros-first.png in Resources */, + D3211BBE159CBFD60098460B /* cancel_white_bg_default.png in Resources */, + D3211BC0159CBFD70098460B /* cancel_white_bg_disabled.png in Resources */, + D3211BC2159CBFD70098460B /* cancel_white_bg_over.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2489,6 +2525,12 @@ D31AAF6A159B5C68002C6B02 /* finir-conference-actif.png in Resources */, D31AAF6C159B5C68002C6B02 /* finir-conference-over.png in Resources */, D31AAF6F159B65E1002C6B02 /* ring-champ-numero-actif.png in Resources */, + D3211BA7159C3D410098460B /* outgoing-champ-numero-actif.png in Resources */, + D3211BB3159C4EF10098460B /* UIConferenceHeader.xib in Resources */, + D3211BBA159C8A820098460B /* champ-courbe-autres-numeros-first.png in Resources */, + D3211BBF159CBFD70098460B /* cancel_white_bg_default.png in Resources */, + D3211BC1159CBFD70098460B /* cancel_white_bg_disabled.png in Resources */, + D3211BC3159CBFD70098460B /* cancel_white_bg_over.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2563,6 +2605,7 @@ D31B4B21159876C0002E6C72 /* UICompositeViewController.m in Sources */, D3F34F351599C354005BE94F /* UIModalViewController.m in Sources */, D31AAF5E159B3919002C6B02 /* InCallTableViewController.m in Sources */, + D3211BB0159C4EF10098460B /* UIConferenceHeader.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2634,6 +2677,7 @@ D31B4B22159876C0002E6C72 /* UICompositeViewController.m in Sources */, D3F34F361599C354005BE94F /* UIModalViewController.m in Sources */, D31AAF5F159B3919002C6B02 /* InCallTableViewController.m in Sources */, + D3211BB1159C4EF10098460B /* UIConferenceHeader.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; };