--- a/callcontinuity/vcc/src/tvccstatefailing.cpp Tue Sep 14 21:02:05 2010 +0300
+++ b/callcontinuity/vcc/src/tvccstatefailing.cpp Wed Sep 15 12:01:56 2010 +0300
@@ -136,16 +136,6 @@
RUBY_DEBUG0( "Secondary call not exist - setting state to init");
aContext.SetState(*iInit);
}
-
- else if ( aCall == aContext.SecondaryCall() )
- {
- if( aState == MCCPCallObserver::ECCPStateDisconnecting ||
- aState == MCCPCallObserver::ECCPStateIdle )
- {
- RUBY_DEBUG0( "Secondary call is disconnecting or idle - setting state to init");
- aContext.SetState(*iInit);
- }
- }
}
// -----------------------------------------------------------------------------
@@ -164,8 +154,8 @@
RUBY_DEBUG1("call state is: %d", aState);
// Remote party has disconnected the call during the handover
- if( aState == MCCPCallObserver::ECCPStateDisconnecting &&
- aCall == aContext.SecondaryCall() )
+ if((aState == MCCPCallObserver::ECCPStateDisconnecting ||
+ aState == MCCPCallObserver::ECCPStateIdle) && aCall == aContext.SecondaryCall() )
{
ReleaseCall(aContext, *aContext.SecondaryCall(), *iInit, KVccHoNok );
}
--- a/callcontinuity/vcchotrigger/src/vcchotrigger.cpp Tue Sep 14 21:02:05 2010 +0300
+++ b/callcontinuity/vcchotrigger/src/vcchotrigger.cpp Wed Sep 15 12:01:56 2010 +0300
@@ -366,12 +366,11 @@
RUBY_DEBUG1( " -DoHoInHeldWaitingCalls=%x ", iPolicy.DoHoInHeldWaitingCalls() );
RUBY_DEBUG0( "0 = GOOD, 1 = WEAK, 2 = UNDEFINED" );
- // If the previous class is the same as the new one
- // - do nothing.
-
- if ( iPreviousGsmClass == iGsmClass && iWlanClass != ESignalClassWeak )
+ // If the new one is the same with the previous class and not weak, do nothing.
+ // Otherwise, the ho will be triggered.
+ if ( iPreviousGsmClass == iGsmClass && iGsmClass != ESignalClassWeak )
{
- RUBY_DEBUG0( "No change in GSM signal class -> return" );
+ RUBY_DEBUG0( "No change in GSM signal class and it is not weak -> return" );
return;
}
--- a/commsconfig/cscsettingsui/src/cscsettingsuimaincontainer.cpp Tue Sep 14 21:02:05 2010 +0300
+++ b/commsconfig/cscsettingsui/src/cscsettingsuimaincontainer.cpp Wed Sep 15 12:01:56 2010 +0300
@@ -28,6 +28,7 @@
#include <csxhelp/voip.hlp.hrh>
#include <csc.rsg>
#include <aknnotedialog.h>
+#include <aknnotewrappers.h>
#include "cscconstants.h"
#include "cscsettingsui.hrh"
@@ -892,18 +893,39 @@
CleanupStack::PopAndDestroy( string );
CleanupStack::Pop( query );
if ( query->RunLD() )
- {
- // First check if there is a service plugin UID.
- TInt count = iModel.ServicePluginHandler().PluginCount(
- CCSCEngServicePluginHandler::EInitialized );
+ {
+ // Checke whether current service is disabled.
+ TBool disabled = iModel.CCHHandler().IsServiceDisabled( iModel.CurrentSPEntryId() );
+ // The current service is deleted directly if the service is disabled.
+ if ( disabled )
+ {
+ // First check if there is a service plugin UID.
+ TInt count = iModel.ServicePluginHandler().PluginCount(
+ CCSCEngServicePluginHandler::EInitialized );
- TRAPD( err, LaunchCleanupPluginL( iModel.CurrentSPEntryId() ) );
- if ( KErrNone != err )
+ TRAPD( err, LaunchCleanupPluginL( iModel.CurrentSPEntryId() ) );
+ if ( KErrNone != err )
+ {
+ iModel.SettingsHandler().DeleteServiceL(
+ iModel.CurrentSPEntryId() );
+ }
+ isDelete = ETrue;
+ }
+ else
{
- iModel.SettingsHandler().DeleteServiceL(
- iModel.CurrentSPEntryId() );
+ // A note that indicates unable to delete service is shown if the service is enabled.
+ HBufC* string = NULL;
+ string = StringLoader::LoadL(
+ R_QTN_CSC_UNABLE_TO_DELETE_NOTE,
+ iModel.SettingsHandler().ServiceNameL( iModel.CurrentSPEntryId() ) );
+ if ( string )
+ {
+ CleanupStack::PushL( string );
+ CAknInformationNote* note = new ( ELeave ) CAknInformationNote( ETrue );
+ note->ExecuteLD( *string );
+ CleanupStack::PopAndDestroy( string );
+ }
}
- isDelete = ETrue;
}
CSCSETUIDEBUG( "CCSCSettingsUiMainContainer::DeleteServiceL - end" );
--- a/voipplugins/voipadapters/dmvoipadapter/inc/nsmldmvoipadapter.h Tue Sep 14 21:02:05 2010 +0300
+++ b/voipplugins/voipadapters/dmvoipadapter/inc/nsmldmvoipadapter.h Wed Sep 15 12:01:56 2010 +0300
@@ -567,6 +567,13 @@
*/
void VoipChildListL( CBufBase* const aCurrentURISegmentList );
+ /**
+ * Updates given profiles service id.
+ * @since S60 3.2
+ * @param aProfile Profile to update.
+ */
+ void UpdateServiceIdL( CRCSEProfileEntry* aProfile );
+
private: // Data
/**
--- a/voipplugins/voipadapters/dmvoipadapter/src/nsmldmvoipadapter.cpp Tue Sep 14 21:02:05 2010 +0300
+++ b/voipplugins/voipadapters/dmvoipadapter/src/nsmldmvoipadapter.cpp Wed Sep 15 12:01:56 2010 +0300
@@ -4005,6 +4005,7 @@
// Add new VoIP profile.
TUint32 profileID = iCRCSEProfile->AddL( *newProfileEntry );
newProfileEntry->iId = profileID;
+ UpdateServiceIdL( newProfileEntry );
iProfileEntries.AppendL( newProfileEntry );
// Add LUID mapping to first SettingIds of profile.
@@ -4087,7 +4088,7 @@
iCRCSEProfile->UpdateL( iProfileEntries[iProfileID]->
iId, *iProfileEntries[iProfileID] );
CleanupStack::Pop( newAudioCodecEntry );
-
+ UpdateServiceIdL( iProfileEntries[iProfileID] );
// Add LUID mapping to new codecsettings entry.
mappingInfo.Copy( KNSmlDMVoIPPrefix );
TUint val( iProfileEntries[iProfileID]->iId );
@@ -4164,6 +4165,7 @@
iCRCSEProfile->UpdateL( iProfileEntries[iProfileID]->iId,
*iProfileEntries[iProfileID] );
mappingInfo.Copy( KNSmlDMVoIPPrefix );
+ UpdateServiceIdL( iProfileEntries[iProfileID] );
TUint val( iProfileEntries[iProfileID]->iId );
mappingInfo.AppendNumFixedWidthUC( val, EDecimal, 10 );
mappingInfo.Append( KNSmlDMVoIPSeparator );
@@ -5797,5 +5799,25 @@
DBG_PRINT( "CNSmlDmVoIPAdapter::GetSnapUriL - end" );
return status;
}
-
+// ---------------------------------------------------------------------------
+// CNSmlDmVoIPAdapter::UpdateServiceIdL
+// Updates service id to our temp array.
+// ---------------------------------------------------------------------------
+//
+void CNSmlDmVoIPAdapter::UpdateServiceIdL( CRCSEProfileEntry* aProfile )
+ {
+ DBG_PRINT2("CNSmlDmVoIPAdapter::UpdateServiceIdL(): original service id : %d",
+ aProfile->iServiceProviderId);
+
+ CRCSEProfileEntry* profile = CRCSEProfileEntry::NewLC();
+ TRAPD( error, iCRCSEProfile->FindL( aProfile->iId, *profile ) );
+ DBG_PRINT2("CNSmlDmVoIPAdapter::UpdateServiceIdL(): error : %d", error);
+ if ( !error )
+ {
+ DBG_PRINT2("CNSmlDmVoIPAdapter::UpdateServiceIdL(): service id : %d",
+ profile->iServiceProviderId);
+ aProfile->iServiceProviderId = profile->iServiceProviderId;
+ }
+ CleanupStack::PopAndDestroy( profile );
+ }
// End of file.