Revision: 201007 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 12 Mar 2010 15:41:33 +0200
branchRCL_3
changeset 10 78867dafe7eb
parent 4 f5911524345e
child 11 bef90b82da71
Revision: 201007 Kit: 201008
imstutils/imconversationview/imcvuiapp/rss/imcvuiapp.rss
imstutils/imconversationview/imcvuiapp/src/cimcvapptextviewcontrol.cpp
imstutils/imconversationview/imcvuiapp/src/cimcvappview.cpp
imstutils/loc/meco.loc
servicewidget/themes/install-themes/install/servicewidget_20021383/group/bld.inf
servicewidget/themes/install-themes/install/servicewidget_20021383/xuikon/37/servicewidget.css
uiservicetab/Group/backup_registration.xml
uiservicetab/Group/bld.inf
uiservicetab/inc/tvimpstconsts.h
uiservicetab/sis/uiservicetab.pkg
uiservicetab/vimpstcmdprocess/src/cvimpstcmdaddfrompbk.cpp
uiservicetab/vimpstcmdprocess/tsrc/vimpstcmdprocess_utest/inc/s_vimpstengin.h
uiservicetab/vimpstcmdprocess/tsrc/vimpstcmdprocess_utest/src/stub/s_vimpstengin.cpp
uiservicetab/vimpstdetailsviewplugin/src/cvimpstdetailscontacthandler.cpp
uiservicetab/vimpstdetailsviewplugin/src/cvimpstdetailsviewmenuhandler.cpp
uiservicetab/vimpstengine/inc/cvimpstengine.h
uiservicetab/vimpstengine/inc/mvimpstengine.h
uiservicetab/vimpstengine/src/cvimpstengine.cpp
uiservicetab/vimpststorage/src/cvimpststorageserviceview.cpp
uiservicetab/vimpstui/rss/vimpstuires.rss
uiservicetab/vimpstui/src/cvimpstuiblockviewcontrol.cpp
uiservicetab/vimpstui/src/cvimpstuidoublelistboxtabviewcontrol.cpp
uiservicetab/vimpstui/src/cvimpstuisearchview.cpp
uiservicetab/vimpstui/src/cvimpstuisinglelistboxtabviewcontrol.cpp
uiservicetab/vimpstui/src/cvimpstuitabbedview.cpp
uiservicetab/vimpstui/src/cvimpstuitermsofusedlg.cpp
--- a/imstutils/imconversationview/imcvuiapp/rss/imcvuiapp.rss	Fri Feb 19 22:41:11 2010 +0200
+++ b/imstutils/imconversationview/imcvuiapp/rss/imcvuiapp.rss	Fri Mar 12 15:41:33 2010 +0200
@@ -454,7 +454,7 @@
                     AVKON_BUTTON_STATE
                         {                        
                         helptxt  = qtn_servtab_toolbar_send;                       
-                        bmpfile = BITMAP_DIR"//imcvuiapp.mif";
+                        bmpfile = BITMAP_DIR"\\imcvuiapp.mif";
                         bmpid = EMbmImcvuiappQgn_indi_tb_msg_send;
                         bmpmask = EMbmImcvuiappQgn_indi_tb_msg_send_mask;                                  
                         extension = r_im_cv_toolbar_indi_tb_msg_send_extension;
@@ -474,7 +474,7 @@
                     AVKON_BUTTON_STATE
                         {                        
                         helptxt  = qtn_servtab_toolbar_smiley;                       
-                        bmpfile = BITMAP_DIR"//imcvuiapp.mif";
+                        bmpfile = BITMAP_DIR"\\imcvuiapp.mif";
                         bmpid = EMbmImcvuiappQgn_indi_tb_smiley;
                         bmpmask = EMbmImcvuiappQgn_indi_tb_smiley_mask;
                         extension = r_im_cv_toolbar_indi_tb_smiley_extension;                        
@@ -494,7 +494,7 @@
                     AVKON_BUTTON_STATE
                         {                        
                         helptxt  = qtn_servtab_toolbar_details;                       
-                        bmpfile = BITMAP_DIR"//imcvuiapp.mif";
+                        bmpfile = BITMAP_DIR"\\imcvuiapp.mif";
                         bmpid = EMbmImcvuiappQgn_indi_tb_business_card;
                         bmpmask = EMbmImcvuiappQgn_indi_tb_business_card_mask;
                         extension = r_im_cv_toolbar_indi_tb_business_card_extension;
--- a/imstutils/imconversationview/imcvuiapp/src/cimcvapptextviewcontrol.cpp	Fri Feb 19 22:41:11 2010 +0200
+++ b/imstutils/imconversationview/imcvuiapp/src/cimcvapptextviewcontrol.cpp	Fri Mar 12 15:41:33 2010 +0200
@@ -187,24 +187,25 @@
     vSbarModel.iThumbSpan = span; // bar length
 
     // Double span
-    if( iScrollBar && 
-        iScrollBar->TypeOfVScrollBar() == CEikScrollBarFrame::EDoubleSpan )
+    if( iScrollBar )
         {
-        TAknDoubleSpanScrollBarModel vDsModel( vSbarModel );
-        iScrollBar->Tile( &vDsModel );
-        iScrollBar->SetVFocusPosToThumbPos( vDsModel.FocusPosition());
+        if ( iScrollBar->TypeOfVScrollBar() == CEikScrollBarFrame::EDoubleSpan )
+            {
+            TAknDoubleSpanScrollBarModel vDsModel( vSbarModel );
+            iScrollBar->Tile( &vDsModel );
+            iScrollBar->SetVFocusPosToThumbPos( vDsModel.FocusPosition());
+            }
+        // ArrowHead
+        else
+            {
+            iScrollBar->Tile( &vSbarModel );
+            iScrollBar->SetVFocusPosToThumbPos( vSbarModel.iThumbPosition );
+            }
+       if( aScrollDraw )
+            {
+            iScrollBar->DrawScrollBarsNow();
+            }
         }
-    // ArrowHead
-    else
-        {
-        iScrollBar->Tile( &vSbarModel );
-        iScrollBar->SetVFocusPosToThumbPos( vSbarModel.iThumbPosition );
-        }
-
-   if( aScrollDraw )
-		{
-	    iScrollBar->DrawScrollBarsNow();
-	   	}
     IM_CV_LOGS(TXT("CIMCVAppTextViewControl::UpdateScrollBarsL()	end") ); 
     }
     
--- a/imstutils/imconversationview/imcvuiapp/src/cimcvappview.cpp	Fri Feb 19 22:41:11 2010 +0200
+++ b/imstutils/imconversationview/imcvuiapp/src/cimcvappview.cpp	Fri Mar 12 15:41:33 2010 +0200
@@ -584,6 +584,8 @@
 		}
 	else
 		{
+		TPtrC activeRecipientId = iEngineFactory->GetActiveItemL ();
+		iActiveEngine->MessageHandler().StartNewConversationL (activeRecipientId);
 		SetStatusPaneIconsL();
 		if (iStatusPane)
 		    {
--- a/imstutils/loc/meco.loc	Fri Feb 19 22:41:11 2010 +0200
+++ b/imstutils/loc/meco.loc	Fri Mar 12 15:41:33 2010 +0200
@@ -1597,4 +1597,9 @@
 //
 #define qtn_servtab_widget_servdesc          "My online service"
 
+// d: Text shown when service tab is not usable after uninstall
+// l: main_pane_empty_t1/opt2
+// r: MCL
+#define qtn_servtab_swupdate_restart								"Please restart phone to use %U service"
+
 //end of file
--- a/servicewidget/themes/install-themes/install/servicewidget_20021383/group/bld.inf	Fri Feb 19 22:41:11 2010 +0200
+++ b/servicewidget/themes/install-themes/install/servicewidget_20021383/group/bld.inf	Fri Mar 12 15:41:33 2010 +0200
@@ -42,8 +42,8 @@
 // Support for S60 localization
 //*****************************
 // export localizable loc files (engineering versions)
-//../loc/servicewidget.loc         MW_LAYER_LOC_EXPORT_PATH(servicewidget.loc)
-../loc/servicewidget.loc           /epoc32/include/platform/app/loc/servicewidget.loc
+../loc/servicewidget.loc         APP_LAYER_LOC_EXPORT_PATH(servicewidget.loc)
+
 
 
 // Support for S60 builds
--- a/servicewidget/themes/install-themes/install/servicewidget_20021383/xuikon/37/servicewidget.css	Fri Feb 19 22:41:11 2010 +0200
+++ b/servicewidget/themes/install-themes/install/servicewidget_20021383/xuikon/37/servicewidget.css	Fri Mar 12 15:41:33 2010 +0200
@@ -18,7 +18,7 @@
 	block-progression: tb;
 	nav-index:auto;
 	background-size:90%;
-  	}
+  }
 
 	
 box#second_inner_box
@@ -98,7 +98,6 @@
 	
 text.first_text
 	{
-	display: block;
 	visibility: visible;
 	position: static;
 	text-align: right;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiservicetab/Group/backup_registration.xml	Fri Mar 12 15:41:33 2010 +0200
@@ -0,0 +1,8 @@
+<?xml version="1.0" standalone="yes"?>
+<backup_registration>
+  <system_backup/>
+  <public_backup>
+   <include_directory name="C:\MeCo" />
+</public_backup>
+  <restore requires_reboot = "no"/>
+</backup_registration>
\ No newline at end of file
--- a/uiservicetab/Group/bld.inf	Fri Feb 19 22:41:11 2010 +0200
+++ b/uiservicetab/Group/bld.inf	Fri Mar 12 15:41:33 2010 +0200
@@ -34,6 +34,7 @@
 ../inc/servicetabmenucommandinfo.hrh   APP_LAYER_PLATFORM_EXPORT_PATH( servicetabmenucommandinfo.hrh)
 // ROM SIS stubs
 ../sis/uiservicetabstub.sis	             /epoc32/data/Z/System/Install/uiservicetabstub.sis
+backup_registration.xml               z:/private/20012423/backup_registration.xml
 // MMP files for project components
 PRJ_MMPFILES
 
--- a/uiservicetab/inc/tvimpstconsts.h	Fri Feb 19 22:41:11 2010 +0200
+++ b/uiservicetab/inc/tvimpstconsts.h	Fri Mar 12 15:41:33 2010 +0200
@@ -195,6 +195,7 @@
 // Name for database.
 _LIT( KStorageExtn, ".db");
 //hardcoded path for the local service db file. 
-_LIT(KDbPath, "c:\\");
+_LIT(KDbPath, "c:\\MeCo\\");
+
 #endif      // TVIMPSTCONSTS_H
 
--- a/uiservicetab/sis/uiservicetab.pkg	Fri Feb 19 22:41:11 2010 +0200
+++ b/uiservicetab/sis/uiservicetab.pkg	Fri Mar 12 15:41:33 2010 +0200
@@ -41,6 +41,8 @@
 "/EPOC32/DATA/Z/Resource/vimpstuires.rsc"				-"!:/Resource/vimpstuires.rsc"
 "/EPOC32/DATA/Z/Resource/Plugins/vimpstui.rsc"				-"!:/Resource/Plugins/vimpstui.rsc"
 "/EPOC32/DATA/Z/Resource/Plugins/vimpstdetailsviewplugin.rsc"				-"!:/Resource/Plugins/vimpstdetailsviewplugin.rsc"
+; Backup & restore
+"../group/backup_registration.xml"       -"!:/private/20012423/backup_registration.xml"
 
 "/EPOC32/DATA/Z/Resource/apps/vimpstui.mif"								-"!:/Resource/apps/vimpstui.mif"
 
--- a/uiservicetab/vimpstcmdprocess/src/cvimpstcmdaddfrompbk.cpp	Fri Feb 19 22:41:11 2010 +0200
+++ b/uiservicetab/vimpstcmdprocess/src/cvimpstcmdaddfrompbk.cpp	Fri Mar 12 15:41:33 2010 +0200
@@ -178,35 +178,37 @@
         const MVPbkFieldType* fieldType = field.BestMatchingFieldType();
         
         //find the relevant voip fields/email id fileds.
-        if ( fieldType &&  
-            ( fieldType->FieldTypeResId() == R_VPBK_FIELD_TYPE_VOIPHOME ) || 
+        if ( fieldType )
+            {  
+            if ( fieldType->FieldTypeResId() == R_VPBK_FIELD_TYPE_VOIPHOME ) || 
             ( fieldType->FieldTypeResId() == R_VPBK_FIELD_TYPE_VOIPWORK ) || 
             ( fieldType->FieldTypeResId() == R_VPBK_FIELD_TYPE_VOIPGEN ) ||
             ( fieldType->FieldTypeResId() == R_VPBK_FIELD_TYPE_SIP )||
             ( fieldType->FieldTypeResId() == R_VPBK_FIELD_TYPE_EMAILWORK ) ||
             ( fieldType->FieldTypeResId() == R_VPBK_FIELD_TYPE_EMAILHOME ) ||
             ( fieldType->FieldTypeResId() == R_VPBK_FIELD_TYPE_EMAILGEN ))
-            {
-            CHAT_DP_FUNC_ENTER("[CVIMPSTStorageContact::GetServiceFieldsL]  ->  GetServiceFieldsL - Found");
-            values[0] = MVPbkContactFieldTextData::Cast( 
-                    iStoreContact.Fields().FieldAt( index ).
-                    FieldData() ).Text().AllocLC();
-            if ( values[0] )
                 {
-                // Check for prefix and remove if found
-                TInt prefixLocation = values[0]->Locate( ':' );
-                if ( KErrNotFound != prefixLocation )
+                CHAT_DP_FUNC_ENTER("[CVIMPSTStorageContact::GetServiceFieldsL]  ->  GetServiceFieldsL - Found");
+                values[0] = MVPbkContactFieldTextData::Cast( 
+                iStoreContact.Fields().FieldAt( index ).
+                FieldData() ).Text().AllocLC();
+                if ( values[0] )
                     {
-                    CHAT_DP_FUNC_ENTER("[CVIMPSTStorageContact::GetServiceFieldsL]  ->  Prefix found -> remove");
-                    aArrayForServiceFields.AppendL( values[0]->Des().Mid(
+                    // Check for prefix and remove if found
+                    TInt prefixLocation = values[0]->Locate( ':' );
+                    if ( KErrNotFound != prefixLocation )
+                        {
+                        CHAT_DP_FUNC_ENTER("[CVIMPSTStorageContact::GetServiceFieldsL]  ->  Prefix found -> remove");
+                        aArrayForServiceFields.AppendL( values[0]->Des().Mid(
                         prefixLocation+1 ) );
+                        }
+                    else
+                        {
+                        CHAT_DP_FUNC_ENTER("[CVIMPSTStorageContact::GetServiceFieldsL]  ->  No Prefix found");
+                        aArrayForServiceFields.AppendL( values[0]->Des() );    
+                        }
+                    CleanupStack::PopAndDestroy( values[0] );
                     }
-                else
-                    {
-                    CHAT_DP_FUNC_ENTER("[CVIMPSTStorageContact::GetServiceFieldsL]  ->  No Prefix found");
-                    aArrayForServiceFields.AppendL( values[0]->Des() );    
-                    }
-                CleanupStack::PopAndDestroy( values[0] );
                 }
             }
         }   
--- a/uiservicetab/vimpstcmdprocess/tsrc/vimpstcmdprocess_utest/inc/s_vimpstengin.h	Fri Feb 19 22:41:11 2010 +0200
+++ b/uiservicetab/vimpstcmdprocess/tsrc/vimpstcmdprocess_utest/inc/s_vimpstengin.h	Fri Mar 12 15:41:33 2010 +0200
@@ -75,7 +75,10 @@
             */
             const TDesC& ServiceName() const ;
             
-        
+            /*
+             * See MVIMPSTEngine
+             */
+            TBool IsUnInstalled();
             /**
             * See MVIMPSTEngine
             * 
--- a/uiservicetab/vimpstcmdprocess/tsrc/vimpstcmdprocess_utest/src/stub/s_vimpstengin.cpp	Fri Feb 19 22:41:11 2010 +0200
+++ b/uiservicetab/vimpstcmdprocess/tsrc/vimpstcmdprocess_utest/src/stub/s_vimpstengin.cpp	Fri Mar 12 15:41:33 2010 +0200
@@ -372,5 +372,11 @@
      {
      
      }
+ 
+ TBool vimpstengine_stub::IsUnInstalled()
+     {
+     return EFalse;
+     }
+ 
      
 //end of file
--- a/uiservicetab/vimpstdetailsviewplugin/src/cvimpstdetailscontacthandler.cpp	Fri Feb 19 22:41:11 2010 +0200
+++ b/uiservicetab/vimpstdetailsviewplugin/src/cvimpstdetailscontacthandler.cpp	Fri Mar 12 15:41:33 2010 +0200
@@ -151,9 +151,12 @@
 		{
 		// launched from other than service tab	
 		// need to open service store
-	    TPtr serviceStoreNamePtr = iServiceStoreUri->Des(); 
-	    uriArray->AppendL( TVPbkContactStoreUriPtr( serviceStoreNamePtr ) );
-		TRACED( T_LIT("ServiceStoreUriL() - storename3: %S"), &serviceStoreNamePtr );
+		 if ( iServiceStoreUri )
+            {
+            TPtr serviceStoreNamePtr = iServiceStoreUri->Des(); 
+            uriArray->AppendL( TVPbkContactStoreUriPtr( serviceStoreNamePtr ) );
+            TRACED( T_LIT("ServiceStoreUriL() - storename3: %S"), &serviceStoreNamePtr );
+            }
 		}
 
 	HBufC& contactData = aParameter.ContactDataL();
@@ -526,14 +529,15 @@
 	if (iLinks && iCurrentLink)
 		{
 		index = iLinks->Find(*iCurrentLink) + 1;
-		}
-	if ( index >= iLinks->Count() )
-		{
-		TRACED( T_LIT("CVIMPSTDetailsContactHandler:: VPbkSingleContactOperationFailed calling HandleContactUnavailableL start") );
-		TRAP_IGNORE( iObserver.HandleContactUnavailableL() );
-		TRACED( T_LIT("CVIMPSTDetailsContactHandler:: VPbkSingleContactOperationFailed calling HandleContactUnavailableL end ") );
-		return;
-		}
+		
+		if ( index >= iLinks->Count() )
+			{
+			TRACED( T_LIT("CVIMPSTDetailsContactHandler:: VPbkSingleContactOperationFailed calling HandleContactUnavailableL start") );
+			TRAP_IGNORE( iObserver.HandleContactUnavailableL() );
+			TRACED( T_LIT("CVIMPSTDetailsContactHandler:: VPbkSingleContactOperationFailed calling HandleContactUnavailableL end ") );
+			return;
+			}
+	  }
 	IssueRequest();
 	TRACED( T_LIT("CVIMPSTDetailsContactHandler:: VPbkSingleContactOperationFailed end ") );
 	}
--- a/uiservicetab/vimpstdetailsviewplugin/src/cvimpstdetailsviewmenuhandler.cpp	Fri Feb 19 22:41:11 2010 +0200
+++ b/uiservicetab/vimpstdetailsviewplugin/src/cvimpstdetailsviewmenuhandler.cpp	Fri Mar 12 15:41:33 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-
+ 
 #include "cvimpstdetailsviewmenuhandler.h"
 
 #include "cvimpstdetailsviewlistboxmodel.h"
@@ -84,21 +84,27 @@
 void CVIMPSTDetailsViewMenuHandler::DynInitMenuPaneL(TInt aResourceId,
 												CEikMenuPane* aMenuPane )
 	{
-	if (iAiwServiceHandler && iAiwServiceHandler->HandleSubmenuL(*aMenuPane))
-	    {
-	    return;
-	    }
+	if (iAiwServiceHandler)
+		{
+		if ( iAiwServiceHandler->HandleSubmenuL(*aMenuPane))
+            {
+            return;
+            }
+	  }
 	switch (aResourceId)
 		{
 		case R_VIMPSTDETAILSVIEW_MENUPANE:
 			{
 			TInt pos = 0;			
-			if ( iAiwServiceHandler->IsAiwMenu(aResourceId))
-			    {
-			    iAiwServiceHandler->InitializeMenuPaneL( *aMenuPane,
-			            aResourceId, ECCAppDetailsViewAiwBaseCmd,
-			            iAiwServiceHandler->InParamListL() );			           
-			    } 
+ 			if ( iAiwServiceHandler )
+				{
+				if ( iAiwServiceHandler->IsAiwMenu(aResourceId))
+				    {
+				    iAiwServiceHandler->InitializeMenuPaneL( *aMenuPane,
+				            aResourceId, ECCAppDetailsViewAiwBaseCmd,
+				            iAiwServiceHandler->InParamListL() );			           
+				    }
+				} 
 			if ( aMenuPane->MenuItemExists(ECCAppDetailsViewSetTopContactCmd, pos)  )
 				{
 				aMenuPane->SetItemDimmed(ECCAppDetailsViewSetTopContactCmd, ETrue );	
--- a/uiservicetab/vimpstengine/inc/cvimpstengine.h	Fri Feb 19 22:41:11 2010 +0200
+++ b/uiservicetab/vimpstengine/inc/cvimpstengine.h	Fri Mar 12 15:41:33 2010 +0200
@@ -133,6 +133,11 @@
 		*/
 		void ContactStoreIdL( 
 					TDes& aContactStoreId ) const ;
+		
+		/*
+		 * See MVIMPSTEngine
+		 */
+		TBool IsUnInstalled( );
 
 		/**
 		* See MVIMPSTEngine
@@ -410,6 +415,10 @@
 	
 		//block list observer to notify the blocked list has been fetched.
 		MVIMPSTEngineBlockedListFetchEventObserver* iBlockListObs;
+		
+		// UnInstall Flag; Set to true during engine construction
+		// if engine fails to find ximp object implementation
+		TBool iUnInstall;
    
 	};
 
--- a/uiservicetab/vimpstengine/inc/mvimpstengine.h	Fri Feb 19 22:41:11 2010 +0200
+++ b/uiservicetab/vimpstengine/inc/mvimpstengine.h	Fri Mar 12 15:41:33 2010 +0200
@@ -255,6 +255,11 @@
 		   */
 		   virtual void RegisterBlockedListObserver(
 		   			MVIMPSTEngineBlockedListFetchEventObserver* aOb) = 0;  
+		   
+		   /*
+		    * Returns whether ximp implementation was uninstalled
+		    */
+		   virtual TBool IsUnInstalled()=0;
 			/**
 			* Destructor
 			*/		
--- 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
--- a/uiservicetab/vimpststorage/src/cvimpststorageserviceview.cpp	Fri Feb 19 22:41:11 2010 +0200
+++ b/uiservicetab/vimpststorage/src/cvimpststorageserviceview.cpp	Fri Mar 12 15:41:33 2010 +0200
@@ -547,10 +547,16 @@
 		}
 	else if( aUserId.Compare( iOwnContact->UserId() ) != 0 )
 		{
+	    _LIT (KNullWithSpace, " ");
 		TRACE( T_LIT("CVIMPSTStorageServiceView::SetOwnUserIdL iOwnContact was existing") );
+	    if(KNullWithSpace ().Compare(iOwnContact->UserId())!=0)
+	        { 
+	        iVPbkContactStore->RemoveAllVPbkContactsL(); // if user id is changed remove all contacts 	
+	        RemoveAllCacheContactsL();
+	        }
 		iOwnContact->SetUserIdL( aUserId );
 		iOwnContact->SetAvatarContentL(KNullDesC8,*iVPbkContactStore );
-		iVPbkContactStore->RemoveAllVPbkContactsL(); // if user id is changed remove all contacts 	
+
 		NotifyAllObserversL( TVIMPSTEnums::EStorageEventOwnUserChanged,NULL,iOwnContact,0 );
 		TRACE( T_LIT("CVIMPSTStorageServiceView::SetOwnUserIdL NotifyAllObserversL delivered") );
 		}
--- a/uiservicetab/vimpstui/rss/vimpstuires.rss	Fri Feb 19 22:41:11 2010 +0200
+++ b/uiservicetab/vimpstui/rss/vimpstuires.rss	Fri Mar 12 15:41:33 2010 +0200
@@ -257,6 +257,8 @@
 		};
 	}
 
+// Empty Tabbed View Message
+RESOURCE TBUF r_qtn_servtab_swupdate_restart { buf = qtn_servtab_swupdate_restart; }
 // these are used with  double line listbox
 RESOURCE TBUF r_qtn_servtab_login_list_item       { buf = qtn_servtab_login_list_item; }
 RESOURCE TBUF r_qtn_servtab_logging_list_item        { buf = qtn_servtab_logging_list_item; }
--- a/uiservicetab/vimpstui/src/cvimpstuiblockviewcontrol.cpp	Fri Feb 19 22:41:11 2010 +0200
+++ b/uiservicetab/vimpstui/src/cvimpstuiblockviewcontrol.cpp	Fri Mar 12 15:41:33 2010 +0200
@@ -359,7 +359,10 @@
 	        return EKeyWasConsumed;         
 	        }
 	TKeyResponse result = EKeyWasNotConsumed;
