--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/filebrowser/ui/src/fbdriveview.cpp Tue Aug 31 15:15:20 2010 +0300
@@ -0,0 +1,1308 @@
+/*
+* 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:
+*
+*/
+
+#include "fbdriveview.h"
+#include "settingsview.h"
+#include "editorview.h"
+#include "searchview.h"
+#include "enginewrapper.h"
+#include "notifications.h"
+
+#include "fbdrivemodel.h"
+#include "filebrowsersortfilterproxymodel.h"
+#include "fbdrivelistviewitem.h"
+
+#include <HbMenu>
+#include <HbPopup>
+#include <HbView>
+#include <HbMessageBox>
+#include <HbAction>
+#include <HbLabel>
+#include <HbListView>
+#include <HbListViewItem>
+#include <HbListWidget>
+#include <HbLineEdit>
+#include <HbAbstractViewItem>
+#include <HbSelectionDialog>
+#include <HbValidator>
+#include <HbInputDialog>
+
+#include <QString>
+#include <QGraphicsLinearLayout>
+#include <QItemSelection>
+#include <QDebug>
+//TODO check if needed to do this way
+#include <FB.hrh>
+
+// ---------------------------------------------------------------------------
+
+FbDriveView::FbDriveView() :
+ mEngineWrapper(0),
+ mListView(0),
+ mNaviPane(0),
+ mMainLayout(0),
+ mFbDriveModel(0),
+ mOptionMenuActions(),
+ mContextMenuActions(),
+ mContextMenu(0),
+ mLocationChanged(false),
+ mRemoveFileAfterCopied(false),
+// mClipBoardInUse(false),
+ mFolderContentChanged(false),
+ mCurrentIndex(),
+ mOldPassword(),
+ mPanicCategory(),
+ mAbsoluteFilePath(),
+ mOverwriteOptions(),
+ mModelIndex(),
+ mNewFileName(),
+ mProceed(false),
+ mEraseMBR(false)
+{
+ setTitle("File Browser");
+
+ createMenu();
+ createContextMenu();
+}
+
+// ---------------------------------------------------------------------------
+
+void FbDriveView::init(EngineWrapper *engineWrapper)
+{
+ mEngineWrapper = engineWrapper;
+
+ mListView = new HbListView(this);
+ mListView->listItemPrototype()->setStretchingStyle(HbListViewItem::StretchLandscape);
+
+ mListView->setItemPrototype(new FbDriveListViewItem(mListView));
+
+ mFbDriveModel = new FbDriveModel(mEngineWrapper);
+ if (!mListView->model()) {
+ mEngineWrapper->refreshView();
+ mListView->setModel(mFbDriveModel);
+ }
+
+ //mListView->setRootIndex(mFileSystemModel->index(startPath));
+ //mListView->setRootIndex(model->index());
+
+// mListView->setScrollingStyle(HbScrollArea::PanWithFollowOn);
+
+ connect(mListView, SIGNAL(activated(QModelIndex)), this, SLOT(activated(QModelIndex)));
+ connect(mListView, SIGNAL(longPressed(HbAbstractViewItem*,QPointF)),
+ this, SLOT(onLongPressed(HbAbstractViewItem*, QPointF)));
+
+ mNaviPane = new HbLabel(this);
+ mNaviPane->setPlainText(QString(" ")); // TODO get from settings or default
+ //mNaviPane->setPlainText(QString(mEngineWrapper->currentPath()));
+ HbFontSpec fontSpec(HbFontSpec::PrimarySmall);
+ mNaviPane->setFontSpec(fontSpec);
+
+ // Create layout and add list view and naviPane into layout:
+ mMainLayout = new QGraphicsLinearLayout(Qt::Vertical);
+ mMainLayout->addItem(mNaviPane);
+ mMainLayout->addItem(mListView);
+ setLayout(mMainLayout);
+}
+
+// ---------------------------------------------------------------------------
+
+FbDriveView::~FbDriveView()
+{
+// if (mEngineWrapper) {
+// delete mEngineWrapper;
+// }
+ if (mContextMenu) {
+ mContextMenu->deleteLater();
+ }
+
+ delete mFbDriveModel;
+ delete mListView;
+}
+
+/**
+ Initial setup for options menu.
+ Dynamic menu update during the runtime is performed by updateOptionMenu() which
+ to menu's aboutToShow() signal.
+ */
+void FbDriveView::createMenu()
+{
+ createFileMenu();
+ createEditMenu();
+ createViewMenu();
+ createToolsMenu();
+
+ createSettingsMenuItem();
+ createAboutMenuItem();
+ createExitMenuItem();
+
+ // menu dynamic update
+ connect(menu(), SIGNAL(aboutToShow()), this, SLOT(updateOptionMenu()));
+}
+
+/**
+ Initial setup for File submenu
+ */
+void FbDriveView::createFileMenu()
+{
+ mOptionMenuActions.mFileMenu = menu()->addMenu("File");
+
+// mOptionMenuActions.mFileOpenDrive = mOptionMenuActions.mFileMenu->addAction("Open drive", this, SLOT(fileOpenDrive()));
+ mOptionMenuActions.mFileSearch = mOptionMenuActions.mFileMenu->addAction("Search...", this, SLOT(fileSearch()));
+ //mOptionMenuActions.mFileSearch->setVisible(false);
+
+ //mOptionMenuActions.mFileNewMenu = mOptionMenuActions.mFileMenu->addMenu("New");
+
+ mOptionMenuActions.mFileSetAttributes = mOptionMenuActions.mFileMenu->addAction("Set attributes...", this, SLOT(fileSetAttributes()));
+ mOptionMenuActions.mFileSetAttributes->setVisible(false);
+}
+
+/**
+ Initial setup for Edit submenu
+ */
+void FbDriveView::createEditMenu()
+{
+ mOptionMenuActions.mEditMenu = menu()->addMenu("Edit");
+
+ mOptionMenuActions.mEditSnapShotToE = mOptionMenuActions.mEditMenu->addAction("Snap shot to E:", this, SLOT(editSnapShotToE()));
+ mOptionMenuActions.mEditSnapShotToE->setVisible(false);
+}
+
+/**
+ Initial setup for View submenu
+ */
+void FbDriveView::createViewMenu()
+{
+ mOptionMenuActions.mViewMenu = menu()->addMenu("View");
+ //mOptionMenuActions.mViewMenu->menuAction()->setVisible(false);
+
+ //mOptionMenuActions.mViewFilterEntries = mOptionMenuActions.mViewMenu->addAction("Filter entries", this, SLOT(viewFilterEntries()));
+ mOptionMenuActions.mViewRefresh = mOptionMenuActions.mViewMenu->addAction("Refresh", this, SLOT(viewRefresh()));
+}
+
+/**
+ Initial setup for Tools submenu
+ */
+void FbDriveView::createToolsMenu()
+{
+ mOptionMenuActions.mToolsMenu = menu()->addMenu("Tools");
+
+ mOptionMenuActions.mToolsAllAppsToTextFile = mOptionMenuActions.mToolsMenu->addAction("All apps to a text file", this, SLOT(toolsAllAppsToTextFile()));
+ mOptionMenuActions.mToolsAllAppsToTextFile->setVisible(false);
+ mOptionMenuActions.mToolsAllFilesToTextFile = mOptionMenuActions.mToolsMenu->addAction("All files to a text file", this, SLOT(toolsAllFilesToTextFile()));
+ //mOptionMenuActions.mToolsAllFilesToTextFile->setVisible(false);
+
+// mOptionMenuActions.mToolsAvkonIconCacheMenu = mOptionMenuActions.mToolsMenu->addMenu("Avkon icon cache");
+// mOptionMenuActions.mToolsAvkonIconCacheMenu->menuAction()->setVisible(false);
+// mOptionMenuActions.mToolsAvkonIconCacheEnable = mOptionMenuActions.mToolsAvkonIconCacheMenu->addAction("Enable", this, SLOT(toolsAvkonIconCacheEnable()));
+// mOptionMenuActions.mToolsAvkonIconCacheDisable = mOptionMenuActions.mToolsAvkonIconCacheMenu->addAction("Clear and disable", this, SLOT(toolsAvkonIconCacheDisable()));
+
+ mOptionMenuActions.mToolsDisableExtendedErrors = mOptionMenuActions.mToolsMenu->addAction("Disable extended errors", this, SLOT(toolsDisableExtendedErrors()));
+ mOptionMenuActions.mToolsDumpMsgStoreWalk = mOptionMenuActions.mToolsMenu->addAction("Dump msg. store walk", this, SLOT(toolsDumpMsgStoreWalk()));
+ mOptionMenuActions.mToolsDumpMsgStoreWalk->setVisible(false);
+ mOptionMenuActions.mToolsEditDataTypes = mOptionMenuActions.mToolsMenu->addAction("Edit data types", this, SLOT(toolsEditDataTypes()));
+ mOptionMenuActions.mToolsEditDataTypes->setVisible(false);
+ mOptionMenuActions.mToolsEnableExtendedErrors = mOptionMenuActions.mToolsMenu->addAction("Enable extended errors", this, SLOT(toolsEnableExtendedErrors()));
+
+ mOptionMenuActions.mToolsErrorSimulateMenu = mOptionMenuActions.mToolsMenu->addMenu("Error simulate");
+ mOptionMenuActions.mToolsErrorSimulateLeave = mOptionMenuActions.mToolsErrorSimulateMenu->addAction("Leave", this, SLOT(toolsErrorSimulateLeave()));
+ mOptionMenuActions.mToolsErrorSimulatePanic = mOptionMenuActions.mToolsErrorSimulateMenu->addAction("Panic", this, SLOT(toolsErrorSimulatePanic()));
+ mOptionMenuActions.mToolsErrorSimulatePanic->setVisible(false);
+ mOptionMenuActions.mToolsErrorSimulateException = mOptionMenuActions.mToolsErrorSimulateMenu->addAction("Exception", this, SLOT(toolsErrorSimulateException()));
+
+// mOptionMenuActions.mLocalConnectivityMenu = mOptionMenuActions.mToolsMenu->addMenu("Local connectivity");
+// mOptionMenuActions.mToolsLocalConnectivityActivateInfrared = mOptionMenuActions.mLocalConnectivityMenu->addAction("Activate infrared", this, SLOT(toolsLocalConnectivityActivateInfrared()));
+// mOptionMenuActions.mToolsLocalConnectivityLaunchBTUI = mOptionMenuActions.mLocalConnectivityMenu->addAction("Launch BT UI", this, SLOT(toolsLocalConnectivityLaunchBTUI()));
+// mOptionMenuActions.mToolsLocalConnectivityLaunchUSBUI = mOptionMenuActions.mLocalConnectivityMenu->addAction("Launch USB UI", this, SLOT(toolsLocalConnectivityLaunchUSBUI()));
+
+ mOptionMenuActions.mToolsMessageAttachmentsMenu = mOptionMenuActions.mToolsMenu->addMenu("Message attachments");
+ mOptionMenuActions.mToolsMessageAttachmentsMenu->menuAction()->setVisible(false);
+ mOptionMenuActions.mToolsMessageInbox = mOptionMenuActions.mToolsMessageAttachmentsMenu->addAction("Inbox", this, SLOT(toolsMessageInbox()));
+ mOptionMenuActions.mToolsMessageDrafts = mOptionMenuActions.mToolsMessageAttachmentsMenu->addAction("Drafts", this, SLOT(toolsMessageDrafts()));
+ mOptionMenuActions.mToolsMessageSentItems = mOptionMenuActions.mToolsMessageAttachmentsMenu->addAction("Sent items", this, SLOT(toolsMessageSentItems()));
+ mOptionMenuActions.mToolsMessageOutbox = mOptionMenuActions.mToolsMessageAttachmentsMenu->addAction("Outbox", this, SLOT(toolsMessageOutbox()));
+
+ mOptionMenuActions.mToolsMemoryInfo = mOptionMenuActions.mToolsMenu->addAction("Memory info", this, SLOT(toolsMemoryInfo()));
+ mOptionMenuActions.mToolsMemoryInfo->setVisible(false);
+
+ mOptionMenuActions.mToolsSecureBackupMenu = mOptionMenuActions.mToolsMenu->addMenu("Secure backup");
+ mOptionMenuActions.mToolsSecureBackupMenu->menuAction()->setVisible(false);
+ mOptionMenuActions.mToolsSecureBackStart = mOptionMenuActions.mToolsSecureBackupMenu->addAction("Start backup", this, SLOT(toolsSecureBackStart()));
+ mOptionMenuActions.mToolsSecureBackRestore = mOptionMenuActions.mToolsSecureBackupMenu->addAction("Start restore", this, SLOT(toolsSecureBackRestore()));
+ mOptionMenuActions.mToolsSecureBackStop = mOptionMenuActions.mToolsSecureBackupMenu->addAction("Stop", this, SLOT(toolsSecureBackStop()));
+
+ mOptionMenuActions.mToolsSetDebugMask = mOptionMenuActions.mToolsMenu->addAction("Set debug mask", this, SLOT(toolsSetDebugMaskQuestion()));
+ mOptionMenuActions.mToolsShowOpenFilesHere = mOptionMenuActions.mToolsMenu->addAction("Show open files here", this, SLOT(toolsShowOpenFilesHere()));
+ mOptionMenuActions.mToolsShowOpenFilesHere->setVisible(false);
+}
+
+/**
+ Creates Setting menu item in option menu
+ */
+void FbDriveView::createSettingsMenuItem()
+{
+ mOptionMenuActions.mSetting = menu()->addAction("Settings...");
+ connect(mOptionMenuActions.mSetting, SIGNAL(triggered()), this, SIGNAL(aboutToShowSettingsView()));
+}
+
+
+/**
+ Creates About menu item in option menu
+ */
+void FbDriveView::createAboutMenuItem()
+{
+ // about note
+ mOptionMenuActions.mAbout = menu()->addAction("About");
+ connect(mOptionMenuActions.mAbout, SIGNAL(triggered()), this, SLOT(about()));
+}
+
+/**
+ Creates Exit menu item in option menu
+ */
+void FbDriveView::createExitMenuItem()
+{
+ // application exit
+ mOptionMenuActions.mExit = menu()->addAction("Exit");
+ connect(mOptionMenuActions.mExit, SIGNAL(triggered()), qApp, SLOT(quit()));
+}
+
+/**
+ update menu: disk admin available only in device root view. edit available only in folder view
+ when file or folder content exist in current folder, or clipboard has copied item.
+ file and view menus updated every time regarding the folder content.
+ tools, settings, about, exit always available.
+ If there's remove and add operations at same time, always remove first
+ to keep to the correct menu items order.
+ */
+void FbDriveView::updateOptionMenu()
+{
+ bool isFileItemListEmpty = mFbDriveModel->rowCount() == 0;
+// bool isDriveListViewActive = true; //mEngineWrapper->isDriveListViewActive();
+ bool isNormalModeActive = true; //iModel->FileUtils()->IsNormalModeActive();
+// bool isCurrentDriveReadOnly = mEngineWrapper->isCurrentDriveReadOnly(); //iModel->FileUtils()->IsCurrentDriveReadOnly();
+// bool isCurrentItemDirectory = mEngineWrapper->getFileEntry(currentItemIndex()).isDir();
+ // bool currentSelected = true; //iContainer->ListBox()->View()->ItemIsSelected(iContainer->ListBox()->View()->CurrentItemIndex());
+// bool isAllSelected = mListView->selectionModel()->selection().count() == mFbDriveModel->rowCount();
+ //bool isNoneSelected = mListView->selectionModel()->selection().count() != 0;
+// bool hasSelectedItems = mListView->selectionModel()->selection().count() != 0;
+ //bool isSelectionMode = mOptionMenuActions.mSelection && mOptionMenuActions.mSelection->isChecked();
+ bool isClipBoardEmpty = !mEngineWrapper->isClipBoardListInUse();
+ bool showSnapShot = false; //iModel->FileUtils()->DriveSnapShotPossible();
+
+ bool showEditMenu(true);
+ if (!showSnapShot || isFileItemListEmpty && isClipBoardEmpty)
+ showEditMenu = false;
+ else
+ showEditMenu = true;
+
+ mOptionMenuActions.mEditMenu->menuAction()->setVisible(showEditMenu);
+
+ //aMenuPane->SetItemDimmed(EFileBrowserCmdFileOpen, isFileItemListEmpty || isDriveListViewActive || isCurrentItemDirectory);
+// mOptionMenuActions.mFileOpenDrive->setVisible( !(isFileItemListEmpty || !isDriveListViewActive));
+
+ //aMenuPane->SetItemDimmed(EFileBrowserCmdFileView, isFileItemListEmpty || !hasSelectedItems || isCurrentItemDirectory || isDriveListViewActive);
+ //aMenuPane->SetItemDimmed(EFileBrowserCmdFileEdit, isFileItemListEmpty || !hasSelectedItems || isCurrentItemDirectory || isDriveListViewActive);
+ //aMenuPane->SetItemDimmed(EFileBrowserCmdFileSendTo, isFileItemListEmpty || driveListActive || isCurrentItemDirectory);
+
+ // TODO mOptionMenuActions.mFileCompress->setVisible(!(isCurrentDriveReadOnly || isFileItemListEmpty || !hasSelectedItems || isCurrentItemDirectory || isDriveListViewActive));
+ // TODO mOptionMenuActions.mFileDecompress->setVisible(!(isCurrentDriveReadOnly || isFileItemListEmpty || !hasSelectedItems || isCurrentItemDirectory || isDriveListViewActive));
+
+ // TODO mOptionMenuActions.mEditSnapShotToE->setVisible(isDriveListViewActive);
+
+ // TODO mOptionMenuActions.mViewSort->setVisible(!(!isNormalModeActive || isDriveListViewActive || isFileItemListEmpty));
+ // TODO mOptionMenuActions.mViewOrder->setVisible(!(!isNormalModeActive || isDriveListViewActive || isFileItemListEmpty));
+ mOptionMenuActions.mViewRefresh->setVisible(isNormalModeActive);
+ //mOptionMenuActions.mViewFilterEntries->setVisible(!isFileItemListEmpty);
+
+ // TODO R_FILEBROWSER_VIEW_SORT_SUBMENU
+ // aMenuPane->SetItemButtonState(iModel->FileUtils()->SortMode(), EEikMenuItemSymbolOn);
+
+ // TODO R_FILEBROWSER_VIEW_ORDER_SUBMENU
+ // aMenuPane->SetItemButtonState(iModel->FileUtils()->OrderMode(), EEikMenuItemSymbolOn);
+
+ // aResourceId == R_FILEBROWSER_TOOLS_SUBMENU
+ bool noExtendedErrorsAllowed = mEngineWrapper->ErrRdFileExists();
+ mOptionMenuActions.mToolsDisableExtendedErrors->setVisible(noExtendedErrorsAllowed);
+ mOptionMenuActions.mToolsEnableExtendedErrors->setVisible(!noExtendedErrorsAllowed);
+
+// bool infraRedAllowed = mEngineWrapper->FileExists(KIRAppPath);
+// bool bluetoothAllowed = mEngineWrapper->FileExists(KBTAppPath);
+// bool usbAllowed = mEngineWrapper->FileExists(KUSBAppPath);
+//
+// bool noLocalCon = !infraRedAllowed && !bluetoothAllowed && !usbAllowed;
+// mOptionMenuActions.mToolsLocalConnectivityMenu->menuAction()->setVisible(!noLocalCon);
+//
+// mOptionMenuActions.mToolsLocalConnectivityActivateInfrared->setVisible(infraRedAllowed);
+// mOptionMenuActions.mToolsLocalConnectivityLaunchBTUI->setVisible(bluetoothAllowed);
+// mOptionMenuActions.mToolsLocalConnectivityLaunchUSBUI->setVisible(usbAllowed);
+}
+
+void FbDriveView::createContextMenu()
+{
+ mContextMenu = new HbMenu();
+ connect(mContextMenu, SIGNAL(aboutToShow()), this, SLOT(updateContextMenu()));
+
+ createFileContextMenu();
+ createEditContextMenu();
+ createViewContextMenu();
+ createDiskAdminContextMenu();
+}
+
+
+void FbDriveView::createFileContextMenu()
+{
+ //mContextMenuActions.mFileMenu = mContextMenu->addMenu("File");
+
+ //mContextMenuActions.mFileOpenDrive = mContextMenuActions.mFileMenu->addAction("Open drive (->)", this, SLOT(fileOpenDrive()));
+// mContextMenuActions.mFileSearch = mContextMenuActions.mFileMenu->addAction("Search...", this, SLOT(fileSearch()));
+ //mContextMenuActions.mFileSearch->setVisible(false);
+
+ //mContextMenuActions.mFileProperties = mContextMenuActions.mFileMenu->addAction("Properties", this, SLOT(fileProperties()));
+ mContextMenuActions.mFileProperties = mContextMenu->addAction("Properties", this, SLOT(fileProperties()));
+ mContextMenuActions.mFileSearch = mContextMenu->addAction("Search...", this, SLOT(fileSearch()));
+
+// mContextMenuActions.mFileSetAttributes = mContextMenuActions.mFileMenu->addAction("Set attributes...", this, SLOT(fileSetAttributes()));
+// mContextMenuActions.mFileSetAttributes->setVisible(false);
+}
+
+void FbDriveView::createEditContextMenu()
+{
+// mContextMenuActions.mEditMenu = mContextMenu->addMenu("Edit");
+
+ //mContextMenuActions.mEditSnapShotToE = mContextMenuActions.mEditMenu->addAction("Snap shot to E:", this, SLOT(editSnapShotToE()));
+// mContextMenuActions.mEditSnapShotToE->setVisible(false);
+// mContextMenuActions.mEditCut = mContextMenuActions.mEditMenu->addAction("Cut", this, SLOT(editCut()));
+// mContextMenuActions.mEditCopy = mContextMenuActions.mEditMenu->addAction("Copy", this, SLOT(editCopy()));
+// mContextMenuActions.mEditPaste = mContextMenuActions.mEditMenu->addAction("Paste", this, SLOT(editPaste()));
+// mContextMenuActions.mEditCopyToFolder = mContextMenuActions.mEditMenu->addAction("Copy to folder...", this, SLOT(editCopyToFolder()));
+// mContextMenuActions.mEditMoveToFolder = mContextMenuActions.mEditMenu->addAction("Move to folder...", this, SLOT(editMoveToFolder()));
+}
+
+void FbDriveView::createViewContextMenu()
+{
+
+}
+
+/**
+ Initial setup for Disk Admin submenu
+ */
+void FbDriveView::createDiskAdminContextMenu()
+{
+ mContextMenuActions.mDiskAdminMenu = mContextMenu->addMenu("Disk admin");
+ //mContextMenuActions.mDiskAdminMenu->menuAction()->setVisible(false);
+
+ mContextMenuActions.mDiskAdminSetDrivePassword = mContextMenuActions.mDiskAdminMenu->addAction("Set drive password", this, SLOT(diskAdminSetDrivePassword()));
+ mContextMenuActions.mDiskAdminUnlockDrive = mContextMenuActions.mDiskAdminMenu->addAction("Unlock drive", this, SLOT(diskAdminUnlockDrive()));
+ mContextMenuActions.mDiskAdminClearDrivePassword = mContextMenuActions.mDiskAdminMenu->addAction("Clear drive password", this, SLOT(diskAdminClearDrivePassword()));
+ mContextMenuActions.mDiskAdminEraseDrivePassword = mContextMenuActions.mDiskAdminMenu->addAction("Erase drive password", this, SLOT(diskAdminEraseDrivePassword()));
+
+ mContextMenuActions.mDiskAdminFormatDrive = mContextMenuActions.mDiskAdminMenu->addAction("Format drive", this, SLOT(diskAdminFormatDrive()));
+ mContextMenuActions.mDiskAdminFormatDrive->setVisible(false);
+ mContextMenuActions.mDiskAdminQuickFormatDrive = mContextMenuActions.mDiskAdminMenu->addAction("Quick format drive", this, SLOT(diskAdminQuickFormatDrive()));
+ mContextMenuActions.mDiskAdminQuickFormatDrive->setVisible(false);
+
+ mContextMenuActions.mDiskAdminCheckDisk = mContextMenuActions.mDiskAdminMenu->addAction("Check disk", this, SLOT(diskAdminCheckDisk()));
+ mContextMenuActions.mDiskAdminScanDrive = mContextMenuActions.mDiskAdminMenu->addAction("Scan drive", this, SLOT(diskAdminScanDrive()));
+ mContextMenuActions.mDiskAdminSetDriveName = mContextMenuActions.mDiskAdminMenu->addAction("Set drive name", this, SLOT(diskAdminSetDriveName()));
+ mContextMenuActions.mDiskAdminSetDriveVolumeLabel = mContextMenuActions.mDiskAdminMenu->addAction("Set drive volume label", this, SLOT(diskAdminSetDriveVolumeLabel()));
+ mContextMenuActions.mDiskAdminEjectDrive = mContextMenuActions.mDiskAdminMenu->addAction("Eject drive", this, SLOT(diskAdminEjectDrive()));
+ mContextMenuActions.mDiskAdminDismountDrive = mContextMenuActions.mDiskAdminMenu->addAction("Dismount drive", this, SLOT(diskAdminDismountDrive()));
+ mContextMenuActions.mDiskAdminEraseMBR = mContextMenuActions.mDiskAdminMenu->addAction("Erase MBR", this, SLOT(diskAdminEraseMBR()));
+ mContextMenuActions.mDiskAdminPartitionDrive = mContextMenuActions.mDiskAdminMenu->addAction("Partition drive", this, SLOT(diskAdminPartitionDrive()));
+}
+
+void FbDriveView::updateContextMenu()
+{
+ bool isFileItemListEmpty = mFbDriveModel->rowCount() == 0;
+ mContextMenuActions.mFileProperties->setVisible(!isFileItemListEmpty);
+}
+
+// ---------------------------------------------------------------------------
+
+void FbDriveView::onLongPressed(HbAbstractViewItem *listViewItem, QPointF coords)
+{
+ mCurrentIndex = listViewItem->modelIndex();
+
+ mContextMenu->setPreferredPos(coords);
+ mContextMenu->show();
+}
+
+/**
+ Refresh FileBrowser view
+ */
+void FbDriveView::refreshList()
+{
+ mEngineWrapper->refreshView();
+ mListView->reset();
+
+ TListingMode listingMode = mEngineWrapper->listingMode();
+ if (listingMode == ENormalEntries)
+ mNaviPane->setPlainText(QString(mEngineWrapper->currentPath()));
+ else if (listingMode == ESearchResults)
+ mNaviPane->setPlainText(QString(tr("Search results")));
+ else if (listingMode == EOpenFiles)
+ mNaviPane->setPlainText(QString(tr("Open files")));
+ else if (listingMode == EMsgAttachmentsInbox)
+ mNaviPane->setPlainText(QString(tr("Attachments in Inbox")));
+ else if (listingMode == EMsgAttachmentsDrafts)
+ mNaviPane->setPlainText(QString(tr("Attachments in Drafts")));
+ else if (listingMode == EMsgAttachmentsSentItems)
+ mNaviPane->setPlainText(QString(tr("Attachments in Sent Items")));
+ else if (listingMode == EMsgAttachmentsOutbox)
+ mNaviPane->setPlainText(QString(tr("Attachments in Outbox")));
+}
+
+// ---------------------------------------------------------------------------
+/**
+ Show a list dialog
+ \param List aList of item to select item from.
+ \param Title text titleText of a dialog heading widget
+ \return None
+ */
+void FbDriveView::openListDialog(const QStringList& items, const QString &titleText, QObject* receiver, const char* member)
+{
+ // Create a list and some simple content for it
+ HbSelectionDialog *dlg = new HbSelectionDialog();
+ dlg->setAttribute(Qt::WA_DeleteOnClose);
+ // Set items to be popup's content
+ dlg->setStringItems(items);
+ dlg->setSelectionMode(HbAbstractItemView::SingleSelection);
+
+ HbLabel *title = new HbLabel(dlg);
+ title->setPlainText(titleText);
+ dlg->setHeadingWidget(title);
+
+ // Launch popup and handle the user response:
+ dlg->open(receiver, member);
+}
+
+// ---------------------------------------------------------------------------
+
+void FbDriveView::openPropertyDialog(const QStringList& propertyList, const QString& title)
+{
+ HbDialog *dialog = new HbDialog();
+ dialog->setDismissPolicy(HbPopup::TapOutside);
+ dialog->setTimeout(HbPopup::NoTimeout);
+
+ HbLabel *titleWidget = new HbLabel();
+ titleWidget->setPlainText(title);
+ dialog->setHeadingWidget(titleWidget);
+
+ // Create a list and some simple content for it
+ HbListWidget *list = new HbListWidget();
+ QString str;
+ foreach (str, propertyList) {
+ list->addItem(str);
+ }
+
+ // Connect list item activation signal to close the popup
+ connect(list, SIGNAL(activated(HbListWidgetItem*)), dialog, SLOT(close()));
+
+ HbAction *cancelAction = new HbAction("Close");
+ dialog->setPrimaryAction(cancelAction);
+
+ // Set listwidget to be popup's content
+ dialog->setContentWidget(list);
+ // Launch popup and handle the user response:
+ dialog->open();
+}
+
+void FbDriveView::storeSelectedItemsOrCurrentItem()
+{
+ QItemSelectionModel *selectionIndexes = mListView->selectionModel();
+
+ // by default use selected items
+ if (selectionIndexes) {
+ if (selectionIndexes->hasSelection()) {
+ mSelectionIndexes = mListView->selectionModel()->selectedIndexes();
+ } else { // or if none selected, use the current item index
+ mSelectionIndexes.clear();
+ mSelectionIndexes.append(mCurrentIndex);
+// QModelIndex currentIndex = currentItemIndex();
+// if (mFbDriveModel->rowCount(currentItemIndex) > currentItemIndex && currentItemIndex >= 0)
+// {
+// modelIndexList.append(currentIndex);
+// }
+ }
+ }
+// mClipBoardInUse = true;
+}
+
+// ---------------------------------------------------------------------------
+
+QModelIndex FbDriveView::currentItemIndex()
+{
+ return mCurrentIndex;//mListView->selectionModel()->currentIndex();
+}
+
+// ---------------------------------------------------------------------------
+// operations in File Menu
+// ---------------------------------------------------------------------------
+
+void FbDriveView::fileOpenDrive()
+{
+ // TODO make a separate function to be called from here and fileOpenDirectory()
+ mLocationChanged = true;
+ // get selected drive or directory from list view model and open it:
+ //if (mListView->selectionModel()->hasSelection()) {
+// if (mListView->selectionModel()->selection().count() != 0) {
+// QModelIndex currentIndex = currentItemIndex();
+ mEngineWrapper->moveDownToDirectory(mCurrentIndex);
+ mListView->setRootIndex(mCurrentIndex);
+ refreshList();
+// } else {
+// Notifications::showErrorNote("not selected item!");
+// }
+}
+
+void FbDriveView::fileSearch()
+{
+ QString searchPath;
+ HbAction *contextrMenuAction = static_cast<HbAction *>(sender());
+ if (contextrMenuAction
+ && contextrMenuAction->text().compare(QString("Search..."), Qt::CaseInsensitive) == 0
+ && contextrMenuAction == mContextMenuActions.mFileSearch) {
+ DriveEntry driveEntry(mEngineWrapper->getDriveEntry(currentItemIndex()));
+ searchPath = driveEntry.driveLetter() + QString(":\\");
+ } else {
+ searchPath = mEngineWrapper->currentPath();
+ }
+ emit aboutToShowSearchView(searchPath);
+}
+
+/**
+ Show file properties
+ */
+void FbDriveView::fileProperties()
+{
+ QModelIndex currentIndex = currentItemIndex();
+ QStringList propertyList;
+ QString titleText;
+ mEngineWrapper->properties(currentIndex, propertyList, titleText);
+ openPropertyDialog(propertyList, titleText);
+}
+
+void FbDriveView::fileSetAttributes()
+{
+
+}
+
+// edit menu
+void FbDriveView::editSnapShotToE()
+{
+
+}
+
+// ---------------------------------------------------------------------------
+// view menu
+// ---------------------------------------------------------------------------
+
+/**
+ Refresh view
+ */
+void FbDriveView::viewRefresh()
+{
+ refreshList();
+}
+
+// ---------------------------------------------------------------------------
+// disk admin menu
+// ---------------------------------------------------------------------------
+
+/**
+ Open old password for the selected drive dialog.
+ */
+void FbDriveView::diskAdminSetDrivePassword()
+{
+ QModelIndex currentIndex = currentItemIndex();
+ // check if the drive has a password
+ if (mEngineWrapper->hasDrivePassword(currentIndex)) {
+ QString heading = QString("Existing password");
+ HbInputDialog::getText(heading, this, SLOT(diskAdminSetDrivePasswordNew(HbAction*)), QString(), scene());
+ } else {
+ QString heading = QString("New password");
+ HbInputDialog::getText(heading, this, SLOT(doDiskAdminSetDrivePassword(HbAction*)), mOldPassword, scene());
+ }
+}
+
+/**
+ Open new password for the selected drive dialog.
+ */
+void FbDriveView::diskAdminSetDrivePasswordNew(HbAction *action)
+{
+ HbInputDialog *dlg = static_cast<HbInputDialog*>(sender());
+ if (dlg && action && action->text().compare(QString("Ok"), Qt::CaseInsensitive) == 0) {
+ mOldPassword = dlg->value().toString();
+ QString heading = QString("New password");
+ HbInputDialog::getText(heading, this, SLOT(doDiskAdminSetDrivePassword(HbAction*)), mOldPassword, scene());
+ }
+}
+
+/**
+ Set password for the selected drive.
+ */
+void FbDriveView::doDiskAdminSetDrivePassword(HbAction *action)
+{
+ HbInputDialog *dlg = static_cast<HbInputDialog*>(sender());
+ if (dlg && action && action->text().compare(QString("Ok"), Qt::CaseInsensitive) == 0) {
+ QString newPassword = dlg->value().toString();
+ QModelIndex currentIndex = currentItemIndex();
+ mEngineWrapper->DiskAdminSetDrivePassword(currentIndex, mOldPassword, newPassword);
+ refreshList();
+ mOldPassword = QString();
+ newPassword = QString();
+ }
+}
+
+/**
+ Open Unlock the selected drive dialog.
+ */
+void FbDriveView::diskAdminUnlockDrive()
+{
+ QModelIndex currentIndex = currentItemIndex();
+ // check if the drive is locked
+ if (mEngineWrapper->isDriveLocked(currentIndex)) {
+ QString heading = QString("Existing password");
+ HbInputDialog::getText(heading, this, SLOT(doDiskAdminUnlockDrive(HbAction*)), QString(), scene());
+ } else {
+ Notifications::showInformationNote(QString("This drive is not locked"));
+ }
+}
+
+/**
+ Unlock the selected drive.
+ */
+void FbDriveView::doDiskAdminUnlockDrive(HbAction *action)
+{
+ HbInputDialog *dlg = static_cast<HbInputDialog*>(sender());
+ if (dlg && action && action->text().compare(QString("Ok"), Qt::CaseInsensitive) == 0) {
+ QString oldPassword = dlg->value().toString();
+ QModelIndex currentIndex = currentItemIndex();
+ mEngineWrapper->DiskAdminUnlockDrive(currentIndex, oldPassword);
+ refreshList();
+ }
+}
+
+/**
+ Open clear password of the selected drive dialog.
+ */
+void FbDriveView::diskAdminClearDrivePassword()
+{
+ QModelIndex currentIndex = currentItemIndex();
+ // check if the drive has a password
+ if (mEngineWrapper->hasDrivePassword(currentIndex)) {
+ QString heading = QString("Existing password");
+ HbInputDialog::getText(heading, this, SLOT(doDiskAdminClearDrivePassword(HbAction*)), QString(), scene());
+ } else {
+ Notifications::showInformationNote(QString("This drive has no password"));
+ }
+}
+
+/**
+ Clear password of the selected drive.
+ */
+void FbDriveView::doDiskAdminClearDrivePassword(HbAction *action)
+{
+ HbInputDialog *dlg = static_cast<HbInputDialog*>(sender());
+ if (dlg && action && action->text().compare(QString("Ok"), Qt::CaseInsensitive) == 0) {
+ QString oldPassword = dlg->value().toString();
+ QModelIndex currentIndex = currentItemIndex();
+ mEngineWrapper->DiskAdminClearDrivePassword(currentIndex, oldPassword);
+ refreshList();
+ }
+}
+
+
+/**
+ Question for erase password of the selected drive
+ */
+void FbDriveView::diskAdminEraseDrivePassword()
+{
+ // check if the drive has a password
+ QModelIndex currentIndex = currentItemIndex();
+ if (mEngineWrapper->hasDrivePassword(currentIndex)) {
+ HbMessageBox::question(QString("Are you sure? All data can be lost!"), this, SLOT(doDiskAdminEraseDrivePassword(HbAction*)));
+ } else {
+ Notifications::showInformationNote(QString("This drive has no password"));
+ }
+}
+
+/**
+ Erase password of the selected drive
+ */
+void FbDriveView::doDiskAdminEraseDrivePassword(HbAction* action)
+{
+ if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
+ QModelIndex currentIndex = currentItemIndex();
+ mEngineWrapper->DiskAdminEraseDrivePassword(currentIndex);
+ refreshList();
+ }
+}
+
+/**
+ Performs format on the selected drive
+ */
+void FbDriveView::diskAdminFormatDrive()
+{
+ HbMessageBox::question(QString("Are you sure? All data will be lost!"), this, SLOT(doDiskAdminFormatDrive(HbAction*)));
+}
+
+/**
+ Performs format on the selected drive
+ */
+void FbDriveView::doDiskAdminFormatDrive(HbAction* action)
+{
+ if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
+ QModelIndex currentIndex = currentItemIndex();
+ mEngineWrapper->DiskAdminFormatDrive(currentIndex, false);
+ }
+}
+
+/**
+ Performs quick format on the selected drive
+ */
+void FbDriveView::diskAdminQuickFormatDrive()
+{
+ HbMessageBox::question(QString("Are you sure? All data will be lost!"), this, SLOT(doDiskAdminQuickFormatDrive(HbAction*)));
+}
+
+/**
+ Performs quick format on the selected drive
+ */
+void FbDriveView::doDiskAdminQuickFormatDrive(HbAction* action)
+{
+ if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
+ QModelIndex currentIndex = currentItemIndex();
+ mEngineWrapper->DiskAdminFormatDrive(currentIndex, true);
+ }
+}
+
+/**
+ Checks the disk integrity on the selected drive
+ */
+void FbDriveView::diskAdminCheckDisk()
+{
+ QModelIndex currentIndex = currentItemIndex();
+ mEngineWrapper->DiskAdminCheckDisk(currentIndex);
+}
+
+/**
+ Checks the selected drive for errors and corrects them
+ */
+void FbDriveView::diskAdminScanDrive()
+{
+ HbMessageBox::question(QString("This finds errors on disk and corrects them. Proceed?"), this, SLOT(doDiskAdminScanDrive(HbAction*)));
+}
+
+/**
+ Checks the selected drive for errors and corrects them
+ */
+void FbDriveView::doDiskAdminScanDrive(HbAction* action)
+{
+ if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
+ QModelIndex currentIndex = currentItemIndex();
+ mEngineWrapper->DiskAdminScanDrive(currentIndex);
+ refreshList();
+ }
+}
+
+/**
+ Open drive name dialog
+ */
+void FbDriveView::diskAdminSetDriveName()
+{
+ QString driveName;
+
+ // get existing drive name
+ QModelIndex currentIndex = currentItemIndex();
+ mEngineWrapper->GetDriveName(currentIndex, driveName);
+
+ QString heading = QString("New name");
+ HbInputDialog::getText(heading, this, SLOT(doDiskAdminSetDriveName(HbAction*)), driveName, scene());
+}
+
+/**
+ Set drive name.
+ */
+void FbDriveView::doDiskAdminSetDriveName(HbAction *action)
+{
+ HbInputDialog *dlg = static_cast<HbInputDialog*>(sender());
+ if (dlg && action && action->text().compare(QString("Ok"), Qt::CaseInsensitive) == 0) {
+ QString driveName = dlg->value().toString();
+
+ QModelIndex currentIndex = currentItemIndex();
+ mEngineWrapper->DiskAdminSetDriveName(currentIndex, driveName);
+
+ refreshList();
+ }
+}
+
+/**
+ Open drive volume label dialog
+ */
+void FbDriveView::diskAdminSetDriveVolumeLabel()
+{
+ QString volumeLabel;
+
+ // get existing drive name
+ QModelIndex currentIndex = currentItemIndex();
+ mEngineWrapper->GetDriveVolumeLabel(currentIndex, volumeLabel);
+
+ QString heading = QString("New volume label");
+ HbInputDialog::getText(heading, this, SLOT(doDiskAdminSetDriveVolumeLabel(HbAction*)), volumeLabel, scene());
+}
+
+/**
+ Set drive volume label.
+ */
+void FbDriveView::doDiskAdminSetDriveVolumeLabel(HbAction *action)
+{
+ HbInputDialog *dlg = static_cast<HbInputDialog*>(sender());
+ if (dlg && action && action->text().compare(QString("Ok"), Qt::CaseInsensitive) == 0) {
+ QString volumeLabel = dlg->value().toString();
+
+ QModelIndex currentIndex = currentItemIndex();
+ mEngineWrapper->DiskAdminSetDriveVolumeLabel(currentIndex, volumeLabel);
+
+ refreshList();
+ }
+}
+
+/**
+ Eject the selected drive
+ */
+void FbDriveView::diskAdminEjectDrive()
+{
+ QModelIndex currentIndex = currentItemIndex();
+ mEngineWrapper->DiskAdminEjectDrive(currentIndex);
+ refreshList();
+}
+
+/**
+ Dismount the selected drive
+ */
+void FbDriveView::diskAdminDismountDrive()
+{
+ HbMessageBox::question(QString("Are you sure you know what are you doing?"), this, SLOT(doDiskAdminDismountDrive(HbAction*)));
+}
+
+void FbDriveView::doDiskAdminDismountDrive(HbAction* action)
+{
+ if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
+ QModelIndex currentIndex = currentItemIndex();
+ mEngineWrapper->DiskAdminDismountDrive(currentIndex);
+ refreshList();
+ }
+}
+
+/**
+ Erase Master Boot Record of the selected drive
+ */
+void FbDriveView::diskAdminEraseMBR()
+{
+ // TODO What to do with FB LITE macros?
+ HbMessageBox::question(QString("Are you sure? Your media driver must support this!"), this, SLOT(doDiskAdminEraseMBR(HbAction*)));
+}
+
+void FbDriveView::doDiskAdminEraseMBR(HbAction* action)
+{
+ // TODO What to do with FB LITE macros?
+ if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
+ HbMessageBox::question(QString("Are you really sure you know what are you doing ?!?"), this, SLOT(doDiskAdminReallyEraseMBR(HbAction*)));
+ }
+}
+
+void FbDriveView::doDiskAdminReallyEraseMBR(HbAction* action)
+{
+ if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
+ QModelIndex currentIndex = currentItemIndex();
+ // warn if the selected drive is not detected as removable
+ if (mEngineWrapper->isDriveRemovable(currentIndex)) {
+ mEngineWrapper->DiskAdminEraseMBR(currentIndex);
+ refreshList();
+ } else {
+ HbMessageBox::question(QString("Selected drive is not removable, really continue?"), this, SLOT(doDiskAdminNotRemovableReallyEraseMBR(HbAction*)));
+ }
+ }
+}
+
+void FbDriveView::doDiskAdminNotRemovableReallyEraseMBR(HbAction* action)
+{
+ if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
+ QModelIndex currentIndex = currentItemIndex();
+ mEngineWrapper->DiskAdminEraseMBR(currentIndex);
+ refreshList();
+ }
+
+}
+
+/**
+ Partition the selected drive
+ */
+void FbDriveView::diskAdminPartitionDrive()
+{
+ const QString message("Are you sure? Your media driver must support this!");
+ HbMessageBox::question(message, this, SLOT(diskAdminPartitionDriveProceed(HbAction *)));
+}
+
+/**
+ Partition the selected drive if user is sure
+ */
+void FbDriveView::diskAdminPartitionDriveProceed(HbAction *action)
+{
+ if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
+ const QString message("Are you really sure you know what are you doing ?!?");
+ HbMessageBox::question(message, this, SLOT(diskAdminPartitionDriveReallyProceed(HbAction *)));
+ }
+}
+
+/**
+ Partition the selected drive if user is really sure
+ */
+void FbDriveView::diskAdminPartitionDriveReallyProceed(HbAction *action)
+{
+ if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
+ QModelIndex currentIndex = currentItemIndex();
+ mEraseMBR = false;
+ // warn if the selected drive is not detected as removable
+ mProceed = false;
+ if (mEngineWrapper->isDriveRemovable(currentIndex)) {
+ mProceed = true;
+ } else {
+ const QString message("Selected drive is not removable, really continue?");
+ HbMessageBox::question(message, this, SLOT(diskAdminPartitionDriveIsNotRemovable(HbAction *)));
+ }
+
+ if (mProceed) {
+ // query if erase mbr
+ mEraseMBR = false;
+
+ QString message("Erase MBR first (normally needed)?");
+ HbMessageBox::question(message, this, SLOT(diskAdminPartitionDriveEraseMbr(HbAction *)));
+
+ // TODO use HbListDialog
+ QStringList list;
+ list << "1" << "2" << "3" << "4";
+ openListDialog(list, QString("Partitions?"), this, SLOT(diskAdminPartitionDriveGetCount(HbAction*)));
+ }
+ }
+}
+
+/**
+ Store result of user query about proceeding when drive is not removable.
+ */
+void FbDriveView::diskAdminPartitionDriveIsNotRemovable(HbAction *action)
+{
+ if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
+ mProceed = true;
+ } else {
+ mProceed = false;
+ }
+}
+
+/**
+ Store result of user query about erase MBR
+ */
+void FbDriveView::diskAdminPartitionDriveEraseMbr(HbAction *action)
+{
+ if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
+ mEraseMBR = true;
+ }
+}
+
+/**
+ Partition the selected drive
+ */
+void FbDriveView::diskAdminPartitionDriveGetCount(HbAction* action)
+{
+ HbSelectionDialog *dlg = static_cast<HbSelectionDialog*>(sender());
+ if(!action && dlg && dlg->selectedItems().count()){
+ int selectionIndex = dlg->selectedItems().at(0).toInt();
+ QModelIndex currentIndex = currentItemIndex();
+ int amountOfPartitions = selectionIndex + 1;
+ mEngineWrapper->DiskAdminPartitionDrive(currentIndex, mEraseMBR, amountOfPartitions);
+ refreshList();
+ }
+}
+
+// ---------------------------------------------------------------------------
+// tools menu
+// ---------------------------------------------------------------------------
+void FbDriveView::toolsAllAppsToTextFile()
+{
+
+}
+
+/**
+ Write all files to text file
+ */
+void FbDriveView::toolsAllFilesToTextFile()
+{
+ mEngineWrapper->toolsWriteAllFiles();
+}
+
+//void FbDriveView::toolsAvkonIconCacheEnable()
+//{
+//
+//}
+//void FbDriveView::toolsAvkonIconCacheDisable()
+//{
+//
+//}
+
+/**
+ Disable extended errors
+ */
+void FbDriveView::toolsDisableExtendedErrors()
+{
+ mEngineWrapper->ToolsSetErrRd(false);
+}
+
+void FbDriveView::toolsDumpMsgStoreWalk()
+{
+
+}
+void FbDriveView::toolsEditDataTypes()
+{
+
+}
+
+/**
+ Enable extended errors
+ */
+void FbDriveView::toolsEnableExtendedErrors()
+{
+ mEngineWrapper->ToolsSetErrRd(true);
+}
+
+/**
+ Open simulate leave dialog
+ */
+void FbDriveView::toolsErrorSimulateLeave()
+{
+ int leaveCode = -6;
+ QString heading = QString("Leave code");
+ //HbInputDialog::getInteger(heading, this, SLOT(doToolsErrorSimulateLeave(HbAction*)), leaveCode, scene());
+ HbInputDialog::getText(heading, this, SLOT(doToolsErrorSimulateLeave(HbAction*)), QString::number(leaveCode), scene());
+}
+
+
+/**
+ Simulate leave.
+ */
+void FbDriveView::doToolsErrorSimulateLeave(HbAction *action)
+{
+ HbInputDialog *dlg = static_cast<HbInputDialog*>(sender());
+ if (dlg && action && action->text().compare(QString("Ok"), Qt::CaseInsensitive) == 0) {
+ bool ok;
+ int leaveCode = dlg->value().toString().toInt(&ok);
+ if (leaveCode != 0 || ok) {
+ mEngineWrapper->ToolsErrorSimulateLeave(leaveCode);
+ }
+ }
+}
+
+/**
+ Open simulate panic dialog.
+ */
+void FbDriveView::toolsErrorSimulatePanic()
+{
+ mPanicCategory = QString ("Test Category");
+ QString heading = QString("Panic category");
+ HbInputDialog::getText(heading, this, SLOT(doToolsErrorSimulatePanicCode(HbAction*)), mPanicCategory, scene());
+}
+
+/**
+ Simulate panic.
+ */
+void FbDriveView::doToolsErrorSimulatePanicCode(HbAction *action)
+{
+ HbInputDialog *dlg = static_cast<HbInputDialog*>(sender());
+ if (dlg && action && action->text().compare(QString("Ok"), Qt::CaseInsensitive) == 0) {
+ mPanicCategory = dlg->value().toString();
+ int panicCode(555);
+ QString heading = QString("Panic code");
+ HbInputDialog::getInteger(heading, this, SLOT(doToolsErrorSimulatePanic(HbAction*)), panicCode, scene());
+ }
+}
+
+/**
+ Simulate panic.
+ */
+void FbDriveView::doToolsErrorSimulatePanic(HbAction *action)
+{
+ HbInputDialog *dlg = static_cast<HbInputDialog*>(sender());
+ if (dlg && action && action->text().compare(QString("Ok"), Qt::CaseInsensitive) == 0) {
+ bool ok;
+ int panicCode = dlg->value().toInt(&ok);
+ if (panicCode != 0 || ok) {
+ mEngineWrapper->ToolsErrorSimulatePanic(mPanicCategory, panicCode);
+ }
+ }
+}
+
+/**
+ Open simulate exception dialog.
+ */
+void FbDriveView::toolsErrorSimulateException()
+{
+ int exceptionCode = 0;
+ QString heading = QString("Exception code");
+ HbInputDialog::getInteger(heading, this, SLOT(doToolsErrorSimulateException(HbAction*)), exceptionCode, scene());
+}
+
+/**
+ Simulate exception.
+ */
+void FbDriveView::doToolsErrorSimulateException(HbAction *action)
+{
+ HbInputDialog *dlg = static_cast<HbInputDialog*>(sender());
+ if (dlg && action && action->text().compare(QString("Ok"), Qt::CaseInsensitive) == 0) {
+ bool ok;
+ int exceptionCode = dlg->value().toInt(&ok);
+ if (exceptionCode != 0 || ok) {
+ mEngineWrapper->ToolsErrorSimulateException(exceptionCode);
+ }
+ }
+}
+
+// void FbDriveView::toolsLocalConnectivityActivateInfrared()
+//{
+//
+//}
+// void FbDriveView::toolsLocalConnectivityLaunchBTUI()
+//{
+//
+//}
+// void FbDriveView::toolsLocalConnectivityLaunchUSBUI()
+//{
+//
+//}
+void FbDriveView::toolsMessageInbox()
+{
+
+}
+void FbDriveView::toolsMessageDrafts()
+{
+
+}
+void FbDriveView::toolsMessageSentItems()
+{
+
+}
+void FbDriveView::toolsMessageOutbox()
+{
+
+}
+void FbDriveView::toolsMemoryInfo()
+{
+
+}
+void FbDriveView::toolsSecureBackStart()
+{
+
+}
+void FbDriveView::toolsSecureBackRestore()
+{
+
+}
+void FbDriveView::toolsSecureBackStop()
+{
+
+}
+
+/**
+ Open debug mask dialog
+ */
+void FbDriveView::toolsSetDebugMaskQuestion()
+{
+ quint32 dbgMask = mEngineWrapper->getDebugMask();
+ QString dbgMaskText = QString("0x").append(QString::number(dbgMask, 16));
+ QString heading = QString("Kernel debug mask in hex format");
+ HbInputDialog::getText(heading, this, SLOT(toolsSetDebugMask(HbAction*)), dbgMaskText, scene());
+}
+
+/**
+ Set debug mask
+ */
+void FbDriveView::toolsSetDebugMask(HbAction *action)
+{
+ HbInputDialog *dlg = static_cast<HbInputDialog*>(sender());
+ if (dlg && action && action->text().compare(QString("Ok"), Qt::CaseInsensitive) == 0) {
+ QString dbgMaskText = dlg->value().toString();
+ if (dbgMaskText.length() > 2 && dbgMaskText[0]=='0' && dbgMaskText[1]=='x') {
+ bool ok;
+ quint32 dbgMask = dbgMaskText.toUInt(&ok, 16);
+ if (dbgMask != 0 || ok) {
+ mEngineWrapper->toolsSetDebugMask(dbgMask);
+ Notifications::showConfirmationNote(QString("Changed"));
+ } else {
+ Notifications::showErrorNote(QString("Cannot convert value"));
+ }
+ } else {
+ Notifications::showErrorNote(QString("Not in hex format"));
+ }
+ }
+}
+
+void FbDriveView::toolsShowOpenFilesHere()
+{
+
+}
+
+// ---------------------------------------------------------------------------
+// main menu items
+// ---------------------------------------------------------------------------
+
+/**
+ Show about note
+ */
+void FbDriveView::about()
+{
+ Notifications::showAboutNote();
+}
+
+// ---------------------------------------------------------------------------
+// End of operations
+// ---------------------------------------------------------------------------
+
+// ---------------------------------------------------------------------------
+
+/**
+ Item is selected from list when selection mode is activated from menu
+ */
+void FbDriveView::selectionChanged(const QItemSelection &/*selected*/, const QItemSelection &/*deselected*/)
+{
+ //QItemSelectionModel *selectionModel = mListView->selectionModel();
+}
+
+/**
+ An item is clicked from navigation item list. Navigation item list contains
+ drive-, folder- or file items. Opens selected drive, folder or file popup menu
+ */
+void FbDriveView::activated(const QModelIndex& index)
+{
+ if (mFbDriveModel) {
+// if (mEngineWrapper->isDriveListViewActive()) {
+ mEngineWrapper->moveDownToDirectory(index);
+ //emit aboutToShowFileView(QString(mEngineWrapper->currentPath()));
+ emit aboutToShowFileView();
+ //refreshList();
+// }
+ }
+}
+
+// ---------------------------------------------------------------------------