uiservicetab/vimpstengine/src/cvimpstengine.cpp
branchRCL_3
changeset 6 78867dafe7eb
parent 0 5e5d6b214f4f
child 7 bef90b82da71
--- a/uiservicetab/vimpstengine/src/cvimpstengine.cpp	Fri Feb 19 22:41:11 2010 +0200
+++ b/uiservicetab/vimpstengine/src/cvimpstengine.cpp	Fri Mar 12 15:41:33 2010 +0200
@@ -150,19 +150,27 @@
 	TBool imSupported = IsSubServiceSupportedInternal(TVIMPSTEnums::EIM);
 	
 	requireXimp |= presenceSupported;
-	requireXimp |= imSupported;
-	
+    requireXimp |= imSupported;
+
+    TPtr serviceIdPtr(iServiceName->Des());
+    iTableFetcher.GetServiceNameL(aServiceId, serviceIdPtr);
+
 	//if either of Presence/IM Subservice supported then we need
 	//to bind to XIMP context. 
 	if ( KErrNotFound != ximpAdapterUid && requireXimp )
 	    {
-	    iSessionCntxtObserver = CVIMPSTEngineSessionCntxtObserver::NewL(aServiceId);
+        TRAPD( err, (iSessionCntxtObserver = CVIMPSTEngineSessionCntxtObserver::NewL(aServiceId)));
+        TRACE( T_LIT("ConstructL() -1st Creating session context observer: %d"), err );	
+        if (KErrNotFound == err)
+            {
+						TRACE( T_LIT("Ximp impl not found. Calling Logout") );            	
+            iUnInstall = ETrue;
+            LogoutL();
+            TRACE( T_LIT("Logout Called on account of uninstall") );
+            return;
+            }
 	    }
 	
-	TPtr serviceIdPtr( iServiceName->Des() );    	
-	iTableFetcher.GetServiceNameL(aServiceId, serviceIdPtr);
-	
-	
 	// iterate the service array
     for ( TInt index = TVIMPSTEnums::EVoip; index < TVIMPSTEnums::ELast ; index++ )        
         {
@@ -234,7 +242,7 @@
 iServiceId(aServiceId),
 iTableFetcher(aTableFetcher)								
 	{
-		
+    iUnInstall = EFalse;
 	}
 
 // ---------------------------------------------------------
@@ -1394,6 +1402,15 @@
         {        
         iSessionCntxtObserver->ServerUnBindL(ETrue); 
         }
+    }
 
+// -------------------------------------------------------
+// CVIMPSTEngine :: IsUnInstalled
+// For Description see MVIMPSTEngine
+// -------------------------------------------------------
+//
+TBool CVIMPSTEngine::IsUnInstalled( )
+    {
+    return iUnInstall;
     }
 //  End of File