-	iCurrentItemIndex = iListBox->CurrentItemIndex();
+	if (iListBox)
+		{
+		iCurrentItemIndex = iListBox->CurrentItemIndex();
+		}
     // Offer key event first to the key event handler
     if ( (&iKeyEventHandler ) && iKeyEventHandler.Pbk2ProcessKeyEventL
             ( aKeyEvent, aType ) )
--- a/uiservicetab/vimpstui/src/cvimpstuidoublelistboxtabviewcontrol.cpp	Fri Feb 19 22:41:11 2010 +0200
+++ b/uiservicetab/vimpstui/src/cvimpstuidoublelistboxtabviewcontrol.cpp	Fri Mar 12 15:41:33 2010 +0200
@@ -106,23 +106,34 @@
         (CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto);
 	// set marquee on
     iListBox->ItemDrawer()->FormattedCellData()->EnableMarqueeL( ETrue );
-    CVIMPSTUiDoubleListboxArray* friendsArray = CVIMPSTUiDoubleListboxArray::NewL( iArrayProcess,
-                                                          iListBox->ItemDrawer()->ColumnData(),
-                                                          *iListBox ,
-                                                          *this);
-    // now set the array
-    iListBox->Model()->SetItemTextArray(friendsArray );
-    
-    iListBox->Model()->SetOwnershipType(ELbmOwnsItemArray);
-    // if there is any contact other than owndata , show findpane
-    if( iListBox->Model()->NumberOfItems() > KMinContact) 													
-        { 											 	 
-        // Create find-pane
-        ActivateFindPaneL();
+    // If engine is uninstalled, do not construct the list view.
+    // Display empty message
+    if (iEngine.IsUnInstalled())
+        {
+        SetListEmptyTextL( R_QTN_SERVTAB_SWUPDATE_RESTART );
+        return;
         }
-    LoadBitmapsL();
-   
-    SetCbaLockL( EFalse );
+    else
+        {
+    // Construction of the listbox view. Engine is not uninstalled.
+        CVIMPSTUiDoubleListboxArray* friendsArray =
+                CVIMPSTUiDoubleListboxArray::NewL(iArrayProcess,
+                        iListBox->ItemDrawer()->ColumnData(), *iListBox,
+                        *this);
+        // now set the array
+        iListBox->Model()->SetItemTextArray(friendsArray);
+
+        iListBox->Model()->SetOwnershipType(ELbmOwnsItemArray);
+        // if there is any contact other than owndata , show findpane
+        if (iListBox->Model()->NumberOfItems() > KMinContact)
+            {
+            // Create find-pane
+            ActivateFindPaneL();
+            }
+        LoadBitmapsL();
+        SetCbaLockL(EFalse);
+        }
+
     }
 // --------------------------------------------------------------------------
 // CVIMPSTUiDoubleListBoxTabViewControl::NewL
