wvuing/wvuiave/AppSrc/CCAAppUi.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/wvuiave/AppSrc/CCAAppUi.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,1078 @@
+/*
+* 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:  IM application AppUi class
+ *
+*/
+
+
+#ifndef CCAAPPUI_H
+#define CCAAPPUI_H
+
+// INCLUDES
+
+#include "MCAViewSwitcher.h"	// MCAViewSwitcher
+#include "ChatDefinitions.h"
+#include "MCAAppUi.h"
+#include "MCAUiLoginCmdCB.h"
+#include "TEnumsPC.h"
+#include "MCAUiGlobalNotificationObserverPC.h"
+
+#include <aknviewappui.h>		// CAknViewAppUi
+#include <aknwaitdialog.h>
+#include <akntabobserver.h>
+#include <MWVSettingsCASettingsng.h>
+#include <MWVSettingsObserverng.h>
+#include "CAExternalInterface.h"
+#include <AknInfoPopupNoteController.h> // for CAKnInfoPopupNote
+#include <MIMPSSAPObserver.h>
+#include "MCABackGroundTaskObserver.h"
+#include "MCASplashScreenObserver.h"
+#include "MCASkinVariant.h"
+
+#include <cimpspresenceconnectionuing.h> // for enum TIMPSLoginType
+
+// FORWARD DECLARATIONS
+class CCAEngine;
+class CIMPSConnectionUiAgent;
+class CIMPSSAPSettingsStore;
+class CIMPSSAPSettings;
+
+class CCASplashScreen;
+class CCAStatusPaneHandler;
+class CCAAudioManager;
+class CCAInputAbsorber;
+class CIdle;
+class MCALayoutChangeObserver;
+class CCAGroupUtils;
+class CCAUISessionManager;
+class CCAIconLoader;
+class CCAMessageExtensionsHandler;
+class MCAOpBrandVariant;
+class MCAServerChangeNotify;
+class MCANotifierInterface;
+class MCALayoutInfo;
+class CCALayoutInfo;
+
+class CWVSettingsUIDialog;
+class MCAProcessManager;
+
+class TAknLayoutScalableParameterLimits;
+class TAknWindowComponentLayout;
+
+class MCAConversationMessage;
+class MCAApplicationNGPC;
+class MCAGroupManagerInterface;
+
+// CLASS DECLARATION
+
+/**
+ *  Eikon application architectures AppUi class
+ *
+ *  @lib chatng.app
+ *  @since 3.2
+ */
+class CCAAppUi : public CAknViewAppUi,
+            public MCAAppUi,
+            public MCAViewSwitcher,
+            public MProgressDialogCallback,
+            public MAknTabObserver,
+            public MCAUiGlobalNotificationObserverPC,
+            public MWVSettingsCASettings,
+            public MWVSettingsObserver,
+            public MAknInfoPopupNoteObserver,
+            public MIMPSSAPObserver,
+            public MCABackGroundTaskObserver,
+            public MCASplashScreenObserver
+
+    {
+    public: // Constructors and destructor
+
+        /**
+         * C++ default constructor.
+         * @param aEngine Reference to application model (engine)
+         */
+        CCAAppUi( CCAEngine& aEngine, MCAProcessManager& aProcessManager );
+
+        /**
+         * Destructor.
+         */
+        virtual ~CCAAppUi();
+
+    public: // New functions
+    	
+        class CKludgeScheduler : public CActiveScheduler
+            {
+            public:
+                 TInt PublicLevel() const;
+            };
+        //Get the level of current active scheduler
+        TInt LevelOfActiveScheduler();
+        
+        /**
+        * Handle to IM Connection UI
+        * @since 3.2
+        * @return Handle to im connection ui
+        */
+        CIMPSPresenceConnectionUi& ConnectionUI();
+
+        /**
+        * Handle to UI session manager
+        * @since 2.1
+        * @return Handle to ui session manager
+        */
+        CCAUISessionManager& UISessionManager();
+
+        /**
+         * Fetches a handle to status pane handler
+         * @return handle to status pane handler (CCAStatusPaneHandler*)
+         */
+        CCAStatusPaneHandler* CAStatusPane() const;
+
+        /**
+         * Fetches a handle to application's process manager
+         * @see MCAProcessManager
+         * @Returns a reference to process manager
+         */
+
+        MCAProcessManager& GetProcessManager() const;
+
+        /**
+         * Gets a pointer to screenname buffer containing
+         * KScreenNameMaxLength of editable space
+         * @return Descriptor that contains screen name
+         */
+        HBufC* ScreenNamePtr();
+
+        /**
+         * Clears Universal Indication Pane's IM-icon
+         */
+        void IMUIPIConForcedClear();
+
+        /**
+         * Sets new counter value to IM's soft notification
+         * @param aCount new count of unread messages
+         */
+        void SetSoftNotificationCounterL( TInt aCount ) const;
+
+        /**
+         * Plays default beep
+         */
+        void PlayBeep();
+
+        /**
+         * Capture events if needed
+         */
+        void CaptureEventsL();
+
+        /**
+         * Releases events capturing
+         */
+        void ReleaseCapturingL();
+
+        /**
+         * Returns if events are captured
+         * @return ETrue if captured
+         */
+        TBool AreEventsCaptured() const;
+
+        /**
+         * Handles the actual invitation response
+         * @param aAcceptance ETrue if accepted
+         * @param aUserId Descriptor that contains user id
+         * @param aGroupName Descriptor that contains group name
+         * @param aResponse Descriptor that contains response message
+         */
+        void DoHandleInvitationResponseL( TBool aAcceptance,
+                                          const TDesC& aUserId,
+                                          const TDesC& aGroupName,
+                                          const TDesC& aResponse );
+
+        /**
+         * Returns the number of received messages (invitations + p2pmessages)
+         * since last call to ResetMsgCount
+         * @return received messages count
+         */
+        TInt ReceivedInvites() const;
+
+        /**
+         * Returns the instance of CCAGroupUtils
+         * @return pointer to group utility class's instance
+         */
+        CCAGroupUtils* GroupUtils();
+
+        /**
+         * Sets the forwarded message. This method will not take the
+         * ownership of the passed message, but will create a clone
+         * of it. So it doesn't matter if the actual message gets deleted.
+         * @param aFwdMessage forwarded message
+         */
+        void SetForwardMessageL( const MCAConversationMessage* aFwdMessage );
+
+        /**
+         * Gets the forwarded message or NULL
+         * @return forwarded message
+         */
+        const MCAConversationMessage* ForwardMessage();
+
+        /**
+         * Shows wait dialog. Remember to call DismissWaitDialogL after this!
+         * !! Remember to TRAP everything between ShowWaitDialogL and
+         * DismissWaitDialogL and give the error code as parameter to
+         * DismissWaitDialogL !!
+         * @param aTextResource Resource ID of text to be displayed
+         * @param aShowImmediately Should the dialog be shown immediately
+         */
+        void ShowWaitDialogL( TInt aTextResource, TBool aShowImmediately = EFalse );
+
+        /**
+         * Shows wait dialog. Remember to call CleanupStack::Pop and DismissWaitDialogL
+         * after this! Call CleanupStack::Pop first. Leaves one item in cleanup stack.
+         * @param aTextResource Resource ID of text to be displayed
+         * @param aShowImmediately Should the dialog be shown immediately
+         */
+        void ShowWaitDialogLC( TInt aTextResource, TBool aShowImmediately = EFalse );
+
+        /**
+         * Overridden version that takes text descriptor as parameter
+         * @param aText Prompt text
+         * @param aShowImmediately Should the dialog be shown immediately
+         */
+        void ShowWaitDialogL( const TDesC& aText, TBool aShowImmediately = EFalse );
+
+        /**
+         * Overridden version that takes text descriptor as parameter and places one item
+         * in cleanup stack. Remember to call CleanupStack::Pop and DismissWaitDialogL
+         * after this! Call CleanupStack::Pop first.
+         * @param aText Prompt text
+         * @param aShowImmediately Should the dialog be shown immediately
+         */
+        void ShowWaitDialogLC( const TDesC& aText, TBool aShowImmediately = EFalse );
+
+        /**
+         * Dismisses the wait dialog. Shows also error note on imps errors.
+         * @param aErrorCode Error code. Leaves on system error codes
+         *        (greater than Imps_ERROR_BASE) after deleting the dialog.
+         * @param aWaitUntilDismissed Should we wait until the dialog is gone
+         * @param aAdditionalData Additional data for the dialog
+         */
+        void DismissWaitDialogL( TInt aErrorCode, TBool aWaitUntilDismissed = EFalse,
+                                 const TDesC& aAdditionalData = KNullDesC );
+
+        /**
+         * Returns icon loader
+         * @since 2.1
+         * @return Reference to icon loader
+         */
+        CCAIconLoader& IconLoader() const;
+
+        /**
+         * Returns message handler
+         * @since 2.1
+         * @return Reference to message handler
+         */
+        CCAMessageExtensionsHandler& MessageHandler() const;
+
+        /**
+         * Modify ID for display. From userid, groupid "wv:" is hidden.
+         * From list id "wv:userid" is hidden.
+         * @param aId The id to modify
+         * @param aListHiding Modify id for list hiding
+         * @return The id with some parts hidden
+         */
+        static TPtrC DisplayId( const TDesC& aId, TBool aListHiding = EFalse );
+
+        /**
+         * Read the branded resources and set appropriate flags.
+         * Done during construction and SAP change event.
+         * Reads:
+         *   - the wv: hiding setting.
+         * @since 2.1
+         */
+        void ReadBrandedResourcesL();
+
+        /**
+         * Sets the refresh flag
+         */
+        void SetRefreshed();
+
+        /**
+         * @return ETrue if the "refresh list"-command has been used
+         */
+        TBool ListRefreshed();
+
+        /**
+         * Changes the resource of connection UI agent.
+         * @param aNewResource the resource to be used
+         */
+        void ChangeConnUiAgentResourceL( const TDesC& aNewResource );
+
+        /**
+         * Returns view which should be called after refreshView.
+         * @param aPrevious This is used normally. Override if needed.
+         */
+        TUid AfterRefreshViewId( const TUid& aPrevious );
+
+        /**
+         * Set mode of after refresh.
+         * @param aMode True, use default, EFalse switch to MainView after refrehs.
+         */
+        void SetAfterRefreshMode( TBool aMode );
+
+        /**
+         * @return a MCALayoutInfo pointer
+         */
+        MCALayoutInfo* LayoutInfo();
+
+        /**
+         * To get information of refrheswaitflag.
+         * @return reference to refresh wait flag.
+         */
+        TInt& RefreshWaitFlag();
+
+
+        /**
+        * Returns a flag which informs about the state of appui.
+        * Either it's fully functional or being destroyed.
+        * @return ETrue if appui is being destroyed
+        */
+        TBool IsUnderDestruction();
+
+        /**
+         * Initialize observers to the engine.
+         * @since 3.0
+         */
+        void InitializeEngineObserversL();
+
+        /**
+         * Finalize construction of chat
+         * @since 3.0
+         */
+        void FinalizeChatConstructionL();
+
+        /**
+         * Sets new message beep not to be played next time
+         * when playing is requested.
+         * @since 3.1
+         * @param aPlayOnce ETrue if beep allready played, EFalse otherwise.
+         */
+        void SetPlayOnce( TBool aPlayOnce );
+
+        /**
+         * Launches server settings dialog
+         * @since 3.1u
+         */
+        void LaunchServerSettingsDialogL();
+
+        /**
+         * Notify resource observers.
+         * This should be called whenever resources are changed.
+         * @since 3.0
+         */
+        void NotifyResourceChangeL();
+
+#ifdef RD_CHAT_GROUP_MESSAGE_INDICATION_NEW
+        /**
+         * Returns construction state.
+         * @since S60 v3.2
+         * @return ETrue if construction done, EFalse otherwise.
+         */
+        TBool IsFullyConstructed() const;
+#endif  // RD_CHAT_GROUP_MESSAGE_INDICATION_NEW
+
+#ifdef RD_SETTINGS_FACELIFT
+        /**
+         * Is settings dialog active or not.
+         * @since S60 v3.2
+         * @return ETrue if iServSettingsDialog != NULL
+         */
+        TBool IsSettingsDialogActive() const;
+#endif  // RD_SETTINGS_FACELIFT
+
+        /**
+         * Call this when asynchronously launched dialog has returned
+         * @see ReportPendingDialog
+         * @since 3.1
+         */
+        void ReportPendingDialogClosed();
+
+        /**
+         * When launching a dialog asynchronously, this method should be
+         * called, so that AppUI knows to give dialog time to return.
+         * If you call this, you MUST call ReportPendingDialogClosed when
+         * the dialog is closed. Otherwise the AppUI hangs on exit!
+         * @since 3.1
+         */
+        void ReportPendingDialog();
+        /**
+         * Sets if forward once.
+         * ReSets if forward is more than once..
+         */
+        void SetResetForwardTo( TEnumsPC::TForwardStatus aForward );
+
+        /**
+         *  Return iForward.
+         */
+        TEnumsPC::TForwardStatus RetForwardTo( );
+
+        /**
+         * Unregisters the previous view registered
+         * before forwarding.
+         */
+        void UnRegisterPreviousview();
+
+#ifdef RD_MULTIPLE_DRIVE
+        /**
+         * Gets the status of the drive.
+         *	@since 2.1
+         *  @param aDriveNumber: the drive to be checked.
+         *	@return ETrue if accessable else EFalse.
+         */
+        TBool GetDriveStatusL( const TDriveNumber aDriveNumber );
+
+#endif
+        // Get the value of iStopUpdateCba
+        TBool GetStopUpdateCba();
+
+        // Get the value of iIsFSWExit
+        TBool  GetIsFSWExitFlag();
+        // Set the value of iIsFSWExit
+        void SetFSWExitFlag( TBool aValue );
+
+    private: // From MWVSettingsCASettings
+        /**
+        * @see MWVSettingsCASettings
+        */
+        TInt LaunchSettingsL ( CIMPSSAPSettings& aServer );
+
+    private: // From MWVSettingsObserver
+
+        /**
+         * @see MWVSettingsObserver
+         */
+        void ServerChangedL ( const TDesC& aNewServerName,
+                              TBool aDefaultServerChanged  = EFalse );
+
+        /**
+         * @see MWVSettingsUICaller
+         */
+        HBufC* CurrentServerNameLC();
+
+    public: // From MCAAppUi
+
+        /**
+         * @see MCAAppUi
+         */
+        TDes& MbmFullPath();
+
+        /**
+         * @see MCAAppUi
+         */
+        void AddLayoutChangeObserver( MCALayoutChangeObserver* aObserver );
+
+        /**
+         * @see MCAAppUi
+         */
+        void RemoveLayoutChangeObserver( MCALayoutChangeObserver* aObserver );
+
+        /**
+         * @see MCAAppUi
+         */
+        void AddResourceChangeObserver( MCAResourceChangeObserver* aObserver );
+
+        /**
+         * @see MCAAppUi
+         */
+        void RemoveResourceChangeObserver( MCAResourceChangeObserver* aObserver );
+
+
+    private: // From MProgressDialogCallback
+
+        /**
+         * From MProgressDialogCallback Get's called when a dialog is dismissed
+         * @param aButtonId Button that was used to dismiss the dialog
+         */
+        void DialogDismissedL( TInt aButtonId );
+
+    private:
+        //popup pane related functionss.
+        void AddToPreviewListL( const TDesC& aContactId, const TDesC& aMsg );
+
+        void CalculatePreviewPaneWidth();
+
+        TInt SelectWindowVariety( const TInt aNumberOfLines,
+                                  const TAknLayoutScalableParameterLimits& aLimits ) const;
+
+        TRect RectFromLayout( const TRect& aParent,
+                              const TAknWindowComponentLayout& aComponentLayout ) const;
+
+
+    public: // Functions from base classes
+
+        /**
+         * From CEikAppUi, takes care of command handling.
+         * @param aCommand command to be handled
+         */
+        void HandleCommandL( TInt aCommand );
+
+        /**
+         * From MCAViewSwitcher, handles view-switch requests
+         * @param aViewId View to be switched
+         */
+        void SwitchViewL( TUid aViewId );
+
+        /**
+         * From MCAViewSwitcher, handles view-switch requests
+         * @param aViewId View to be switched
+         * @param aCustomMessageId Passed messages id
+         * @param aCustomMessage Message to be passed
+         */
+        void SwitchViewL( TUid aViewId,
+                          TUid aCustomMessageId,
+                          const TDesC8& aCustomMessage );
+
+        /**
+         * From MCAViewSwitcher, handles view-switch requests
+         */
+        void SwitchViewBackL( TUid aViewId, TUid aCustomMessageId = KUidMainView,
+                              const TDesC8& aCustomMessage = KNullDesC8 );
+
+        /**
+         * From MCAViewSwitcher, handles view-switch requests
+         */
+        void RegisterSwitchBack( TUid aViewId,
+                                 TUid aCustomMessageId,
+                                 HBufC8* aCustomMessage,
+                                 TUid aNextView );
+
+        /**
+         * From MCAViewSwitcher, deregisters switch back info
+         */
+        void DeRegisterSwitchBack( TUid aViewId,
+                                   const TDesC& aTarget );
+
+        /**
+         * From MCAViewSwitcher, checks if view exists
+         * @see MCAViewSwitcher
+         * @since 2.1
+         */
+        TBool ViewExists( TUid aViewId );
+
+        /**
+         * From MCAViewSwitcher
+         * @return Active view's id
+         */
+        TUid ActiveViewId();
+
+        /**
+         * From CEikAppui, Handles a change to the application's resources
+         * which are shared across the environment
+         * @param aType The type of resources that have changed
+         */
+        void HandleResourceChangeL( TInt aType );
+
+        /**
+         * From CAknAppUi, Handles window server events.
+         * aEvent Event to be handled
+         * aDestination Destination of event.
+         */
+        void HandleWsEventL( const TWsEvent& aEvent, CCoeControl* aDestination );
+
+        /**
+         * Show info popup note
+         */
+        void ShowInfoPopupL();
+
+    private:
+        /**
+         * Handles events reported from info popup note.
+         * @see MAknInfoPopupNoteObserver
+         */
+        void HandleInfoPopupNoteEvent(
+            CAknInfoPopupNoteController* aController,
+            TAknInfoPopupNoteEvent aEvent );
+
+    private: // From MAknTabObserver
+
+        /**
+         * @see MAknTabObserver
+         */
+        void TabChangedL( TInt aIndex );
+
+    private: // From CAknViewAppUi
+
+        /**
+         * From CAknViewAppUi
+         * @see CAknViewAppUi
+         */
+        void HandleForegroundEventL( TBool aForeground );
+
+    private:  // From MCAUiGlobalNotificationObserverPC
+        /**
+        * @see MCAUiGlobalNotificationObserverPC
+        */
+        void HandleDelete( const TDesC& aContactId , TEnumsPC::TItem type ) ;
+
+        /**
+        * @see MCAUiGlobalNotificationObserverPC
+        */
+        void HandleAddition( TEnumsPC::TItem type ) ;
+
+        /**
+        * @see MCAUiGlobalNotificationObserverPC
+        */
+        void HandleChange( TEnumsPC::TItem type, TEnumsPC::TChange changeType ) ;
+
+        /**
+        * @see MCAUiGlobalNotificationObserverPC
+        */
+        void HandleInvitationEventL( TEnumsPC::TInviteType aInviteType,
+                                     const TDesC& aUserID,
+                                     const TDesC& aMessage ) ;
+
+        /**
+        * @see MCAUiGlobalNotificationObserverPC
+        */
+        void HandleInvitationResponse( TBool aAcceptance,
+                                       const TDesC& aUserId,
+                                       const TDesC& aGroupName,
+                                       const TDesC& aResponse ) ;
+        /**
+        * Handles setting changes.
+        * @see MCAUiGlobalNotificationObserverPC
+        * @param aChangedSettingEnum specifies the changed setting.
+        */
+        void HandleSettingsChangeL( TInt aChangedSettingEnum );
+
+        /**
+        * From MCAUiGlobalNotificationObserverPC
+        */
+        void HandleChatEvent( const TEnumsPC::TChatEventType aEvent,
+                              const TDesC& aWvid,
+                              const TDesC& aContactId,
+                              const TDesC& aMessage,
+                              const TEnumsPC::TMessagerType aMsgrType,
+                              const TEnumsPC::TMessageType aMsgType );
+
+        /**
+        * From MCAUiGlobalNotificationObserverPC
+        */
+        void HandleMessageError( TInt aError, const TDesC& aInfo );
+
+
+
+
+    private: // New functions
+
+        /**
+         * Symbian OS default constructor.
+         */
+        void ConstructL();
+
+        /**
+         * Solves resource file paths.
+         * @param aPathWithoutDrive, a resource file path without drive letter.
+         * @return HBufC*, allocated + added on cleanup stack.
+         */
+        HBufC* SolveResPathLC( const TDesC& aPathWithoutDrive ) const;
+
+        /**
+         * Real implementation of waiting for engine to shutdown
+         * @return Need for recall
+         */
+        TInt DoExitCallback();
+
+        /**
+         * CIdle-kind of function for waiting for engine to shutdown
+         * @param aInstance Instance of this class
+         * @return Need for recall
+         */
+        static TInt ExitCallback( TAny* aInstance );
+
+        /**
+         * This method closes wait dialog. This happens when wait dialog is running
+         * and leave occurred.
+         * Pushed into CleanupStack. Used with TCleanupItem.
+         * This handles leaves with wait dialog by closing wait dialog if a leave occurs.
+         * Wait dialog in CleanupStack, example usage:
+         * ShowWaitDialogL( _L("Test"), ETrue );
+         * CleanupStack::PushL( TCleanupItem( CCAAppUi::CloseDialog, this) ); // this = CCAAppUi pointer
+         * User::Leave( KErrDiskFull );
+         * @param aInstance Instance of this class
+         */
+        static void CloseDialog( TAny* aInstance );
+
+        /**
+        * Retrieves branding settings and changed UI brand
+        * @since 2.1
+        * @param aBrand Brand variant
+        */
+        void RetrieveBrandL( MCAOpBrandVariant& aBrand );
+
+        /**
+         * Initializes UIP icon handling
+         * @since 2.1
+         */
+        void InitializeUIPHandlingL();
+
+        /**
+         * Update icon if it is needed. Disable it if not.
+         */
+        void UpdateIMUIPIcon();
+
+        /**
+         * Update soft note if it is needed. Disable it if not.
+         *
+         */
+        void UpdateSoftNote( TInt aUnreadCount );
+
+        /**
+         * Start process for changing status
+         */
+        void ChangeStatusProcessL();
+
+        /**
+         * Changes current status message
+         * @param aStatus Status which message is needed.
+         * @param aUpdateToNetwork ETrue update, EFalse do not update.
+         * @return KErrCancel if canceled.
+         */
+        TInt AskStatusMessageL( TEnumsPC::TOnlineStatus aStatus,
+                                TBool aUpdateToNetwork );
+
+        /**
+         * Get status old status messages from file.
+         * @param aStatus Status which message is needed.
+         * @param aArray. Array of messages. Don't clear before filling.
+         */
+        void ReadStatusMessagesL( TEnumsPC::TOnlineStatus aStatus,
+                                  CDesCArray& aArray );
+
+        /**
+         * Write status messages to file.
+         * @param aStatus Status which messages are written
+         * @param aArray. Array of messages to write. Newest in top.
+         *                Do not write duplicates.
+         */
+        void WriteStatusMessagesL( TEnumsPC::TOnlineStatus aStatus,
+                                   MDesCArray& aArray );
+
+        /**
+         * Maps TEnumsPC::TOnlineStatus to TEnumsPC::TCASettingStrings,
+         * which stores the status messages.
+         * @param aStatus Online state which is mapped to correct setting
+         *                string
+         * @return Setting string value of the given online status.
+         */
+        TEnumsPC::TCASettingStrings ConvertToTEnumsStatusMsgValue(
+            TEnumsPC::TOnlineStatus aStatus );
+        /**
+         * Shows information note about low memory situation.
+         * @since S60 v3.2
+         */
+        void ShowMemLowNoteL();
+
+        /**
+         * Get default SAP Uid
+         * @return SAP Uid
+         */
+        TUint32 DefaultSAPUid();
+        /**
+        * Shows Splash Screen.
+        * @since S60 v3.2
+        */
+        void ShowSplashScreenL( MCASkinVariant& aSkinVariant );
+
+
+
+    private: // Functions from base classes
+
+        /**
+         * From CEikAppUi, handles key events.
+         * @param aKeyEvent Event to handled.
+         * @param aType Type of the key event.
+         * @return Reponse code (EKeyWasConsumed, EKeyWasNotConsumed).
+         */
+        virtual TKeyResponse HandleKeyEventL(
+            const TKeyEvent& aKeyEvent, TEventCode aType );
+
+    public:
+
+        /**
+         * Tab keys are fwded to this function
+         * @param aKeyEvent Event to handled.
+         * @param aType Type of the key event.
+         * @return Reponse code (EKeyWasConsumed, EKeyWasNotConsumed).
+         */
+        TKeyResponse OfferTabEventL( const TKeyEvent&
+                                     aKeyEvent, TEventCode aType );
+
+    public:
+        /**
+        * The observer is added to get the server change callback
+        * .
+        */
+        void AddServerChangeObsL( MCAServerChangeNotify* aObserver );
+
+        /**
+         * The observer is removed by using this method
+         * .
+         */
+        void RemoveServerChangeObs( MCAServerChangeNotify* aObserver );
+        /**
+        * From MIMPSSAPObserver
+        * @see MIMPSSAPObserver for more information
+        */
+        void HandleSAPEvent( TSAPEvent aEvent );
+        /**
+         * Sets th focus Flag : Used for Tab switching
+         */
+        void SetFocusFlag( TBool aFlag );
+        /**
+         * returns value of focus flag : Used for tab switching
+         */
+        TBool FocusFlag();
+
+        // from MCABackGroundTaskObserver
+        void HandleBackGroundTaskCompleteL( TBool aCompleted );
+
+        // from MCASplashScreenObserver
+        void SplashScreenShowed();
+
+        /**
+         * From IsQueryAccepted
+         * @return ETrue if exit query accepted or EFalse
+         */
+        TBool IsQueryAccepted();
+
+    private :
+
+        /**
+         * To know whether Background task has started
+         * @return TBool
+         */
+        TBool IsBackgroundTaskPendingL();
+
+        /**
+         * WaitToCompleteBackgroundTaskL
+         * Pop the wait note processing
+         * @return ETrue
+         */
+        TBool WaitToCompleteBackgroundTaskL();
+
+
+    private: //Data
+
+        // Owns. Shared data is used for Universal Indicator Pane changes
+        MCANotifierInterface* iNotifierAPI;
+
+        // Owns. Handle to status pane handler
+        CCAStatusPaneHandler* iStatusPaneHandler;
+
+        // Doesn't own. Handle to application engine
+        CCAEngine& iEngine;
+
+        //reference to the app ui process component
+        MCAApplicationNGPC& iApplicationNGPC;
+
+
+        // invitation active or not
+        TBool iInviteActive;
+
+        // we are foreground or not
+        TBool iIsAppForeground;
+
+        //Owns. Audiomanager for playing sounds
+        CCAAudioManager* iAudioManager;
+
+        // Owns. holds the current screenname
+        HBufC* iScreenName;
+
+        //Owns. Capture events when active
+        CCAInputAbsorber* iInputAbsorber;
+
+        //Stores active view id
+        TUid iActiveViewId;
+
+        // Owns
+        CIdle* iExitIdle;
+
+        // helper arrays to count if UIP icon should shown or not
+        CDesCArrayFlat* iUIPInvitations;   // owns
+        CDesCArrayFlat* iUIPConversations; // owns
+
+        TFileName		iChatMbmFullPath;
+        TInt			iResourceFileOffset;
+        RPointerArray<MCALayoutChangeObserver> iLayoutObservers;
+
+        // Doesn't own objects. Array of resource observers
+        RPointerArray<MCAResourceChangeObserver> iResourceObservers;
+
+        // Owned. Clone of the forwarded message.
+        const MCAConversationMessage* iForwardMessage;
+
+        // Owns.
+        CCAGroupUtils* iGroupUtils;
+
+        // Doesn't own (destroys itself)
+        CAknWaitDialog* iWaitDialog;
+        CActiveSchedulerWait iWait;
+        TBool iWaitDialogDismissed;
+
+        // Owns. UI session manager
+        CCAUISessionManager* iUISessionManager;
+
+        // Owns. Icon loader
+        CCAIconLoader* iIconLoader;
+
+        // Owns. Message handler
+        CCAMessageExtensionsHandler* iMessageHandler;
+
+        // Owns. Domain part of current server
+        HBufC* iServerDomain;
+
+        // view switcher custom messages
+        TUid iCustomMessageId;
+        HBufC8* iCustomMessage;
+        TBool iOkToSwitch;
+
+        // Back-support
+        TUid iLastView;
+        RArray<TUid> iSwitchView;
+        RArray<TUid> iSwitchMessage;
+        RPointerArray<HBufC8> iSwitchMessageContent;
+
+        // Owns. Connection UI agent
+        CIMPSConnectionUiAgent* iConnUIAgent;
+
+        // The splash screen showed at the startup
+        CCASplashScreen* iSplashScreen;
+
+
+        TBool iRefreshed;
+
+        // Override mode can be set with this for view switch after refreshView.
+        TBool iDefaultRefreshInUse;
+
+        ///
+        CCALayoutInfo* iLayoutInfo;
+
+        // Owns. Status message ptr to original message
+        HBufC* iStatusMessage;
+
+        /// Flag to inform if refresh is happening or not.
+        TBool iRefreshWaitFlag;
+
+        // Flag to inform that appui is being destroyed
+        TBool iDestructingFlag;
+
+        // ETrue when engine has been properly initialized
+        TBool iEngineInitialized;
+
+        // ETrue when chat has been fully constructed
+        TBool iChatFullyConstructed;
+
+        // ETrue if beep allready played
+        TBool iPlayOnce;
+
+        // SAP settings store
+        CIMPSSAPSettingsStore* iSAPSettingsStore;
+
+        // Doesn't own (destroys itself).
+        CWVSettingsUIDialog* iServSettingsDialog;
+
+        TBool iNeedRefresh;
+
+        // How many times has the message been forwarded
+        TInt iForwardCount;
+
+        // If ETrue, last forward was to contact
+        // if EFalse, to group
+        TBool iForwardedToContact;
+
+        // Not owned, destroyed in RunLD of dialog
+        CEikDialog* iMemLowNote;
+
+        // Flag is read from CR, ETrue in releases >= 3.2
+        // EFalse in releases < 3.2
+        TBool iShowMemLowNote;
+
+        // Flag is read from CR in construction
+        // @see IMVariant.hrh
+        // ETrue if feature EIMFeatBrandableTones is
+        // variated on, EFalse otherwise.
+        TBool iBrandableToneList;
+
+        // How many async dialogs are open.
+        TInt iPendingDialogCounter;
+
+        //Reference to appln's process manager
+        MCAProcessManager& iProcessManager;
+
+        /// Owns - Popup info for showing info popupnote.
+        CAknInfoPopupNoteController* iInfoPopup;
+
+        //ETrue - denotes that the popup pane is active
+        TBool iInfoNoteShowing;
+
+        //owns - holds the array of messages to be shown in the preview pane
+        CDesCArray* iPreviewMessageList;
+
+        //holds the length of the message in the preview pane
+        TInt iTotalPreviewMsgLength;
+
+        //holds the preview pane's Max no. of characters tat can be visible
+        TRect iPreviewPaneRect;
+
+        //holds the current font - doesnt own
+        CFont* iCurrentFont;
+
+        RPointerArray<MCAServerChangeNotify> iServerChangeNotify;
+
+        // used for tab swithching
+        TBool iFocusFlag;
+
+        // background task complete or not
+        TBool iBackgroundTaskPending;
+
+        // processing note is visible
+        TBool iWaitVisible;
+        // owned queryaccepted for exit
+        TBool iQueryAccepted;
+
+        //Forward once(ETrue) else EFlase;
+        TEnumsPC::TForwardStatus iForward;
+
+        // Owns. Connection UI
+        CIMPSPresenceConnectionUi* iConnUI;
+
+        //Maintaining count to Unread messages.
+        TInt iUnreadMsgCount;
+
+        //Maintain record if exit is required after back ground processing completed.
+        //because of Fast swaping window exit.
+        TBool iIsFSDExitNeeded;
+
+        // An indicator to decide whether to update current cba
+        TBool iStopUpdateCba;
+
+        TBool iLaunchSettingsDialogWait;
+
+        TBool iIsFSWExit;
+        MCAGroupManagerInterface* iGroupManagerInterface;
+        TBool iStatusFlag;
+    };
+
+#endif // CCAAPPUI_H
+
+// End of File