sipplugins/sippsipsettingsui/src/gssipmodel.cpp
branchRCL_3
changeset 14 532ef74cdfa0
parent 9 1e1cc61f56c3
child 16 43c4dec3cb1f
--- a/sipplugins/sippsipsettingsui/src/gssipmodel.cpp	Wed Mar 31 22:10:27 2010 +0300
+++ b/sipplugins/sippsipsettingsui/src/gssipmodel.cpp	Wed Apr 14 16:19:40 2010 +0300
@@ -47,6 +47,7 @@
     {
     __GSLOGSTRING("CGSSIPModel::CGSSIPModel" )
     iQuitAfterSave = EFalse;
+    iIsRegistering = EFalse;
     }
 
 // -----------------------------------------------------------------------------
@@ -123,7 +124,7 @@
     CSIPManagedProfile* profile = 
         static_cast<CSIPManagedProfile*>( iProfiles->At( aIndex ) );
 
-    if ( iEngine->IsInUseL( *profile ) )
+    if ( iEngine->IsInUseL( *profile ) || iIsRegistering )
         {
         HBufC* errorTxt = StringLoader::LoadLC( R_QTN_SIP_ERROR_PROFILE_USED );
         CAknErrorNote* note = new ( ELeave ) CAknErrorNote( ETrue );
@@ -432,6 +433,12 @@
     {    
     __GSLOGSTRING("CGSSIPModel::ErrorInRegistration" )
     __GSLOGSTRING1("CGSSIPModel::ErrorInRegistration aIndex: %d", aIndex)
+    
+    if(iEngine->LastRegistrationError( 
+            *( iProfiles->At( aIndex ) ) ) != KErrNone)
+    	{
+            iIsRegistering = EFalse;
+    	}
     return ( iEngine->LastRegistrationError( 
         *( iProfiles->At( aIndex ) ) ) != KErrNone );
     }
@@ -457,8 +464,11 @@
             break;
         case EProfileRegistered:						
         case EProfileDeregistered:
+        	{
+            iIsRegistering = EFalse;
             ProfileRegistrationStatusChanged( aSIPProfileId );
             break;
+        	}
         case EProfileDestroyed:
             ProfileDestroyed( aSIPProfileId );
             break;
@@ -750,6 +760,8 @@
             {
             CSIPManagedProfile* profile = 
                 static_cast<CSIPManagedProfile*>( profilePointerArray[j] );
+             iIsRegistering = EFalse;
+            
             iProfiles->AppendL( profile );
             profilePointerArray.Remove( j );
             }                    
@@ -942,6 +954,10 @@
         }
     
     GSSIPProfileUtil::CopyProfileAttributesL( profile, iProfileData );
+    if(iProfileData.iRegistrationMode == EGSAlwaysOn)
+    	{
+        iIsRegistering = ETrue;
+    	}
     GSSIPProfileUtil::CopyServerAttributesL( 
         profile, KSIPOutboundProxy, iProfileData.iProxy );
     GSSIPProfileUtil::CopyServerAttributesL(