From 6b1d647c269ff53a46d4a97977ee5779dedcd0a7 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 28 Jun 2012 18:42:47 +0200 Subject: [PATCH] Improve UI Add conference stuff Adjust button behaviours --- Classes/ContactsTableViewController.m | 2 +- Classes/DialerViewController.xib | 30 +- Classes/HistoryTableViewController.m | 2 +- Classes/InCallTableViewController.h | 1 + Classes/InCallTableViewController.m | 106 +++++-- Classes/InCallViewController.m | 36 ++- Classes/InCallViewController.xib | 28 +- Classes/LinphoneUI/UICallBar.h | 12 +- Classes/LinphoneUI/UICallBar.m | 31 +- Classes/LinphoneUI/UICallBar.xib | 131 ++++----- Classes/LinphoneUI/UICallCell.h | 6 +- Classes/LinphoneUI/UICallCell.m | 43 ++- Classes/LinphoneUI/UICallCell.xib | 132 ++++++++- Classes/LinphoneUI/UIConferenceHeader.h | 35 +++ Classes/LinphoneUI/UIConferenceHeader.m | 51 ++++ Classes/LinphoneUI/UIConferenceHeader.xib | 277 ++++++++++++++++++ Classes/LinphoneUI/UIContactCell.h | 2 + Classes/LinphoneUI/UIContactCell.m | 4 +- Classes/LinphoneUI/UIHangUpButton.h | 4 +- Classes/LinphoneUI/UIHangUpButton.m | 95 ++++-- Classes/LinphoneUI/UIHistoryCell.h | 2 + Classes/LinphoneUI/UIHistoryCell.m | 4 +- Classes/LinphoneUI/UIPauseButton.h | 15 +- Classes/LinphoneUI/UIPauseButton.m | 154 ++++++++-- Resources/cancel_white_bg_default.png | Bin 0 -> 5149 bytes Resources/cancel_white_bg_disabled.png | Bin 0 -> 4975 bytes Resources/cancel_white_bg_over.png | Bin 0 -> 5130 bytes .../champ-courbe-autres-numeros-first.png | Bin 0 -> 2577 bytes Resources/outgoing-champ-numero-actif.png | Bin 0 -> 1502 bytes linphone.xcodeproj/project.pbxproj | 44 +++ 30 files changed, 1023 insertions(+), 224 deletions(-) create mode 100644 Classes/LinphoneUI/UIConferenceHeader.h create mode 100644 Classes/LinphoneUI/UIConferenceHeader.m create mode 100644 Classes/LinphoneUI/UIConferenceHeader.xib create mode 100644 Resources/cancel_white_bg_default.png create mode 100644 Resources/cancel_white_bg_disabled.png create mode 100644 Resources/cancel_white_bg_over.png create mode 100644 Resources/champ-courbe-autres-numeros-first.png create mode 100644 Resources/outgoing-champ-numero-actif.png 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 0000000000000000000000000000000000000000..b68fb8744ff7e27165a30e9e671151f64492073f GIT binary patch literal 5149 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 literal 0 HcmV?d00001 diff --git a/Resources/cancel_white_bg_over.png b/Resources/cancel_white_bg_over.png new file mode 100644 index 0000000000000000000000000000000000000000..7b045d22217eca62e9db81cb1b4ead8d92afa4ed GIT binary patch literal 5130 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 literal 0 HcmV?d00001 diff --git a/Resources/outgoing-champ-numero-actif.png b/Resources/outgoing-champ-numero-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..ca1f8f99b8248338a1c65030b4ecd62f6ebd45fd GIT binary patch literal 1502 zcmV<41tI#0P)W1pWQrR7pl${dg^f22$)bcPqoPi%%9sohkt~>* zC`JgPiy%4@2N`I_2NEIj1vG+;;#6?34Bs-g8Ad4^-NxFrYkTi`{6O2?yLD@~UZjgB zx$QZoj$p*wY4<>0L8_{tfr=hv<4ToxXFVLKYG~h<4e3g zX$A>~!nCxBc?am*K_gWMOZ8rp{c1!Q+Q3>Da(Aia%@h|TH5XQ+X|mr_9Ot* z*4A>ZEv^Z;BuPF1(Cc*rt~5@VYR;JQ?bFLwykAjK5%#RrYGnzd@ntJk{bfqYn5`2< zNU}WSyuYvKl+^Ej_2`jrniEYb002T{85@$*3QQ9xpI!cJ(Taou=RCTEnJy{Ql$u#< zd13XQg$oy&5(_*^+~8mW4Cd0TS@-u8Jy-n1od*wUCFXc12nNBFa@_LLnwq%4OG-*u zoKZ!NRWho$AR1n@SW6v6MV72lN0sX8YG$=sX~&KoNyZ5&B|kU(zOA?G`gy&=F~Lf*q2VS9@1+Es;l-VOI}|;wQA3<4`Px^V`C!&fR>il3{X5-IsTMzv!AwFtYz+X zW$R}}1$R1~00582BWqp>jjbg+J=C^t!=~p)1lQ~J005K8ghXmim+xTdhPMyx-@o5D zVmK58hD2-KuKuF$&iv+jZ|jE-4FRX1t_49%Fl-8a>i=xJ*06E&mbX;kjIo5YI1xaK zU~$dq+PS7|(}^wbR7@Hq6>-pNNs$X_GcgB(*ZGYlRK8q;tdk66mEs8%N+xPSqPpiKoHU2Q=$3Qia!H%95J z5Tw%bp_XnoY}#G<(HAOkPJA?XSNB6MQvR-Rn{sj*A;~GBmDd1}GgFOuyDE2H0D$uH zawbHQ$EfpTocme{tb`T?NU28lsfqfML(l-QefxIOg)E?~>=(*-1YD0C{OZ8vVXMQLGiSnPvmrZs zsu)p=M2gKw5lqj>DosuMR z&N)JdEJ;3}-!Dv=Hfw%rTDoy4X>c)2y$+=`ZatL99rnwY?mJU=y8AzUuQG4Z(x&Nm z-Ti<%l#_azU@{4R2cg|vjvW}`L4`A_p7kB6Y=%$dUy&f-R+-W3Waz1^LiT^;r} ze>!ve>(KeRbLX=9`g%>@erWQ9oRgE|Wn50`x#6h3cBSo&bHCKr0YF|}o?y4zslB}& ziP{(dgDRWOn>W7xtj*2M6~_&1etteHC@2_T7QR#MUq()E_Qg^CNdN!<07*qoM6N<$ Ef@FfvMF0Q* literal 0 HcmV?d00001 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; };