--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraapp/generic/inc/camfolderutility.h Wed Sep 01 12:30:54 2010 +0100
@@ -0,0 +1,145 @@
+/*
+* Copyright (c) 2007 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:
+*
+*
+*
+*/
+
+
+
+
+#ifndef CAM_FOLDERUTILITY_H
+#define CAM_FOLDERUTILITY_H
+
+// ===========================================================================
+// Included headers
+#include <e32base.h>
+
+#include "CamSettingsInternal.hrh"
+#include "CamSettings.hrh"
+
+// ===========================================================================
+
+/**
+* Utility class for folder naming
+*/
+class CCamFolderUtility : public CBase
+ {
+ // =======================================================
+ // Types and constants
+ public:
+
+ static const TInt KMaxGuaranteedBurstGroup = 20;
+ static const TInt KMaxFilesPerFolder = 100;
+
+ enum TCamFolderType
+ {
+ ECamFolderTypeImageMMC,
+ ECamFolderTypeImagePhone,
+ ECamFolderTypeVideoMMC,
+ ECamFolderTypeVideoPhone,
+ ECamFolderTypeLast
+ };
+
+ // =======================================================
+ public:
+
+ /**
+ * Get the base path to be used for greating the next filename
+ * @since 2.8
+ * @param aMonthCounters Array with counter for every storage type folders.
+ * Must have ECamFolderTypeLast number of items (or more).
+ * @param aStorage Whether storing to Phone or MMC
+ * @param aPath On return will contain the new path, if the final destination
+ * (month counter) folder does not exist then this will contain the parent
+ * folder (month folder)
+ * @param aCaptureMode image or video mode (used to determine folder path/name)
+ * @param aCreateAll whether or not the destination folder should be created
+ * if it does not already exist. The folders at higher levels than this are
+ * always ensured to exist (unless the function returns an error, when existence is
+ * undetermined). If aCreateAll is ETrue the remaining space (max 100 files) in the
+ * destination folder is checked,
+ * @param aRequiredFileCount Folders will contain a maximum of 100 files. If there is
+ * not enough space for the specified count then a new folder will be created.
+ * @param aTime provides the month and year used to determine the folder name (ensures
+ * that all images in a sequence are placed in the same month parent folder). If aTime
+ * is 0 GetBasePathL uses the current system time.
+ */
+ static void GetBasePathL( TInt* aMonthCounters,
+ TInt aStorage, // TCamMediaStorage
+ TDes& aPath,
+ TCamCameraMode aCaptureMode,
+ TBool aCreateAll,
+ TInt aRequiredFileCount = 1,
+ TTime aTime = TInt64( 0 ) );
+
+ /**
+ * Reset certain month folder counters.
+ * @param The array containing month folder counters for every storage type.
+ * Must have ECamFolderTypeLast number of items (or more).
+ * @param aFrom The index of first counter which is resetted.
+ * @param aTo The index of last counter which is resetted.
+ */
+ static void ResetCounters( TInt* aMonthCounters,
+ TInt aFrom = ECamFolderTypeImageMMC,
+ TInt aTo = ECamFolderTypeLast - 1 );
+
+ private:
+
+ /**
+ * Set up the counters used to create mulitple month folders
+ * @since 3.0
+ * @param aMonthCounters Array with counter for every storage type folders.
+ * Must have ECamFolderTypeLast number of items (or more).
+ * @param aPath the current path.
+ * @param aMonthFolder the name of the month folder parent directory
+ * @param aFs file server session
+ * @param aFolderType Index into the array of folder counters (image/video, mmc/phone)
+ * @return KErrNone or another system wide error code
+ */
+ static TInt InitialiseMonthCounter( TInt* aMonthCounters,
+ TDes& aPath,
+ TDesC& aMonthFolder,
+ RFs& aFs,
+ TInt aFolderType );
+
+ /**
+ * Create the destination folder for the next image or video.
+ * @since 3.0
+ * @param aMonthCounters Array with counter for every storage type folders.
+ * Must have ECamFolderTypeLast number of items (or more).
+ * @param aPath If returning without error this will contain the new path.
+ * @param aFs file server session
+ * @param aFolderType Index into the array of folder counters (image/video, mmc/phone)
+ * @param aRequiredFileCount Folders will contain a maximum of 100 files. If there is
+ * not enough space for the specified count then a new folder will be created. When the
+ * highest possible folder number is reached (Z9) the 100 file limit is ignored
+ * @return KErrNone or another system wide error code
+ */
+ static TInt CreateDestinationFolder( TInt* aMonthCounters,
+ TDes& aPath,
+ RFs& aFs,
+ TInt aFolderType, // TCamMediaStorage
+ TInt aRequiredFileCount );
+
+
+ // =======================================================
+ };
+
+
+#endif // CAM_FOLDERUTILITY_H
+
+// ===========================================================================
+// end of file