@@ -596,9 +607,16 @@
 //
 void CVIMPSTUiDoubleListBoxTabViewControl::SetListEmptyTextL(TInt aResourceId)
     {
-    HBufC* emptyText = iCoeEnv->AllocReadResourceLC(aResourceId);
-    iListBox->View()->SetListEmptyTextL(*emptyText);
-    CleanupStack::PopAndDestroy(emptyText);
+    HBufC* msgText;
+    TRACE( T_LIT("CVIMPSTUiDoubleListBoxTabViewControl:SetListEmptyTextL:Start"));  
+    // Get Service Name from Engine , load string from resource and display.
+    // This text is shown to tell the user to restart phone to get the service again.
+    TPtrC serviceNamePtr(iEngine.ServiceName());
+    msgText = StringLoader::LoadLC(aResourceId, serviceNamePtr, iCoeEnv);
+    iListBox->View()->SetListEmptyTextL(*msgText);
+    TRACE( T_LIT("Display Text %S"), msgText );
+    TRACE( T_LIT("CVIMPSTUiDoubleListBoxTabViewControl:SetListEmptyTextL:End"));
+    CleanupStack::PopAndDestroy(msgText);
     }
 
 // ---------------------------------------------------------
--- a/uiservicetab/vimpstui/src/cvimpstuisearchview.cpp	Fri Feb 19 22:41:11 2010 +0200
+++ b/uiservicetab/vimpstui/src/cvimpstuisearchview.cpp	Fri Mar 12 15:41:33 2010 +0200
@@ -570,10 +570,11 @@
 	
     CVIMPSTUiSearchQueryDialog* querydialog = CVIMPSTUiSearchQueryDialog::NewL( fieldArray );
    
