diff -r 000000000000 -r 094583676ce7 wvuing/wvuiave/AppSrc/CCAAppUi.h --- /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 // CAknViewAppUi +#include +#include +#include +#include +#include "CAExternalInterface.h" +#include // for CAKnInfoPopupNote +#include +#include "MCABackGroundTaskObserver.h" +#include "MCASplashScreenObserver.h" +#include "MCASkinVariant.h" + +#include // 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 iLayoutObservers; + + // Doesn't own objects. Array of resource observers + RPointerArray 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 iSwitchView; + RArray iSwitchMessage; + RPointerArray 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 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