profilesservices/ProfileEngine/WrapperSrc/CProEngEngineImpl.cpp
branchRCL_3
changeset 41 3b67655da2cc
parent 25 3b47783fdf16
child 51 8bda91a87a00
--- a/profilesservices/ProfileEngine/WrapperSrc/CProEngEngineImpl.cpp	Wed Jun 09 10:00:07 2010 +0300
+++ b/profilesservices/ProfileEngine/WrapperSrc/CProEngEngineImpl.cpp	Mon Jun 21 15:59:17 2010 +0300
@@ -27,7 +27,20 @@
 #include    "CProEngProfileImpl.h"
 #include    "CProEngToneHandler.h"
 #include    "CProEngProfileNameArrayImpl.h"
+#include    <ProEngWrapper.rsg>
+#include    <ConeResLoader.h>
+#include 	<startupdomainpskeys.h>
+#include    <StringLoader.h>
+#include    <AknQueryDialog.h>
+#include    <aknnotewrappers.h>
+#include    <barsc.h>  // RResourceFile
+#include    <bautils.h> // BaflUtils
 
+namespace
+	{
+	// The filename of the resource file
+	_LIT( KProEngResourceFileName, "Z:ProEngWrapper.RSC" );
+	}
 // ============================ MEMBER FUNCTIONS ===============================
 
 // -----------------------------------------------------------------------------
@@ -154,7 +167,7 @@
     MProEngProfile* profileWrapper = ActiveProfileLC();
 
     CleanupStack::Pop(); // profileWrapper
-    
+
     return profileWrapper;
     }
 
@@ -190,6 +203,50 @@
 //
 void CProEngEngineImpl::SetActiveProfileL( TInt aId )
     {
+    if ( //  active profile is Off-line
+        ( iProfileEngine->ActiveProfileId() == EProfileOffLineId ) &&
+        // and currently focused profile is not Off-line
+        ( aId != EProfileOffLineId ) )
+        {
+
+        TInt simCStatus( ESimNotPresent );
+        RProperty simStatus;
+        CleanupClosePushL( simStatus );
+		
+        User::LeaveIfError( simStatus.Attach( KPSUidStartup, KPSSimStatus ) );
+        User::LeaveIfError( simStatus.Get( simCStatus ) );
+        CleanupStack::PopAndDestroy();//simStatus
+
+        // SIM card does not exist.
+        if ( simCStatus == ESimNotPresent )
+            {				
+            TParse* fp = new ( ELeave ) TParse();
+            fp->Set( KProEngResourceFileName, &KDC_RESOURCE_FILES_DIR, NULL );
+            TFileName localizedFileName( fp->FullName() );
+            delete fp;
+			
+            RFs fs;
+            User::LeaveIfError( fs.Connect() );
+            CleanupClosePushL( fs );	
+			
+            BaflUtils::NearestLanguageFile( fs, localizedFileName );
+			
+            RConeResourceLoader resourceLoader( *CCoeEnv::Static() );
+            CleanupClosePushL( resourceLoader );
+			
+            TRAP_IGNORE( resourceLoader.OpenL( localizedFileName ) );
+			
+            HBufC* infoNoteText = StringLoader::LoadLC(
+					R_PROFILE_TEXT_INSERT_SIM );
+            CAknInformationNote* note = new ( ELeave ) CAknInformationNote( ETrue );
+            note->ExecuteLD( *infoNoteText );
+			
+            CleanupStack::PopAndDestroy( infoNoteText );
+            CleanupStack::PopAndDestroy( 2 ); //resourceLoader&fs
+			
+            return;
+            }	
+        }
     iProfileEngine->SetActiveProfileL( aId );
     }