--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/Engine/inc/CFileManagerItemProperties.h Mon Jan 18 20:09:41 2010 +0200
@@ -0,0 +1,307 @@
+/*
+* Copyright (c) 2002-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: Holds item information
+*
+*/
+
+
+
+#ifndef CFILEMANAGERITEMPROPERTIES_H_
+#define CFILEMANAGERITEMPROPERTIES_H_
+
+// INCLUDES
+#include <e32base.h>
+#include <f32file.h>
+
+// FORWARD DECLARATIONS
+class CFileManagerActiveSize;
+class CFileManagerUtils;
+class CFileManagerActiveCount;
+class CGflmGroupItem;
+class CFileManagerEngine;
+
+/**
+* Engine gathers the item information to this object.
+*
+* @lib FileManagerEngine.lib
+* @since 2.0
+*/
+NONSHARABLE_CLASS(CFileManagerItemProperties) : public CBase
+ {
+ public:
+ /* Bitmask bits of the item types */
+ enum TFileManagerFileType
+ {
+ ENotDefined = 0x00,
+ EFolder = 0x01,
+ EDefault = 0x02,
+ EMedia = 0x04,
+ EFile = 0x08,
+ EForwardLocked = 0x10,
+ EPlaylist = 0x20,
+ ELink = 0x40,
+ EOpen = 0x80,
+ EReadOnly = 0x100,
+ EDrmProtected = 0x200,
+ EDrmLocalDataFile = 0x400
+ };
+ public:
+ /**
+ * Two-phased constructor.
+ */
+ static CFileManagerItemProperties* NewL(
+ const TDesC& aFullPath,
+ CFileManagerUtils& aUtils,
+ CFileManagerEngine& aEngine );
+
+ /**
+ * Two-phased constructor.
+ */
+ static CFileManagerItemProperties* NewL(
+ const CGflmGroupItem& aItem,
+ CFileManagerUtils& aUtils,
+ CFileManagerEngine& aEngine );
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C ~CFileManagerItemProperties();
+
+ public:
+
+ /**
+ * Gets the name of the item
+ * @since 2.7
+ * @return Name of the item, file name without extension
+ * or directory name
+ */
+ IMPORT_C TPtrC Name() const;
+
+ /**
+ * Gets the item modification time (universal time)
+ * @since 2.7
+ * @return TTime when item was last modified
+ */
+ IMPORT_C TTime ModifiedDate() const;
+
+ /**
+ * Size of the item, size of the file or size of the dir
+ * @since 2.7
+ * @return Item size in bytes
+ */
+ IMPORT_C TInt64 SizeL();
+
+ /**
+ * Count of files in directory, subdirectories not included
+ * @since 2.7
+ * @return File count in dir, -1 if item is file
+ */
+ IMPORT_C TInt FilesContainedL();
+
+ /**
+ * Count of folders in directory,
+ * directories in subdirectories are not included
+ * @since 2.7
+ * @return Folder count in dir, -1 if item is file
+ */
+ IMPORT_C TInt FoldersContainedL();
+
+ /**
+ * Count of open files in directory
+ * @since 2.7
+ * @return count of open files in directory, -1 if item is file
+ */
+ IMPORT_C TInt OpenFilesL();
+
+ /**
+ * Returns item type information
+ * @since 2.7
+ * @return TFileManagerFileType information of item
+ */
+ IMPORT_C TUint32 TypeL();
+
+ /**
+ * Item extension
+ * @since 2.7
+ * @return File extension, empty if item is dir
+ */
+ IMPORT_C TPtrC Ext() const;
+
+ /**
+ * Fullpath of item, includes drive, path and name with extension
+ * @since 2.7
+ * @return fullpath
+ */
+ IMPORT_C TPtrC FullPath() const;
+
+ /**
+ * Gets the name of the item with extension
+ * @since 2.7
+ * @return Name of the item
+ */
+ IMPORT_C TPtrC NameAndExt() const;
+
+ /**
+ * Localized name of item if found, if not Name() is returned
+ * @since 2.7
+ * @return Localized name
+ */
+ IMPORT_C TPtrC LocalizedName() const;
+
+ /**
+ * Gets the item modification time (local time)
+ * @since 3.1
+ * @param aTime For local time
+ * @return Error code
+ */
+ IMPORT_C TInt ModifiedLocalDate( TTime& aTime ) const;
+
+ /**
+ * Checks if item contains any files or folders
+ * @since 3.1
+ * @return ETrue if contains any items, EFalse if not
+ */
+ IMPORT_C TBool ContainsAnyFilesOrFolders();
+
+ /**
+ * Gets MIME type of file
+ * @since 3.1
+ * @return MIME type
+ */
+ IMPORT_C TPtrC MimeTypeL();
+
+ /**
+ * Checks if item is a drive item
+ * @since 3.1
+ * @return ETrue if drive item, otherwise EFalse
+ */
+ IMPORT_C TBool IsDrive() const;
+
+ /**
+ * Gets drive name
+ * @since 3.1
+ * @return drive name
+ */
+ IMPORT_C TPtrC DriveName() const;
+
+ /**
+ * Checks if item is on remote drive
+ * @since 3.2
+ * @return ETrue if item on remote drive, otherwise EFalse
+ */
+ IMPORT_C TBool IsRemoteDrive() const;
+
+ /**
+ * Gets drive id
+ * @since 5.0
+ * @return Drive id
+ */
+ IMPORT_C TInt DriveId() const;
+
+ private:
+ /**
+ * C++ default constructor.
+ */
+ CFileManagerItemProperties(
+ CFileManagerUtils& aUtils,
+ CFileManagerEngine& aEngine );
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL( const TDesC& aFullPath );
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL( const TDesC& aFullPath, const TEntry& aEntry );
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL( const CGflmGroupItem& aItem );
+
+ // Counts file sizes in given folder
+ TInt64 FolderSizeL( const TDesC& aFullPath );
+
+ // Counts items in directory, given parameter defines the type of count
+ TInt CountItemsL(
+ const TFileManagerFileType& aType );
+
+ void EnsureEntryDataFetched() const;
+
+ void SetEntryData( const TEntry& aEntry ) const;
+
+ private:
+
+ // Own: Location in file system
+ HBufC* iFullPath;
+
+ // Size of the file in bytes. In case of folder, this is a sum of all items
+ // under the folder including the subfolders.
+ mutable TInt64 iSize;
+
+ // How many files are inside the folder, subfolders not counted
+ // In case of file this is undefined
+ TInt iFilesContained;
+
+ // How many folders are inside the folder, subfolders are not counted
+ // In case of file this is undefined
+ TInt iFoldersContained;
+
+ // How many open files are inside the folder
+ // In case of file this is undefined
+ TInt iOpenFiles;
+
+ // type of item, TFileManagerFileType bitmask
+ TUint32 iType;
+
+ // Own: Folder size calculation
+ CFileManagerActiveSize* iActiveSize;
+
+ // Own: Folder properties
+ CFileManagerActiveCount* iActiveCount;
+
+ // Item modification day, copied from items TEntry
+ mutable TTime iModified;
+
+ // Ref: Contains some useful common services, localizer, RFs...
+ CFileManagerUtils& iUtils;
+
+ // Ref: Contains some useful common services
+ CFileManagerEngine& iEngine;
+
+ enum TItemState // Internal state bit definitions
+ {
+ EItemDirectory = 0x1,
+ EItemDrive = 0x2,
+ EItemAction = 0x4,
+ EItemFile = 0x8,
+ EItemHasFilesOrFolders = 0x10,
+ EItemHasNoFilesOrFolders = 0x20,
+ EItemRemoteDrive = 0x40,
+ EItemEntryDataFetched = 0x80,
+ EItemNotFileOrDir = EItemDrive | EItemAction
+ };
+ // Internal item state bits, see above
+ mutable TUint32 iState;
+
+ // Own: Item name
+ HBufC* iName;
+
+ };
+
+
+
+#endif // CFILEMANAGERITEMPROPERTIES_H_
\ No newline at end of file