diff -r d1daf54a55b5 -r 1957042d8c7e filemanager/App/inc/CFileManagerViewBase.h --- a/filemanager/App/inc/CFileManagerViewBase.h Tue Feb 02 00:03:31 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,705 +0,0 @@ -/* -* Copyright (c) 2002-2008 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: Base class for all file manager views -* -*/ - - - -#ifndef CFILEMANAGERVIEWBASE_H -#define CFILEMANAGERVIEWBASE_H - - -// INCLUDES -#include -#include -#include -#include -#include -#include - - -// FORWARD DECLARATIONS -class CFileManagerContainerBase; -class CFileManagerEngine; -class CFileManagerActiveExecute; -class CEikMenuBar; -class CFileManagerActiveDelete; -class CFileManagerItemProperties; -class CAknQueryDialog; -class CAknWaitNoteWrapper; -class CFileManagerFeatureManager; -class MAknServerAppExitObserver; - - -// Defines maximum media password length in Unicode -const TUint KFmgrMaxMediaPassword = KMaxMediaPassword / 2; // Because of Unicode -// CLASS DECLARATION -/** - * Base class for all views in File Manager applicaiton - */ -class CFileManagerViewBase : public CAknView, - public MProgressDialogCallback, - public MFileManagerProcessObserver, - public MAknServerAppExitObserver - { - protected: - /** - * Return value enumeration for CmdOpenL to indicate what - * kind of item was opened or if there was an error during - * opening. - */ - enum TFileManagerOpenResult - { - EFolderOpened, - EFileOpened, - EOpenError - }; - public: // Constructors and destructor - /** - * Two-phased constructor. - */ - static CFileManagerViewBase* NewLC(); - - /** - * Timer calls this in order to update the progress bar. - * @param aPtr pointer to object where is function to be call - * when timer expires. - * @return positive number if timer needs to be activated again - * 0 if timer is not needed any more. - */ - static TInt UpdateProgressBar( TAny* aPtr ); - - /** - * Timer calls this in order to start refresh progress dialog. - * @param aPtr pointer to object where is function to be call - * when timer expires. - * @return positive number if timer needs to be activated again - * 0 if timer is not needed any more. - */ - static TInt RefreshProgressDelayedStart( TAny* aPtr ); - - /** - * Stores current index - * @return ETrue if storing successfull - * EFalse if storing not succesfull - */ - TBool StoreIndex(); - - /** - * Nulls everything which is related to progress bar - */ - void ClearProgressBarL(); - - /** - * @return Current process in app - */ - MFileManagerProcessObserver::TFileManagerProcess CurrentProcess(); - - /** - * Destructor. - */ - virtual ~CFileManagerViewBase(); - - public: // From MProgressDialogCallback - void DialogDismissedL( TInt aButtonId ); - - public://MAknServerAppExitObserver - /** - * @see MAknServerAppExitObserver - */ - void HandleServerAppExit( TInt aReason ); - - public: // From MFileManagerProcessObserver - /** - * @see MFileManagerProcessObserver - */ - void ProcessFinishedL( TInt aError, const TDesC& aName ); - - /** - * @see MFileManagerProcessObserver - */ - void ProcessAdvanceL( TInt aValue ); - - /** - * @see MFileManagerProcessObserver - */ - void ProcessStartedL( - MFileManagerProcessObserver::TFileManagerProcess aProcess, - TInt aFinalValue ); - - /** - * @see MFileManagerProcessObserver - */ - TBool ProcessQueryOverWriteL( - const TDesC& aOldName, - TDes& aNewName, - TFileManagerProcess aProcess ); - - /** - * @see MFileManagerProcessObserver - */ - TBool ProcessQueryRenameL( - const TDesC& aOldName, - TDes& aNewName, - TFileManagerProcess aProcess ); - - /** - * @see MFileManagerProcessObserver - */ - void RefreshStartedL(); - - /** - * @see MFileManagerProcessObserver - */ - void RefreshStoppedL(); - - /** - * @see MFileManagerProcessObserver - */ - void ShowWaitDialogL( MAknBackgroundProcess& aProcess); - - /** - * @see MFileManagerProcessObserver - */ - void Error( TInt aError ); - - /** - * @see MFileManagerProcessObserver - */ - TInt NotifyL( TFileManagerNotify aType, TInt aData, const TDesC& aName ); - - public: - - /* - * When view needs refresh, this is called. - */ - virtual void DirectoryChangedL() = 0; - - /* - * Checks if refresh is in progress - */ - TBool IsRefreshInProgress(); - - /** - * Handles errors caused by file or folder deletion outside - * file manager while file manager is in foreground. - * @param aError Error code. - * @return ETrue if error was handled. Otherwise EFalse. - */ - TBool HandleFileNotFoundL( TInt aError ); - - /** - * Handles screen layout changes - */ - virtual void ScreenDeviceChanged(); - -#ifdef RD_FILE_MANAGER_BACKUP - void StartSchBackupL(); - - void SchBackupFinishedL(); -#endif // RD_FILE_MANAGER_BACKUP - - /** - * Updates cba - */ - virtual void UpdateCbaL(); - - /** - * Notifies foreground status change - */ - virtual void NotifyForegroundStatusChange( TBool aForeground ); - - protected: // From CAknView - /** - * @see CAknView - */ - void DoActivateL( - const TVwsViewId& aPrevViewId, - TUid aCustomMessageId, - const TDesC8& aCustomMessage); - - /** - * @see CAknView - */ - void DoDeactivate(); - - /** - * @see CAknView - */ - void HandleCommandL( TInt aCommand ); - - /** - * @see CAknView - */ - void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane); - - /** - * @see CAknView - */ - void ProcessCommandL( TInt aCommand ); - - protected: // New methods - - /** - * Returns a container class that is derived from - * CFileManagerContainerBase. This is provided for derived - * classes to create their own type of containers. - * @return Newly created container. - */ - virtual CFileManagerContainerBase* CreateContainerL() = 0; - - /** - * Executes open command. Opens currently selected item in - * list. - * @return Code that tells if opened item was folder or - * file. EOpenError is returned if there was an - * error during open. - */ - TFileManagerOpenResult CmdOpenL(); - - /** - * Executes delete command to delete current item - * or if there are marked items, all of them are deleted. - */ - void CmdDeleteL(); - - /** - * Marks all markable items in list. - */ - void CmdMarkAllL(); - - /** - * Unmarks all marked items in list. - */ - void CmdUnmarkAllL(); - - /** - * Changes mark status of currently focused item. - */ - void CmdToggleMarkL(); - - /** - * Creates new folder to currently active directory. - */ - void CmdNewFolderL(); - - /** - * Renames currently active item. - */ - void CmdRenameL(); - - /** - * Moves current item to folder that is queried using - * Common File Dialogs. If there are marked items, all of - * them are moved. - */ - void CmdMoveToFolderL(); - - /** - * Copies current item to folder that is queried using - * Common File Dialogs. If there are marked items, all of - * them are copied. - */ - void CmdCopyToFolderL(); - - /** - * Shows info popup dialog that contains information - * about currently active item. - */ - void CmdViewInfoL(); - - /** - * Shows memory status popup dialog that contains - * information about current memory status of the - * active memory. - */ - void CmdMemoryStateL(); - - /** - * Executes find command. - */ - void CmdFindL(); - - /** - * Receives file via infrared to currently active - * folder. - */ - void CmdReceiveViaIRL(); - - /** - * Runs move or copy operation. Parameter aToFolder is the destination - * of operation. - * @param aOperation Operation to execute. - * @param aToFolder Destination folder of the operation. - */ - void RunOperationL( - MFileManagerProcessObserver::TFileManagerProcess aOperation, - const TDesC& aToFolder ); - - /** - * Gets reference to drive info. - */ - TFileManagerDriveInfo& DriveInfo() const; - - /** - * Refreshes drive info. - */ - void RefreshDriveInfoL(); - - void StartProcessL( - MFileManagerProcessObserver::TFileManagerProcess aProcess, - TInt aValue = KErrNotFound ); - - void CmdUnlockDriveL(); - - void CmdFormatDriveL(); - -// void CmdRenameDriveL(); -// -// void CmdSetDrivePasswordL(); -// -// void CmdChangeDrivePasswordL(); -// -// void CmdRemoveDrivePasswordL(); -// -// void CmdMemoryCardDetailsL(); - - TInt UpdatePassword( - TInt aDrive, const TDesC& aOldPwd, const TDesC& aPwd ); - - TInt UnlockRemovePasswordL( TInt aDrive, TBool aRemove ); - - /** - * Sets remote drive connection state. - * - * @param aState ETrue to connect, EFalse to disconnect. - */ - void SetRemoteDriveConnectionStateL( TBool aState ); - - /** - * Opens remote drive setting view. - * - * @param aDriveName Name of the remote drive. - */ - void OpenRemoteDriveSettingsL( - const TDesC& aDriveName = KNullDesC ); - - /** - * Checks if item is on disconnected remote drive. - * - * @param aProp Item properties. - * @return ETrue if item is on disconnect drive. Otherwise EFalse. - */ - TBool IsDisconnectedRemoteDrive( - CFileManagerItemProperties& aProp ); - - /** - * Performs remote drive menu filtering. - * - * @param aMenuPane Menu instance to be filtered. - */ - void RemoteDriveCommonFilteringL( CEikMenuPane& aMenuPane ); - - /** - * Renames current drive. - * - * @param aForceDefaultName ETrue to offer the default name by force. - */ - void RenameDriveL( TBool aForceDefaultName ); - - /** - * Handles refresh directory command. - */ - void CmdRefreshDirectoryL(); - - /** - * Shows eject query. - */ - void ShowEjectQueryL(); - - /** - * Launches progress dialog with given final and initial values. - * aOperation parameter is used to determine what resource - * should be used when displaying dialog. - * @param aFinalValue Final value of the created progress dialog. - * @param aInitialValue Initial value of the created progress dialog. - * @param aOperation Operation that this progress dialog represents - * @param aImmediatelyVisible Dialog is immediately visible if ETrue - */ - void LaunchProgressDialogL( - TInt64 aFinalValue, - TInt64 aInitialValue, - MFileManagerProcessObserver::TFileManagerProcess aOperation, - TBool aImmediatelyVisible = EFalse ); - - TBool AskPathL( TDes& aPath, TInt aTextId ); - - void SetCbaMskTextL( const TInt aTextId ); - - void UpdateCommonCbaL(); - - TBool IsDriveAvailable( const TDesC& aPath ) const; - - TBool IsDriveAvailable( const TInt aDrive ) const; - - TBool DriveReadOnlyMmcL( const TInt aDrive ) const; - - TBool DriveReadOnlyMmcL( const TDesC& aFullPath ) const; - - TBool CheckPhoneState() const; - - TBool StopProgressDialogAndStoreValues(); - - void CmdSortL( TInt aCommand ); - - CFileManagerFeatureManager& FeatureManager() const; - - void ShowDiskSpaceErrorL( const TDesC& aFolder ); - - /** - * Sets given media password string to empty and zero fills it. - * - * @param aPwd Media password to clean up. - */ - static void EmptyPwd( TDes& aPwd ); - - /** - * Converts chars to media password. - * - * @param aWord Password to convert in Unicode. - * @param aConverted Converted password. - */ - static void ConvertCharsToPwd( const TDesC& aWord, TDes8& aConverted ); - - /** - * Gets drive information at current position. - * - * @param aInfo Stores drive information. - * @return Drive identifier or KErrNotFound. - */ - TInt DriveInfoAtCurrentPosL( TFileManagerDriveInfo& aInfo ); - - protected: - - /** - * C++ default constructor. - */ - CFileManagerViewBase(); - - /** - * By default Symbian 2nd phase constructor is private. - */ - virtual void ConstructL( TInt aResId ); - - private: // New methods - /** - * Constructs an array that contains the indices - * of marked items. - * @return Array of marked items. - */ - CArrayFixFlat* MarkedArrayLC(); - - /** - * Gets paths of marked sendable files - * @param Reference to get size of the sendable files - * @return Array of sendable file items - */ - CArrayFixFlat* GetSendFilesLC( TInt& aSize ); - - /** - * Filters Edit menu in aMenuPane. - */ - void MarkMenuFilteringL( CEikMenuPane& aMenuPane ); - - /** - * Creates a send ui query - */ - void SendUiQueryL(); - - /** - * Timer calls this for updating the progress bar. - */ - void DoUpdateProgressBar(); - - /** - * Returns true if all or any focused item or marked items are protected. - * - * The 'all' or 'any' mode of operation is controlled by the aMode parameter. - * - * @param aMode controls the 'all' or 'any' mode. ETrue = 'all'. - * @return ETrue all chosen items are protected - * EFalse at least one of the items are not protected - */ - TBool AreChosenFilesProtectedL( TBool aMode ); - - /** - * Creates and displayes the Context sensitive menu - */ - void ShowContextSensitiveMenuL(); - - /** - * Adds SendUi option to option menu - */ - void AddSendOptionL( - CEikMenuPane& aMenuPane, - const TInt aCommandIdAfter ); - - /** - * Check is delete condition ok for given item - */ - TBool DeleteStatusNotOkL( - CFileManagerItemProperties& aProp, - TInt aSelectionCount ) const; - - /** - * Deletes focused or marked items from current listbox - */ - void DeleteItemsL( TInt aIndex ); - - /** - * Checks if given index has InfoUrl. - * @param aIndex given index - * @return ETrue if given index has InfoUrl, - * EFalse otherwise. - */ - TBool HasInfoUrlL( TInt aIndex ); - - /** - * Opens InfoUrl of given index in browser. - * @param aIndex given index - */ - void OpenInfoUrlL( TInt aIndex ); - - /** - * Checks file rights and shows note if expired. - * @param aFullPath File to check - * @return ETrue if rights are valid - * EFalse if rights are expired - */ - TBool CheckFileRightsAndInformIfExpiredL( const TDesC& aFullPath ); - - /** - * Filters memory store menu in aMenuPane. - */ - void MemoryStoreMenuFilteringL( CEikMenuPane& aMenuPane ); - - /** - * Filters organise menu in aMenuPane. - */ - void OrganiseMenuFilteringL( CEikMenuPane& aMenuPane ); - - /** - * Filters details menu in aMenuPane. - */ - void DetailsMenuFilteringL( CEikMenuPane& aMenuPane ); -// -// /** -// * Filters memory card menu in aMenuPane. -// */ -// void MemoryCardMenuFilteringL( CEikMenuPane& aMenuPane ); -// -// /** -// * Filters memory card password menu in aMenuPane. -// */ -// void MemoryCardPasswordMenuFilteringL( CEikMenuPane& aMenuPane ); - - /** - * Filters context sensitive menu in aMenuPane. - */ - void ContextSensitiveMenuFilteringL( CEikMenuPane& aMenuPane ); - - /** - * Launches progress bar - */ - void LaunchProgressBarL( - TInt aDialogId, - TInt aTextId, - TInt64 aFinalValue, - TInt64 aInitialValue, - TBool aPeriodic, - TBool aImmediatelyVisible ); - - /** - * Starts refresh progress dialog - */ - void RefreshProgressDelayedStartL(); - - void CheckPostponedDirectoryRefresh(); - - void DenyDirectoryRefresh( TBool aDeny ); - - void SortMenuFilteringL( CEikMenuPane& aMenuPane ); - - void DoProcessFinishedL( TInt aError, const TDesC& aName ); - - void DoLaunchProgressDialogAsync(); - - static TInt LaunchProgressDialogAsync( TAny* aPtr ); - - - protected: // Data - /// Own: Container that this view handles. - CFileManagerContainerBase* iContainer; - /// Ref: Reference to File Manager engine. - CFileManagerEngine& iEngine; - /// Own: Progress dialog for iActiveExec - CAknProgressDialog* iProgressDialog; - /// Own: Progress dialog for iActiveExec - CAknProgressDialog* iProgressDialogRefresh; - /// Ref: Progress info of iProgressDialog - CEikProgressInfo* iProgressInfo; - /// Own: Active object that executes copy and move operations - CFileManagerActiveExecute* iActiveExec; - /// Own: Array of marked items in listbox - CArrayFixFlat* iMarkedArray; - /// Currently active process - MFileManagerProcessObserver::TFileManagerProcess iActiveProcess; - /// Own: Popup menu for showing context sensitive menu - CEikMenuBar* iPopupMenu; - /// Own: This is used to update the progress bar - CPeriodic* iPeriodic; - // This is for progress bar - TInt64 iTotalTransferredBytes; - // This is for progress bar(in order to support over 2Gb files) - // Own: for wait note wrapper, delete items - CFileManagerActiveDelete* iActiveDelete; - // current listbox index - TInt iIndex; - // Own: Timer object to start refresh progress dialog - CPeriodic* iRefreshProgressDelayedStart; - // Own: Indicates that scheduled backup is pending - TBool iSchBackupPending; - // Own: Eject query dialog - CAknQueryDialog* iEjectQueryDialog; - // Own: Indicates if eject has been done - TBool iEjectDone; - // Own: Stores current progress value - TInt64 iProgressCurrentValue; - // Own: Stores final progress value - TInt64 iProgressFinalValue; - // Own: Denies directory refresh during query until selected operation gets started - TBool iDirectoryRefreshDenied; - // Own: Indicates postponed directory refresh - TBool iDirectoryRefreshPostponed; - // Own: For wait note stepping - CAknWaitNoteWrapper* iWaitNoteWrapper; - // Own: Indicates if there's a SendUi popup query dialog - TBool iSendUiPopupOpened; - - }; - -#endif // CFILEMANAGERVIEWBASE_H - -// End of File