# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1284541316 -10800 # Node ID 5886d40bb3de0c0c0a4c91a817afd010dcd92c15 # Parent 755430a7d64b3c96496e5b2515c7863a154afdd1 Revision: 201035 Kit: 201036 diff -r 755430a7d64b -r 5886d40bb3de callcontinuity/vcc/src/tvccstatefailing.cpp --- 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 ); } diff -r 755430a7d64b -r 5886d40bb3de callcontinuity/vcchotrigger/src/vcchotrigger.cpp --- 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; } diff -r 755430a7d64b -r 5886d40bb3de commsconfig/cscsettingsui/src/cscsettingsuimaincontainer.cpp --- 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 #include #include +#include #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" ); diff -r 755430a7d64b -r 5886d40bb3de voipplugins/voipadapters/dmvoipadapter/inc/nsmldmvoipadapter.h --- 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 /** diff -r 755430a7d64b -r 5886d40bb3de voipplugins/voipadapters/dmvoipadapter/src/nsmldmvoipadapter.cpp --- 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.