--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/filebrowser/inc/FBFileUtils.h Tue Feb 02 00:17:27 2010 +0200
@@ -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 <e32base.h>
+#include <f32file.h>
+#include <w32std.h>
+#include <badesca.h>
+#include <coedef.h>
+#include <AknServerApp.h>
+#include <msvapi.h>
+#include <AknProgressDialog.h>
+#include <tz.h>
+
+_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<TDriveEntry> CDriveEntryList;
+typedef CArrayFixSeg<TFileEntry> CFileEntryList;
+typedef CArrayFixSeg<TAppIcon> 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<TCommand> 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
+