profilesservices/ProfileEngine/ProfileScheduleEventSrc/CProfileChangeEvent.cpp
branchRCL_3
changeset 10 c8b9b0986973
parent 8 f62c3a3d66b8
child 11 23553eb4e470
--- 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    <ProfileEngineConstants.h>
 #include    "ProfilesDebug.h"
 
+#include    <MProfileEngineExtended.h>
+#include    <MProfileExtended.h>
+#include    <MProfileName.h>
 
 // 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();
     }
 
 // -----------------------------------------------------------------------------