-    querydialog->ExecuteLD();
+ 
    
     if (querydialog)
         {
+        querydialog->ExecuteLD();
         iEndKeyPressed = querydialog->IsEndKeyPressed();
         }
     
@@ -598,13 +599,15 @@
 	
 		iExtensionService.SetSearchStringL( searchStrPtr );
 		UpdateNaviPaneTextL();
-		if ( iContainer->ListBox()->Model()->NumberOfItems() > 0 )
-	        {
-	        iContainer->ClearListBoxContents();  
-	        }
-	    // set the empty string blank    
-		iContainer->SetSearchingTextToListboxL();   
-		
+		if ( iContainer)
+			{
+			if ( iContainer->ListBox()->Model()->NumberOfItems() > 0 )
+		        {
+		        iContainer->ClearListBoxContents();  
+		        }
+		    // set the empty string blank    
+			iContainer->SetSearchingTextToListboxL();   
+		  }
 		HBufC* searchWaitNoteText = StringLoader::LoadLC( R_QTN_SERVTAB_SEARCHING , searchStrPtr, CCoeEnv::Static() );
 		iWaitNote = CVIMPSTUtilsWaitNote::ShowWaitNoteL( *searchWaitNoteText, EFalse , ETrue  );  
     	CleanupStack::PopAndDestroy(searchWaitNoteText); 
