csxhelp/src/CSXHAppUi.cpp
branchRCL_3
changeset 17 12f60d9a73b3
parent 16 0d1adf67ec1b
child 18 cbffe13eac63
--- a/csxhelp/src/CSXHAppUi.cpp	Thu Aug 19 09:42:56 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,565 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  CCSXHAppUi class definition
-*
-*/
-
-
-#include "CSXHAppUi.h"
-#include "CSXHGenericView.h"
-#include "CSXHHtmlTopicView.h"
-#include "CSXHLegacyTopicView.h"
-#include "CsHelp.hrh"
-#include <cshelp.rsg>
-#include "CSXHAppUi.h"
-#include "CSXHDocument.h"
-
-#include "CSXHHelpDataBase.h"
-#include "CSXHViewIDs.h"
-
-#include <avkon.hrh>
-#include <utf.h>
-#include <aknnotewrappers.h> 
-#include <AknGlobalNote.h>
-#include <akninputblock.h>
-#include <hlplch.h>
-
-#include "csxhconstants.h"
-
-#ifdef FF_HELP_TUTORIAL_MERGE
-#include <AiwServiceHandler.h>
-
-#if defined(_DEBUG) && defined(__WINS__)
-#include <f32file.h>
-#include <flogger.h>
-_LIT(KLogDir, "csxh");
-_LIT(KLogFile, "csxh.txt");
-inline void FPrint(const TRefByValue<const TDesC> aFmt, ...)
-    {
-    VA_LIST list;
-    VA_START(list,aFmt);
-    RFileLogger::WriteFormat(KLogDir, KLogFile, EFileLoggingModeAppend, aFmt, list);
-    }
-#define FLOG(a) {FPrint(a);}
-#define FLOGF   FPrint
-#else //_DEBUG
-#define FLOG(a)
-#define FLOGF
-#endif //_DEBUG
-#endif // FF_HELP_TUTORIAL_MERGE
-CCSXHAppUi* CCSXHAppUi::iInstance = NULL;
-
-// ConstructL is called by the application framework
-void CCSXHAppUi::ConstructL()
-    {
-#ifndef __SERIES60_30__         
-    BaseConstructL(EAknEnableSkin | EAknEnableMSK | EAknSingleClickCompatible );
-#else
-    BaseConstructL(EAknEnableSkin);
-#endif  
-  
-#ifdef FF_HELP_TUTORIAL_MERGE
-    LoadTutorialService();
-#endif // FF_HELP_TUTORIAL_MERGE
-    SetKeyEventFlags( CAknAppUiBase::EDisableSendKeyShort | CAknAppUiBase::EDisableSendKeyLong );
-    iTOC1View = CCSXHGenericView::NewL(KCSXHToc1ViewID,R_CSXH_TOC1);
-    AddViewL(iTOC1View); 
-    
-    iTOC2View = NULL;
-    iKywdTOC1View = NULL;
-    iKywdTOC2View = NULL;
-    iHtmlTopicView = NULL;
-    iLegacyTopicView = NULL;
-    iLegacyContextTopicView = NULL;
-    iAppHelpsTOC1View = NULL;
-    iAppHelpsTOC2View = NULL;
-    
-    SetDefaultViewL(*iTOC1View);  
-        
-    iRuntimeWatcher = CCSXHRuntimeAppWatcher::NewL();
-    iRuntimeWatcher->SetObserver( this );
-    iRuntimeWatcher->Start();
-#ifdef _DEBUG
-    RDebug::Print( _L("Help app launched") );
-#endif
-    }
-
-CCSXHAppUi::CCSXHAppUi()                              
-    {
-    iInstance = this;
-    }
-
-CCSXHAppUi::~CCSXHAppUi()
-    {
-#ifdef FF_HELP_TUTORIAL_MERGE
-
-    if(iServiceHandler)
-        {
-        delete iServiceHandler;
-        }
-
-#endif // FF_HELP_TUTORIAL_MERGE
-#ifdef _DEBUG
-    RDebug::Print(_L("Help app ended"));
-#endif
-    if ( iRuntimeWatcher )
-        delete iRuntimeWatcher;
-
-    }
-
-// --------------------------------------------------------------------------
-// Message Handler
-// --------------------------------------------------------------------------
-void CCSXHAppUi::HandleCommandL(TInt aCommand)
-    {
-    switch(aCommand)
-        {
-        case EEikCmdExit:
-        case EAknSoftkeyExit:
-        case EAknSoftkeyClose:
-            Exit();
-            break;
-  
-        case ECSXHOpenTopicText:
-        case ECSXHOpenItemPropagated:
-        case ECSXHOpenItem:        
-            {
-            CAknInputBlock* inputBlock = CAknInputBlock::NewLC();
-            ActivateDisplayTopicViewL();
-            CleanupStack::PopAndDestroy( inputBlock ); 
-            }
-            break;
-        case ECSXHSearchText:
-            {
-            CCSXHDocument* doc = static_cast<CCSXHDocument*>(Document());
-            doc->SetDisplayTopic(doc->GetHelpDataBase()->GetKywdTopics());
-            ActivateDisplayTopicViewL();
-            }
-            break;
-        default:
-            break;
-        }
-    }
-void CCSXHAppUi::InitDisplayTopicViewL(TUid aViewID)
-	{
-	if(aViewID == KCSXHToc1ViewID)
-		return;
-	
-	
-  	if(aViewID == KCSXHContextLegacyTopicViewID && iLegacyContextTopicView == NULL)	
-	 	{
-        iLegacyContextTopicView = CCSXHLegacyTopicView::NewL (KCSXHContextLegacyTopicViewID,
-                                                              R_CSHELP_TOPICFORCONTEXT,
-                                                              ClientRect());
-    	AddViewL(iLegacyContextTopicView);
-	 	}	 	   
-	else if(aViewID == KCSXHToc2ViewID && iTOC2View == NULL)
-		{
-		iTOC2View = CCSXHGenericView::NewL(KCSXHToc2ViewID,R_TOPICLIST);
-    	AddViewL(iTOC2View); 
-		}
-	else if(aViewID == KCSXHToc2AppHelpsViewID && iAppHelpsTOC2View == NULL)
-	    {
-	    iAppHelpsTOC2View = CCSXHGenericView::NewL(KCSXHToc2AppHelpsViewID,R_TOPICLIST);
-	    AddViewL(iAppHelpsTOC2View);
-	    }
-	 else if(aViewID == KCSXHKywdToc1ViewID && iKywdTOC1View == NULL)
-	 	{
-	 	iKywdTOC1View = CCSXHGenericView::NewL(KCSXHKywdToc1ViewID,R_KYWDTOC1LIST);
-    	AddViewL(iKywdTOC1View);
-	 	}
-	 else if(aViewID == KCSXHKywdToc2ViewID && iKywdTOC2View == NULL)	
-	 	{
-	 	iKywdTOC2View = CCSXHGenericView::NewL(KCSXHKywdToc2ViewID,R_KYWDTOC2LIST);
-    	AddViewL(iKywdTOC2View); 
-	 	}
-	 else if(aViewID == KCSXHLegacyTopicViewID && iLegacyTopicView == NULL)	
-	 	{
-        iLegacyTopicView = CCSXHLegacyTopicView::NewL(KCSXHLegacyTopicViewID,
-                                                      R_TOPICTEXTLIST,ClientRect());
-    	AddViewL(iLegacyTopicView);
-	 	}	
-	 	
-	 else if(aViewID == KCSXHContextHtmlTopicViewID )	
-	 	{
-	 	if(!iHtmlTopicView)
-	 		{
-            iHtmlTopicView = CCSXHHtmlTopicView::NewL(KCSXHHtmlTopicViewID,
-                                                      R_CSHELP_HTMLTOPICFORCONTEXT,
-                                                      ClientRect());
-    		AddViewL(iHtmlTopicView);	
-	 		}
-	 	else
-	 		{
-	 		//View is already created update the softkeys to Options and Close
-	 		iHtmlTopicView->SetViewTypeL(CCSXHHtmlTopicView::EContextHtmlView);
-	 		}
-  	 	}	
-	 else if(aViewID == KCSXHHtmlTopicViewID )	
-	 	{
-	 	if(!iHtmlTopicView)
-	 		{
-            iHtmlTopicView = CCSXHHtmlTopicView::NewL(KCSXHHtmlTopicViewID,
-                                                      R_CSHELP_HTMLTOPICVIEW,
-                                                      ClientRect());
-    		AddViewL(iHtmlTopicView);
-	 		}
-	 	else
-	 		{
-	 		//View is already created update the softkeys to Options and Back
-	 		iHtmlTopicView->SetViewTypeL(CCSXHHtmlTopicView::EHtmlView);
-	 		}
-	 	}
-    else if ( aViewID == KCSXHToc1AppHelpsViewID && !iAppHelpsTOC1View )
-        {
-        iAppHelpsTOC1View = CCSXHGenericView::NewL( KCSXHToc1AppHelpsViewID, R_TOPICLIST );
-        AddViewL( iAppHelpsTOC1View ); 
-        }
-	}
-// --------------------------------------------------------------------------
-// Activates the view corresponding to the topic to be displayed
-// It also sets for recreating the container dending on the view to be 
-// activated, 
-// 1) Search Pane in Search Result View will be cleared if user 
-// opens the Search View.
-// 2)Search Pane in Application Topics view will be cleared, if user opens 
-//      a)Help Contents View 
-//      b)Search View 
-//      c)Context Senisitive view
-// --------------------------------------------------------------------------
-void CCSXHAppUi::ActivateDisplayTopicViewL()
-    {
-    CCSXHDocument* doc = static_cast<CCSXHDocument*>(Document());
-    TUid viewId = doc->GetDisplayTopic()->GetViewID();
-    InitDisplayTopicViewL(viewId);
-    
-    if(viewId == KCSXHKywdToc1ViewID )
-        {
-        if(iKywdTOC2View)
-        	iKywdTOC2View->ResetContainer();
-        if(iTOC2View)
-        	iTOC2View->ResetContainer();
-        if (iAppHelpsTOC2View)
-        	iAppHelpsTOC2View->ResetContainer();
-        }
-	else if(viewId == KCSXHToc1ViewID ||
-	        viewId == KCSXHContextHtmlTopicViewID ||
-            viewId == KCSXHContextLegacyTopicViewID ||
-            viewId == KCSXHToc1AppHelpsViewID)
-	    {
-	    if(iTOC2View)
-			iTOC2View->ResetContainer();
-	    if (iAppHelpsTOC2View)
-	    	iAppHelpsTOC2View->ResetContainer();
-	    }
-/*	else if(viewId == KCSXHKywdToc1ViewID)  
-		{
-		doc->InitProgressBarL();
-		}
-*/	
-	if(viewId == KCSXHContextHtmlTopicViewID)    
-		viewId = KCSXHHtmlTopicViewID;
-    ActivateLocalViewL(viewId);
-    }
-void CCSXHAppUi::HandleForegroundEventL(TBool aForeground)
-	{
-	// Call Base class method
- 	CAknAppUi::HandleForegroundEventL(aForeground);
-
- 	if(!aForeground && iView && 
- 	iView->Id() != KCSXHHtmlTopicViewID
- 	&& iHtmlTopicView)
- 		{
- 		//put NUll first in for bug ESXU-7JA9NS
- 		iHtmlTopicView = NULL;
-     	// We have lost the focus
-     	//Check if the HTML view is the last active view. If it not delete it 
-     	//to free the memory used by the browser control
-     	RemoveView(KCSXHHtmlTopicViewID);
-     	//delete iHtmlTopicView;
-    	}
-	}
-// --------------------------------------------------------------------------
-// It sets a flag in the View for recreating the container 
-// --------------------------------------------------------------------------
-void CCSXHAppUi::ResetTOC2ViewContainer()
-    {
-    if(iTOC2View)
-    	iTOC2View->ResetContainer();	
-    }
-// --------------------------------------------------------------------------
-// Context sensitive help launch handling. Help is not running
-// --------------------------------------------------------------------------
-TBool CCSXHAppUi::ProcessCommandParametersL(TApaCommand aCommand,
-                                              TFileName& /* aDocumentName */,
-                                              const TDesC8& aTail)
-    {
-    if (aCommand == EApaCommandOpen)
-        { // when another app launches the help app
-        HandleContextSensitiveLaunchL(aTail);
-        }
-    return EFalse;
-    }
-
-// --------------------------------------------------------------------------
-// Context sensitive help launch handling. Help is already running
-// --------------------------------------------------------------------------
-MCoeMessageObserver::TMessageResponse CCSXHAppUi::HandleMessageL(
-           TUint32 aClientHandleOfTargetWindowGroup,
-           TUid aMessageUid,
-           const TDesC8& aMessageParameters)
-    {
-    if (aMessageUid == KHlpAppWsMsg)
-        {
-        HandleContextSensitiveLaunchL(aMessageParameters);
-        return EMessageHandled;
-        }
-    return CAknViewAppUi::HandleMessageL(aClientHandleOfTargetWindowGroup,
-                                         aMessageUid,
-                                         aMessageParameters);
-    }
-
-// --------------------------------------------------------------------------
-// Opens the context topic. If no topic is avbl then toc1 view is activated
-// --------------------------------------------------------------------------
-void  CCSXHAppUi::HandleContextSensitiveLaunchL(const TDesC8& aContext )   
-    {
-    CCSXHDocument* doc = static_cast<CCSXHDocument*>(Document());
-        
-    if(doc->SetContextTopicAsDisplayTopicL(aContext))
-        {
-        TRAPD(res,ActivateDisplayTopicViewL());
-        if(res == KErrNone)
-            return;
-        }
-    
-    //No topic avaliable, activate the TOC1 View & Pop a message
-    doc->SetDisplayTopic(doc->GetHelpDataBase()->GetMainTopics());
-    ActivateDisplayTopicViewL();
-        
-//    HBufC* ErrorMessage = iCoeEnv->AllocReadResourceLC(R_TYPE_NO_HELP_TOPICS);      
-//    CAknGlobalNote* note = CAknGlobalNote::NewLC();
-//    note->ShowNoteL(EAknGlobalInformationNote, *ErrorMessage);
-
-//    CleanupStack::PopAndDestroy(note); 
-//    CleanupStack::PopAndDestroy(ErrorMessage); 
-    }
-
-CCSXHAppUi* CCSXHAppUi::GetInstance()
-    {
-    return iInstance;
-    }
-RWsSession& CCSXHAppUi::GetWsSession()
-    {
-    return iInstance->iCoeEnv->WsSession();
-    }
-CCoeEnv* CCSXHAppUi::GetCoeEnv()
-    {
-    return iInstance->iCoeEnv;
-    }
-
-// --------------------------------------------------------------------------
-// Launches an application based on the Application UID and a View ID
-// --------------------------------------------------------------------------
-void CCSXHAppUi::AppLaunchL(TInt32& aAppId,TInt32& aVId)
-    {
-    //Convert from TInt to TUid
-    TUid KtestAppUid( TUid::Uid( aAppId ) ); 
-    TUid KtestViewUid( TUid::Uid( aVId ) ); 
-      
-    //Launch Application
-    TVwsViewId AppLaunch(KtestAppUid,KtestViewUid);
-    ActivateViewL(AppLaunch);
-    }
-
-// --------------------------------------------------------------------------
-// Launches an application based on the Application UID and a View ID
-// --------------------------------------------------------------------------
-void CCSXHAppUi::AppLaunchL(TInt32& aAppId,TInt32& aVId,
-                            TInt32& aMsgId,
-                            const TBuf<KMaxParamLength>& aParams)
-    {
-    //Convert from TInt to TUid
-    TUid AplnUid( TUid::Uid( aAppId ) ); 
-    TUid AplnViewUid( TUid::Uid( aVId ) ); 
-    TUid MsgUid( TUid::Uid( aMsgId ) ); 
-      
-    //Launch Application
-    TVwsViewId AppLaunch(AplnUid,AplnViewUid);
-    
-    HBufC8* params = CnvUtfConverter::ConvertFromUnicodeToUtf8L(aParams);
-    CleanupStack::PushL(params);
-    ActivateViewL(AppLaunch,MsgUid,*params);
-    CleanupStack::PopAndDestroy(params);
-    }
- 
-void CCSXHAppUi::PropagateResourceChange(TInt aType)
-    {
-    iTOC1View->ResourceChangeHdl(aType);
-    if(iKywdTOC1View)
-    	iKywdTOC1View->ResourceChangeHdl(aType);
-    if(iKywdTOC2View)
-    	iKywdTOC2View->ResourceChangeHdl(aType);
-    if(iTOC2View)
-		iTOC2View->ResourceChangeHdl(aType);    
-    if (iAppHelpsTOC2View)
-    	iAppHelpsTOC2View->ResourceChangeHdl(aType);
-    if (iAppHelpsTOC1View)
-        iAppHelpsTOC1View->ResourceChangeHdl(aType);
-    if(iHtmlTopicView)
-    	iHtmlTopicView->ResourceChangeHdl(aType);
-    if(iLegacyTopicView)
-    	iLegacyTopicView->ResourceChangeHdl(aType);
-    if(iLegacyContextTopicView)
-    	iLegacyContextTopicView->ResourceChangeHdl(aType);
-    }
- 
-void CCSXHAppUi::RuntimeUpdateIndex()
-    {
-    CAknNoteDialog* dlg = new CAknNoteDialog();
-    if (dlg != NULL)
-        {
-        dlg->SetTimeout( CAknNoteDialog::EShortTimeout );
-        dlg->SetTone( CAknNoteDialog::ENoTone );
-        TRAP_IGNORE(dlg->ExecuteLD(R_CSHELP_INSTALL_UNINSTALL_NOTE));
-        }
-    }
-   
-       
-#ifdef FF_HELP_TUTORIAL_MERGE
-// --------------------------------------------------------------------------
-// CCSXHAppUi::NewParamListLC
-// Create paramlist for provider.
-// --------------------------------------------------------------------------
-CAiwGenericParamList* CCSXHAppUi::NewParamListLC(
-                                            const TCoeHelpContext& aContext)
-    {
-    TAiwVariant variant1;
-    TAiwVariant variant2;
-    variant1.Set(aContext.iMajor);
-    TAiwGenericParam param1(EGenericParamHelpItem, variant1);
-    variant2.Set(aContext.iContext);
-    TAiwGenericParam param2(EGenericParamHelpItem, variant2);
-    CAiwGenericParamList* list = CAiwGenericParamList::NewLC();
-    list->AppendL(param1);
-    list->AppendL(param2);
-    return list;
-    }
-
-// --------------------------------------------------------------------------
-// CCSXHAppUi::LoadTutorialService
-// Load service handler and attach interest for using tutorial service command.
-// --------------------------------------------------------------------------
-void CCSXHAppUi::LoadTutorialServiceL()
-    {
-    iServiceHandler = CAiwServiceHandler::NewL();
-
-    // Create AIW interest
-    RCriteriaArray interest;
-
-    iServiceHandler->AttachL(R_AIWTUTORIALAPP_INTEREST);
-
-    //Tutorial AIW provider exists or not
-    iTutorialExists = EFalse;
-    iServiceHandler->GetInterest(interest);
-    if(interest.Count() > 0)
-        {
-        FLOGF(_L("CCSXHAppUi::LoadTutorialService() - interest.Count()=%d"), interest.Count());
-        CAiwCriteriaItem* testCriteria = interest[0];
-        if(iServiceHandler->NbrOfProviders(interest[0]) > 0)
-            {
-            FLOGF(_L("CCSXHAppUi::LoadTutorialService() - NbrOfProviders()=%d"), iServiceHandler->NbrOfProviders(interest[0]));
-            iTutorialExists = ETrue;
-            }
-        }
-    interest.Close();
-    }
-
-// --------------------------------------------------------------------------
-// CCSXHAppUi::CallTutorialAiwProviderL
-// If tutorial exists,call play presentation command.
-// --------------------------------------------------------------------------
-void CCSXHAppUi::CallTutorialAiwProviderL()
-    {
-    CAiwGenericParamList* inlist = NewParamListLC( iTCoeHelpContext );
-
-    iServiceHandler->ExecuteServiceCmdL( KPlayPresentation,
-                                         *inlist,
-                                         iServiceHandler->OutParamListL() );
-    CleanupStack::PopAndDestroy();   //inlist
-    }
-
-// --------------------------------------------------------------------------
-// CCSXHAppUi::IsApplicationPresentInTutorialL
-// If tutorial exists,identify the presentation needed exist or not.
-// --------------------------------------------------------------------------
-TBool CCSXHAppUi::IsApplicationPresentInTutorialL()
-    {
-    TBool Result = EFalse;
-    //__ASSERT_DEBUG( iTutorialExists, User::Panic(_L("TutAiwHlp"),-1));
-    if(iTutorialExists )
-        {
-        CAiwGenericParamList* inlist = NewParamListLC(iTCoeHelpContext) ;
-
-        CAiwGenericParamList* outlist = CAiwGenericParamList::NewLC();
-
-        TUid maj = iTCoeHelpContext.iMajor;
-        TCoeContextName con = iTCoeHelpContext.iContext;
-
-        FLOGF(_L("CCSXHAppUi::IsApplicationPresentInTutorialL() - 0x%08x %S"),maj,&con);
-
-        //checks if the application specific presentation exists.
-        //Parameter list inlist must contain AppUid which refers to presentation.
-        // The other parameters are not used.
-        //The result is returned in outlist parameter list.
-        //First parameter in the outlist contains ETrue if there is presentation
-        //available and EFalse if there is not.
-        iServiceHandler->ExecuteServiceCmdL( KPresentationExists,
-                                             *inlist, *outlist );
-
-        FLOG(_L("CCSXHAppUi::IsApplicationPresentInTutorialL() - cp-1"));
-
-        //__ASSERT_DEBUG( outlist->Count() > 0, User::Panic(_L("TutAiwHlpO"),-1));
-        __ASSERT_DEBUG(outlist->Count(), User::Panic(_L("outlist"),0));
-
-        FLOG(_L("CCSXHAppUi::IsApplicationPresentInTutorialL() - cp-2"));
-        if( outlist->Count() > 0)
-            {
-            FLOG(_L("CCSXHAppUi::IsApplicationPresentInTutorialL() - cp-2.4"));
-            TAiwGenericParam param = (*outlist)[0];
-            TAiwVariant variant = param.Value();
-            TInt32 val(0);
-
-            if(variant.Get(val) && val)
-                {
-                Result = ETrue;
-                }
-            FLOG(_L("CCSXHAppUi::IsApplicationPresentInTutorialL() - cp-3"));
-            __ASSERT_DEBUG( variant.Get(val) && val, User::Panic(_L("TutAiwHlpV"),-1));
-            }
-        CleanupStack::PopAndDestroy();   //outlist
-        CleanupStack::PopAndDestroy();   //inlist
-        }
-    return Result;
-    }
-
-// --------------------------------------------------------------------------
-// CCSXHAppUi::SetHelpContext
-// If tutorial exists,identify the presentation needed exist or not.
-// --------------------------------------------------------------------------
-void CCSXHAppUi::SetHelpContext(TCoeHelpContext aTCoeHelpContext)
-    {
-    iTCoeHelpContext = aTCoeHelpContext;
-    }
-#endif // FF_HELP_TUTORIAL_MERGE