diff -r 000000000000 -r 6a9f87576119 filemanager/Engine/inc/CFileManagerUtils.h --- /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 +#include +#include + + +// 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