--- a/uiservicetab/vimpstui/src/cvimpstuisinglelistboxtabviewcontrol.cpp	Fri Feb 19 22:41:11 2010 +0200
+++ b/uiservicetab/vimpstui/src/cvimpstuisinglelistboxtabviewcontrol.cpp	Fri Mar 12 15:41:33 2010 +0200
@@ -31,7 +31,7 @@
 #include "mvimpstengine.h"
 #include "cvimpststoragemanagerfactory.h"
 #include "mvimpststorageserviceview.h"
-
+#include "vimpstdebugtrace.h"
 // system include
 #include 	<aknenv.h>
 #include	<aknlists.h>
@@ -113,22 +113,34 @@
         (CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto);
 	// set marquee on
     iListBox->ItemDrawer()->ColumnData()->EnableMarqueeL( ETrue );
-    CVIMPSTUiSingleListboxArray* friendsArray = CVIMPSTUiSingleListboxArray::NewL( iArrayProcess,
-                                                          iListBox->ItemDrawer()->ColumnData(),
-                                                          *iListBox );
-    // now set the array
-    iListBox->Model()->SetItemTextArray(friendsArray );
+    // If engine is uninstalled, do not construct the list view.
+    // Display empty message
+    if (iEngine.IsUnInstalled())
+        {
+        SetListEmptyTextL( R_QTN_SERVTAB_SWUPDATE_RESTART );
+        return;
+        }
+    else
+        {
+    // Construction of the listbox view. Engine is not uninstalled.    
+        CVIMPSTUiSingleListboxArray* friendsArray =
+                CVIMPSTUiSingleListboxArray::NewL(iArrayProcess,
+                        iListBox->ItemDrawer()->ColumnData(), *iListBox);
+        // now set the array
+        iListBox->Model()->SetItemTextArray(friendsArray);
+
+        iListBox->Model()->SetOwnershipType(ELbmOwnsItemArray);
+        // if there is any contact other than owndata , show findpane
+        if (iListBox->Model()->NumberOfItems() > KMinContact)
+            {
+            // Create find-pane
+            ActivateFindPaneL();
+            }
+        LoadBitmapsL();
+        SetCbaLockL(EFalse);
+        }
+
     
