mobilemessaging/audiomsg/inc/audiomessageappui.h
changeset 0 72b543305e3a
child 1 d09ac5c1e252
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mobilemessaging/audiomsg/inc/audiomessageappui.h	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,964 @@
+/*
+* Copyright (c) 2005-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:   Provides audiomessage appui prototypes
+*
+*/
+
+
+
+
+#ifndef _AUDIOMESSAGEAPPUI_H
+#define _AUDIOMESSAGEAPPUI_H
+
+// includes needed by inline functions:
+#include <MsgEditorView.h>          // CMsgEditorView
+#include <MsgAddressControl.h>      // CMsgAddressControl
+#include <MsgExpandableControl.h>   // CMsgExpandableControl
+#include <MsgBodyControl.h>         // CMsgBodyControl
+#include "audiomessagedocument.h"   // CAudioMessageDocument
+
+#include <unimodelconst.h>
+#include <MsgEditorAppUi.h>         // CMsgEditorAppUi
+#include <cenrepnotifyhandler.h>    // MCenRepNotifyHandlerCallback
+#include <MMGFetchVerifier.h>        // MMGFetchVerifier
+#include "amsoperationobserver.h"   // MAmsOperationObserver
+#include "amsvolobserver.h"         // MAmsVolumeObserver
+
+#include "audiomessage.hrh"
+#include <AknNaviDecoratorObserver.h>
+#include <eikedwob.h>                   // for MEikEdwinObserver
+#include <AknProgressDialog.h>          // for MProgressDialogCallback
+#ifdef RD_SCALABLE_UI_V2
+#include <akntoolbarobserver.h>
+#endif
+
+
+GLREF_C void Panic( TAmsEditorPanic aPanic ); 
+
+class CAknTitlePane;
+class CFindItemMenu;
+class CMsgVoIPExtension;
+class CMsgExpandableControl;
+class CAudioMessageInsertOperation;
+class CAudioMessageLaunchOperation;
+class CAudioMessageSaveOperation;
+class CAudioMessageSendOperation;
+class CAudioMessageProgressDialog;
+class CAknNavigationControlContainer;
+class CAknNavigationDecorator;
+class CAknIconArray;
+class CAknIndicatorContainer;
+class CMessageData;
+class CSendUi;
+class CAknLocalScreenClearer;
+class CAknInputBlock;
+class CAudioMessageSendReadReportOperation;
+class CMsgMediaInfo;
+class CUniAddressHandler;
+#ifdef RD_SCALABLE_UI_V2
+class CAknToolbar;
+#endif
+
+
+/**
+* CAudioMessageAppUi
+*
+* @lib AudioMessage.exe
+* @since S60 v3.1
+*/
+class CAudioMessageAppUi : 
+    public CMsgEditorAppUi,
+    public MCenRepNotifyHandlerCallback,
+    public MMGFetchVerifier,
+    public MAmsOperationObserver,
+    public MAmsVolumeObserver,
+    public MAknNaviDecoratorObserver,
+    public MEikEdwinObserver,
+    public MProgressDialogCallback,
+#ifdef RD_SCALABLE_UI_V2    
+    public MAknToolbarObserver             //toolbar    
+#endif    
+    {
+
+   private:     // Enumerations
+
+	    enum TAmsEditorFlags
+	        {
+	        ELaunchSuccessful       = 0x0001,
+	        ERunAppShutterAtExit    = 0x0002,
+	        EEditorClosing          = 0x0004,
+	        EAutohighLightEnabled   = 0x0008,
+	        EProgressInUse			= 0x0010,
+	        EEditorExiting          = 0x0020
+	        };
+
+	    enum TAmsNaviType
+			{
+			EAmsOnlyLength=0,
+			EAmsTextEditorAndLength,
+			EAmsMsgArrows
+			};
+
+
+    public:  // Constructors and destructor
+        
+        /**
+         * C++ default constructor.
+         */
+        CAudioMessageAppUi();
+
+        /**
+         * Destructor.
+         */
+        virtual ~CAudioMessageAppUi();
+ 				void HandleWsEventL( const TWsEvent& aEvent,CCoeControl* aDestination );
+
+        /**
+         * Removes audiofile.
+         */
+        void RemoveAudioL(  );
+
+        /**
+         * From MAmsVolumeObserver.
+         *
+         * Audio volume changed. Called for by CAudioMessageProgressDlg
+         */
+   		void UpdateNaviVol( TInt aCurrentVolumeValue ) ;
+   		TInt GetVolume();
+        /**
+         * From MAmsVolumeObserver.
+         *
+         * Audio routing change. Called for by CAudioMessageProgressDlg
+         */
+   		void SetSpeakerOutput( TBool aEarpiece );
+
+        /**
+         * Saves, if needed and exits
+         */        
+        void ExitAndSaveL( );
+
+        /**
+         * Wrapper on the FetchFileL function of Base Editor.
+         * Called by "Insert" functions.
+         */
+		TBool FetchFileL( TFileName &aFileName );
+   		
+        /**
+         * Fetchs voice file handle from msgstore. 
+         * Gets duration from CAudioMessageRecorder 
+         * and puts it in document object.
+         */
+		void FetchAudioFileDataL(  ) ;
+
+        /**
+         * Callback for CPeriodic
+         */        
+		static TInt DelayedExit( TAny* aThis );
+
+        /**
+    	 * Tries to exit the application. Called for example by CIdle
+     	 */
+    	void DoExternalExit( );
+        
+        /**
+        * Callback for MProgressDialogCallback
+        */        
+        void DialogDismissedL( TInt /*dismissed*/ );
+ 		
+ 		// Functions from base classes    		
+    public:
+    
+        /**
+         * From MMsgEditorObserver. Calls DoEditorObserverL()
+         *
+         * For passing events from Base Editor to AudioMessage
+         */
+        void EditorObserver(
+            TMsgEditorObserverFunc aFunc,
+            TAny* aArg1,
+            TAny* aArg2,
+            TAny* aArg3 );
+        void DoEditorObserverL(
+            TMsgEditorObserverFunc aFunc,
+            TAny* aArg1,
+            TAny* aArg2,
+            TAny* aArg3 );
+
+        /**
+         * From MMGFetchVerifier
+         */
+        TBool VerifySelectionL( const MDesCArray* aSelectedFiles );
+
+        /**
+        * From MAknNaviDecoratorObserver
+        * Handles the events coming from arrow presses
+        *  related to next/previous message
+        */
+        void HandleNaviDecoratorEventL( TInt aEventID );
+        
+        /**
+        * From MEikEdwinObserver
+        */
+    	void HandleEdwinEventL( CEikEdwin* aEdwin, TEdwinEvent aEventType );
+	    
+	     /**
+        * From MMessageIteratorObserver
+        * @param See documentation of MMessageIteratorObserver
+        */
+#ifndef RD_MSG_NAVIPANE_IMPROVEMENT
+        void HandleIteratorEventL( TMessageIteratorEvent aEvent );
+#endif   
+
+    private:
+        
+        /**
+         *     Notification from central repository
+         */
+       	void HandleNotifyInt( TUint32 aId, TInt aNewValue );
+
+        void DoUpdateSoftKeysL( TInt aSk );
+        void UpdateSoftKeysL(  );
+        /**
+        * Sets automatic highlighting on/off.
+        * @param aEnable if ETrue sets automatic highlighting on,
+        *                if EFalse sets automatic highlighting off
+        */
+        void SetFindMode( TBool aEnable );
+	      
+	    /**
+         * From MMsgEditorLauncher
+         */
+        void LaunchViewL();
+
+	    /**
+	     * Route key events to view.
+	     * @param aKeyEvent key event
+	     * @param aType     event type
+	     * @return          response
+	     * from CCoeAppUi
+	     */
+        TKeyResponse HandleKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
+
+        /**
+        * From CEikAppUi 
+        */
+        void HandleCommandL( TInt aCommand );
+
+	    /**
+	     * Inits the main menu options
+	     * @param aMenuId
+	     * @parem aMenuPane
+	     */
+        void DynInitMenuPaneL( TInt aMenuId, CEikMenuPane* aMenuPane );
+
+	    /**
+	     * From MAmsOperationObserver
+	     * Calls DoEditorObserverL()
+	     */
+        void EditorOperationEvent(
+            TAmsOperationType aOperation,
+            TAmsOperationEvent aEvent );
+	    /**
+	     * Checks the result of the event and shows possible error note.
+	     * Calls right function to finalize operation.
+	     */
+        void DoEditorOperationEventL(
+            TAmsOperationType aOperation,
+            TAmsOperationEvent aEvent );
+            
+	    /**
+	     * Called when insert operation finishes. Removes wait note.
+	     * Updates navipane, fetch clip duration and so on.
+	     * Focuses the right object.
+	     */
+        void DoInsertCompleteL( TBool aErrorNone );
+
+	    /**
+	     * Called when launch operation finishes. Removes wait note.
+	     * Updates navipane, voice clip icon and duration of the clip.
+	     * Focuses the right object.
+	     */
+        void DoLaunchCompleteL( TAmsOperationEvent aEvent );
+	    /**
+	     * Called when save operation finishes. 
+	     */
+        void DoSaveCompleteL();
+	    
+	    /**
+	     * Called after DoSaveComplete or DialogDismissed 
+	     */
+	    void DoOpComplete2ndPhaseL();
+	    
+	    /**
+	     * Called when send operation finishes. After that application exit
+	     */
+        void DoSendCompleteL();
+	    /**
+	     * Called when remove operation finishes. Removes wait note, clean
+	     * duration and change icon for clipstatus
+	     */
+        void DoRemoveCompleteL();
+        
+	    /**
+		 * Reports errors that appears during insertion to appui
+	     */
+        void ShowInsertErrorsL();
+
+    private:
+
+        /**
+         * By default Symbian OS constructor is private.
+         */
+        void ConstructL(); 
+
+    private: // New functions
+          
+        /**
+         * Check if message has any data i.e. either in header ("To"),
+         * in message body or as attachments.
+         *
+         * @return ETrue, message empty,
+         *         EFalse, message not empty
+         */        
+        TBool IsMessageEmpty() const;
+   
+        /**
+         * Updates the address size to CAudioMessageDocument
+         */
+        void SetAddressSize();
+        
+        /**
+         * Updates the address size to CAudioMessageDocument
+         */
+        void SetBodySize();
+
+        /**
+         * Checks message content and if ok send message
+         */        
+        void DoUserSendL();
+ 
+        /**
+         * Handles message saving after exit 
+         */        
+        void DoMsgSaveExitL();
+
+        /**
+         * Handles delayed (external) exit 
+         */        
+        void DoDelayedExitL( TInt aDelayTime );
+
+        /**
+         * Handles message saving after user has pressed close.
+         */        
+        void DoBackSaveL();
+
+        /**
+         * Does actual saving of message to DRAFT folder.
+         */        
+        void DoSaveL();
+
+        /**
+         * Handles user message info command. 
+         */        
+        void DoUserMessageInfoL();
+
+        /**
+         * Handles user sending settings command. 
+         */        
+        //void DoUserSendingOptionsL();
+ 
+        /**
+         * Handles audio clip play command
+         * @param none 
+         */ 
+        void PlayAudioL();       
+        
+        /**
+         * Handles Delete message commands using by 
+         * object CAudioMessaegeInsertOperation.
+         * @param none 
+         */ 
+        void DeleteMessageL();
+        
+        void DoCallToSenderL();
+ 
+        /**
+         * Creates a media info object from given file and
+         * performs a preliminary check whether it is ok to 
+         * insert the given media file.
+         *
+         * The media info object is created to "iInsertingMedia"
+         * member variable.
+         *
+         * @param aFileName  Media file to be checked
+         * @return ETrue if media info object was created
+         *         EFalse otherwise
+         */        
+        TBool CreateMediaInfoForInsertL( const TDesC& aFileName );
+
+        /**
+         * Checks whether the media object in "iInsertingMedia"
+         * member variable is SuperDistributable or not. If yes
+         * and Full OMA DRM is supported gives "Send without 
+         * rights query".
+         *
+         * Deletes the "iInsertingMedia" variable if query is
+         * not accepted.
+         *
+         * @return ETrue, if it is ok to insert the media
+         *         EFalse, otherwise (iInsertingMedia deleted!)
+         */
+        TBool SuperDistributionCheckForInsertL();
+
+        /**
+         * Draws navipane at launch time for viewer mode.
+         */
+        void InitViewerNaviPaneL();
+
+        /**
+         * Draws navipane at launch time for editor mode.
+         */
+        void InitEditorNaviPaneL();
+  
+        /**
+         * Auxiliary function. Shows a infomation note using notewrappers. 
+         *
+         * @param aResourceID
+         * @param aWaiting, is note waiting or not.
+         */  
+        void ShowInformationNoteL(TInt aResourceID, TBool aWaiting );
+
+        /**
+         * Auxiliary function. Shows an eror note using notewrappers. 
+         *
+         * @param aResourceID
+         * @param aWaiting, is note waiting or not.
+         */  
+        void ShowErrorNoteL(TInt aResourceID, TBool aWaiting );
+
+        /**
+         * Auxiliary function. 
+         * Shows a confirmation query.
+         *
+         * @param aResourceID
+         * @return the return value returned by CAknQueryDialog::ExecuteLD
+         */  
+        TInt ShowConfirmationQueryL( TInt aResourceID );
+
+  
+        /**
+         * Shows wait note using CAknWaitDialog.
+         *
+         * @param aResourceID
+         */
+        TBool ShowWaitNoteL( TInt aResourceId );
+        
+        /**
+         * Remove wait note from screen.
+         */
+        void RemoveWaitNote();
+
+        /** 
+         * Handles text addition to model when needed, updates size
+         * when addreses or bodytext edited.
+         */        
+        void HandleCharInputL();
+
+   
+        /**
+         * Check if message is forwarded.
+         *
+         * @return ETrue, if is forward.
+         */
+        TBool IsForward() const;
+
+        /**
+         * Message size according to TS 23.140 v5.5.0
+         *
+         * @return size in bytes
+         */
+        TInt MessageSizeInBytes();
+
+        /**
+         * Handles selection key press.
+         */
+        void DoSelectionKeyL();
+
+        /**
+         *
+         */
+        void FinalizeLaunchL();
+        
+        /**
+         *  
+         */
+        TBool ShowLaunchErrorsL( TInt aError );
+
+        /**
+         * Sets an error resource id to be handled later
+         * (usually after LaunchViewL).
+         *
+         * @param aStoreId   IN/OUT  The correct id is stored here
+         * @param aNewId     IN      Error id
+         */
+        void SetErrorResource( TInt& aStoreId, TInt aNewId );
+        
+ 
+        /**
+         * Determines error "priority"
+         */
+        TInt ErrorPriority( TInt aErrorId );
+
+
+        /**
+         * Checks if phone is in offline mode or not
+         *
+         * @return ETrue if phone is in offline mode
+         *         Otherwise EFalse.
+         */
+        TBool IsPhoneOfflineL() const;
+
+        /**
+         * Checks whether there's enough disk space
+         * to save the message.
+         *
+         * @return ETrue if there is enough disk space.
+         *         Otherwise EFalse.
+         */
+        TBool CanSaveMessageL() const;
+        
+        /**
+         * Handles user add recipient command. 
+         */        
+        void DoUserAddRecipientL();
+        
+        /**
+         * Set sender to "from" -field in viewer.
+         */        
+        void SetSenderL();
+
+        /**
+         * Set sender to "subject" -field in viewer.
+         */        
+        void SetSubjectL();
+        
+        /**
+         * Set recipient(s) to "to" -field in viewer.
+         */        
+        void InsertRecipientL();
+        
+        /**
+         * Implements reply commands.
+         * Launches AMS/SMS/MMS Editor by utilising SendUI.
+         * @param aCase EReplyViaAMS, EReplyViaSMS or EReplyViaMMS
+         */
+        void DoReplyViaL( TInt aCase );
+
+        void DoDoReplyViaMessageL( );
+
+
+        /**
+         * Implements forward command.
+         * Launches MMS Editor for replying/forwarding.
+         */
+        void DoForwardL();
+
+        /** 
+         * Launches help application
+         */
+        void LaunchHelpL();
+
+        /** 
+         * Gets help context
+         */
+        CArrayFix<TCoeHelpContext>* HelpContextL() const;          
+
+        /**
+         * Converts number-strings to/from arabic-indic <-> western 
+         * NOTE : Leaves string to CleanupStack
+         * @param aOrigNumber contains the number to be converted
+         * @param aDirection EFalse -> western, ETrue -> arabic-indic if needed
+         * @return HBufC* buffer contains converted string
+         */
+        HBufC* NumberConversionLC( const TDesC& aOrigNumber, TBool aDirection );
+
+       	/**
+         * Calls mms mtm ui to launch delivery status dialog after user has choosed
+         * EMmsViewerDeliveryStatus from the options menu.
+         */
+        void OpenDeliveryPopupL( );
+        
+        /**
+         * Implements the move command.
+         * Shows a folder selection dialog
+         * (CMsgFolderSelectionDialog), moves the message
+         * entry into selected folder and exits the viewer.
+         */
+        void DoMoveMessageL();
+        
+        /**
+         * Returns the control id of the currently focused control.
+         * @return Control id of the focused control or
+         *         EMsgComponentIdNull if no control focused
+         */
+        TInt FocusedControlId();
+
+        /**
+         *  Active scheduler start for saving
+         */
+        void BeginActiveWait();
+
+        /**
+         *  Active scheduler stop for saving
+         */
+        void EndActiveWait();
+  
+        /**
+         * Creates tabgroup, puts inbox arrows and possible 
+         * priority flags
+         * @param aText string in the navipane
+         *        
+         */       
+#ifndef RD_MSG_NAVIPANE_IMPROVEMENT        
+        void CreateTabGroupL( const TDesC& aText );   
+#endif   //!RD_MSG_NAVIPANE_IMPROVEMENT 
+        /**
+         * Checks silent mode.
+         * @return ETrue if handset is silent.
+         */
+        TBool IsSilentModeL();
+
+        /**
+         * Updates navipane content.
+         */
+  		void UpdateViewerNaviFieldL( );
+  		
+  		/**
+         * Updates navipane content.
+         * @param EAmsOnlyLength=0,EAmsTextEditorAndLength,
+	     *        EAmsMsgArrows
+         */
+  		void UpdateEditorNaviFieldL( TAmsNaviType aNaviType);
+
+
+        /** 
+         * Makes to- field check
+         * @param aModified
+         * @return ETrue if to-fiels is valid, EFalse otherwise
+         */        
+	   	TBool CheckNamesL( TBool& aModified );
+	   
+	   	/**
+         * Shows address info (error) note
+         *
+         * @param aAddress
+         * @param aAlias
+         */
+        void ShowAddressInfoNoteL( const TDesC& aAddress, const TDesC& aAlias );
+        
+                /**
+        * Handles resource change events.
+        */
+        void HandleResourceChangeL(TInt aType);
+        
+        void SetTitleIconL();
+        void SetTitleIconSize();
+  	protected:
+	    /**
+	     * Deletes current entry and then exits.
+	     */
+	    void DeleteAndExitL();
+	
+	    /**
+	     * Deletes current entry.
+	     */
+	    void DeleteCurrentEntryL();
+	    
+	    /**
+	    * Verifies addresses in address control.
+	     *
+	     * @return ETrue, if verify successful,
+	     *         EFalse otherwise
+	     */        
+	    TBool VerifyAddressesL( TBool& aModified );
+
+    private:
+         
+        /**
+	     * real command handling
+	     */ 
+        void DoHandleCommandL(TInt aCommand);
+        
+    	/**
+         * Handles user insert audio command. Creates atta and draws audio 
+         * (indicator) to display.
+         *
+         * @param aStatus, 	EAudioInsert =0,EAudioInserted	
+         */        
+    	void SetAudioClipIconL( TAmsRecordIconStatus aStatus );
+
+	    /**
+	     * Saves messages audioclip to user selected folder
+	     */
+		void SaveAudioClipL();
+
+	    /**
+	     * Call FetchFileL with right parameter
+         * @param aNew, ETrue for recording a new audio clip,
+         *              EFalse for fetching an existing one.
+	     */        
+	    void InsertAudioL( TBool aNew );
+        void DoInsertAudioL( TFileName &aCmdFileName );
+        
+        /** 
+         * Accessor
+         * Returns To field control 
+         * @return Pointer to To control or
+         *         NULL if To control does not exist
+         */
+        CMsgAddressControl* ToCtrl() const;
+         
+        /** 
+         * Get pointer to From ctrl instance
+         *
+         * @return Pointer to from control or
+         *         NULL if from control does not exist
+         */
+        CMsgAddressControl* FromCtrl() const; 
+		
+		void SetNaviPaneL();
+		
+		void DoEditAmsPriorityL( );
+		
+        CAknIconArray* RadioButtonArrayL( );
+        
+        void UpdateIndicatorIcons( TMmsMessagePriority aPriority );
+        
+        TBool UnsupportedCallTypeOngoing( /*TBool aShowNote*/ );
+		
+		TBool CheckIncomingCall(  );
+		
+		TBool DoEnterKeyL();
+		// Inline functions:
+ 
+        /** 
+         * Get pointer to Subject ctrl instance
+         *
+         * @return Pointer to subject control or
+         *         NULL if subject control does not exist
+         */
+        inline CMsgExpandableControl* SubjectCtrl() const;
+   
+        /** 
+         * Get pointer to body control
+         *
+         * @return Pointer to body control or
+         *         NULL if body control does not exist
+         */
+        inline CMsgBodyControl* BodyCtrl() const;
+        
+        /** 
+         * Get pointer to document instance
+         *
+         * @return Pointer to AudioMessageDocument
+         */
+        inline CAudioMessageDocument* Document() const;
+
+        /**
+         * Check if message header is empty
+         *
+         * @return ETrue, to field is empty,
+         *         EFalse, to field has text
+         */        
+        inline TBool IsHeaderEmpty() const;
+
+        /**
+         * Check if message body is empty
+         *
+         * @return ETrue, message body empty,
+         *         EFalse, message body not empty
+         */        
+        inline TBool IsBodyEmpty() const;
+
+        /**
+         * Get reference to file session
+         *
+         * @return Reference to file session
+         */        
+        inline RFs& FsSession() const;
+
+        /**
+         * Get senders type
+         *
+         * @return ESenderTypePhoneNumber, ESenderTypeMailAddress,
+         *          ESenderTypeNone
+		 */
+		inline TAmsSenderType SenderType();
+        
+        /**
+        * Sends read report, if message if new and launch was complete.
+        */
+        void SendReadReportL( TAmsOperationEvent aEvent );
+        
+        /*
+        *  Handles zoom change
+        */
+        void DoHandleLocalZoomChangeL( TInt aCommand );
+        
+#ifdef RD_SCALABLE_UI_V2
+        /**
+         * From MAknToolbarObserver
+         * Should be used to set the properties of some toolbar components 
+         * before it is drawn.
+         * @param aResourceId The resource ID for particular toolbar
+         * @param aToolbar The toolbar object pointer
+         */
+        virtual void DynInitToolbarL(   TInt            aResourceId, 
+                                        CAknToolbar*    aToolbar );
+        
+        /**
+         * From MAknToolbarObserver
+         * Handles toolbar events for a certain toolbar item.
+         * @param aCommand The command ID of some toolbar item.
+         */
+        virtual void OfferToolbarEventL( TInt aCommand );
+#endif
+
+#ifdef RD_SCALABLE_UI_V2
+        /**
+        * Sets tool bar item visibilities
+        * @return TBool
+        */        
+        void SetViewerToolBarItemVisibilities();
+        
+         /**
+        * Sets tool bar item visibilities
+        * @return TBool
+        */        
+        void SetEditorToolBarItemVisibilities();
+        
+        /**
+        * Returns ETrue if the message is self composed and
+        * EFalse otherwise (a received message).
+        * @return ETrue if message is self composed,
+        *         EFalse otherwise (received)
+        */  
+        TBool IsOwnMessage( ) const;
+        
+        TBool HasSender( ) const;
+        
+        void SetFixedToolbarL( const TInt aResId );
+        
+#endif
+       
+
+    private:     // Data
+   		/**
+   		* For absorbing keypresses
+   		* Own.  
+   		*/
+        CAknInputBlock* iAbsorber;
+        
+        /**
+   		* For delayed exit
+   		* Own.  
+		*/
+		CPeriodic* iIdle;
+        CMmsClientMtm* iMtm;  
+        CAknWaitDialog* iWaitDialog;
+        TInt iWaitResId;
+   	  	/**
+     	* Titlepane
+     	* Own.  
+		*/
+        CAknTitlePane* iTitlePane;
+        CRepository* iSettingsRepository;
+        CRepository* iAudioMesseageRepository;
+        TUint32 iEditorFlags;
+        TInt iSupportedFeatures;
+        
+        /**
+   		* For inserting voice
+   		* Own.  
+		*/
+        CAudioMessageInsertOperation* iInsertOperation;
+
+        /**
+     	* For launching
+     	* Own.  
+		*/
+        CAudioMessageLaunchOperation* iLaunchOperation;
+
+        /**
+     	* For saving message
+     	* Own.  
+		*/
+        CAudioMessageSaveOperation* iSaveOperation;
+
+        /**
+     	* For sending message
+     	* Own.  
+		*/
+        CAudioMessageSendOperation* iSendOperation;
+
+        CMsgMediaInfo* iInsertingMedia;
+
+        CFindItemMenu* iFindItemMenu;
+
+        CActiveSchedulerWait iWait;
+       	CAudioMessageProgressDialog* iProgressDlg;
+
+        CUniAddressHandler* iAddressHandler;
+        CAknLocalScreenClearer*    iScreenClearer;
+        
+        TAmsSenderType iSenderType;
+        HBufC* iAlias;
+        CAknNavigationControlContainer* iNaviPane;
+		TInt iNaviFlags;
+ 
+		CAknIndicatorContainer* iNavi_length;
+#ifndef RD_MSG_NAVIPANE_IMPROVEMENT        
+        CAknNavigationDecorator* iNavi_next_prev_msg_arrows; 
+#endif        
+        CAknNavigationDecorator* iIhfVolumeControl;
+        CAknNavigationDecorator* iHeadsetVolumeControl;
+        CAknNavigationDecorator* iActiveVolumeControl;		
+		TInt iCurrentVolume;
+        CCenRepNotifyHandler* iNotifyHandler;
+        CRepository* iCUiRepository;
+        TInt iMyWgId; // Window group id for AudioMessage
+        TInt iFSWindowGroupId;// Window group id for FastSwapWindow
+        TInt iAknNfySrvUi;
+        TInt iSysWgId;
+        TInt32 iVoiceKeyHandle; // Voice key capture handle, must be released
+		TBool iSpeakerEarpiece;
+		TBool iInserting;
+        CMsgVoIPExtension* iMsgVoIPExtension;      
+      	HBufC* iTimeDuratBase;
+      	HBufC* iClipFileName;
+        /// Sends read report
+        CAudioMessageSendReadReportOperation* iSendReadReportOperation;
+        TInt iCurrentSkResId;
+        
+        CGulIcon* iAppIcon;
+        
+#ifdef RD_SCALABLE_UI_V2
+        CAknToolbar*                iToolbar;
+#endif
+    };
+    
+#include "audiomessageappui.inl"
+
+#endif      //  _AUDIOMESSAGEAPPUI_H
+