filebrowser/src/FBFileListView.cpp
branchRCL_3
changeset 20 fad26422216a
parent 0 d6fe6244b863
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filebrowser/src/FBFileListView.cpp	Wed Sep 01 12:30:35 2010 +0100
@@ -0,0 +1,763 @@
+/*
+* 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:  
+*
+*/
+
+
+// INCLUDE FILES
+#include <aknViewAppUi.h>
+#include <avkon.hrh>
+#include <apgtask.h>
+#include <aknmessagequerydialog.h> 
+#include <remconinterfaceselector.h>
+#include <remconcoreapitarget.h>
+
+#include <filebrowser.rsg>
+#include "FB.hrh"
+#include "FBFileListView.h"
+#include "FBFileListContainer.h"
+#include "FBDocument.h" 
+#include "FBModel.h"
+#include "FBFileUtils.h"
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CFileBrowserFileListView::ConstructL(const TRect& aRect)
+// EPOC two-phased constructor
+// ---------------------------------------------------------
+//
+void CFileBrowserFileListView::ConstructL()
+    {
+    BaseConstructL( R_FILEBROWSER_VIEW_FILELIST );
+    iModel = static_cast<CFileBrowserDocument*>(reinterpret_cast<CEikAppUi*>(iEikonEnv->AppUi())->Document())->Model();
+    
+    iRemConSelector = CRemConInterfaceSelector::NewL();
+    iRemConTarget = CRemConCoreApiTarget::NewL(*iRemConSelector, *this);
+    iRemConSelector->OpenTargetL();
+    }
+
+// ---------------------------------------------------------
+// CFileBrowserFileListView::~CFileBrowserFileListView()
+// ?implementation_description
+// ---------------------------------------------------------
+//
+CFileBrowserFileListView::~CFileBrowserFileListView()
+    {
+    delete iRemConSelector;
+
+    if ( iContainer )
+        {
+        AppUi()->RemoveFromViewStack( *this, iContainer );
+        }
+
+    delete iContainer;
+    }
+
+// ---------------------------------------------------------
+// TUid CFileBrowserFileListView::Id()
+// ?implementation_description
+// ---------------------------------------------------------
+//
+TUid CFileBrowserFileListView::Id() const
+    {
+    return KFileListViewUID;
+    }
+
+// ---------------------------------------------------------
+// TUid CFileBrowserFileListView::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
+// ?implementation_description
+// ---------------------------------------------------------
+//
+
+void CFileBrowserFileListView::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
+    {
+    TBool emptyListBox = iContainer->ListBoxNumberOfVisibleItems() == 0;
+    TBool driveListActive = iModel->FileUtils()->IsDriveListViewActive();
+    TBool normalModeActive = iModel->FileUtils()->IsNormalModeActive();
+    TBool currentDriveReadOnly = iModel->FileUtils()->IsCurrentDriveReadOnly();
+    TBool currentItemDirectory = iModel->FileUtils()->IsCurrentItemDirectory();
+    TBool listBoxSelections = iContainer->ListBoxSelectionIndexesCount() == 0;
+    TBool emptyClipBoard = iModel->FileUtils()->ClipBoardList()->Count() == 0;
+    TBool showSnapShot = iModel->FileUtils()->DriveSnapShotPossible();
+    
+    TBool hideEditMenu(EFalse);
+    if (driveListActive)
+        {
+        if (!showSnapShot || emptyListBox && emptyClipBoard)
+            hideEditMenu = ETrue;    
+        else
+            hideEditMenu = EFalse;
+        }
+    else
+        {
+        if (emptyListBox && emptyClipBoard)
+            hideEditMenu = ETrue;    
+        else
+            hideEditMenu = EFalse;
+        }
+    
+
+    if (aResourceId == R_FILEBROWSER_VIEW_FILELIST_MENU)
+	    {
+        aMenuPane->SetItemDimmed(EFileBrowserCmdEdit, hideEditMenu);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdDiskAdmin, !driveListActive);
+	    }    
+
+    else if (aResourceId == R_FILEBROWSER_FILE_SUBMENU)
+	    {
+        aMenuPane->SetItemDimmed(EFileBrowserCmdFileBack, driveListActive);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdFileOpen, emptyListBox || driveListActive || currentItemDirectory);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdFileOpenDrive, emptyListBox || !driveListActive);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdFileOpenDirectory, emptyListBox || driveListActive || !currentItemDirectory);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdFileView, emptyListBox || !listBoxSelections || currentItemDirectory || driveListActive);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdFileEdit, emptyListBox || !listBoxSelections || currentItemDirectory || driveListActive);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdFileSendTo, emptyListBox || driveListActive || currentItemDirectory);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdFileNew, driveListActive || currentDriveReadOnly);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdFileDelete, emptyListBox || driveListActive || currentDriveReadOnly);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdFileRename, emptyListBox || driveListActive || currentDriveReadOnly || !listBoxSelections);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdFileTouch, emptyListBox || driveListActive || currentDriveReadOnly);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdFileProperties, emptyListBox || !listBoxSelections);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdFileChecksums, emptyListBox || !listBoxSelections || currentItemDirectory || driveListActive);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdFileSetAttributes, emptyListBox || driveListActive || currentDriveReadOnly);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdFileCompress, currentDriveReadOnly || emptyListBox || !listBoxSelections || currentItemDirectory || driveListActive);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdFileDecompress, currentDriveReadOnly || emptyListBox || !listBoxSelections || currentItemDirectory || driveListActive);
+	    }
+    
+    else if (aResourceId == R_FILEBROWSER_EDIT_SUBMENU)
+	    {
+        TBool currentSelected = iContainer->ListBox()->View()->ItemIsSelected(iContainer->ListBox()->View()->CurrentItemIndex());
+        TBool allSelected = iContainer->ListBox()->SelectionIndexes()->Count() == iContainer->ListBox()->Model()->NumberOfItems();
+        TBool noneSelected = iContainer->ListBox()->SelectionIndexes()->Count() == 0;
+        
+        aMenuPane->SetItemDimmed(EFileBrowserCmdSnapShot, !driveListActive);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdEditCut, driveListActive || currentDriveReadOnly || emptyListBox);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdEditCopy, driveListActive || emptyListBox);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdEditPaste, driveListActive || emptyClipBoard || currentDriveReadOnly);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdEditCopyToFolder, driveListActive || emptyListBox);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdEditMoveToFolder, driveListActive || currentDriveReadOnly || emptyListBox);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdEditSelect, driveListActive || currentSelected || emptyListBox);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdEditUnselect, driveListActive || !currentSelected || emptyListBox);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdEditSelectAll, driveListActive || allSelected || emptyListBox);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdEditUnselectAll, driveListActive || noneSelected || emptyListBox);
+	    }
+
+	else if (aResourceId == R_FILEBROWSER_VIEW_SUBMENU)
+	    {
+        aMenuPane->SetItemDimmed(EFileBrowserCmdViewSort, !normalModeActive || driveListActive || emptyListBox);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdViewOrder, !normalModeActive || driveListActive || emptyListBox);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdViewRefresh, !normalModeActive);
+        aMenuPane->SetItemDimmed(EFileBrowserCmdViewFilterEntries, emptyListBox);
+	    }
+
+	else if (aResourceId == R_FILEBROWSER_VIEW_SORT_SUBMENU)
+	    {
+        aMenuPane->SetItemButtonState(iModel->FileUtils()->SortMode(), EEikMenuItemSymbolOn);
+	    }
+
+	else if (aResourceId == R_FILEBROWSER_VIEW_ORDER_SUBMENU)
+	    {
+        aMenuPane->SetItemButtonState(iModel->FileUtils()->OrderMode(), EEikMenuItemSymbolOn);
+	    }
+
+	else if (aResourceId == R_FILEBROWSER_TOOLS_SUBMENU)
+	    {
+	    TBool noLocalCon = !iModel->FileUtils()->FileExists(KIRAppPath) && !iModel->FileUtils()->FileExists(KBTAppPath) && !iModel->FileUtils()->FileExists(KUSBAppPath);
+	    
+        aMenuPane->SetItemDimmed(EFileBrowserCmdToolsDisableExtErrors, !iModel->FileUtils()->FileExists(KErrRdPath));
+        aMenuPane->SetItemDimmed(EFileBrowserCmdToolsEnableExtErrors, iModel->FileUtils()->FileExists(KErrRdPath));
+        aMenuPane->SetItemDimmed(EFileBrowserCmdToolsLocalConnectivity, noLocalCon);
+	    }
+
+	else if (aResourceId == R_FILEBROWSER_TOOLS_LOCALCONNECTIVITY_SUBMENU)
+	    {
+        aMenuPane->SetItemDimmed(EFileBrowserCmdToolsLocalConnectivityActivateInfrared, !iModel->FileUtils()->FileExists(KIRAppPath));
+        aMenuPane->SetItemDimmed(EFileBrowserCmdToolsLocalConnectivityLaunchBTUI, !iModel->FileUtils()->FileExists(KBTAppPath));
+        aMenuPane->SetItemDimmed(EFileBrowserCmdToolsLocalConnectivityLaunchUSBUI, !iModel->FileUtils()->FileExists(KUSBAppPath));
+	    }	    
+    else
+        {
+        AppUi()->DynInitMenuPaneL(aResourceId, aMenuPane);
+        }
+    }
+
+// ---------------------------------------------------------
+// CFileBrowserFileListView::MrccatoCommand(TRemConCoreApiOperationId aOperationId, TRemConCoreApiButtonAction aButtonAct)
+// Used to handle multimedia keys
+// ---------------------------------------------------------
+//
+
+void CFileBrowserFileListView::MrccatoCommand(TRemConCoreApiOperationId aOperationId, TRemConCoreApiButtonAction /*aButtonAct*/)
+    {
+    switch(aOperationId)
+        {
+        case ERemConCoreApiVolumeUp:
+            {
+            // simulate a keyevent, so that it can be handled as all other key events
+            TKeyEvent keyEvent;
+            keyEvent.iCode = EKeyIncVolume;
+            keyEvent.iScanCode = 0;
+            keyEvent.iModifiers = 0;
+            keyEvent.iRepeats = 0;
+            
+            //TRAP_IGNORE( iContainer->OfferKeyEventL(keyEvent, EEventKey) );
+            
+            //RWsSession& wsSession=iCoeEnv->WsSession();
+            //wsSession.SimulateKeyEvent(keyEvent);
+            //wsSession.Flush();
+
+            iCoeEnv->SimulateKeyEventL(keyEvent,EEventKeyDown);
+            iCoeEnv->SimulateKeyEventL(keyEvent,EEventKey);
+            iCoeEnv->SimulateKeyEventL(keyEvent,EEventKeyUp);
+            
+            break;
+            }
+        case ERemConCoreApiVolumeDown:
+            {
+            // simulate a keyevent, so that it can be handled as all other key events
+            TKeyEvent keyEvent;
+            keyEvent.iCode = EKeyDecVolume;
+            keyEvent.iScanCode = 0;
+            keyEvent.iModifiers = 0;
+            keyEvent.iRepeats = 0;
+                        
+            //TRAP_IGNORE( iContainer->OfferKeyEventL(keyEvent, EEventKey) );
+            
+            //RWsSession& wsSession=iCoeEnv->WsSession();
+            //wsSession.SimulateKeyEvent(keyEvent);
+            //wsSession.Flush();
+            
+            iCoeEnv->SimulateKeyEventL(keyEvent,EEventKeyDown);
+            iCoeEnv->SimulateKeyEventL(keyEvent,EEventKey);
+            iCoeEnv->SimulateKeyEventL(keyEvent,EEventKeyUp);
+            
+            break;
+            }
+        }
+    }
+
+  
+// ---------------------------------------------------------
+// CFileBrowserFileListView::HandleCommandL(TInt aCommand)
+// ?implementation_description
+// ---------------------------------------------------------
+//
+void CFileBrowserFileListView::HandleCommandL(TInt aCommand)
+    {   
+    switch ( aCommand )
+        {
+
+        case EFileBrowserCmdFileBack:
+            {
+            iModel->FileUtils()->MoveUpOneLevelL();
+            break;
+            }
+                    
+        case EFileBrowserCmdFileOpenApparc:
+            {
+            iModel->FileUtils()->OpenWithApparcL();
+            break;
+            }
+
+        case EFileBrowserCmdFileOpenDocHandlerEmbed:
+            {
+            iModel->FileUtils()->OpenWithDocHandlerL(ETrue);
+            break;
+            }
+
+        case EFileBrowserCmdFileOpenDocHandlerStandAlone:
+            {
+            iModel->FileUtils()->OpenWithDocHandlerL(EFalse);
+            break;
+            }
+
+        case EFileBrowserCmdFileOpenFileService:
+            {
+            iModel->FileUtils()->OpenWithFileServiceL();
+            break;
+            }
+            
+        case EFileBrowserCmdFileOpenDrive:
+        case EFileBrowserCmdFileOpenDirectory:
+            {
+            iModel->FileUtils()->MoveDownToDirectoryL();
+            break;
+            }
+
+        case EFileBrowserCmdFileViewText:
+        case EFileBrowserCmdFileViewHex:
+        case EFileBrowserCmdFileEditText:
+        case EFileBrowserCmdFileEditHex:
+            {
+            iModel->FileUtils()->FileEditorL(aCommand);
+            break;
+            }
+
+        case EFileBrowserCmdFileSearch:
+            {
+            iModel->FileListContainer()->HideToolbar();
+            iModel->FileUtils()->SearchL();
+            break;
+            }
+
+        case EFileBrowserCmdFileSendTo:
+            {
+            iModel->FileUtils()->SendToL();
+            break;
+            }
+
+        case EFileBrowserCmdFileNewFile:
+            {
+            iModel->FileUtils()->NewFileL();
+            break;
+            }
+
+        case EFileBrowserCmdFileNewDirectory:
+            {
+            iModel->FileUtils()->NewDirectoryL();
+            break;
+            }
+
+        case EFileBrowserCmdFileDelete:
+            {
+            iModel->FileUtils()->DeleteL();
+            break;
+            }
+
+        case EFileBrowserCmdFileRename:
+            {
+            iModel->FileUtils()->RenameL();
+            break;
+            }
+
+        case EFileBrowserCmdFileTouch:
+            {
+            iModel->FileUtils()->TouchL();
+            break;
+            }
+
+        case EFileBrowserCmdFileProperties:
+            {
+            iModel->FileUtils()->PropertiesL();
+            break;
+            }
+
+        case EFileBrowserCmdFileChecksumsMD5:
+        case EFileBrowserCmdFileChecksumsMD2:
+        case EFileBrowserCmdFileChecksumsSHA1:
+            {
+            iModel->FileUtils()->ShowFileCheckSumsL(aCommand);
+            break;
+            }
+            
+        case EFileBrowserCmdFileSetAttributes:
+            {
+            iModel->FileListContainer()->HideToolbar();
+            iModel->FileUtils()->SetAttributesL();
+            break;
+            }
+
+        case EFileBrowserCmdFileCompress:
+            {
+            iModel->FileUtils()->CompressL();
+            break;
+            }
+
+        case EFileBrowserCmdFileDecompress:
+            {
+            iModel->FileUtils()->DecompressL();
+            break;
+            }
+///        
+        case EFileBrowserCmdSnapShot:
+            {
+            iModel->FileUtils()->DriveSnapShotL();
+            break;
+            }
+            
+        case EFileBrowserCmdEditCut:
+            {
+            iModel->FileUtils()->ClipboardCutL();
+            break;
+            }
+
+        case EFileBrowserCmdEditCopy:
+            {
+            iModel->FileUtils()->ClipboardCopyL();
+            break;
+            }
+
+        case EFileBrowserCmdEditPaste:
+            {
+            iModel->FileUtils()->ClipboardPasteL();
+            break;
+            }
+
+        case EFileBrowserCmdEditCopyToFolder:
+            {
+            iModel->FileUtils()->CopyToFolderL();
+            break;
+            }
+
+        case EFileBrowserCmdEditMoveToFolder:
+            {
+            iModel->FileUtils()->CopyToFolderL(ETrue);
+            break;
+            }            
+
+        case EFileBrowserCmdEditSelect:
+            {
+            iModel->FileListContainer()->UpdateToolbar();
+            AknSelectionService::HandleMarkableListProcessCommandL( EAknCmdMark, iContainer->ListBox() );
+            break;
+            }
+
+        case EFileBrowserCmdEditUnselect:
+            {
+            iModel->FileListContainer()->UpdateToolbar();
+            AknSelectionService::HandleMarkableListProcessCommandL( EAknCmdUnmark, iContainer->ListBox() );
+            break;
+            }
+
+        case EFileBrowserCmdEditSelectAll:
+            {
+            iModel->FileListContainer()->UpdateToolbar();
+            AknSelectionService::HandleMarkableListProcessCommandL( EAknMarkAll, iContainer->ListBox() );
+            break;
+            }
+            
+        case EFileBrowserCmdEditUnselectAll:
+            {
+            iModel->FileListContainer()->UpdateToolbar();
+            AknSelectionService::HandleMarkableListProcessCommandL( EAknUnmarkAll, iContainer->ListBox() );
+            break;
+            }
+///
+        case EFileBrowserCmdViewSortByName:
+        case EFileBrowserCmdViewSortByExtension:
+        case EFileBrowserCmdViewSortByDate:
+        case EFileBrowserCmdViewSortBySize:
+            {
+            iModel->FileUtils()->SetSortModeL(aCommand);
+            break;
+            }
+
+        case EFileBrowserCmdViewOrderAscending:
+        case EFileBrowserCmdViewOrderDescending:
+            {
+            iModel->FileUtils()->SetOrderModeL(aCommand);
+            break;
+            }
+	
+        case EFileBrowserCmdViewFilterEntries:
+            {
+            iContainer->EnableSearchFieldL();
+            break;
+            }
+
+        case EFileBrowserCmdViewRefresh:
+            {
+            iModel->FileUtils()->RefreshViewL();
+            break;
+            }
+///
+        case EFileBrowserCmdDiskAdminSetDrivePassword:
+            {
+            iModel->FileUtils()->SetDrivePasswordL();
+            break;
+            }
+
+        case EFileBrowserCmdDiskAdminUnlockDrive:
+            {
+            iModel->FileUtils()->UnlockDriveL();
+            break;
+            }
+
+        case EFileBrowserCmdDiskAdminClearDrivePassword:
+            {
+            iModel->FileUtils()->ClearDrivePasswordL();
+            break;
+            }
+
+        case EFileBrowserCmdDiskAdminEraseDrivePassword:
+            {
+            iModel->FileUtils()->EraseDrivePasswordL();
+            break;
+            }
+
+        case EFileBrowserCmdDiskAdminFormatDrive:
+            {
+            iModel->FileUtils()->FormatDriveL(EFalse);
+            break;
+            }
+
+        case EFileBrowserCmdDiskAdminQuickFormatDrive:
+            {
+            iModel->FileUtils()->FormatDriveL(ETrue);
+            break;
+            }
+
+        case EFileBrowserCmdDiskAdminCheckDisk:
+            {
+            iModel->FileUtils()->CheckDiskL();
+            break;
+            }
+
+        case EFileBrowserCmdDiskAdminScanDrive:
+            {
+            iModel->FileUtils()->ScanDriveL();
+            break;
+            }
+
+        case EFileBrowserCmdDiskAdminSetDriveName:
+            {
+            iModel->FileUtils()->SetDriveNameL();
+            break;
+            }
+
+        case EFileBrowserCmdDiskAdminSetDriveVolumeLabel:
+            {
+            iModel->FileUtils()->SetDriveVolumeLabelL();
+            break;
+            }
+
+        case EFileBrowserCmdDiskAdminEjectDrive:
+            {
+            iModel->FileUtils()->EjectDriveL();
+            break;
+            }
+            
+        case EFileBrowserCmdDiskAdminDismountFileSystem:
+            {
+            iModel->FileUtils()->DismountFileSystemL();
+            break;
+            }
+            
+        case EFileBrowserCmdDiskAdminEraseMBR:
+            {
+            iModel->FileUtils()->EraseMBRL();
+            break;
+            }
+            
+        case EFileBrowserCmdDiskAdminDrivePartition:
+            {
+            iModel->FileUtils()->PartitionDriveL();
+            break;
+            }
+
+///
+        case EFileBrowserCmdToolsAllFiles:
+            {
+            iModel->FileUtils()->WriteAllFilesL();
+            break;
+            }
+
+        case EFileBrowserCmdToolsAvkonIconCacheEnable:
+            {
+            iModel->FileUtils()->EnableAvkonIconCacheL(ETrue);
+            break;
+            }
+
+        case EFileBrowserCmdToolsAvkonIconCacheDisable:
+            {
+            iModel->FileUtils()->EnableAvkonIconCacheL(EFalse);
+            break;
+            }
+
+        case EFileBrowserCmdToolsEditDataTypes:
+            {
+            iModel->FileUtils()->EditDataTypesL();
+            break;
+            }
+                        
+        case EFileBrowserCmdToolsDisableExtErrors:
+            {
+            iModel->FileUtils()->SetErrRdL(EFalse);
+            break;
+            }
+
+        case EFileBrowserCmdToolsEnableExtErrors:
+            {
+            iModel->FileUtils()->SetErrRdL(ETrue);
+            break;
+            }
+
+        case EFileBrowserCmdToolsErrorSimulateLeave:
+            {
+            iModel->FileUtils()->SimulateLeaveL();
+            break;
+            }
+
+        case EFileBrowserCmdToolsErrorSimulatePanic:
+            {
+            iModel->FileUtils()->SimulatePanicL();
+            break;
+            }
+        
+       case EFileBrowserCmdToolsErrorSimulateException:
+            {
+            iModel->FileUtils()->SimulateExceptionL();
+            break;
+            }
+                            
+        case EFileBrowserCmdToolsLocalConnectivityActivateInfrared:
+            {
+            iModel->FileUtils()->LaunchProgramL(KIRAppPath);
+            break;
+            }
+
+        case EFileBrowserCmdToolsLocalConnectivityLaunchBTUI:
+            {
+            iModel->FileUtils()->LaunchProgramL(KBTAppPath);
+            break;
+            }
+
+        case EFileBrowserCmdToolsLocalConnectivityLaunchUSBUI:
+            {
+            iModel->FileUtils()->LaunchProgramL(KUSBAppPath);
+            break;
+            }
+
+        case EFileBrowserCmdToolsInstalledApps:
+            {
+            iModel->FileUtils()->WriteAllAppsL();
+            break;
+            }
+
+        case EFileBrowserCmdToolsOpenFiles:
+            {
+            iModel->FileUtils()->ListOpenFilesL();
+            break;
+            }
+
+        case EFileBrowserCmdToolsSetDebugMask:
+            {
+            iModel->FileUtils()->SetDebugMaskL();
+            break;
+            }
+            
+        case EFileBrowserCmdToolsMsgAttachmentsInbox:
+        case EFileBrowserCmdToolsMsgAttachmentsDrafts:
+        case EFileBrowserCmdToolsMsgAttachmentsSentItems:
+        case EFileBrowserCmdToolsMsgAttachmentsOutbox:
+            {
+            iModel->FileUtils()->ListMessageAttachmentsL(aCommand);
+            break;
+            }
+
+        case EFileBrowserCmdToolsMsgStoreWalk:
+            {
+            iModel->FileUtils()->WriteMsgStoreWalkL();
+            break;
+            }
+
+        case EFileBrowserCmdToolsMemoryInfo:
+            {
+            iModel->FileUtils()->MemoryInfoPopupL();
+            break;
+            }
+
+        case EFileBrowserCmdToolsSecureBackupStartBackup:
+        case EFileBrowserCmdToolsSecureBackupStartRestore:
+        case EFileBrowserCmdToolsSecureBackupStop:
+            {
+            iModel->FileUtils()->SecureBackupL(aCommand);
+            break;
+            }
+
+///
+        case EFileBrowserCmdSettings:
+            {
+            if (iModel->LaunchSettingsDialogL() == EAknCmdExit)
+                AppUi()->HandleCommandL( EEikCmdExit );
+            break;
+            }
+
+        case EFileBrowserCmdAbout:
+            {
+	        CAknMessageQueryDialog* dialog = new(ELeave) CAknMessageQueryDialog;
+            dialog->ExecuteLD(R_FILEBROWSER_ABOUT_DIALOG);
+            }
+            break;
+ 
+         case EAknSoftkeyCancel:
+            {
+            iContainer->DisableSearchFieldL();
+            break;
+            }
+                   
+        case EAknSoftkeyExit:
+            {
+            AppUi()->HandleCommandL( EEikCmdExit );
+            break;
+            }
+
+        default:
+            {
+            AppUi()->HandleCommandL( aCommand );
+            break;
+            }
+        }
+    }
+
+// ---------------------------------------------------------
+// CFileBrowserFileListView::HandleClientRectChange()
+// ---------------------------------------------------------
+//
+void CFileBrowserFileListView::HandleClientRectChange()
+    {
+    if ( iContainer )
+        {
+        iContainer->SetRect( ClientRect() );
+        }
+    }
+
+// ---------------------------------------------------------
+// CFileBrowserFileListView::DoActivateL(...)
+// ?implementation_description
+// ---------------------------------------------------------
+//
+void CFileBrowserFileListView::DoActivateL(
+   const TVwsViewId& /*aPrevViewId*/,TUid /*aCustomMessageId*/,
+   const TDesC8& /*aCustomMessage*/)
+    {
+    if (!iContainer)
+        {
+        iContainer = new (ELeave) CFileBrowserFileListContainer;
+        iContainer->SetMopParent(this);
+        iContainer->ConstructL( ClientRect() );
+        AppUi()->AddToStackL( *this, iContainer );
+        } 
+   }
+
+// ---------------------------------------------------------
+// CFileBrowserFileListView::HandleCommandL(TInt aCommand)
+// ?implementation_description
+// ---------------------------------------------------------
+//
+void CFileBrowserFileListView::DoDeactivate()
+    {
+    if ( iContainer )
+        {
+        AppUi()->RemoveFromViewStack( *this, iContainer );
+        }
+    
+    delete iContainer;
+    iContainer = NULL;
+    }
+
+// End of File
+