-    iListBox->Model()->SetOwnershipType(ELbmOwnsItemArray);
-    // if there is any contact other than owndata , show findpane
-    if( iListBox->Model()->NumberOfItems() > KMinContact) 													
-        { 											 	 
-        // Create find-pane
-        ActivateFindPaneL();
-        }
-    LoadBitmapsL();
-    
-    SetCbaLockL( EFalse );
     }
 
 
@@ -504,9 +516,16 @@
 //
 void CVIMPSTUiSingleListBoxTabViewControl::SetListEmptyTextL(TInt aResourceId)
     {
-    HBufC* emptyText = iCoeEnv->AllocReadResourceLC(aResourceId);
-    iListBox->View()->SetListEmptyTextL(*emptyText);
-    CleanupStack::PopAndDestroy(emptyText);
+    HBufC* msgText;
+    TRACE( T_LIT("CVIMPSTUiSingleListBoxTabViewControl:SetListEmptyTextL:Start"));    
+    // Get Service Name from Engine , load string from resource and display.
+    // This text is shown to tell the user to restart phone to get the service again.
+    TPtrC serviceNamePtr(iEngine.ServiceName());
+    msgText = StringLoader::LoadLC(aResourceId, serviceNamePtr, iCoeEnv);
+    iListBox->View()->SetListEmptyTextL(*msgText);
+    TRACE( T_LIT("Display Text %S"), msgText );
+    TRACE( T_LIT("CVIMPSTUiSingleListBoxTabViewControl:SetListEmptyTextL:End"));
+    CleanupStack::PopAndDestroy(msgText);
     }
 
 // ---------------------------------------------------------
