mobilemessaging/audiomsg/inc/audiomessagedocument.h
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mobilemessaging/audiomsg/inc/audiomessagedocument.h	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,394 @@
+/*
+* 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:   Document class for AudioMessage application
+*
+*/
+
+
+
+
+#ifndef __AUDIOMESSAGEDOCUMENT_H
+#define __AUDIOMESSAGEDOCUMENT_H
+
+#include <msvapi.h>     
+#include <MsgEditorDocument.h>
+#include <mmsmsventry.h>
+
+#include "audiomessage.hrh"
+
+class CMmsClientMtm;
+class CBaseMtmUi;
+class CMsgMediaResolver;
+
+// ========== CLASS DECLARATION ============================
+
+/**
+ * document class
+ *
+ * @lib AudioMessage.exe
+ * @since S60 v3.1
+ */
+class CAudioMessageDocument : public CMsgEditorDocument
+    {
+
+    public:     // New functions
+
+       /**
+        * Messagetype accessor
+        *
+        * @return Message type
+        */
+        TAmsUiMessageType MessageType() const;
+
+        /**
+         * C++ constructor
+         *
+         * @param aApp   Reference to application instance
+         */
+        CAudioMessageDocument( CEikApplication& aApp );
+
+        /**
+         * Factory function to create this object
+         *
+         * @param aApp   Reference to application instance
+         */
+        static CAudioMessageDocument* NewL( CEikApplication& aApp );
+
+        /**
+         * Destructor.
+         */
+        /*virtual*/ 
+        ~CAudioMessageDocument();
+ 		
+ 		/**
+	     * DefaultMsgService
+	     * From CMsgEditorDocument
+	     * Returns default message service used by application
+	     * @return TMsvId KMsvLocalServiceIndexEntryId.
+	     */
+	    inline TMsvId DefaultMsgService() const;
+	       
+	    /**
+	     * DefaultMsgFolder
+	     * Returns default folder for new messages.
+	     * @return ID of the Drafts folder.
+	     */
+	    inline TMsvId DefaultMsgFolder() const;
+	    
+	    /**
+	     * CreateNewL
+	     * From CMsgEditorDocument
+	     * Creates new message.
+	     * A new message of type Postcard is created
+	     * in a destination folder.
+	     * Calls CreateNewL(TMsvId aServiceType, TMsvId aDestination,
+	     *                  TInt aTypeList).
+	     * @param aService service used for message
+	     * @param aDestFolder folder in which message will be saved eg.
+	     *                    KMsvDraftEntryIdValue
+	     * @return ID of mail operation.
+	     */
+	    TMsvId CreateNewL(TMsvId aService, TMsvId aDestFolder);
+	    
+	    /**
+	     * EntryChangedL
+	     * From CMsgEditorDocument
+	     * Called after entry is changed by BaseEditor SetEntry Function.
+	     * From MsgEditorDocument
+	     */
+	    void EntryChangedL();
+
+	    /**
+	     * Mtm
+	     * Accessor (Overrides baseeditor)
+	     * Returns CMmsClientMtm reference correctly casted from CBaseMtm
+	     * @param  None
+	     * @return Reference to documents CMmsClientMtm
+	     */
+	    CMmsClientMtm& Mtm();
+
+	    /**
+	     * MtmUi
+	     * Accessor (Overrides baseeditor)
+	     * Returns CBaseMtmUi reference
+	     * @param  None
+	     * @return Reference to documents CBaseMtmUi
+	     */
+	    CBaseMtmUi& MtmUi();
+
+	    /**
+	     * InitializeL
+	     * Creates MediaResolver
+	     */ 
+	    TInt InitializeL();
+
+        /**
+         * Set whether message is SendAs, Forward, Reply or Open from Draft.
+         * Function determines it from launchflags & entry flags.
+         */
+        void SetMessageType();
+
+        /*
+         * Mutator. 
+         *
+         * @param size of "addresses"
+         */
+        inline void SetAddressSize( TInt aAddressSize );
+        
+        /**
+         * Accessor
+         *
+         * @return size of address
+         */
+        inline TInt AddressSize() const;
+
+        /**
+         * Accessor
+         *
+         * @return size of audio file
+         */
+        inline TUint AudioFileSize() const;
+        /**
+         * Mutator. 
+         *
+         * @param size of audio file
+         */
+       	inline void SetAudioFileSize( TUint aAudioFileSize );
+
+   	   	/**
+         * Accessor
+         *
+         * @return maximum message size in bytes
+         */
+      	inline TUint32 MaxMessageSize() const;
+     	
+     	/**
+         * Saved
+         * Queries whether message is saved.
+         * @param None
+         * @return ETrue,  User has already saved message (in this or some previous session)
+         *                 ie InPreparation flag is not set
+         *         EFalse, Message has not been saved by user yet.
+         */
+        inline TBool Saved() const;
+
+        /**
+         * Mutator
+         * Set the body modified flag.
+         *
+         * @param aModified
+         */
+        inline void SetBodyModified( TBool aModified );
+
+        /**
+         * Accessor
+         * Get the body modified flag.
+         *
+         * @return iBodyModified flag
+         */
+        inline TBool BodyModified() const;
+
+        /**
+         * Mutator
+         * Set the header modified flag.
+         * @param aModified
+         */
+        inline void SetHeaderModified( TBool aModified );
+
+        /**
+         * Accessor
+         * Get the header modified flag.
+         *
+         * @return iHeaderModified flag
+         */
+        inline TBool HeaderModified() const;
+
+        /*
+         * Accessor
+         *
+         * @return ETrue if either iBodyModified or iHeaderModified
+         *         flag is ETrue.
+         */
+        inline TBool Modified() const;
+        
+		/**
+		* Sets the duration of the voice in microseconds.
+		* This is for data storage only (does not affect playback).
+		* @param aDuration The new duration.
+		*/
+        inline void SetDuration(TTimeIntervalMicroSeconds aDuration);
+		/**
+		 * Request duration information from the implementor
+		 * @return duration in microseconds 
+		 */
+		inline TTimeIntervalMicroSeconds GetDuration();
+   		
+	    /**
+	    * Get pointer to MediaResolver
+	    * @return Pointer to MediaResolver
+	    */
+   		inline CMsgMediaResolver* MediaResolver( );
+
+        /*
+        * Mutator
+        * Set the application mode : EAmsEditor/EAmsViewer.
+        * @param aStatus
+        */
+   		inline void SetAppMode(TAmsAppStatus aStatus );
+ 
+        /*
+        * Accessor
+        *
+        * @return the mode of application EAmsEditor/EAmsViewer
+        *         
+        */
+   		inline TAmsAppStatus GetAppMode();
+   		
+        /*
+        * Mutator
+        * Set the audio clip status : EAmsClipNone/EAmsClipFromGallery/EAmsClipFromRecorder.
+        * @param aStatus
+        */
+   		inline void SetClipStatus(TAmsClipStatus aStatus );
+
+        /*
+        * Accessor
+        *
+        * @return the status of audio clip : EAmsClipNone/EAmsClipFromGallery/EAmsClipFromRecorder.
+        *         
+        */
+   		inline TAmsClipStatus GetClipStatus();
+
+        /*
+        * Mutator
+        * Set the audio insert status : inside, recoder, fetched, smil added.
+        * @param aStatus
+        */
+   		inline void SetInsertedStatus(TAmsInsertedStatus aStatus );
+
+        /*
+        * Accessor
+        *
+        * @return the status of audio clip : EAmsNone/EAmsRecorded/EAmsFetched/
+        *          							 EAmsInsideMessage/EAmsSmilAdded
+        */
+   		inline TAmsInsertedStatus GetInsertedStatus();
+   		
+   		inline TAmsRecordIconStatus GetRecordIconStatus(); 
+   		
+   		inline void SetRecordIconStatus ( TAmsRecordIconStatus aRecordIconStatus );
+   		   
+     	/**
+        * Check if message is forwarded.
+        *
+        * @return ETrue, if is forward.
+        */
+        inline TBool IsForward() const;
+        
+        TBool IsAmrL( RFile& aFile,TDataType& aMimeType ) const;
+
+
+    private:
+
+        /**
+        * 2nd phase constructor
+        * By default Symbian OS constructor is private.
+        */
+        void ConstructL();
+
+        /**
+        * Creates a new AudioMessageAppUi
+        *
+        * @return a pointer to CAudioMessageAppUi
+        */
+        CEikAppUi* CreateAppUiL();
+
+    public:  // data
+         
+         /**
+         * Attachmentid for audio.  
+		 */
+        TMsvAttachmentId iAudio;
+
+        /**
+         * Attachmentid for smil.  
+		 */
+        TMsvAttachmentId iSmil;
+
+
+    private:  // data
+
+        /**
+	     * from where message is opened
+	     */
+        TAmsUiMessageType iMessageType;
+
+	    /**
+	     * mediaresolver
+	     * Own.
+	     */
+	    CMsgMediaResolver* iMediaResolver;
+
+	    /**
+	     * for recordingdlg use
+	     */
+	    TInt iMaxMessageSize;
+	    
+	    /**
+	     * for to-control
+	     */
+	    TInt iAddressSize;
+
+	    /**
+	     * amr file size
+	     */
+	    TUint iAudioFileSize;
+
+	    /**
+	     * dirty bit for recipients
+	     */
+	    TBool iHeaderModified;
+
+	    /**
+	     * dirty bit for voicefile
+	     */
+	    TBool iBodyModified;
+
+   	    /**
+	     * amr duration ms
+	     */
+		TTimeIntervalMicroSeconds iDuration;
+
+   	    /**
+	     * editor or viewer
+	     */
+		TAmsAppStatus iAppStatus;
+
+   	    /**
+	     * callery, recoder, attachment
+	     */
+		TAmsClipStatus iClipStatus;
+
+   	    /**
+	     * none, recoder,fetched, smiladded, inside
+	     */
+		TAmsInsertedStatus iInsertedStatus;
+
+		TAmsRecordIconStatus iRecordIconStatus;
+	};
+
+#include "audiomessagedocument.inl"
+
+#endif      // __AUDIOMESSAGEDOCUMENT_H
+