williamr@2: // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@2: // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: #if !defined(__BAUTILS_H__) williamr@2: #define __BAUTILS_H__ williamr@2: williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: /** williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: const TUint KBaflCharTruncation=0x2026; // Unicode's "horizontal ellipsis" williamr@2: williamr@2: /** williamr@2: There are at most 16 languages in the language downgrade path. williamr@2: The end of the language path is marked by an ELangNone. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: const TInt KMaxDowngradeLanguages = 16; williamr@2: williamr@2: /** williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: typedef TLanguage TLanguagePath[KMaxDowngradeLanguages + 1]; williamr@2: williamr@2: class RFs; williamr@2: class CBaflFileSortTable; williamr@2: williamr@2: williamr@2: class BaflUtils williamr@2: /** williamr@2: Provides simple-to-use file system utilities. williamr@2: williamr@2: The functions listed in "Copying, renaming, and deleting files" create and williamr@2: use a CFileMan object. They are useful for one-off calls, but for repeated williamr@2: use it is more efficient to use CFileMan directly. williamr@2: williamr@2: Note that there is a very similiar group of functions available in EikFileUtils, williamr@2: which may be easier to use in GUI applications, as they do not require a file williamr@2: server session to be passed. williamr@2: williamr@2: @see CFileMan williamr@2: @see EikFileUtils williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C static void CopyWithTruncation(TDes& aDest,const TDesC& aSrc,TChar aTruncationSymbol=KBaflCharTruncation); williamr@2: IMPORT_C static TBool FileExists(const RFs& aFs,const TDesC& aFileName); williamr@2: IMPORT_C static void EnsurePathExistsL(RFs& aFs,const TDesC& aFileName); williamr@2: IMPORT_C static TPtrC ExtractAppNameFromFullName(const TFullName &aName); williamr@2: IMPORT_C static void NearestLanguageFile(const RFs& aFs,TFileName& aName); williamr@2: IMPORT_C static void NearestLanguageFile(const RFs& aFs,TFileName& aName, TLanguage& aLanguage); williamr@2: IMPORT_C static TInt SetIdealLanguage(TLanguage aLanguage); williamr@2: IMPORT_C static TLanguage IdealLanguage(); williamr@2: IMPORT_C static void ReleaseIdealLanguage(); williamr@2: IMPORT_C static TInt GetSystemDrive(TDriveNumber& aDriveNumber); williamr@2: IMPORT_C static TBool PathExists(RFs& aFs,const TDesC& aFileName); williamr@2: IMPORT_C static TInt IsFolder(const RFs& aFs, const TDesC& aFullName, TBool& aIsFolder); williamr@2: IMPORT_C static TBool FolderExists(RFs& aFs, const TDesC& aFolderName); williamr@2: IMPORT_C static TFileName FolderNameFromFullName(const TDesC& aFullName); williamr@2: IMPORT_C static TFileName DriveAndPathFromFullName(const TDesC& aFullName); williamr@2: IMPORT_C static TFileName RootFolderPath(const TBuf<1> aDriveLetter); williamr@2: IMPORT_C static void AbbreviateFileName(const TFileName& aOriginalFileName, TDes& aAbbreviatedFileName); williamr@2: IMPORT_C static TBool UidTypeMatches(const TUidType& aFileUid, const TUidType& aMatchUid); williamr@2: IMPORT_C static TInt Parse(const TDesC& aName); williamr@2: IMPORT_C static TInt ValidateFolderNameTypedByUserL(const RFs& aFs, const TDesC& aFolderNameTypedByUser, const TDesC& aCurrentPath, TFileName& aNewFolderFullName); williamr@2: IMPORT_C static TInt CopyFile(RFs& aFs, const TDesC& aSourceFullName, const TDesC& aTargetFullName, TUint aSwitch = CFileMan::EOverWrite); williamr@2: IMPORT_C static TInt RenameFile(RFs& aFs, const TDesC& aOldFullName, const TDesC& aNewFullName, TUint aSwitch = CFileMan::EOverWrite); williamr@2: IMPORT_C static TInt DeleteFile(RFs& aFs, const TDesC& aSourceFullName, TUint aSwitch = 0); williamr@2: IMPORT_C static TInt CheckWhetherFullNameRefersToFolder(const TDesC& aFullName, TBool& aIsFolder); williamr@2: IMPORT_C static TInt MostSignificantPartOfFullName(const TDesC& aFullName, TFileName& aMostSignificantPart); williamr@2: IMPORT_C static TInt CheckFolder(RFs& aFs, const TDesC& aFolderName); williamr@2: IMPORT_C static TInt DiskIsReadOnly(RFs& aFs, const TDesC& aFullName, TBool& aIsReadOnly); williamr@2: IMPORT_C static TInt DriveIsReadOnlyInternal(RFs& aFs, const TDesC& aFullName, TBool& aIsReadOnlyInternal); williamr@2: IMPORT_C static void GetDiskListL(const RFs& aFs,CDesCArray& aArray); williamr@2: IMPORT_C static void UpdateDiskListL(const RFs& aFs,CDesCArray& aArray,TBool aIncludeRom,TDriveNumber aDriveNumber); williamr@2: IMPORT_C static void RemoveSystemDirectory(CDir& aDir); williamr@2: IMPORT_C static TBool IsFirstDriveForSocket(TDriveUnit aDriveUnit); williamr@2: IMPORT_C static TInt SortByTable(CDir& aDir,CBaflFileSortTable* aTable); williamr@2: IMPORT_C static void GetDowngradePathL(const RFs& aFs, const TLanguage aCurrentLanguage, RArray& aLanguageArray); williamr@2: IMPORT_C static void PersistLocale(); williamr@2: IMPORT_C static TInt PersistHAL(); williamr@2: IMPORT_C static void PersistScreenCalibration(const TDigitizerCalibration& aScreenCalibration); williamr@2: IMPORT_C static void InitialiseScreenCalibration(RFs& aFs); williamr@2: IMPORT_C static void InitialiseHAL(RFs& aFs); williamr@2: IMPORT_C static void InitialiseLocale(RFs& aFs); williamr@2: private: williamr@2: static void DoCopyFileL(RFs& aFs, const TDesC& aSourceFullName, const TDesC& aTargetFullName, TUint aSwitch); williamr@2: static void DoRenameFileL(RFs& aFs, const TDesC& aOldFullName, const TDesC& aNewFullName, TUint aSwitch); williamr@2: static void DoDeleteFileL(RFs& aFs, const TDesC& aSourceFullName, TUint aSwitch); williamr@2: }; williamr@2: williamr@2: williamr@2: /** williamr@2: * Bafl File Sort Table containing an array of UIDs. williamr@2: * @publishedAll williamr@2: * @released williamr@2: */ williamr@2: class CBaflFileSortTable : public CArrayFixFlat williamr@2: { williamr@2: public: williamr@2: IMPORT_C CBaflFileSortTable(); williamr@2: IMPORT_C void ConstructFromResourceL(TResourceReader& aReader); williamr@2: private: williamr@2: enum {EArrayGranularity=4}; williamr@2: }; williamr@2: williamr@2: #endif