--- a/uiservicetab/vimpstui/src/cvimpstuitabbedview.cpp	Fri Feb 19 22:41:11 2010 +0200
+++ b/uiservicetab/vimpstui/src/cvimpstuitabbedview.cpp	Fri Mar 12 15:41:33 2010 +0200
@@ -336,6 +336,12 @@
 //
 void CVIMPSTUiTabbedView::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
     {    
+    
+    if (iEngine.IsUnInstalled())
+        {
+        // if engine is uninstalled, do not initiate the menu pane.
+        return;
+        }
     // AIW knows its own submenu hooks, so we can return from 
     // here if AIW handled this.
     ReInitializeServiceHandlerL();
@@ -773,14 +779,16 @@
         return;
         }
     ReInitializeServiceHandlerL();
-    TInt serviceCommandId =iServiceHandler->ServiceCmdByMenuCmd(aCommand);
-
-    if ( iContainer && serviceCommandId == KAiwCmdCall )
-        {
-       	MakeVoipCallL();
-        return;
-        }	
-    
+    if ( iServiceHandler )
+    		{
+    		TInt serviceCommandId =iServiceHandler->ServiceCmdByMenuCmd(aCommand);
+				
+		    if ( iContainer && serviceCommandId == KAiwCmdCall )
+		        {
+		       	MakeVoipCallL();
+		        return;
+		        }	
+    	  }
     if( iContainer )
         {
         iContainer->SetClrFindPaneFlag(ETrue);
@@ -1052,7 +1060,17 @@
         NotifyViewActivationL( iView.Id() );
         }
     
