diff --git a/Classes/AdvancedPhoneViewController.m b/Classes/AdvancedPhoneViewController.m
index 40801743b..9f5c3f633 100644
--- a/Classes/AdvancedPhoneViewController.m
+++ b/Classes/AdvancedPhoneViewController.m
@@ -51,6 +51,8 @@
}
-(void) displayIncallFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName {
+ [self presentModalViewController:mIncallViewController animated:true];
+
[super displayIncallFromUI:viewCtrl
forUser:username
withDisplayName:displayName];
@@ -65,6 +67,12 @@
[mIncallViewController displayStatus:message];
}
+-(void) updateUIFromLinphoneState:(UIViewController*) viewCtrl {
+ [super updateUIFromLinphoneState:viewCtrl];
+
+ [mIncallViewController updateUIFromLinphoneState:viewCtrl];
+}
+
- (void)dealloc {
[mIncallViewController release];
[super dealloc];
diff --git a/Classes/IncallViewController.h b/Classes/IncallViewController.h
index 51d0869f9..fd783733e 100644
--- a/Classes/IncallViewController.h
+++ b/Classes/IncallViewController.h
@@ -35,6 +35,7 @@
UIHangUpButton* endCtrl;
UIButton* dialer;
UIMuteButton* mute;
+ UIPauseResumeButton* pause;
UISpeakerButton* speaker;
UIButton* contacts;
@@ -74,6 +75,7 @@
@property (nonatomic, retain) IBOutlet UIButton* endCtrl;
@property (nonatomic, retain) IBOutlet UIButton* dialer;
@property (nonatomic, retain) IBOutlet UIButton* mute;
+@property (nonatomic, retain) IBOutlet UIButton* pause;
@property (nonatomic, retain) IBOutlet UIButton* speaker;
@property (nonatomic, retain) IBOutlet UIButton* contacts;
diff --git a/Classes/IncallViewController.m b/Classes/IncallViewController.m
index ba06c0292..c3a7464e9 100644
--- a/Classes/IncallViewController.m
+++ b/Classes/IncallViewController.m
@@ -35,6 +35,7 @@
@synthesize endCtrl;
@synthesize close;
@synthesize mute;
+@synthesize pause;
@synthesize dialer;
@synthesize speaker;
@synthesize contacts;
@@ -70,6 +71,7 @@
[super viewDidLoad];
//Controls
[mute initWithOnImage:[UIImage imageNamed:@"mic_muted.png"] offImage:[UIImage imageNamed:@"mic_active.png"] ];
+ [pause initWithOnImage:[UIImage imageNamed:@"resumecall.png"] offImage:[UIImage imageNamed:@"pausecall.png"] ];
[speaker initWithOnImage:[UIImage imageNamed:@"Speaker-32-on.png"] offImage:[UIImage imageNamed:@"Speaker-32-off.png"] ];
@@ -127,6 +129,11 @@
[callDuration stop];
[self dismissModalViewControllerAnimated:true];
}
+-(void) updateUIFromLinphoneState:(UIViewController *)viewCtrl {
+ [mute reset];
+ [pause reset];
+}
+
- (IBAction)doAction:(id)sender {
if (sender == dialer) {
diff --git a/Classes/IncallViewController.xib b/Classes/IncallViewController.xib
index 74b79c19f..a2b4e804e 100644
--- a/Classes/IncallViewController.xib
+++ b/Classes/IncallViewController.xib
@@ -2,30 +2,29 @@
784
- 10J567
- 823
- 1038.35
- 462.00
+ 11C74
+ 1938
+ 1138.23
+ 567.00
-
diff --git a/Classes/LinphoneUI/LinphoneManager.m b/Classes/LinphoneUI/LinphoneManager.m
index 546aa78dd..af401c7a0 100644
--- a/Classes/LinphoneUI/LinphoneManager.m
+++ b/Classes/LinphoneUI/LinphoneManager.m
@@ -790,11 +790,15 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
}
-(void) endInterruption {
- const MSList* c = linphone_core_get_calls(theLinphoneCore);
ms_message("Sound interruption ended!");
+ const MSList* c = linphone_core_get_calls(theLinphoneCore);
+
if (c) {
+ ms_message("Auto resuming call");
linphone_core_resume_call(theLinphoneCore, (LinphoneCall*) c->data);
- }
+ }
+
+ [callDelegate updateUIFromLinphoneState:mCurrentViewController];
}
@end
diff --git a/Classes/LinphoneUI/LinphoneUIDelegates.h b/Classes/LinphoneUI/LinphoneUIDelegates.h
index f1e97c906..081139167 100644
--- a/Classes/LinphoneUI/LinphoneUIDelegates.h
+++ b/Classes/LinphoneUI/LinphoneUIDelegates.h
@@ -25,6 +25,7 @@
-(void) displayCallInProgressFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName;
-(void) displayIncomingCallNotigicationFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName;
-(void) displayIncallFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName;
+-(void) updateUIFromLinphoneState:(UIViewController*) viewCtrl;
//status reporting
-(void) displayStatus:(NSString*) message;
@end
diff --git a/Classes/LinphoneUI/UILinphone.h b/Classes/LinphoneUI/UILinphone.h
index dae985a8b..49938a8f7 100644
--- a/Classes/LinphoneUI/UILinphone.h
+++ b/Classes/LinphoneUI/UILinphone.h
@@ -26,3 +26,4 @@
#import "UIDuration.h"
#import "UIEraseButton.h"
#import "LinphoneUIDelegates.h"
+#import "UIPauseResumeButton.h"
diff --git a/Classes/LinphoneUI/UIPauseResumeButton.h b/Classes/LinphoneUI/UIPauseResumeButton.h
new file mode 100644
index 000000000..fe5a80e30
--- /dev/null
+++ b/Classes/LinphoneUI/UIPauseResumeButton.h
@@ -0,0 +1,28 @@
+/* UIMuteButton.h
+ *
+ * Copyright (C) 2011 Belledonne Comunications, Grenoble, France
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#import
+#import "UIToggleButton.h"
+
+
+@interface UIPauseResumeButton : UIToggleButton {
+
+}
+
+@end
diff --git a/Classes/LinphoneUI/UIPauseResumeButton.m b/Classes/LinphoneUI/UIPauseResumeButton.m
new file mode 100644
index 000000000..9cd47f8ac
--- /dev/null
+++ b/Classes/LinphoneUI/UIPauseResumeButton.m
@@ -0,0 +1,69 @@
+/* UIMuteButton.m
+ *
+ * Copyright (C) 2011 Belledonne Comunications, Grenoble, France
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+#import "UIPauseResumeButton.h"
+#include "LinphoneManager.h"
+
+
+@implementation UIPauseResumeButton
+
+
+
+-(void) onOn {
+ LinphoneCall* c = linphone_core_get_current_call([LinphoneManager getLc]);
+ if (c) {
+ linphone_core_pause_call([LinphoneManager getLc], c);
+ }
+}
+-(void) onOff {
+ const MSList* c = linphone_core_get_calls([LinphoneManager getLc]);
+ if (c) {
+ linphone_core_resume_call([LinphoneManager getLc], (LinphoneCall*) c->data);
+ }
+}
+-(bool) isInitialStateOn {
+ @try {
+ const MSList* c = linphone_core_get_calls([LinphoneManager getLc]);
+
+ if (c) {
+ return linphone_call_get_state((LinphoneCall*)c->data) == LinphoneCallPaused;
+ } else {
+
+ return false;
+ }
+ } @catch(NSException* e) {
+ //not ready yet
+ return false;
+ }
+
+}
+
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+ // Drawing code.
+}
+*/
+
+- (void)dealloc {
+ [super dealloc];
+}
+
+
+@end
diff --git a/Classes/PhoneViewController.m b/Classes/PhoneViewController.m
index 0580b1f20..6b49a18f0 100644
--- a/Classes/PhoneViewController.m
+++ b/Classes/PhoneViewController.m
@@ -234,6 +234,10 @@
[status setText:message];
}
+-(void) updateUIFromLinphoneState:(UIViewController*) viewCtrl {
+ [mute reset];
+}
+
-(void) displayIncomingCallNotigicationFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName {