diff -r 61bc0f252b2b -r bac7acad7cb3 camerauis/cameraapp/generic/inc/camfolderutility.h --- /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 + +#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