diff -r b3cee849fa46 -r fad26422216a filebrowser/inc/FBFileUtils.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/filebrowser/inc/FBFileUtils.h Wed Sep 01 12:30:35 2010 +0100 @@ -0,0 +1,380 @@ +/* +* Copyright (c) 2009 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 +#include + +_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 CFileBrowserModel; +class CFileBrowserFileOps; +class CAknIconArray; +class TAknsItemID; +class CDocumentHandler; +class CAknWaitDialog; +class CAknProgressDialog; +class CEikProgressInfo; +class CFBFileOpClient; +class CAknProgressDialog; +class CEikProgressInfo; +class CAknOpenFileService; +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 iPath; + TEntry iEntry; + TInt iDirEntries; + TInt iIconId; + }; + +class TAppIcon + { +public: + TInt iId; + TUid iUid; + }; + +typedef CArrayFixSeg CDriveEntryList; +typedef CArrayFixSeg CFileEntryList; +typedef CArrayFixSeg CAppIconList; + + +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 MAknServerAppExitObserver, public MMsvSessionObserver, public MProgressDialogCallback + { +private: + enum TState // active object states + { + EIdle = 0, // do nothing + }; + + enum TClipBoardMode + { + EClipBoardModeCut = 0, + EClipBoardModeCopy + }; + + enum TListingMode + { + ENormalEntries = 0, + ESearchResults, + EOpenFiles, + EMsgAttachmentsInbox, + EMsgAttachmentsDrafts, + EMsgAttachmentsSentItems, + EMsgAttachmentsOutbox + }; + +public: + static CFileBrowserFileUtils* NewL(CFileBrowserModel* aModel); + ~CFileBrowserFileUtils(); + +private: + CFileBrowserFileUtils(CFileBrowserModel* aModel); + void ConstructL(); + +private: // from CActive + void RunL(); + TInt RunError(TInt aError); + void DoCancel(); + +private: // from MAknServerAppExitObserver + void HandleServerAppExit(TInt aReason); + +private: // from MMsvSessionObserver + void HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3); + +private: //from MProgressDialogCallback + void DialogDismissedL(TInt aButtonId); + +private: // command handling + void StartExecutingCommandsL(const TDesC& aLabel); + 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); + void DoCopyToFolderL(CFileEntryList* aEntryList, const TDesC& aTargetDir, 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(TDesC& aWord, TDes8& aConverted) const; + HBufC8* MessageDigestInHexLC(CMessageDigest* aMD, RFile& aFile); + void OpenCommonFileActionQueryL(); + +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 IsCurrentItemDirectory(); + void MoveUpOneLevelL(); + void MoveDownToDirectoryL(); + void ClipboardCutL(); + void ClipboardCopyL(); + void ClipboardPasteL(); + void CopyToFolderL(TBool aMove=EFalse); + void DeleteL(); + void TouchL(); + void RenameL(); + void SetAttributesL(); + void SearchL(); + void NewFileL(); + void NewDirectoryL(); + void SendToL(); + void CompressL(); + void DecompressL(); + void PropertiesL(); + void OpenWithApparcL(); + void OpenWithDocHandlerL(TBool aEmbed); + void OpenWithFileServiceL(); + TBool FileExists(const TDesC& aPath); + TInt LaunchProgramL(const TDesC& aPath); + void MemoryInfoPopupL(); + void ShowFileCheckSumsL(TInt aType); + void SetErrRdL(TBool aEnable); + void EnableAvkonIconCacheL(TBool aEnable); + void SimulateLeaveL(); + void SimulatePanicL(); + void SimulateExceptionL(); + void SetDebugMaskL(); + void WriteAllAppsL(); + void WriteAllFilesL(); + void ListOpenFilesL(); + void ListMessageAttachmentsL(TInt aType); + void WriteMsgStoreWalkL(); + void FileEditorL(TInt aType); + void SetDrivePasswordL(); + void UnlockDriveL(); + void ClearDrivePasswordL(); + void EraseDrivePasswordL(); + void FormatDriveL(TBool aQuickFormat); + void CheckDiskL(); + void ScanDriveL(); + void SetDriveNameL(); + void SetDriveVolumeLabelL(); + void EjectDriveL(); + void DismountFileSystemL(); + void EraseMBRL(); + void PartitionDriveL(); + TBool DriveSnapShotPossible(); + void DriveSnapShotL(); + void EditDataTypesL(); + void SecureBackupL(TInt aType); + +public: + inline TInt SortMode() { return iSortMode; } + inline TInt OrderMode() { return iOrderMode; } + inline CFileEntryList* ClipBoardList() { return iClipBoardList; } + inline TBool IsDriveListViewActive() { return iCurrentPath==KNullDesC && iListingMode==ENormalEntries; } + inline TBool IsNormalModeActive() { return iListingMode==ENormalEntries; } + +private: + TState iState; + CFileBrowserModel* iModel; + CFileBrowserFileOps* iFileOps; + CAknWaitDialog* iWaitDialog; + CAknProgressDialog* iProgressDialog; + 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; + TSearchAttributes iSearchAttributes; + CDocumentHandler* iDocHandler; + CAknOpenFileService* iOpenFileService; + RFile iMsgStoreWalkFile; + TInt iPrevFolderIndex; + TFileName iPrevFolderName; + RTz iTz; + }; + + +// 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 +