voicerecorder/RecViewSrc/CVRMemo.h
branchRCL_3
changeset 25 c6bafb5162d8
parent 0 845549f293a7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/voicerecorder/RecViewSrc/CVRMemo.h	Wed Sep 01 12:29:14 2010 +0100
@@ -0,0 +1,344 @@
+/*
+* Copyright (c) 2002 - 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: 
+*     This class represents a voice memo. It is able to create new files,
+*     rename and delete existing files, and to save them to permanent storage.
+*
+*/
+
+
+#ifndef __CVRMEMO_H__
+#define __CVRMEMO_H__
+
+// INCLUDES
+#include <f32file.h>
+#include "voicerecorder.hrh"
+#include "VRConsts.h"
+
+// FORWARD DECLARATIONS
+class CAknWaitDialog;
+class CAknGlobalNote;
+
+// CLASS DEFINITION
+/**
+* This class represents a voice memo. It is able to create new files,
+* rename and delete existing files, and to save them to permanent storage.
+*/
+NONSHARABLE_CLASS( CVRMemo )
+	: public CBase
+	{
+
+    public: // enumerations
+
+        /*
+        * File format of voice recorder
+        * Possible values = 0 (AMR).
+        */
+        enum TVRFileFormat
+	        {
+	        EVRFormatAMR = 0	        
+	        };
+
+	public: // constructors and destructor
+
+		/**
+		* Default constructor.
+		*/
+		CVRMemo();
+
+		/**
+		* Destructor.
+		*/
+		~CVRMemo();
+
+		/**
+		* 2nd phase constructor.
+        * @param aDefaultAudioFormat Default audio file format of VR
+        *        Is really defined as TVRFileFormat, but for legacy reasons
+        *        not used that way yet.
+		*/
+		void ConstructL(TInt aDefaultAudioFormat);
+	
+	public: // new methods
+
+		/**
+		* Changes the file name of this memo object.
+		* @param aFilename New file name.
+		*/
+		void SetName( const TDesC& aFilename );
+
+		/**
+		* Sets the file name to a non-existent, new, name.
+		* @param aEmbedded is true if creating temporary name for embedded
+		* 				recording (different path)
+		*/
+		void SetTemporaryNameL( TBool aEmbedded = EFalse );
+
+		/**
+		* Shows a confirmation query and deletes the memo file
+		* if user accepts.
+		* @return ETrue if deletion was confirmed.
+		*/
+		TBool QueryAndDeleteL();
+
+		/**
+		* Deletes the current memo file.
+		* The memo file name is set to KNullDesC
+		*/
+		void DeleteL();
+
+		/**
+		* Queries the user for a new name for the current memo file.
+		* @return ETrue if rename was confirmed.
+		*/
+		TBool QueryAndRenameL();
+
+		/**
+		* Saves this memo to permanent storage. Removes the original
+		* copy from RAM unless otherwise requested.
+		* @param aProduceCopy Specify ETrue if you want to leave the
+		*                     original memo file intact.
+		*/
+		void SavePermanentlyL( CAknGlobalNote* aWaitNote, TInt& aNoteId,
+							   const TDesC& aLabel, TBool aProduceCopy = EFalse );
+
+		/**
+		* Checks wether the memo file represented by this object exists or not
+		* @return ETrue if the file exists
+		*/ 
+		TBool IsValid() const;
+
+		/**
+		* Re-reads the file modification timestamp.
+		*/
+		void UpdateModifiedDate();
+
+		/**
+		* Returns the duration of the memo in microseconds.
+		* @return Duration
+		*/
+		inline const TTimeIntervalMicroSeconds& Duration() const;
+
+		/**
+		* Sets the duration of the memo in microseconds.
+		* This is for data storage only (does not affect playback).
+		* @param aDuration The new duration.
+		*/
+		inline void SetDuration( const TTimeIntervalMicroSeconds& aDuration );
+
+		/**
+		* Returns the current playing position of the memo in microseconds.
+		* @return Playing position
+		*/
+		inline const TTimeIntervalMicroSeconds& Position() const;
+
+		/**
+		* Sets the current playing position of the memo in microseconds.
+		* This is for data storage only (does not affect playback).
+		* @param aPosition The new position
+		*/
+		inline void SetPosition( const TTimeIntervalMicroSeconds& aPosition );
+
+		/**
+		* Returns the maximum duration of the memo in microseconds.
+		* @return Maximum duration (for recording)
+		*/
+		const TTimeIntervalMicroSeconds& MaxDuration();
+
+		/**
+		* Returns the complete file name (path and everything).
+		* @return Reference to the memo name.
+		*/
+		inline const TDesC& Filename() const;
+
+		/**
+		* Returns the name portion of the complete file name.
+		* @return Reference to the memo name.
+		*/
+		inline const TPtrC& Name() const;
+
+		/**
+		* Returns the creation date of this file.
+		* @return Reference to the date.
+		*/
+		inline const TTime& DateCreated() const;
+
+		void SetSavingLocationL( const TDesC& aPath );
+		
+		/**
+		* Returns the handle of the memo file.
+		* You may have to check the SubSessionHandle() to
+		* now if the file has been opened
+		* @return Reference to the file handle
+		*/
+		inline RFile& File();
+
+		/**
+		* Returns the active quality setting.
+		* @return Quality setting of the active memo
+		*/
+		inline TVRQuality Quality() const;
+
+		/**
+		* Used to set the target file handle.
+		* @param aFile File handle
+		* @param aEmbedded True if recording for external application and
+		*		 handle must be kept open all the time
+		*/
+		void SetFileHandle( RFile& aFile, const TBool aEmbedded = EFalse );
+
+		/**
+		* Check if quality setting has changed and memo needs to be renamed.
+		* Should be called at least before starting to record first memo
+		* after application launch.
+		*/
+		void CheckQualityL();
+		
+		/**
+		* Sets the attribute iIsRecorded ETrue if recording is started. EFalse
+		* if memo is attached but recording isn't started.
+		* @param aRecorded ETrue when recording is started
+		*/
+		void SetRecorded( TBool aRecorded );
+		
+		/**
+		* Returns the current memo store.
+		* .
+		*/
+		inline TVRMemoStore MemoStore() const;
+
+		/**
+		* Returns the creation date of this file.
+		* @return Reference to the date.
+		*/
+		inline TInt StorageDrive() const;
+		
+		
+		
+	private:
+		/**
+		* Checks if iFile has an empty file open
+		* and deletes it, leaving iFile closed
+		* @return returns ETrue if file was deleted
+		*/
+		TBool DeleteEmptyFile();
+		
+		/**
+		* Checks if recording to the currently open memo is started
+		* Returns ETrue if recording is started, EFalse if not
+		*/
+		TBool IsRecorded() const;
+
+	private: // data
+
+		/**
+		* Length of this memo in microseconds.
+		*/
+		TTimeIntervalMicroSeconds iDuration;
+
+		/**
+		* Length of this memo in microseconds.
+		*/
+		TTimeIntervalMicroSeconds iPosition;
+
+		/**
+		* Maximum length for all memos.
+		*/
+		TTimeIntervalMicroSeconds iMaxDuration;
+
+		/**
+		* The final path and file name of the memo.
+		* Memo is moved to this path from temp drive when 
+		* when it's saved
+		*/
+		TFileName iFilename;
+
+		/**
+		* Handle to actual file system file
+		*/
+		RFile iFile;
+
+		/**
+		* The name of this memo (the file name minus extension).
+		* This is a ptr descriptor to the iFileName;
+		*/
+		TPtrC iNamePtr;
+
+		/**
+		* The creation time of this memo.
+		*/
+		TTime iDateCreated;
+
+		/**
+		* A reference to a connected file server session.
+		* Used as a short cut. Not owned.
+		*/
+		RFs iFs;
+
+		/**
+		* Pointer to a file manager object. Owned.
+		*/
+		CFileMan* iFileMan;
+
+		/**
+		* The directory where memos will be saved.
+		*/
+		TFileName iSavingLocation;
+
+		/**
+		* Default audio format for recording audio clip
+		*/
+		TInt iVRAudioFormat;
+        
+		/**
+		* Are we in embedded mode
+		*/        
+		TBool iEmbedded;
+		
+		/**
+		* Is the RFile received from outside or should we close it
+		*/        
+		TBool iExternalFileHandle;		
+
+        /**
+        * Cached quality setting
+        */
+        TVRQuality iQuality;
+		
+		/**
+		* Cached storage place setting
+		*/
+		TVRMemoStore iStoragePlace;
+
+		/**
+		* Cached storage drive setting
+		*/
+		TInt iStorageDrive;
+		
+		/**
+		* Last time that the estimate was updated
+		*/
+		TTime iLastEstimate;
+		
+		/**
+		* Tells if recording of current open memo is started. 
+		* EFalse: not recording started
+		* ETrue: recording is started
+		*/
+		TBool iIsRecorded;
+	};
+
+#include "CVRMemo.inl"
+
+#endif	// __CVRMEMO_H__