diff -r 48060abbbeaf -r b3cee849fa46 filebrowser/engine/FBFileUtils.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/filebrowser/engine/FBFileUtils.h Tue Aug 31 15:15:20 2010 +0300 @@ -0,0 +1,405 @@ +/* +* Copyright (c) 2010 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 FILEBROWSER_FILEUTILS_H +#define FILEBROWSER_FILEUTILS_H + +// INCLUDES +#include +#include +#include +#include +#include +#include +#include +#include "FB.hrh" + +_LIT(KIRAppPath, "z:\\sys\\bin\\irapp.exe"); +_LIT(KBTAppPath, "z:\\sys\\bin\\btui.exe"); +_LIT(KUSBAppPath, "z:\\sys\\bin\\usbclasschangeui.exe"); +_LIT(KErrRdPath, "c:\\resource\\ErrRd"); +_LIT(KErrRdDir, "c:\\resource\\"); + + +// FORWARD DECLARATIONS +class CEngine; +class CFileBrowserFileOps; +class CDocumentHandler; +class CEikProgressInfo; +class CFBFileOpClient; +class CEikProgressInfo; +class CMessageDigest; + +// CLASS DECLARATIONS + +class TSearchAttributes + { +public: + TFileName iSearchDir; + TFileName iWildCards; + TFileName iTextInFile; + TUint iMinSize; + TUint iMaxSize; + TTime iMinDate; + TTime iMaxDate; + TBool iRecurse; + }; + +class TDriveEntry + { +public: + TChar iLetter; + TInt iNumber; + TVolumeInfo iVolumeInfo; + TBuf<64> iMediaTypeDesc; + TBuf<128> iAttributesDesc; + TInt iIconId; + }; + +class TFileEntry + { +public: + TFileName iFullName; + TFileName iPath; + TEntry iEntry; + TInt iDirEntries; + TInt iIconId; + }; + +class TAppIcon + { +public: + TInt iId; + TUid iUid; + }; + +typedef CArrayFixSeg CDriveEntryList; +typedef CArrayFixSeg CFileEntryList; +typedef CArrayFixSeg CAppIconList; + +class TSearchResults + { +public: + TInt iNumberOfFoundFiles; + //CFileEntryList iFoundFilesList; + }; + +class TOverwriteOptions + { +public: + TBool iDoFileOperations/*(ETrue)*/; + TInt iQueryIndex/*(0)*/; + TFileName iPostFix; + TInt iOverWriteFlags/* = CFileMan::EOverWrite*/; + }; + +class CCommandParamsBase : public CBase + { + }; + +class CCommandParamsAttribs : public CCommandParamsBase + { +public: + TFileEntry iSourceEntry; + TUint iSetMask; + TUint iClearMask; + TTime iTime; + TUint iSwitch; +public: + CCommandParamsAttribs(const TFileEntry& aSourceEntry, TUint aSetMask, TUint aClearMask, const TTime& aTime, TUint aSwitch) : iSourceEntry(aSourceEntry), iSetMask(aSetMask), iClearMask(aClearMask), iTime(aTime), iSwitch(aSwitch) {} + }; + +class CCommandParamsCopyOrMove : public CCommandParamsBase + { +public: + TFileEntry iSourceEntry; + TFileName iTargetPath; + TUint iSwitch; +public: + CCommandParamsCopyOrMove(const TFileEntry& aSourceEntry, const TDesC& aTargetPath, TUint aSwitch) : iSourceEntry(aSourceEntry), iTargetPath(aTargetPath), iSwitch(aSwitch) {} + }; + +class CCommandParamsRename : public CCommandParamsBase + { +public: + TFileEntry iSourceEntry; + TFileName iTargetPath; + TUint iSwitch; +public: + CCommandParamsRename(const TFileEntry& aSourceEntry, const TDesC& aTargetPath, TUint aSwitch) : iSourceEntry(aSourceEntry), iTargetPath(aTargetPath), iSwitch(aSwitch) {} + }; + +class CCommandParamsDelete : public CCommandParamsBase + { +public: + TFileEntry iSourceEntry; + TUint iSwitch; +public: + CCommandParamsDelete(const TFileEntry& aSourceEntry, TUint aSwitch) : iSourceEntry(aSourceEntry), iSwitch(aSwitch) {} + }; + +class CCommandParamsDriveSnapShot : public CCommandParamsBase + { +public: + TInt iSourceDriveLetter; + TInt iTargetDriveLetter; +public: + CCommandParamsDriveSnapShot(TChar aSourceDriveLetter, TChar aTargetDriveLetter) : iSourceDriveLetter(aSourceDriveLetter), iTargetDriveLetter(aTargetDriveLetter) {} + }; + +class TCommand + { +public: + TInt iCommandId; + CCommandParamsBase* iParameters; +public: + TCommand(TInt aCommandId, CCommandParamsBase* aParameters) : iCommandId(aCommandId), iParameters(aParameters) {} + }; + +typedef CArrayFixSeg CCommandArray; + + + +class CFileBrowserFileUtils : public CActive, public MMsvSessionObserver + { +private: + enum TState // active object states + { + EIdle = 0, // do nothing + }; + + enum TClipBoardMode + { + EClipBoardModeCut = 0, + EClipBoardModeCopy + }; + +public: + static CFileBrowserFileUtils* NewL(CEngine* aEngine); + ~CFileBrowserFileUtils(); + +private: + CFileBrowserFileUtils(CEngine* aEngine); + void ConstructL(); + +private: // from CActive + void RunL(); + TInt RunError(TInt aError); + void DoCancel(); + +private: // from MMsvSessionObserver + void HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3); + +public: //from MProgressDialogCallback + void DialogDismissedL(/*TInt aButtonId*/); + +public: // command handling + void StartExecutingCommandsL(const TDesC& aLabel); +private: // command handling + void ExecuteCommand(); + void CheckForMoreCommandsL(); + void AppendToCommandArrayL(TInt aCommand, CCommandParamsBase* aParameters); + TInt CommandArrayCount() const; + void ResetCommandArray(); + +private: // misc functionality + void GenerateDirectoryDataL(); + void GetDriveListL(); + void GetDirectoryListingL(); +// CAknIconArray* GenerateIconArrayL(TBool aGenerateNewBasicIconArray=EFalse); +// void AppendGulIconToIconArrayL(CAknIconArray* aIconArray, const TDesC& aIconFile, TInt aIconId, TInt aMaskId, const TAknsItemID aAknsItemId); + TInt AppIconIdForUid(TUid aUid); + TUid GetAppUid(TFileEntry aFileEntry); +// CDesCArray* GenerateItemTextArrayL(); +// TInt GetSelectedItemsOrCurrentItemL(CFileEntryList* aFileEntryList); + TInt SetSelectedItemsOrCurrentItemL(const CArrayFix* selectionIndexes, + CFileEntryList* aFileEntryList); + +// TBool IsDestinationEntriesExists(const CFileEntryList* aEntryList, const TDesC& aTargetDir); + void DoCopyToFolderL(CFileEntryList* aEntryList, const TDesC& aTargetDir, const TOverwriteOptions &aOverwriteOptions, TBool aDeleteSource); + TInt DoSearchFiles(const TDesC& aFileName, const TDesC& aPath); + TInt DoSearchFilesRecursiveL(const TDesC& aFileName, const TDesC& aPath); + TInt DoFindFiles(const TDesC& aFileName, const TDesC& aPath); + TInt DoFindFilesRecursiveL(const TDesC& aFileName, const TDesC& aPath); + void ReadAttachmentPathsRecursiveL(CMsvSession* aSession, CMsvEntry* aContext, CDesCArray* aAttPaths); + void WriteMessageEntryInfoRecursiveL(CMsvSession* aSession, CMsvEntry* aContext, RFile& aFile, TInt& aLevel); + void DoWriteMessageEntryInfoL(CMsvEntry* aContext, RFile& aFile, TInt aLevel); + void ConvertCharsToPwd(const TDesC& aWord, TDes8& aConverted) const; + HBufC8* MessageDigestInHexLC(CMessageDigest* aMD, RFile& aFile); + void OpenCommonFileActionQueryL(TInt aCurrentItemIndex); + +public: // public interfaces + TKeyResponse HandleOfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType); + void HandleSettingsChangeL(); + void SetSortModeL(TInt aSortMode); + void SetOrderModeL(TInt aOrderMode); + void RefreshViewL(); + TBool IsCurrentDriveReadOnly(); + TBool IsItemDirectory(TInt aCurrentItemIndex); + void MoveUpOneLevelL(); + void MoveDownToDirectoryL(TInt aIndex); + TInt ClipboardCutL(const CArrayFix* aSelectionIndices); + TInt ClipboardCopyL(const CArrayFix* aSelectionIndices); + void ClipboardPasteL(const TOverwriteOptions &aOverwriteOptions); + TInt SetCurrentSelection(const CArrayFix* aSelectionIndices); + void CopyToFolderL(TFileName aTargetDir, const TOverwriteOptions &aOverwriteOptions, TBool aMove=EFalse); + void DeleteL(); + TBool SelectionHasDirs(); + void TouchL(TBool aRecurse); + void RenameL(const TInt aIndex, const TFileName &newName); + void SetAttributesL(); + void SearchL(); + void NewFileL(const TFileName &aNewFileName); + void NewDirectoryL(const TFileName &aNewDirectoryName); + void SendToL(); + void CompressL(); + void DecompressL(); + bool PropertiesL(TInt currentItemIndex, CDesCArray* entryLines, TFileName &titleText); + void OpenWithApparcL(TFileName aFileName); + void OpenWithDocHandlerL(TFileName aFileName, TBool aEmbed); + void OpenWithFileServiceL(TInt aCurrentItemIndex); + TBool FileExists(const TDesC& aPath); + TInt LaunchProgramL(const TDesC& aPath); + void MemoryInfoPopupL(); + void ShowFileCheckSumsL(TInt aCurrentItemIndex, TInt aType); + void SetErrRdL(TBool aEnable); +// void EnableAvkonIconCacheL(TBool aEnable); + void SimulateLeaveL(TInt aLeaveCode); + void SimulatePanicL(const TDesC& aPanicCategory, TInt aPanicCode); + void SimulateExceptionL(TInt aExceptionCode); + TUint32 GetDebugMask(); + void SetDebugMaskL(TUint32 aDbgMask); + void WriteAllAppsL(); + void WriteAllFilesL(); + void ListOpenFilesL(); + void ListMessageAttachmentsL(TInt aType); + void WriteMsgStoreWalkL(); + void FileEditorL(TInt aCurrentItemIndex, TInt aType); + void SetDrivePasswordL(TInt aIndex, const TFileName &aOldPassword, const TFileName &aNewPassword); + void UnlockDriveL(TInt aIndex, const TFileName &aOldPassword); + void ClearDrivePasswordL(TInt aIndex, const TFileName &aOldPassword); + void EraseDrivePasswordL(TInt aIndex); + void FormatDriveL(TInt aIndex, TBool aQuickFormat); + void CheckDiskL(TInt aIndex); + void ScanDriveL(TInt aIndex); + void SetDriveNameL(TInt aIndex, const TFileName &aDriveName); + void SetDriveVolumeLabelL(TInt aIndex, const TFileName &aVolumeLabel); + void EjectDriveL(TInt aIndex); + void DismountFileSystemL(TInt aIndex); + void EraseMBRL(TInt aIndex); + void PartitionDriveL(TInt aIndex, TBool aEraseMBR, TInt aAmountOfPartitions); + TBool DriveSnapShotPossible(); + void DriveSnapShotL(); + void EditDataTypesL(); + void SecureBackupL(TInt aType); + + TBool IsDestinationEntriesExists(const TDesC& aTargetDir); + TBool TargetExists(const TInt aIndex, const TFileName &newName); + void GetDriveName(TInt aIndex, TFileName &aDriveName); + void GetDriveVolumeLabel(TInt aIndex, TFileName &aVolumeLabel); + + CFileEntryList* FileEntries() const; + CDriveEntryList* DriveEntries() const; + +public: + inline TInt SortMode() { return iSortMode; } + inline TInt OrderMode() { return iOrderMode; } + inline CFileEntryList* ClipBoardList() { return iClipBoardList; } + inline CFileEntryList* CurrentSelectionList() { return iCurrentSelectionList; } + inline TBool IsDriveListViewActive() { return iCurrentPath==KNullDesC && iListingMode==ENormalEntries; } + inline TBool IsNormalModeActive() { return iListingMode==ENormalEntries; } + inline TListingMode ListingMode() { return iListingMode; } + inline TFileName CurrentPath() { return iCurrentPath; } + + inline TSearchAttributes GetSearchAttributes(){ return iSearchAttributes; }; + inline void ChangeAttributes(TSearchAttributes attributes) { iSearchAttributes = attributes; }; + inline TSearchResults SearchResults(){ return iFileSearchResults; }; + inline CFileEntryList* FoundFiles() { return iFileEntryList; }; + inline void SetAllowProcessing(TBool aAllowProcessing) { iAllowProcessing = aAllowProcessing; } + +private: + TState iState; + CEngine* iEngine; + CFileBrowserFileOps* iFileOps; + + TBool isWaitDialog; + TBool isProgressDialog; + + CEikProgressInfo* iProgressInfo; + CCommandArray* iCommandArray; + TInt iCurrentEntry; + TInt iSucceededOperations; + TInt iFailedOperations; + TInt iLastError; + RTimer iTimer; + RFs iFs; + TListingMode iListingMode; + CFileMan* iFileMan; + TInt iViewMode; + TFileName iCurrentPath; + TInt iSortMode; + TInt iOrderMode; + TInt iClipboardMode; + CDesCArray* iClipboardPaths; + CDriveEntryList* iDriveEntryList; + CFileEntryList* iFileEntryList; + CFileEntryList* iFindFileEntryList; + CAppIconList* iAppIconList; + TClipBoardMode iClipBoardMode; + CFileEntryList* iClipBoardList; + CFileEntryList* iCurrentSelectionList; + TSearchAttributes iSearchAttributes; + CDocumentHandler* iDocHandler; + + RFile iMsgStoreWalkFile; + TInt iPrevFolderIndex; + TFileName iPrevFolderName; + RTz iTz; + TSearchResults iFileSearchResults; + CDesCArray* iTextArray; + TBool iAllowProcessing; + }; + + +// utility class for waiting for asychronous requests +class CAsyncWaiter : public CActive + { +public: + static CAsyncWaiter* NewL( TInt aPriority = EPriorityStandard ); + static CAsyncWaiter* NewLC( TInt aPriority = EPriorityStandard ); + ~CAsyncWaiter(); + + void StartAndWait(); + TInt Result() const; + +private: + CAsyncWaiter( TInt aPriority ); + + // from CActive + void RunL(); + void DoCancel(); + +private: + CActiveSchedulerWait iWait; + TInt iError; + }; + + +#endif + +// End of File +