--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/Engine/inc/CFileManagerUtils.h Mon Jan 18 20:09:41 2010 +0200
@@ -0,0 +1,409 @@
+/*
+* 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: Util methods for File Manager
+*
+*/
+
+
+
+#ifndef CFILEMANAGERUTILS_H
+#define CFILEMANAGERUTILS_H
+
+
+// INCLUDES
+#include <e32base.h>
+#include <badesca.h>
+#include <f32file.h>
+
+
+// FORWARD DECLARATIONS
+class CFileManagerMimeIconArray;
+class CFileManagerFolderArray;
+class CCommonContentPolicy;
+class CGflmNavigatorModel;
+class CGflmGroupItem;
+#if defined( __KEEP_DRM_CONTENT_ON_PHONE ) && defined ( FILE_MANAGER_USE_DISTRIBUTABLECHECKER )
+ class CDistributableChecker;
+#endif // __KEEP_DRM_CONTENT_ON_PHONE && FILE_MANAGER_USE_DISTRIBUTABLECHECKER
+class CFileManagerFeatureManager;
+
+
+/**
+*
+* Collection of utility functions for file manager
+*
+* @lib FileManagerEngine.lib
+* @since 2.7
+*/
+NONSHARABLE_CLASS(CFileManagerUtils) : public CBase
+ {
+ public:
+ /**
+ * Two-phased constructors.
+ */
+ static CFileManagerUtils* NewL(
+ RFs& aFs,
+ CGflmNavigatorModel& aNavigator,
+ CFileManagerFeatureManager& aFeatureManager );
+
+ /**
+ * Destructor.
+ */
+ ~CFileManagerUtils();
+ public: // New functions
+
+ /**
+ * Gets the reference to open file server session
+ * @since 2.7
+ * @return reference to open file server session
+ */
+ RFs& Fs() const;
+
+ /**
+ * Checks is given file forward locked
+ * @since 2.7
+ * @param aFullPath file name with full path
+ * @return ETrue if file is forward locked, EFalse if not.
+ */
+ TBool IsForwardLockedFile( const TDesC& aFullPath );
+
+ /**
+ * Checks is given file drm protected
+ * @since 2.7
+ * @param aFullPath file name with full path
+ * @return ETrue if file is drm protected, EFalse if not.
+ */
+ TBool IsDrmProtectedFile( const TDesC& aFullPath) const;
+
+ /**
+ * Gets the icon id of the item
+ * @since 2.7
+ * @param aFullPath Item with full path information
+ * @return Icon id of the item. If not found other icon id is used.
+ */
+ TInt ResolveIconL( const TDesC& aFullPath ) const;
+
+ /**
+ * Checks is given folder a default folder
+ * @since 2.7
+ * @param aFullPath Item with full path information
+ * @return ETrue if folder is default folder, EFalse if not.
+ */
+ TBool DefaultFolder( const TDesC& aFullPath ) const;
+
+ /**
+ * Checks is given file drm local data file (LDF)
+ * @since 3.1
+ * @param aFullPath file name with full path
+ * @return ETrue if file is local data file, EFalse if not.
+ */
+ TBool IsDrmLocalDataFile( const TDesC& aFullPath ) const;
+
+ /**
+ * Checks given item that can it be deleted.
+ * @since 3.1
+ * @param aFullPath full path to item which is checked
+ * @returns ETrue if item can be deleted, EFalse if not
+ */
+ TBool CanDelete( const TDesC& aFullPath ) const;
+
+ /**
+ * Returns the type of given item in CFileManagerItemProperties bitmask
+ * @since 3.1
+ * @param aFullPath full path to item
+ * @return CFileManagerItemProperties bitmask
+ */
+ TUint32 FileTypeL( const TDesC& aFullPath );
+
+ /**
+ * Gets the icon id of the item
+ * @since 3.1
+ * @param aItem GFLM struct of the item
+ * @return Icon id of the item. If not found other icon id is returned.
+ */
+ TInt ResolveIconL( CGflmGroupItem& aItem ) const;
+
+ /**
+ * Checks does given folder have any items with specified attributes
+ * @since 3.1
+ * @param aFs open file server session
+ * @param aFullPath folder name with full path
+ * @param aAttMask attribute mask
+ * @return ETrue if folder has any specified items, EFalse if not.
+ */
+ static TBool HasAny(
+ RFs& aFs, const TDesC& aFullPath, TUint aAttMask );
+
+ /**
+ * Checks does given folder has any subfolder
+ * @since 3.1
+ * @param aFullPath folder name with full path
+ * @return ETrue if folder has any subfolders, EFalse if not.
+ */
+ TBool HasSubFolders( const TDesC& aFullPath ) const;
+
+ /**
+ * Checks does given folder has any files
+ * @since 3.1
+ * @param aFullPath folder name with full path
+ * @return ETrue if folder has any files, EFalse if not.
+ */
+ TBool HasFiles( const TDesC& aFullPath ) const;
+
+ /**
+ * Create default folders
+ * @since 3.2
+ * @param aDrive Drive which default folders are created
+ * @param aForced Selects forced or normal creation
+ */
+ void CreateDefaultFolders(
+ const TInt aDrive, const TBool aForced = ETrue ) const;
+
+ /**
+ * Checks is path located in remote drive
+ * @since 3.1
+ * @param aPath path to check
+ * @return ETrue if remote drive. Otherwise EFalse.
+ */
+ TBool IsRemoteDrive( const TDesC& aPath ) const;
+
+ /**
+ * Determine if given file must be protected (kept on the device)
+ * @since 3.1
+ * @param aFullPath file to check
+ * @param aIsProtected for storing result
+ * @return System wide error code
+ */
+ TInt IsDistributableFile( const TDesC& aFullPath,
+ TBool& aIsProtected );
+
+ /**
+ * Gets MIME type of file
+ * @since 3.1
+ * @return MIME type
+ */
+ TPtrC MimeTypeL( const TDesC& aFullPath ) const;
+
+ /**
+ * Gets drive id array with specified attribute mask
+ * @since 3.2
+ * @param aDrives array for ids
+ * @param aAttMask drive attribute match mask
+ */
+ void DriveList(
+ RArray< TInt >& aDrives, const TInt aAttMask ) const;
+
+ /**
+ * Checks is drive removable
+ * @since 3.2
+ * @param aPath path to check
+ * @return ETrue if removable drive. Otherwise EFalse
+ */
+ TBool IsRemovableDrive( const TDesC& aPath ) const;
+
+ /**
+ * Gets item full path
+ * @since 3.2
+ * @param aDir Parent directory path
+ * @param aEntry File system entry
+ * @param aFullPath Full path to item
+ */
+ static void GetFullPath(
+ const TDesC& aDir, const TEntry& aEntry, TDes& aFullPath );
+
+ /**
+ * Removes final backslash if exists
+ * @since 3.2
+ * @param aPath Directory path
+ * @return Pointer without backslash
+ */
+ IMPORT_C static TPtrC StripFinalBackslash( const TDesC& aPath );
+
+ /**
+ * Ensures final backslash exists
+ * @since 3.2
+ * @param aPath Directory path
+ */
+ IMPORT_C static void EnsureFinalBackslash( TDes& aPath );
+
+ /**
+ * Removes all directional chars if exist
+ * @since 3.2
+ * @param aText The text
+ * @return Pointer to cleaned up text, ownership is transferred
+ */
+ static HBufC* StripDirectionalCharsLC( const TDesC& aText );
+
+ /**
+ * Checks if final backslash exist
+ * @since 3.2
+ * @param aPath Directory path
+ */
+ IMPORT_C static TBool HasFinalBackslash( const TDesC& aPath );
+
+ /**
+ * Checks if file is copied/moved from internal to removable drive
+ * @since 3.2
+ * @param aFs Open file server session
+ * @param aSrcPath Source directory path
+ * @param aDstPath Destination directory path
+ * @return ETrue if from internal to removable, otherwise EFalse
+ */
+ IMPORT_C static TBool IsFromInternalToRemovableDrive(
+ RFs& aFs, const TDesC& aSrcPath, const TDesC& aDstPath );
+
+ /**
+ * Removes read only attribute if it is set for given item
+ * @since 3.2
+ * @param aFs Open file server session
+ * @param aFullPath Full path of the item
+ * @param aEntry Entry data of the item
+ * @return System wide error code
+ */
+ static TInt RemoveReadOnlyAttribute(
+ RFs& aFs, const TDesC& aFullPath, const TEntry& aEntry );
+
+ /**
+ * Removes read only attribute if it is set for given item
+ * @since 3.2
+ * @param aFs Open file server session
+ * @param aFullPath Full path of the item
+ * @return System wide error code
+ */
+ static TInt RemoveReadOnlyAttribute(
+ RFs& aFs, const TDesC& aFullPath );
+
+ /* Drive name layouts for selecting the most suitable text */
+ enum TDriveNameLayout
+ {
+ EMainLayout = 0,
+ ETitleLayout,
+ ELayoutCount // Must be the last
+ };
+
+ /**
+ * Gets drive name and letter as combined single text.
+ * @since 5.0
+ * @param aDrive Drive number EDriveA...EDriveZ
+ * @param aLayout Text layout. See TDriveNameLayout.
+ * @return Text containing drive letter and name
+ */
+ HBufC* GetDriveNameL(
+ const TInt aDrive,
+ const TDriveNameLayout aLayout ) const;
+
+ /**
+ * Gets drive name and letter as combined formatted text.
+ * @since 5.0
+ * @param aDrive Drive number EDriveA...EDriveZ
+ * @param aTextIdForDefaultName TextId of default name format string
+ * @param aTextIdForName TextId of name format string
+ * @return Text containing drive letter and name
+ */
+ HBufC* GetFormattedDriveNameLC(
+ const TInt aDrive,
+ const TInt aTextIdForDefaultName,
+ const TInt aTextIdForName ) const;
+
+ /**
+ * Checks is path located in remote drive
+ * @since 3.2
+ * @param aFs Open file server session
+ * @param aPath path to check
+ * @return ETrue if remote drive, otherwise EFalse
+ */
+ IMPORT_C static TBool IsRemoteDrive( RFs& aFs, const TDesC& aPath );
+
+ /**
+ * Returns localized name of the given item
+ * @since 3.2
+ * @param aFullPath full path to item which is checked
+ * @returns TPtrC reference to localized name,
+ * KNullDesC if no localization is used
+ */
+ TPtrC LocalizedName( const TDesC& aFullPath ) const;
+
+ /**
+ * Checks is name found, the comparison includes localized folder names
+ * @since 3.2
+ * @param aFullPath full path to item which is checked
+ * @returns ETrue if name is found, otherwise EFalse.
+ */
+ TBool IsNameFoundL( const TDesC& aFullPath ) const;
+
+ /**
+ * Flush Cache
+ */
+ void FlushCache() const;
+
+ private:
+ /**
+ * C++ default constructor.
+ */
+ CFileManagerUtils(
+ RFs& aFs,
+ CGflmNavigatorModel& aNavigator,
+ CFileManagerFeatureManager& aFeatureManager );
+
+ void ConstructL();
+
+ static void IsFlkOrLdfFileL(
+ const TDesC& aFullPath, TBool& aIsFlk, TBool& aIsLdf );
+
+ static TBool IsInternalDrive( RFs& aFs, const TInt aDrive );
+
+ CDesCArray* GetDriveNameArrayLC(
+ const TInt aDrive,
+ TUint& aDriveStatus ) const;
+
+ static TBool IsDrive(
+ RFs& aFs, const TDesC& aPath, const TUint aAttMask );
+
+ static TBool IsDrive(
+ RFs& aFs, const TInt aDrive, const TUint aAttMask );
+
+ private:
+
+ // Ref: reference to open file server session
+ RFs& iFs;
+
+ //Own: List of default folders
+ CFileManagerFolderArray* iDefaultFolders;
+
+ // Own: Handle to common content policy service to find
+ // out is file in a Closed Content List or forward locked
+ CCommonContentPolicy* iCommonContentPolicy;
+
+ // Own: Mime icon mapper
+ CFileManagerMimeIconArray* iMimeIconMapper;
+
+ // Ref: GFLM navigator instance
+ CGflmNavigatorModel& iNavigator;
+
+#if defined( __KEEP_DRM_CONTENT_ON_PHONE ) && defined ( FILE_MANAGER_USE_DISTRIBUTABLECHECKER )
+ // Own: content protection checking
+ CDistributableChecker* iDistributableChecker;
+#endif // __KEEP_DRM_CONTENT_ON_PHONE && FILE_MANAGER_USE_DISTRIBUTABLECHECKER
+
+ // Flag to indicate if feature is supported
+ TBool iDrmFullSupported;
+
+ // Ref: reference to feature manager
+ CFileManagerFeatureManager& iFeatureManager;
+
+ };
+
+#endif // CFILEMANAGERUTILS_H
+
+// End of File