csxhelp/inc/CSXHAppUi.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 26 Jan 2010 15:15:23 +0200
changeset 0 1f04cf54edd8
child 5 d06b1526f62c
permissions -rw-r--r--
Revision: 201004

/*
* 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 declaration
*
*/


#ifndef INC_CSXHAPPUI_H_HEADER_INCLUDED_BC054CBF
#define INC_CSXHAPPUI_H_HEADER_INCLUDED_BC054CBF

#include <aknViewAppUi.h>
#include "AppLauncherForCSXH.h"
#include "csxhruntimeappwatcher.h"

//Forward declarations
class CCSXHHtmlTopicView;
class CCSXHLegacyTopicView;
class CCSXHGenericView;
#ifdef FF_HELP_TUTORIAL_MERGE
class CAiwGenericParamList;
class CAiwServiceHandler;
#endif // FF_HELP_TUTORIAL_MERGE

// CLASS DECLARATION

/** 
* @class CCSXHAppUi
* Application UI class
* Provides support for the following features:
* - view architecture
*/
class CCSXHAppUi : public CAknViewAppUi,
                   public MInstallationObserver
    {
  public:
/** 
 * @function ConstructL
 * @since S60 3.2
 * Perform the second phase construction of a CCSXHAppUi object this needs
 * to be public due to the way the framework constructs the AppUi      
 */
    void ConstructL();
/** 
 * @function CCSXHAppUi
 * @since S60 3.2
 * Perform the first phase of two phase construction. This needs to be
 * public due to the way the framework constructs the AppUi
 */    
    CCSXHAppUi();
/** 
 * @function ~CCSXHAppUi
 * @since S60 3.2
 * Destroy the object and release all memory objects
 */    
    ~CCSXHAppUi();

/** 
 * @function ~CCSXHAppUi
 * @since S60 3.2  
 * From CEikAppUi, takes care of command handling.
 * @param aCommand command to be handled
 */    
    void HandleCommandL(TInt aCommand);
    
/** 
 *  @function PropagateResourceChange
 *  @since S60 3.2
 *  Propagates the resource change event to all views
 *  @param aType - Type of resource change event
 */		
	void PropagateResourceChange(TInt aType);     
    
/** 
 * @function GetInstance
 * @since S60 3.2  
 * returns Application UI class pointer 
 * @return Application UI class pointer 
 */     
    static CCSXHAppUi* GetInstance();

/** 
 * @function GetWsSession
 * @since S60 3.2  
 * returns WsSession Pointer
 * @return WsSession pointer
 */    
	static RWsSession& GetWsSession();

/** 
 * @function GetCoeEnv
 * @since S60 3.2  
 * returns Control Environment pointer
 * @return Control Environment pointer
 */	
	static CCoeEnv* GetCoeEnv();

/** 
 * @function AppLaunchL
 * @since S60 3.2  
 * Launch the Application based on Uid & ViewId
 * @param aAppId Application Uid
 * 		 aVId   ViewId 
 */	    
    void AppLaunchL(TInt32 &aAppId,TInt32 &aVId);
    
/** 
 * @function AppLaunchL
 * @since S60 3.2  
 * Launch the Application based on Uid,ViewId, MessageId & Message
 * @param aAppId   Application Uid
 * 		 aVId     ViewId
 * 		 aMsgId   MessageId
 * 		 aParams  Message
 */    
    void AppLaunchL(TInt32 &aAppId,TInt32 &aVId,TInt32 &aMsgId,
    									const TBuf<KMaxParamLength>& aParams);
    
/** 
 * @function ResetTOC2ViewContainer
 * @since S60 3.2  
 * Sets a flag in the View for recreating the container 
 */    
    void ResetTOC2ViewContainer();
/**
* From MInstallationObserver
* @function RuntimeUpdateIndex 
* call back function once install/uninstall happens
*
* @since 5.0
*/
    void RuntimeUpdateIndex();

#ifdef FF_HELP_TUTORIAL_MERGE
    /**
    *  Generates parameter list for AIW calls
    *  @since S60 3.2
    *  @param aContext The help content ready to Tutorial
    *  @return The Aiw Generic Param List
    */
    CAiwGenericParamList* NewParamListLC(const TCoeHelpContext& aContext);

    /**
    *  If tutorial exists,call play presentation command
    *  @since S60 3.2
    *  @param None
    *  @return None
    */
    void CallTutorialAiwProviderL();

    /**
    *  If tutorial exists,call play presentation command
    *  @since S60 3.2
    *  @param aTCoeHelpContext The Help Content stored
    *  @return None
    */
    void SetHelpContext(TCoeHelpContext aTCoeHelpContext);

    /**
    *  If the presentation requsted exist or not
    *  @since S60 3.2
    *  @param None
    *  @return A boolean value to indicate the presentation exist or not
    */
     TBool IsApplicationPresentInTutorialL();

#endif // FF_HELP_TUTORIAL_MERGE
	protected: 
	// Functions from base calsses
	/**
    * Handles changes in keyboard focus when an application switches to, 
    * or from, the foreground.
    * @param aForeground @c ETrue if the application is in the foreground,
    * otherwise @c EFalse.
    */
	void HandleForegroundEventL(TBool aForeground);
/** 
 * @function ProcessCommandParametersL
 * From CEikAppUi.
 * Take care of command parameter
 * @since 3.2
 * @param aTail should be contexts in TDesC8& form
 * @return whether or not processing was successful
 */
        TBool ProcessCommandParametersL(TApaCommand aCommand,
                                        TFileName& /* aDocumentName */,
                                        const TDesC8& aTail);

/**
 * @function HandleMessageL 
 * From MCoeMessageObserver
 * Take care of messages from other app.
 * @since 3.2
 * @param aMessageParameters should be contexts in TDesC8&
 * @return always EMessageHandled.
 */
    MCoeMessageObserver::TMessageResponse HandleMessageL(
                                  TUint32 aClientHandleOfTargetWindowGroup,
                                  TUid aMessageUi,
                                  const TDesC8& aMessageParameters); 
  private:
/**
 * @function ActivateDisplayTopicViewL   
 * Take care of Recreating the Container Class for Specific Views
 * @since 3.2
 * @param aMessageParameters should be contexts in TDesC8&
 * @return always EMessageHandled.
 */  
  	void ActivateDisplayTopicViewL();
  	
  	void InitDisplayTopicViewL(TUid aViewID);
/**
 * @function HandleContextSensitiveLaunchL   
 * Take care of Context Sensitive Launch.
 * @since 3.2
 * @param aMessageParameters should be contexts in TDesC8&
 * @return always EMessageHandled.
 */  	
  	void HandleContextSensitiveLaunchL(const TDesC8& aContext );   
#ifdef FF_HELP_TUTORIAL_MERGE
        /**
        *  Load Service Handler and attach the interest
        *  @since S60 3.2
        *  @param None
        *  @return None
        */
        void LoadTutorialService();
#endif
  private:
    
    CCSXHGenericView* iTOC1View;
    CCSXHGenericView* iKywdTOC1View;
    
    CCSXHLegacyTopicView* iLegacyTopicView;
    CCSXHLegacyTopicView* iLegacyContextTopicView;
    
    //This class will be used for both normal and context html topics    
    CCSXHHtmlTopicView* iHtmlTopicView;
	
	CCSXHGenericView* iKywdTOC2View;
	CCSXHGenericView* iTOC2View;
	
	static CCSXHAppUi* iInstance;
	CCSXHRuntimeAppWatcher* iRuntimeWatcher;
	
#ifdef FF_HELP_TUTORIAL_MERGE

        //AIW Service Handler
        //Owned
        CAiwServiceHandler* iServiceHandler;

        //Tutorial exist or not
        TBool iTutorialExists;

        //Help Content Text
        TCoeHelpContext iTCoeHelpContext;
#endif
    };



#endif /* INC_CSXHAPPUI_H_HEADER_INCLUDED_BC054CBF */