diff -r c2e8c8b73582 -r 532ef74cdfa0 sipplugins/sippsipsettingsui/src/gssipmodel.cpp --- 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( 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( 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(