-    iView.Cba()->SetCommandSetL( R_IM_CONTACTS_TABBED_VIEW_SOFTKEYS );
+    if (iEngine.IsUnInstalled())
+        {
+    // engine is uninstalled, disable left softkey i.e options and provide only exit.
+        iView.Cba()->SetCommandSetL(R_AVKON_SOFTKEYS_EXIT);
+        }
+    else
+        {
+    // engine is constructed completely, provide tabbed view softkeys.
+        iView.Cba()->SetCommandSetL(R_IM_CONTACTS_TABBED_VIEW_SOFTKEYS);
+        }
+    
 	
 	ReadAndSetOwnUserIdL();
 
--- a/uiservicetab/vimpstui/src/cvimpstuitermsofusedlg.cpp	Fri Feb 19 22:41:11 2010 +0200
+++ b/uiservicetab/vimpstui/src/cvimpstuitermsofusedlg.cpp	Fri Mar 12 15:41:33 2010 +0200
@@ -428,14 +428,18 @@
         charFormatMask.SetAttrib( EAttFontHeight );
         
         //can't leave here
-        TRAPD(err, iParaFormatLayer->SetL( &paraFormat, paraFormatMask );
-                   iCharFormatLayer->SetL( charFormat, charFormatMask );
-                   iEditor->HandleTextChangedL(); );
-        if( err != KErrNone )
-            {
-            CActiveScheduler::Current()->Error( err );
-            }       
-
+        if( iEditor )
+        	 {
+	         TRAPD(err, iParaFormatLayer->SetL( &paraFormat, paraFormatMask );
+	                   iCharFormatLayer->SetL( charFormat, charFormatMask );
+	                   iEditor->HandleTextChangedL(); );
+					 
+        
+		        if( err != KErrNone )
+		            {
+		            CActiveScheduler::Current()->Error( err );
+		            }       
+		     }
         TRAP_IGNORE(iEditor->MoveDisplayL(TCursorPosition::EFPageDown) );
         TRAP_IGNORE(iEditor->MoveDisplayL(TCursorPosition::EFPageDown) );