videditor/VideoEditorCommon/inc/VideoEditorUtils.h
changeset 0 951a5db380a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videditor/VideoEditorCommon/inc/VideoEditorUtils.h	Fri Jan 29 14:08:33 2010 +0200
@@ -0,0 +1,285 @@
+/*
+* Copyright (c) 2010 Ixonos Plc.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "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:
+* Ixonos Plc
+*
+* Description: 
+*
+*/
+
+
+#ifndef VIDEOEDITORUTILS_H
+#define VIDEOEDITORUTILS_H
+
+// INCLUDES
+#include <e32base.h>
+#include <coemain.h>
+#include <VedCommon.h>
+#include "VideoEditorCommon.h"
+
+// FORWARD DECLARATIONS
+class RFs;
+class TVeiSettings;
+
+// CONSTANTS
+const TInt KManualVideoEditorIconFileId = 0;
+const TInt KVideoEditorUiComponentsIconFileId = 1;
+const TInt KVeiNonScalableIconFileId = 2;
+
+/**	CLASS:	VideoEditorUtils
+* 
+*	Static utility class.
+*
+*/
+NONSHARABLE_CLASS( VideoEditorUtils )
+{
+public:
+
+    /** @name Methods:*/
+    //@{
+
+    /**	GenerateNewDocumentNameL 
+	*
+	*   Generates a new name for the loaded document at the startup.
+	*
+    *   The generated file is located on the MMC dy default. If the 
+    *   MMC is full or not present, the file will be in phone memory.
+    *   Uses internally VideoFitsToDriveL to check the space.
+    *
+	*   Media gallery album id list now obsolete after Media Gallery removal.
+    *	If an invalid album list is passed the behaviour is undefined.
+	*
+	*   @param aFsSession -
+	*   @param aSourceFileName -
+	*   @param aTargetFileName -
+	*   @param aOutputFormat - video format of the target file
+	*   @param aTargetSizeEstimate - the expected target file size. 
+	*             This value is used to check whether there is enough space on the disks.
+	*   @param aMemoryInUse - where the target file is created.
+	*   @return - KErrNone if successfully generated file name
+	*             KSIEENotEnoughDiskSpace if no disk space to save the file
+	*             (size of aSourceFileName used to check the space)
+	*             KSIEEOpenFile if the source filename is invalid
+	*/
+    IMPORT_C static TInt GenerateNewDocumentNameL (
+        RFs& aFsSession, 
+        const TDesC& aSourceFileName, 
+        TDes& aTargetFileName,
+        TVedVideoFormat aOutputFormat,
+        TInt aTargetSizeEstimate,
+        VideoEditor::TMemory aMemoryInUse = VideoEditor::EMemAutomatic
+        );
+        
+    /**	GenerateFileNameL 
+    *
+    *   Generates a new file name.
+    *
+    *   Generates a file name into a given drive. Increments a running number
+    *   at the end of the file name until a file with the same name doesn't exist.
+    *   Uses internally VideoFitsToDriveL to check the space.
+    *
+    *
+    *   @param aFsSession -
+    *   @param aSourceFileName - name of the source file
+    *   @param aTargetFileName - name of the new file
+    *   @param aOutputFormat - video format of the target file
+    *   @param aTargetSizeEstimate - the expected target file size. 
+    *             This value is used to check whether there is enough space on the disks.
+    *   @param aDrive - drive where the target file is created.
+    *   @return - KErrNone if successfully generated file name
+    *             KSIEENotEnoughDiskSpace if no disk space to save the file
+    *             (size of aSourceFileName used to check the space)
+    *             KSIEEOpenFile if the source filename is invalid
+    */        
+    IMPORT_C static TInt GenerateFileNameL (
+        RFs& aFsSession, 
+        const TDesC& aSourceFileName, 
+        TDes& aTargetFileName,
+        TVedVideoFormat aOutputFormat,
+        TInt aTargetSizeEstimate,
+        TFileName aDrive );
+
+
+    /**	NotifyNewMediaDocumentL 
+	*
+	*   Notifies the system that a new media file has been saved,
+	*   making it visible in the Media Gallery.
+	*   
+	*   @param aFileName -
+	*   @return - 
+	*/
+    IMPORT_C static void NotifyNewMediaDocumentL (
+        RFs& aFsSession,
+        const TDesC& aFileName
+        );
+
+    /**	GetMGAlbumsListForMediaFileL 
+	*
+	*   Finds out which Media Gallery Albums the file belongs to.
+	*   (if compiled without album support, this function
+	*   returns an empty array). Album support is now removed.
+	*
+	*   @param aFileName - The media file
+	*   @param aAlbumList -
+    *           On return, contains the ID:s of the Media Gallery
+    *           albums the file belongs to.
+    *           If the list is not empty, it is retained and
+    *           new IDs are appended into the list.
+	*   @return - 
+	*/
+    IMPORT_C static void GetMGAlbumsListForMediaFileL ( 
+        RArray<TInt>& aAlbumIdList,
+        const TDesC& aFilename
+        );
+
+    /**	AddMediaFileToMGAlbumL 
+	*
+	*   Add the given media file to the given album.
+	*   (if compiled without album support, this function
+	*   does nothing)
+	*   
+	*   @param aFileName -
+	*   @param aAlbumId -
+	*   @return - 
+	*/
+    IMPORT_C static void AddMediaFileToMGAlbumL ( 
+        const TDesC& aFileName,
+        TInt aAlbumId
+        );
+
+    /**	IsEnoughFreeSpaceToSaveL
+	*
+	*   Checks whether there is enough disk space to save
+	*   the given file.
+	*
+	*   @param aFsSession -
+	*   @param aFileName - The path to save (only drive part needed)
+	*   @param aSizeEstimate - The space required for the file to save
+	*   @return - TBool
+	*/
+	IMPORT_C static TBool IsEnoughFreeSpaceToSaveL( 
+		RFs& aFsSession, 
+		const TDesC& aFileName,
+		TInt aSizeEstimate  );
+
+    /**	IsDrmProtectedL
+	*
+	*   Checks whether the given file is DRM protected.
+	*
+	*   @param aFileName - The path of the file to check
+	*   @return - TBool
+	*/
+	IMPORT_C static TBool IsDrmProtectedL( const TDesC& aFileName );
+
+    /**	IconFileNameAndPath 
+	*
+	*	Returns file name and path for one of the icon files used in this module.
+	*	Currently there is the primary icon file (MIF file), and the secondary 
+	*	icon file (a MBM file), which contains the non-scalable (bitmap) graphics.
+	*   
+	*	@param  TInt aInconFileIndex -	Which file. Supported values:
+	*				KManualVideoEditorIconFileId
+	*				KVideoEditorUiComponentsIconFileId
+	*				KVeiNonScalableIconFileId 
+	*	@return TFileName - 
+	*/
+   	IMPORT_C static TFileName IconFileNameAndPath( TInt aInconFileIndex );
+
+    /**	IsLandscapeScreenOrientation
+	*
+	*   Check if the screen is in landscape mode. In other words, see
+	*   if the X dimension of the screen is greater than the Y dimendion.
+	*
+	*   @param -
+	*   @return - TBool
+	*/
+	IMPORT_C static TBool IsLandscapeScreenOrientation();
+
+
+	/** LaunchQueryDialogL
+	*
+    *   Launches a confirmation query dialog.
+    *
+	*	@param aPrompt - dialog prompt descriptor
+	*	@return -
+	*/
+    IMPORT_C static TInt LaunchQueryDialogL (const TDesC & aPrompt);
+
+	/** LaunchListQueryDialogL
+	*
+    *   Launches a confirmation query dialog.
+    *
+	*	@param aPrompt - dialog prompt descriptor
+	*	@return 0 if user selects "No", otherwise 1
+	*/
+	IMPORT_C static TInt LaunchListQueryDialogL (MDesCArray *	aTextItems,
+										const TDesC &	aPrompt);
+										
+	/*	LaunchSaveVideoQueryL 
+	*
+	*	Launches a query dialog "Save video:" with items
+	*	"Replace original" and "Save with a new name"
+	*
+	*   @param - 
+	*   @return - list query id or -1 if the user selects No
+	*/        
+	IMPORT_C static TInt LaunchSaveVideoQueryL ();
+
+
+	/*	LaunchSaveChangesQueryL
+	*
+	*	Launches a query dialog "Save changes?" query.
+	*
+	*   @param - 
+	*   @return 0 if user selects "No", otherwise 1
+	*/
+	IMPORT_C static TInt LaunchSaveChangesQueryL ();
+
+    //@}
+
+private:
+
+    /** @name Methods:*/
+    //@{
+
+    /**	FindSuffix 
+	*
+	*   Finds the offset of the edited file name suffix of form "-NNN", where
+    *   NNN is the edit sequence number.
+	*
+	*   @param aName - File name without extension
+	*   @return - 
+	*/
+    static TInt FindSuffix ( 
+        const TDesC &   aName
+        );
+
+    /**	FileAlreadyExistsL 
+	*
+	*   Check if a file with the specified name already exista on the system.
+	*
+	*   @param - aFs
+	*   @param - aFileName
+	*   @return - TBool
+	*/
+    static TBool FileAlreadyExistsL ( 
+        RFs& aFsSession, 
+        const TDesC& aFileName 
+        );
+
+    //@}
+};
+
+#endif
+
+// End of File
+