Revision: 201035 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 15 Sep 2010 12:01:56 +0300
branchRCL_3
changeset 31 5886d40bb3de
parent 29 755430a7d64b
child 33 2989b291cac7
Revision: 201035 Kit: 201036
callcontinuity/vcc/src/tvccstatefailing.cpp
callcontinuity/vcchotrigger/src/vcchotrigger.cpp
commsconfig/cscsettingsui/src/cscsettingsuimaincontainer.cpp
voipplugins/voipadapters/dmvoipadapter/inc/nsmldmvoipadapter.h
voipplugins/voipadapters/dmvoipadapter/src/nsmldmvoipadapter.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 );
         }
--- 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.