From 1da32bd0c465ef35e6319cbd457214539eb13456 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 17 Jan 2013 10:22:44 +0100 Subject: [PATCH] Dispose the notification on call end --- Classes/BuschJaegerMainView.m | 11 +++++++++++ Classes/LinphoneManager.h | 2 +- Classes/LinphoneManager.m | 9 +++++++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/Classes/BuschJaegerMainView.m b/Classes/BuschJaegerMainView.m index eb3d576db..23c9011c1 100644 --- a/Classes/BuschJaegerMainView.m +++ b/Classes/BuschJaegerMainView.m @@ -297,6 +297,7 @@ static BuschJaegerMainView* mainViewInstance=nil; case LinphoneCallError: case LinphoneCallEnd: { + [self dismissIncomingCall:call]; if ((linphone_core_get_calls([LinphoneManager getLc]) == NULL)) { [navigationController popToViewController:welcomeView animated:FALSE]; // No animation... Come back when Apple have learned how to create a good framework } @@ -308,6 +309,16 @@ static BuschJaegerMainView* mainViewInstance=nil; } } +- (void)dismissIncomingCall:(LinphoneCall*)call { + LinphoneCallAppData* appData = (LinphoneCallAppData*) linphone_call_get_user_pointer(call); + + if(appData != nil && appData->notification != nil) { + // cancel local notif if needed + [[UIApplication sharedApplication] cancelLocalNotification:appData->notification]; + [appData->notification release]; + } +} + - (void)displayIncomingCall:(LinphoneCall *)call { if (![[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] || [UIApplication sharedApplication].applicationState == UIApplicationStateActive) { diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index 9fb6be672..3d29a36ba 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -152,7 +152,7 @@ typedef struct _LinphoneManagerSounds { - (void)acceptCall:(LinphoneCall *)call; - (void)call:(NSString *)address displayName:(NSString*)displayName transfer:(BOOL)transfer; - +- (void)reloadSounds; - (void)lpConfigSetString:(NSString*)value forKey:(NSString*)key; - (NSString*)lpConfigStringForKey:(NSString*)key; - (void)lpConfigSetString:(NSString*)value forKey:(NSString*)key forSection:(NSString*)section; diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index a291c4d51..782d5342c 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -1614,7 +1614,12 @@ static void audioRouteChangeListenerCallback ( [currentSettings release]; currentSettings = newSettings; [currentSettings retain]; - + + [self reloadSounds]; + return YES; +} + +- (void)reloadSounds { /* Configure sounds */ if(sounds.call) { AudioServicesDisposeSystemSoundID(sounds.call); @@ -1641,7 +1646,7 @@ static void audioRouteChangeListenerCallback ( } } - return YES; + } // no proxy configured alert