diff -r f62c3a3d66b8 -r c8b9b0986973 profilesservices/ProfileEngine/ProfileScheduleEventSrc/CProfileChangeEvent.cpp --- a/profilesservices/ProfileEngine/ProfileScheduleEventSrc/CProfileChangeEvent.cpp Fri Feb 19 23:06:10 2010 +0200 +++ b/profilesservices/ProfileEngine/ProfileScheduleEventSrc/CProfileChangeEvent.cpp Fri Mar 12 15:43:47 2010 +0200 @@ -37,6 +37,9 @@ #include #include "ProfilesDebug.h" +#include +#include +#include // CONSTANTS namespace @@ -80,7 +83,8 @@ error = iMutex.OpenGlobal( KProfileMutexName ); } User::LeaveIfError( error ); - iProfileEngine = CreateProfileEngineL( &iFs ); + iProfileEngine = CreateProfileEngineExtendedL( &iFs ); + iCenRep = CRepository::NewL( KCRUidProfileEngine ); iGlobalNote = CAknGlobalNote::NewL(); ReadResourcesL(); } @@ -119,6 +123,7 @@ { delete iNoteText; delete iGlobalNote; + delete iCenRep; if( iProfileEngine ) { iProfileEngine->Release(); @@ -175,8 +180,21 @@ { PRODEBUG( " CProfileChangeEvent:ChangeProfileL" ); + TBool nameEqual = EFalse; + HBufC* previousName = HBufC::NewL( PROFILES_MAX_NAME_LENGTH ); + CleanupStack::PushL( previousName ); + TPtr tempName = previousName->Des(); + User::LeaveIfError( iCenRep->Get( KProEngPreviousActiveName, tempName ) ); + if( tempName.Length() ) + { + nameEqual = tempName.Compare( iProfileEngine->ProfileL( iPreviousId )->ProfileName().Name() ); + } + if( !nameEqual ) + { iProfileEngine->SetActiveProfileL( iPreviousId ); - + } + User::LeaveIfError( iCenRep->Set( KProEngPreviousActiveName, KNullDesC ) ); + CleanupStack::PopAndDestroy(); } // -----------------------------------------------------------------------------