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