filebrowser/ui/src/filebrowserview.cpp
changeset 23 c9bf25a20c9f
parent 19 4b22a598b890
equal deleted inserted replaced
19:4b22a598b890 23:c9bf25a20c9f
    60     mEngineWrapper(0),
    60     mEngineWrapper(0),
    61     mListView(0),
    61     mListView(0),
    62     mToolBar(0),
    62     mToolBar(0),
    63     mNaviPane(0),
    63     mNaviPane(0),
    64     mMainLayout(0),
    64     mMainLayout(0),
    65     mDirectory(),
       
    66     mSelectedFilePath(),
       
    67     mFileBrowserModel(0),
    65     mFileBrowserModel(0),
    68     mFileViewMenuActions(),
    66     mOptionMenuActions(),
       
    67     mContextMenuActions(),
       
    68     mContextMenu(0),
    69     mToolbarBackAction(0),
    69     mToolbarBackAction(0),
    70     mItemHighlighted(false),
    70     mItemHighlighted(false),
    71     mLocationChanged(false),
    71     mLocationChanged(false),
    72     mRemoveFileAfterCopied(false),
    72     mRemoveFileAfterCopied(false),
    73     mClipBoardInUse(false),
    73 //    mClipBoardInUse(false),
    74     mFolderContentChanged(false),
    74     mFolderContentChanged(false),
       
    75     mCurrentIndex(),
    75     mOldPassword(),
    76     mOldPassword(),
    76     mPanicCategory(),
    77     mPanicCategory(),
    77     mAbsoluteFilePath(),
    78     mAbsoluteFilePath(),
    78     mOverwriteOptions(),
    79     mOverwriteOptions(),
    79     mModelIndex(),
    80     mModelIndex(),
    82     mEraseMBR(false)
    83     mEraseMBR(false)
    83 {
    84 {
    84     setTitle("File Browser");
    85     setTitle("File Browser");
    85 
    86 
    86     createMenu();
    87     createMenu();
       
    88     createContextMenu();
    87     createToolBar();
    89     createToolBar();
    88 }
    90 }
    89 
    91 
    90 // ---------------------------------------------------------------------------	
    92 // ---------------------------------------------------------------------------	
    91 
    93 
   106     //mListView->setRootIndex(model->index());
   108     //mListView->setRootIndex(model->index());
   107 
   109 
   108     mListView->setScrollingStyle(HbScrollArea::PanWithFollowOn);
   110     mListView->setScrollingStyle(HbScrollArea::PanWithFollowOn);
   109 
   111 
   110     connect(mListView, SIGNAL(activated(QModelIndex)), this, SLOT(activated(QModelIndex)));
   112     connect(mListView, SIGNAL(activated(QModelIndex)), this, SLOT(activated(QModelIndex)));
       
   113     connect(mListView, SIGNAL(longPressed(HbAbstractViewItem*,QPointF)),
       
   114             this, SLOT(onLongPressed(HbAbstractViewItem*, QPointF)));
   111 
   115 
   112     mNaviPane = new HbLabel(this);
   116     mNaviPane = new HbLabel(this);
   113     mNaviPane->setPlainText(QString(" ")); // TODO get from settings or default
   117     mNaviPane->setPlainText(QString(" ")); // TODO get from settings or default
   114     //mNaviPane->setPlainText(QString(mEngineWrapper->currentPath()));
   118     //mNaviPane->setPlainText(QString(mEngineWrapper->currentPath()));
   115     HbFontSpec fontSpec(HbFontSpec::PrimarySmall);
   119     HbFontSpec fontSpec(HbFontSpec::PrimarySmall);
   128 FileBrowserView::~FileBrowserView()
   132 FileBrowserView::~FileBrowserView()
   129 {  
   133 {  
   130 //    if (mEngineWrapper) {
   134 //    if (mEngineWrapper) {
   131 //        delete mEngineWrapper;
   135 //        delete mEngineWrapper;
   132 //    }
   136 //    }
       
   137     if (mContextMenu) {
       
   138         mContextMenu->deleteLater();
       
   139     }
       
   140 
   133     delete mFileBrowserModel;
   141     delete mFileBrowserModel;
   134     delete mListView;
   142     delete mListView;
   135     delete mToolBar;
   143     delete mToolBar;
   136 }
   144 }
   137 
   145 
   138 /**
   146 /**
   139   Create a file browser tool bar
       
   140   */
       
   141 void FileBrowserView::createToolBar()
       
   142 {
       
   143     mToolBar = new HbToolBar(this);
       
   144 
       
   145     mToolbarBackAction = new HbAction(/*"Back"*/);
       
   146     mToolbarBackAction->setToolTip("Back");
       
   147     mToolbarBackAction->setIcon(HbIcon(QString(":/qgn_indi_tb_filebrowser_folder_parent.svg")));
       
   148     connect(mToolbarBackAction, SIGNAL(triggered()), this, SLOT(fileBackMoveUp()));
       
   149     mToolBar->addAction(mToolbarBackAction);
       
   150 
       
   151     if (mFileViewMenuActions.mSelection) {
       
   152         mToolBar->addAction(mFileViewMenuActions.mSelection);
       
   153     }
       
   154 
       
   155     setToolBar(mToolBar);
       
   156 }
       
   157 
       
   158 /**
       
   159   Initial setup for options menu.
   147   Initial setup for options menu.
   160   Dynamic menu update during the runtime is performed by updateMenu() which
   148   Dynamic menu update during the runtime is performed by updateOptionMenu() which
   161   to menu's aboutToShow() signal.
   149   to menu's aboutToShow() signal.
   162   */
   150   */
   163 void FileBrowserView::createMenu()
   151 void FileBrowserView::createMenu()
   164 {
   152 {
   165     createFileMenu();
   153     createFileMenu();
   166     createEditMenu();
   154     createEditMenu();
   167     createViewMenu();
   155     createViewMenu();
   168     createDiskAdminMenu();
       
   169     createToolsMenu();
   156     createToolsMenu();
   170 
   157 
   171     createSelectionMenuItem();
   158     createSelectionMenuItem();
   172     createSettingsMenuItem();
   159     createSettingsMenuItem();
   173     createAboutMenuItem();
   160     createAboutMenuItem();
   174     createExitMenuItem();
   161     createExitMenuItem();
   175 
   162 
   176     // menu dynamic update
   163     // menu dynamic update
   177     connect(menu(), SIGNAL(aboutToShow()), this, SLOT(updateMenu()));
   164     connect(menu(), SIGNAL(aboutToShow()), this, SLOT(updateOptionMenu()));
   178 }
   165 }
   179 
   166 
   180 /**
   167 /**
   181   Initial setup for File submenu
   168   Initial setup for File submenu
   182   */
   169   */
   183 void FileBrowserView::createFileMenu()
   170 void FileBrowserView::createFileMenu()
   184 {
   171 {
   185     mFileViewMenuActions.mFileMenu = menu()->addMenu("File");
   172     mOptionMenuActions.mFileMenu = menu()->addMenu("File");
   186 
   173 
   187     mFileViewMenuActions.mFileBackMoveUp = mFileViewMenuActions.mFileMenu->addAction("Back/Move up (<-)", this, SLOT(fileBackMoveUp()));
   174     mOptionMenuActions.mFileBackMoveUp = mOptionMenuActions.mFileMenu->addAction("Back/Move up (<-)", this, SLOT(fileBackMoveUp()));
   188     mFileViewMenuActions.mFileOpenDrive = mFileViewMenuActions.mFileMenu->addAction("Open drive (->)", this, SLOT(fileOpenDrive()));
   175     mOptionMenuActions.mFileOpenDrive = mOptionMenuActions.mFileMenu->addAction("Open drive (->)", this, SLOT(fileOpenDrive()));
   189     mFileViewMenuActions.mFileOpenDirectory = mFileViewMenuActions.mFileMenu->addAction("Open directory (->)", this, SLOT(fileOpenDirectory()));
   176     mOptionMenuActions.mFileOpenDirectory = mOptionMenuActions.mFileMenu->addAction("Open directory (->)", this, SLOT(fileOpenDirectory()));
   190     mFileViewMenuActions.mFileSearch = mFileViewMenuActions.mFileMenu->addAction("Search...", this, SLOT(fileSearch()));
   177     mOptionMenuActions.mFileSearch = mOptionMenuActions.mFileMenu->addAction("Search...", this, SLOT(fileSearch()));
   191     //mFileViewMenuActions.mFileSearch->setVisible(false);
   178     //mOptionMenuActions.mFileSearch->setVisible(false);
   192 
   179 
   193     mFileViewMenuActions.mFileNewMenu = mFileViewMenuActions.mFileMenu->addMenu("New");
   180     mOptionMenuActions.mFileNewMenu = mOptionMenuActions.mFileMenu->addMenu("New");
   194     mFileViewMenuActions.mFileNewFile = mFileViewMenuActions.mFileNewMenu->addAction("File", this, SLOT(fileNewFile()));
   181     mOptionMenuActions.mFileNewFile = mOptionMenuActions.mFileNewMenu->addAction("File", this, SLOT(fileNewFile()));
   195     mFileViewMenuActions.mFileNewDirectory = mFileViewMenuActions.mFileNewMenu->addAction("Directory", this, SLOT(fileNewDirectory()));
   182     mOptionMenuActions.mFileNewDirectory = mOptionMenuActions.mFileNewMenu->addAction("Directory", this, SLOT(fileNewDirectory()));
   196 
   183 
   197     mFileViewMenuActions.mFileDelete = mFileViewMenuActions.mFileMenu->addAction("Delete", this, SLOT(fileDelete()));
   184     mOptionMenuActions.mFileDelete = mOptionMenuActions.mFileMenu->addAction("Delete", this, SLOT(fileDelete()));
   198     mFileViewMenuActions.mFileRename = mFileViewMenuActions.mFileMenu->addAction("Rename", this, SLOT(fileRename()));
   185     mOptionMenuActions.mFileRename = mOptionMenuActions.mFileMenu->addAction("Rename", this, SLOT(fileRename()));
   199     mFileViewMenuActions.mFileTouch = mFileViewMenuActions.mFileMenu->addAction("Touch", this, SLOT(fileTouch()));
   186     mOptionMenuActions.mFileTouch = mOptionMenuActions.mFileMenu->addAction("Touch", this, SLOT(fileTouch()));
   200     mFileViewMenuActions.mFileProperties = mFileViewMenuActions.mFileMenu->addAction("Properties", this, SLOT(fileProperties()));
   187     mOptionMenuActions.mFileProperties = mOptionMenuActions.mFileMenu->addAction("Properties", this, SLOT(fileProperties()));
   201 
   188 
   202     mFileViewMenuActions.mFileChecksumsMenu = mFileViewMenuActions.mFileMenu->addMenu("Checksums");
   189 //    mOptionMenuActions.mFileChecksumsMenu = mOptionMenuActions.mFileMenu->addMenu("Checksums");
   203     mFileViewMenuActions.mFileChecksumsMD5 = mFileViewMenuActions.mFileChecksumsMenu->addAction("MD5", this, SLOT(fileChecksumsMD5()));
   190 //    mOptionMenuActions.mFileChecksumsMD5 = mOptionMenuActions.mFileChecksumsMenu->addAction("MD5", this, SLOT(fileChecksumsMD5()));
   204     mFileViewMenuActions.mFileChecksumsMD2 = mFileViewMenuActions.mFileChecksumsMenu->addAction("MD2", this, SLOT(fileChecksumsMD2()));
   191 //    mOptionMenuActions.mFileChecksumsMD2 = mOptionMenuActions.mFileChecksumsMenu->addAction("MD2", this, SLOT(fileChecksumsMD2()));
   205     mFileViewMenuActions.mFileChecksumsSHA1 = mFileViewMenuActions.mFileChecksumsMenu->addAction("SHA-1", this, SLOT(fileChecksumsSHA1()));
   192 //    mOptionMenuActions.mFileChecksumsSHA1 = mOptionMenuActions.mFileChecksumsMenu->addAction("SHA-1", this, SLOT(fileChecksumsSHA1()));
   206 
   193 
   207     mFileViewMenuActions.mFileSetAttributes = mFileViewMenuActions.mFileMenu->addAction("Set attributes...", this, SLOT(fileSetAttributes()));
   194     mOptionMenuActions.mFileSetAttributes = mOptionMenuActions.mFileMenu->addAction("Set attributes...", this, SLOT(fileSetAttributes()));
   208     mFileViewMenuActions.mFileSetAttributes->setVisible(false);
   195     mOptionMenuActions.mFileSetAttributes->setVisible(false);
   209 }
   196 }
   210 
   197 
   211 /**
   198 /**
   212   Initial setup for Edit submenu
   199   Initial setup for Edit submenu
   213   */
   200   */
   214 void FileBrowserView::createEditMenu()
   201 void FileBrowserView::createEditMenu()
   215 {
   202 {
   216     mFileViewMenuActions.mEditMenu = menu()->addMenu("Edit");
   203     mOptionMenuActions.mEditMenu = menu()->addMenu("Edit");
   217 
   204 
   218     mFileViewMenuActions.mEditSnapShotToE = mFileViewMenuActions.mEditMenu->addAction("Snap shot to E:", this, SLOT(editSnapShotToE()));
   205     mOptionMenuActions.mEditSnapShotToE = mOptionMenuActions.mEditMenu->addAction("Snap shot to E:", this, SLOT(editSnapShotToE()));
   219     mFileViewMenuActions.mEditSnapShotToE->setVisible(false);
   206     mOptionMenuActions.mEditSnapShotToE->setVisible(false);
   220     mFileViewMenuActions.mEditCut = mFileViewMenuActions.mEditMenu->addAction("Cut", this, SLOT(editCut()));
   207     mOptionMenuActions.mEditCut = mOptionMenuActions.mEditMenu->addAction("Cut", this, SLOT(editCut()));
   221     mFileViewMenuActions.mEditCopy = mFileViewMenuActions.mEditMenu->addAction("Copy", this, SLOT(editCopy()));
   208     mOptionMenuActions.mEditCopy = mOptionMenuActions.mEditMenu->addAction("Copy", this, SLOT(editCopy()));
   222     mFileViewMenuActions.mEditPaste = mFileViewMenuActions.mEditMenu->addAction("Paste", this, SLOT(editPaste()));
   209     mOptionMenuActions.mEditPaste = mOptionMenuActions.mEditMenu->addAction("Paste", this, SLOT(editPaste()));
   223 
   210 
   224     mFileViewMenuActions.mEditCopyToFolder = mFileViewMenuActions.mEditMenu->addAction("Copy to folder...", this, SLOT(editCopyToFolder()));
   211     mOptionMenuActions.mEditCopyToFolder = mOptionMenuActions.mEditMenu->addAction("Copy to folder...", this, SLOT(editCopyToFolder()));
   225     mFileViewMenuActions.mEditMoveToFolder = mFileViewMenuActions.mEditMenu->addAction("Move to folder...", this, SLOT(editMoveToFolder()));
   212     mOptionMenuActions.mEditMoveToFolder = mOptionMenuActions.mEditMenu->addAction("Move to folder...", this, SLOT(editMoveToFolder()));
   226 
   213 
   227     mFileViewMenuActions.mEditSelect = mFileViewMenuActions.mEditMenu->addAction("Select", this, SLOT(editSelect()));
   214     mOptionMenuActions.mEditSelect = mOptionMenuActions.mEditMenu->addAction("Select", this, SLOT(editSelect()));
   228     mFileViewMenuActions.mEditUnselect = mFileViewMenuActions.mEditMenu->addAction("Unselect", this, SLOT(editUnselect()));
   215     mOptionMenuActions.mEditUnselect = mOptionMenuActions.mEditMenu->addAction("Unselect", this, SLOT(editUnselect()));
   229     mFileViewMenuActions.mEditSelectAll = mFileViewMenuActions.mEditMenu->addAction("Select all", this, SLOT(editSelectAll()));
   216     mOptionMenuActions.mEditSelectAll = mOptionMenuActions.mEditMenu->addAction("Select all", this, SLOT(editSelectAll()));
   230     mFileViewMenuActions.mEditUnselectAll = mFileViewMenuActions.mEditMenu->addAction("Unselect all", this, SLOT(editUnselectAll()));
   217     mOptionMenuActions.mEditUnselectAll = mOptionMenuActions.mEditMenu->addAction("Unselect all", this, SLOT(editUnselectAll()));
   231 }
   218 }
   232 
   219 
   233 /**
   220 /**
   234   Initial setup for View submenu
   221   Initial setup for View submenu
   235   */
   222   */
   236 void FileBrowserView::createViewMenu()
   223 void FileBrowserView::createViewMenu()
   237 {
   224 {
   238     mFileViewMenuActions.mViewMenu = menu()->addMenu("View");
   225     mOptionMenuActions.mViewMenu = menu()->addMenu("View");
   239     mFileViewMenuActions.mViewMenu->menuAction()->setVisible(false);
   226     mOptionMenuActions.mViewMenu->menuAction()->setVisible(false);
   240 
   227 
   241     mFileViewMenuActions.mViewFilterEntries = mFileViewMenuActions.mViewMenu->addAction("Filter entries", this, SLOT(viewFilterEntries()));
   228     mOptionMenuActions.mViewFilterEntries = mOptionMenuActions.mViewMenu->addAction("Filter entries", this, SLOT(viewFilterEntries()));
   242     mFileViewMenuActions.mViewRefresh = mFileViewMenuActions.mViewMenu->addAction("Refresh", this, SLOT(viewRefresh()));
   229     mOptionMenuActions.mViewRefresh = mOptionMenuActions.mViewMenu->addAction("Refresh", this, SLOT(viewRefresh()));
   243 }
       
   244 
       
   245 /**
       
   246   Initial setup for Disk Admin submenu
       
   247   */
       
   248 void FileBrowserView::createDiskAdminMenu()
       
   249 {
       
   250     mFileViewMenuActions.mDiskAdminMenu = menu()->addMenu("Disk admin");
       
   251     mFileViewMenuActions.mDiskAdminMenu->menuAction()->setVisible(false);
       
   252 
       
   253     mFileViewMenuActions.mDiskAdminSetDrivePassword = mFileViewMenuActions.mDiskAdminMenu->addAction("Set drive password", this, SLOT(diskAdminSetDrivePassword()));
       
   254     mFileViewMenuActions.mDiskAdminUnlockDrive = mFileViewMenuActions.mDiskAdminMenu->addAction("Unlock drive", this, SLOT(diskAdminUnlockDrive()));
       
   255     mFileViewMenuActions.mDiskAdminClearDrivePassword = mFileViewMenuActions.mDiskAdminMenu->addAction("Clear drive password", this, SLOT(diskAdminClearDrivePassword()));
       
   256     mFileViewMenuActions.mDiskAdminEraseDrivePassword = mFileViewMenuActions.mDiskAdminMenu->addAction("Erase drive password", this, SLOT(diskAdminEraseDrivePassword()));
       
   257 
       
   258     mFileViewMenuActions.mDiskAdminFormatDrive = mFileViewMenuActions.mDiskAdminMenu->addAction("Format drive", this, SLOT(diskAdminFormatDrive()));
       
   259     mFileViewMenuActions.mDiskAdminFormatDrive->setVisible(false);
       
   260     mFileViewMenuActions.mDiskAdminQuickFormatDrive = mFileViewMenuActions.mDiskAdminMenu->addAction("Quick format drive", this, SLOT(diskAdminQuickFormatDrive()));
       
   261     mFileViewMenuActions.mDiskAdminQuickFormatDrive->setVisible(false);
       
   262 
       
   263     mFileViewMenuActions.mDiskAdminCheckDisk = mFileViewMenuActions.mDiskAdminMenu->addAction("Check disk", this, SLOT(diskAdminCheckDisk()));
       
   264     mFileViewMenuActions.mDiskAdminScanDrive = mFileViewMenuActions.mDiskAdminMenu->addAction("Scan drive", this, SLOT(diskAdminScanDrive()));
       
   265     mFileViewMenuActions.mDiskAdminSetDriveName = mFileViewMenuActions.mDiskAdminMenu->addAction("Set drive name", this, SLOT(diskAdminSetDriveName()));
       
   266     mFileViewMenuActions.mDiskAdminSetDriveVolumeLabel = mFileViewMenuActions.mDiskAdminMenu->addAction("Set drive volume label", this, SLOT(diskAdminSetDriveVolumeLabel()));
       
   267     mFileViewMenuActions.mDiskAdminEjectDrive = mFileViewMenuActions.mDiskAdminMenu->addAction("Eject drive", this, SLOT(diskAdminEjectDrive()));
       
   268     mFileViewMenuActions.mDiskAdminDismountDrive = mFileViewMenuActions.mDiskAdminMenu->addAction("Dismount drive", this, SLOT(diskAdminDismountDrive()));
       
   269     mFileViewMenuActions.mDiskAdminEraseMBR = mFileViewMenuActions.mDiskAdminMenu->addAction("Erase MBR", this, SLOT(diskAdminEraseMBR()));
       
   270     mFileViewMenuActions.mDiskAdminPartitionDrive = mFileViewMenuActions.mDiskAdminMenu->addAction("Partition drive", this, SLOT(diskAdminPartitionDrive()));
       
   271 }
   230 }
   272 
   231 
   273 /**
   232 /**
   274   Initial setup for Tools submenu
   233   Initial setup for Tools submenu
   275   */
   234   */
   276 void FileBrowserView::createToolsMenu()
   235 void FileBrowserView::createToolsMenu()
   277 {
   236 {
   278     mFileViewMenuActions.mToolsMenu = menu()->addMenu("Tools");
   237     mOptionMenuActions.mToolsMenu = menu()->addMenu("Tools");
   279 
   238 
   280     mFileViewMenuActions.mToolsAllAppsToTextFile = mFileViewMenuActions.mToolsMenu->addAction("All apps to a text file", this, SLOT(toolsAllAppsToTextFile()));
   239     mOptionMenuActions.mToolsAllAppsToTextFile = mOptionMenuActions.mToolsMenu->addAction("All apps to a text file", this, SLOT(toolsAllAppsToTextFile()));
   281     mFileViewMenuActions.mToolsAllAppsToTextFile->setVisible(false);
   240     mOptionMenuActions.mToolsAllAppsToTextFile->setVisible(false);
   282     mFileViewMenuActions.mToolsAllFilesToTextFile = mFileViewMenuActions.mToolsMenu->addAction("All files to a text file", this, SLOT(toolsAllFilesToTextFile()));
   241     mOptionMenuActions.mToolsAllFilesToTextFile = mOptionMenuActions.mToolsMenu->addAction("All files to a text file", this, SLOT(toolsAllFilesToTextFile()));
   283     //mFileViewMenuActions.mToolsAllFilesToTextFile->setVisible(false);
   242     //mOptionMenuActions.mToolsAllFilesToTextFile->setVisible(false);
   284 
   243 
   285     mFileViewMenuActions.mToolsAvkonIconCacheMenu = mFileViewMenuActions.mToolsMenu->addMenu("Avkon icon cache");
   244     mOptionMenuActions.mToolsAvkonIconCacheMenu = mOptionMenuActions.mToolsMenu->addMenu("Avkon icon cache");
   286     mFileViewMenuActions.mToolsAvkonIconCacheMenu->menuAction()->setVisible(false);
   245     mOptionMenuActions.mToolsAvkonIconCacheMenu->menuAction()->setVisible(false);
   287     mFileViewMenuActions.mToolsAvkonIconCacheEnable = mFileViewMenuActions.mToolsAvkonIconCacheMenu->addAction("Enable", this, SLOT(toolsAvkonIconCacheEnable()));
   246     mOptionMenuActions.mToolsAvkonIconCacheEnable = mOptionMenuActions.mToolsAvkonIconCacheMenu->addAction("Enable", this, SLOT(toolsAvkonIconCacheEnable()));
   288     mFileViewMenuActions.mToolsAvkonIconCacheDisable = mFileViewMenuActions.mToolsAvkonIconCacheMenu->addAction("Clear and disable", this, SLOT(toolsAvkonIconCacheDisable()));
   247     mOptionMenuActions.mToolsAvkonIconCacheDisable = mOptionMenuActions.mToolsAvkonIconCacheMenu->addAction("Clear and disable", this, SLOT(toolsAvkonIconCacheDisable()));
   289 
   248 
   290     mFileViewMenuActions.mToolsDisableExtendedErrors = mFileViewMenuActions.mToolsMenu->addAction("Disable extended errors", this, SLOT(toolsDisableExtendedErrors()));
   249     mOptionMenuActions.mToolsDisableExtendedErrors = mOptionMenuActions.mToolsMenu->addAction("Disable extended errors", this, SLOT(toolsDisableExtendedErrors()));
   291     mFileViewMenuActions.mToolsDumpMsgStoreWalk = mFileViewMenuActions.mToolsMenu->addAction("Dump msg. store walk", this, SLOT(toolsDumpMsgStoreWalk()));
   250     mOptionMenuActions.mToolsDumpMsgStoreWalk = mOptionMenuActions.mToolsMenu->addAction("Dump msg. store walk", this, SLOT(toolsDumpMsgStoreWalk()));
   292     mFileViewMenuActions.mToolsDumpMsgStoreWalk->setVisible(false);
   251     mOptionMenuActions.mToolsDumpMsgStoreWalk->setVisible(false);
   293     mFileViewMenuActions.mToolsEditDataTypes = mFileViewMenuActions.mToolsMenu->addAction("Edit data types", this, SLOT(toolsEditDataTypes()));
   252     mOptionMenuActions.mToolsEditDataTypes = mOptionMenuActions.mToolsMenu->addAction("Edit data types", this, SLOT(toolsEditDataTypes()));
   294     mFileViewMenuActions.mToolsEditDataTypes->setVisible(false);
   253     mOptionMenuActions.mToolsEditDataTypes->setVisible(false);
   295     mFileViewMenuActions.mToolsEnableExtendedErrors = mFileViewMenuActions.mToolsMenu->addAction("Enable extended errors", this, SLOT(toolsEnableExtendedErrors()));
   254     mOptionMenuActions.mToolsEnableExtendedErrors = mOptionMenuActions.mToolsMenu->addAction("Enable extended errors", this, SLOT(toolsEnableExtendedErrors()));
   296 
   255 
   297     mFileViewMenuActions.mToolsErrorSimulateMenu = mFileViewMenuActions.mToolsMenu->addMenu("Error simulate");
   256     mOptionMenuActions.mToolsErrorSimulateMenu = mOptionMenuActions.mToolsMenu->addMenu("Error simulate");
   298     mFileViewMenuActions.mToolsErrorSimulateLeave = mFileViewMenuActions.mToolsErrorSimulateMenu->addAction("Leave", this, SLOT(toolsErrorSimulateLeave()));
   257     mOptionMenuActions.mToolsErrorSimulateLeave = mOptionMenuActions.mToolsErrorSimulateMenu->addAction("Leave", this, SLOT(toolsErrorSimulateLeave()));
   299     mFileViewMenuActions.mToolsErrorSimulatePanic = mFileViewMenuActions.mToolsErrorSimulateMenu->addAction("Panic", this, SLOT(toolsErrorSimulatePanic()));
   258     mOptionMenuActions.mToolsErrorSimulatePanic = mOptionMenuActions.mToolsErrorSimulateMenu->addAction("Panic", this, SLOT(toolsErrorSimulatePanic()));
   300     mFileViewMenuActions.mToolsErrorSimulatePanic->setVisible(false);
   259     mOptionMenuActions.mToolsErrorSimulatePanic->setVisible(false);
   301     mFileViewMenuActions.mToolsErrorSimulateException = mFileViewMenuActions.mToolsErrorSimulateMenu->addAction("Exception", this, SLOT(toolsErrorSimulateException()));
   260     mOptionMenuActions.mToolsErrorSimulateException = mOptionMenuActions.mToolsErrorSimulateMenu->addAction("Exception", this, SLOT(toolsErrorSimulateException()));
   302 
   261 
   303 //    mFileViewMenuActions.mLocalConnectivityMenu = mFileViewMenuActions.mToolsMenu->addMenu("Local connectivity");
   262 //    mOptionMenuActions.mLocalConnectivityMenu = mOptionMenuActions.mToolsMenu->addMenu("Local connectivity");
   304 //    mFileViewMenuActions.mToolsLocalConnectivityActivateInfrared = mFileViewMenuActions.mLocalConnectivityMenu->addAction("Activate infrared", this, SLOT(toolsLocalConnectivityActivateInfrared()));
   263 //    mOptionMenuActions.mToolsLocalConnectivityActivateInfrared = mOptionMenuActions.mLocalConnectivityMenu->addAction("Activate infrared", this, SLOT(toolsLocalConnectivityActivateInfrared()));
   305 //    mFileViewMenuActions.mToolsLocalConnectivityLaunchBTUI = mFileViewMenuActions.mLocalConnectivityMenu->addAction("Launch BT UI", this, SLOT(toolsLocalConnectivityLaunchBTUI()));
   264 //    mOptionMenuActions.mToolsLocalConnectivityLaunchBTUI = mOptionMenuActions.mLocalConnectivityMenu->addAction("Launch BT UI", this, SLOT(toolsLocalConnectivityLaunchBTUI()));
   306 //    mFileViewMenuActions.mToolsLocalConnectivityLaunchUSBUI = mFileViewMenuActions.mLocalConnectivityMenu->addAction("Launch USB UI", this, SLOT(toolsLocalConnectivityLaunchUSBUI()));
   265 //    mOptionMenuActions.mToolsLocalConnectivityLaunchUSBUI = mOptionMenuActions.mLocalConnectivityMenu->addAction("Launch USB UI", this, SLOT(toolsLocalConnectivityLaunchUSBUI()));
   307 
   266 
   308     mFileViewMenuActions.mToolsMessageAttachmentsMenu = mFileViewMenuActions.mToolsMenu->addMenu("Message attachments");
   267     mOptionMenuActions.mToolsMessageAttachmentsMenu = mOptionMenuActions.mToolsMenu->addMenu("Message attachments");
   309     mFileViewMenuActions.mToolsMessageAttachmentsMenu->menuAction()->setVisible(false);
   268     mOptionMenuActions.mToolsMessageAttachmentsMenu->menuAction()->setVisible(false);
   310     mFileViewMenuActions.mToolsMessageInbox = mFileViewMenuActions.mToolsMessageAttachmentsMenu->addAction("Inbox", this, SLOT(toolsMessageInbox()));
   269     mOptionMenuActions.mToolsMessageInbox = mOptionMenuActions.mToolsMessageAttachmentsMenu->addAction("Inbox", this, SLOT(toolsMessageInbox()));
   311     mFileViewMenuActions.mToolsMessageDrafts = mFileViewMenuActions.mToolsMessageAttachmentsMenu->addAction("Drafts", this, SLOT(toolsMessageDrafts()));
   270     mOptionMenuActions.mToolsMessageDrafts = mOptionMenuActions.mToolsMessageAttachmentsMenu->addAction("Drafts", this, SLOT(toolsMessageDrafts()));
   312     mFileViewMenuActions.mToolsMessageSentItems = mFileViewMenuActions.mToolsMessageAttachmentsMenu->addAction("Sent items", this, SLOT(toolsMessageSentItems()));
   271     mOptionMenuActions.mToolsMessageSentItems = mOptionMenuActions.mToolsMessageAttachmentsMenu->addAction("Sent items", this, SLOT(toolsMessageSentItems()));
   313     mFileViewMenuActions.mToolsMessageOutbox = mFileViewMenuActions.mToolsMessageAttachmentsMenu->addAction("Outbox", this, SLOT(toolsMessageOutbox()));
   272     mOptionMenuActions.mToolsMessageOutbox = mOptionMenuActions.mToolsMessageAttachmentsMenu->addAction("Outbox", this, SLOT(toolsMessageOutbox()));
   314 
   273 
   315     mFileViewMenuActions.mToolsMemoryInfo = mFileViewMenuActions.mToolsMenu->addAction("Memory info", this, SLOT(toolsMemoryInfo()));
   274     mOptionMenuActions.mToolsMemoryInfo = mOptionMenuActions.mToolsMenu->addAction("Memory info", this, SLOT(toolsMemoryInfo()));
   316     mFileViewMenuActions.mToolsMemoryInfo->setVisible(false);
   275     mOptionMenuActions.mToolsMemoryInfo->setVisible(false);
   317 
   276 
   318     mFileViewMenuActions.mToolsSecureBackupMenu = mFileViewMenuActions.mToolsMenu->addMenu("Secure backup");
   277     mOptionMenuActions.mToolsSecureBackupMenu = mOptionMenuActions.mToolsMenu->addMenu("Secure backup");
   319     mFileViewMenuActions.mToolsSecureBackupMenu->menuAction()->setVisible(false);
   278     mOptionMenuActions.mToolsSecureBackupMenu->menuAction()->setVisible(false);
   320     mFileViewMenuActions.mToolsSecureBackStart = mFileViewMenuActions.mToolsSecureBackupMenu->addAction("Start backup", this, SLOT(toolsSecureBackStart()));
   279     mOptionMenuActions.mToolsSecureBackStart = mOptionMenuActions.mToolsSecureBackupMenu->addAction("Start backup", this, SLOT(toolsSecureBackStart()));
   321     mFileViewMenuActions.mToolsSecureBackRestore = mFileViewMenuActions.mToolsSecureBackupMenu->addAction("Start restore", this, SLOT(toolsSecureBackRestore()));
   280     mOptionMenuActions.mToolsSecureBackRestore = mOptionMenuActions.mToolsSecureBackupMenu->addAction("Start restore", this, SLOT(toolsSecureBackRestore()));
   322     mFileViewMenuActions.mToolsSecureBackStop = mFileViewMenuActions.mToolsSecureBackupMenu->addAction("Stop", this, SLOT(toolsSecureBackStop()));
   281     mOptionMenuActions.mToolsSecureBackStop = mOptionMenuActions.mToolsSecureBackupMenu->addAction("Stop", this, SLOT(toolsSecureBackStop()));
   323 
   282 
   324     mFileViewMenuActions.mToolsSetDebugMask = mFileViewMenuActions.mToolsMenu->addAction("Set debug mask", this, SLOT(toolsSetDebugMaskQuestion()));
   283     mOptionMenuActions.mToolsSetDebugMask = mOptionMenuActions.mToolsMenu->addAction("Set debug mask", this, SLOT(toolsSetDebugMaskQuestion()));
   325     mFileViewMenuActions.mToolsShowOpenFilesHere = mFileViewMenuActions.mToolsMenu->addAction("Show open files here", this, SLOT(toolsShowOpenFilesHere()));
   284     mOptionMenuActions.mToolsShowOpenFilesHere = mOptionMenuActions.mToolsMenu->addAction("Show open files here", this, SLOT(toolsShowOpenFilesHere()));
   326     mFileViewMenuActions.mToolsShowOpenFilesHere->setVisible(false);
   285     mOptionMenuActions.mToolsShowOpenFilesHere->setVisible(false);
   327 }
   286 }
   328 
   287 
   329 /**
   288 /**
   330   Creates Selection mode menu item in option menu
   289   Creates Selection mode menu item in option menu
   331   */
   290   */
   332 void FileBrowserView::createSelectionMenuItem()
   291 void FileBrowserView::createSelectionMenuItem()
   333 {
   292 {
   334     if (!mFileViewMenuActions.mSelection) {
   293     if (!mOptionMenuActions.mSelection) {
   335         mFileViewMenuActions.mSelection = menu()->addAction("Selection mode");
   294         mOptionMenuActions.mSelection = menu()->addAction("Selection mode");
   336         mFileViewMenuActions.mSelection->setToolTip("Selection mode");
   295         mOptionMenuActions.mSelection->setToolTip("Selection mode");
   337         mFileViewMenuActions.mSelection->setCheckable(true);
   296         mOptionMenuActions.mSelection->setCheckable(true);
   338         connect(mFileViewMenuActions.mSelection, SIGNAL(triggered()), this, SLOT(selectionModeChanged()));
   297         connect(mOptionMenuActions.mSelection, SIGNAL(triggered()), this, SLOT(selectionModeChanged()));
   339     }
   298     }
   340 }
   299 }
   341 
   300 
   342 /**
   301 /**
   343   Creates Setting menu item in option menu
   302   Creates Setting menu item in option menu
   344   */
   303   */
   345 void FileBrowserView::createSettingsMenuItem()
   304 void FileBrowserView::createSettingsMenuItem()
   346 {
   305 {
   347     mFileViewMenuActions.mSetting = menu()->addAction("Settings...");
   306     mOptionMenuActions.mSetting = menu()->addAction("Settings...");
   348     connect(mFileViewMenuActions.mSetting, SIGNAL(triggered()), this, SIGNAL(aboutToShowSettingsView()));
   307     connect(mOptionMenuActions.mSetting, SIGNAL(triggered()), this, SIGNAL(aboutToShowSettingsView()));
   349 }
   308 }
   350 
   309 
   351 
   310 
   352 /**
   311 /**
   353   Creates About menu item in option menu
   312   Creates About menu item in option menu
   354   */
   313   */
   355 void FileBrowserView::createAboutMenuItem()
   314 void FileBrowserView::createAboutMenuItem()
   356 {
   315 {
   357     // about note
   316     // about note
   358     mFileViewMenuActions.mAbout = menu()->addAction("About");
   317     mOptionMenuActions.mAbout = menu()->addAction("About");
   359     connect(mFileViewMenuActions.mAbout, SIGNAL(triggered()), this, SLOT(about()));
   318     connect(mOptionMenuActions.mAbout, SIGNAL(triggered()), this, SLOT(about()));
   360 }
   319 }
   361 
   320 
   362 /**
   321 /**
   363   Creates Exit menu item in option menu
   322   Creates Exit menu item in option menu
   364   */
   323   */
   365 void FileBrowserView::createExitMenuItem()
   324 void FileBrowserView::createExitMenuItem()
   366 {
   325 {
   367     // application exit
   326     // application exit
   368     mFileViewMenuActions.mExit = menu()->addAction("Exit");
   327     mOptionMenuActions.mExit = menu()->addAction("Exit");
   369     connect(mFileViewMenuActions.mExit, SIGNAL(triggered()), qApp, SLOT(quit()));
   328     connect(mOptionMenuActions.mExit, SIGNAL(triggered()), qApp, SLOT(quit()));
   370 }
   329 }
   371 
   330 
   372 /**
   331 /**
   373   update menu: disk admin available only in device root view. edit available only in folder view
   332   update menu: disk admin available only in device root view. edit available only in folder view
   374   when file or folder content exist in current folder, or clipboard has copied item.
   333   when file or folder content exist in current folder, or clipboard has copied item.
   375   file and view menus updated every time regarding the folder content.
   334   file and view menus updated every time regarding the folder content.
   376   tools, settings, about, exit always available.
   335   tools, settings, about, exit always available.
   377   If there's remove and add operations at same time, always remove first
   336   If there's remove and add operations at same time, always remove first
   378   to keep to the correct menu items order.
   337   to keep to the correct menu items order.
   379   */
   338   */
   380 void FileBrowserView::updateMenu()
   339 void FileBrowserView::updateOptionMenu()
   381 {
   340 {
   382     bool emptyListBox = mFileBrowserModel->rowCount() == 0;           //iContainer->ListBoxNumberOfVisibleItems() == 0;
   341     bool isFileItemListEmpty = mFileBrowserModel->rowCount() == 0;
   383     bool driveListActive = mEngineWrapper->isDriveListViewActive(); //iModel->FileUtils()->IsDriveListViewActive();
   342     bool isDriveListActive = mEngineWrapper->isDriveListViewActive();
   384     bool normalModeActive = true;       //iModel->FileUtils()->IsNormalModeActive();
   343     bool isNormalModeActive = true;       //iModel->FileUtils()->IsNormalModeActive();
   385     bool currentDriveReadOnly = mEngineWrapper->isCurrentDriveReadOnly();   //iModel->FileUtils()->IsCurrentDriveReadOnly();
   344     bool currentDriveReadOnly = mEngineWrapper->isCurrentDriveReadOnly();   //iModel->FileUtils()->IsCurrentDriveReadOnly();
   386     bool currentItemDirectory = mEngineWrapper->getFileEntry(currentItemIndex()).isDir();   //iModel->FileUtils()->IsCurrentItemDirectory();
   345     bool currentItemDirectory = mEngineWrapper->getFileEntry(currentItemIndex()).isDir();
   387     bool listBoxSelections = mListView->selectionModel()->selection().count() == 0;      //iContainer->ListBoxSelectionIndexesCount() == 0;
   346     bool listBoxSelections = mListView->selectionModel()->selection().count() == 0;
       
   347     bool isSelectionMode = mOptionMenuActions.mSelection && mOptionMenuActions.mSelection->isChecked();
   388     bool emptyClipBoard = !mEngineWrapper->isClipBoardListInUse();
   348     bool emptyClipBoard = !mEngineWrapper->isClipBoardListInUse();
   389     bool showSnapShot = false;           //iModel->FileUtils()->DriveSnapShotPossible();
   349     bool showSnapShot = false;           //iModel->FileUtils()->DriveSnapShotPossible();
   390 
   350 
   391     bool showEditMenu(true);
   351     bool showEditMenu(true);
   392     if (driveListActive) {
   352     if (isDriveListActive) {
   393         if (!showSnapShot || emptyListBox && emptyClipBoard)
   353         if (!showSnapShot || isFileItemListEmpty && emptyClipBoard)
   394             showEditMenu = false;
   354             showEditMenu = false;
   395         else
   355         else
   396             showEditMenu = true;
   356             showEditMenu = true;
   397     } else {
   357     } else {
   398         if (emptyListBox && emptyClipBoard)
   358         if (isFileItemListEmpty && emptyClipBoard)
   399             showEditMenu = false;
   359             showEditMenu = false;
   400         else
   360         else
   401             showEditMenu = true;
   361             showEditMenu = true;
   402     }
   362     }
   403 
   363 
   404     mFileViewMenuActions.mEditMenu->menuAction()->setVisible(showEditMenu);
   364     mOptionMenuActions.mEditMenu->menuAction()->setVisible(showEditMenu);
   405     // TODO mFileViewMenuActions.mDiskAdminMenu->menuAction()->setVisible(driveListActive);
   365     // TODO mContextMenuActions.mDiskAdminMenu->menuAction()->setVisible(isDriveListActive);
   406 
   366 
   407     mFileViewMenuActions.mFileBackMoveUp->setVisible( !driveListActive);
   367     mOptionMenuActions.mFileBackMoveUp->setVisible( !isDriveListActive);
   408 
   368 
   409     //aMenuPane->SetItemDimmed(EFileBrowserCmdFileOpen, emptyListBox || driveListActive || currentItemDirectory);
   369     //aMenuPane->SetItemDimmed(EFileBrowserCmdFileOpen, isFileItemListEmpty || isDriveListActive || currentItemDirectory);
   410     mFileViewMenuActions.mFileOpenDrive->setVisible( !(emptyListBox || !driveListActive));
   370     mOptionMenuActions.mFileOpenDrive->setVisible( !(isFileItemListEmpty || !isDriveListActive));
   411     mFileViewMenuActions.mFileOpenDirectory->setVisible( !(emptyListBox || driveListActive || !currentItemDirectory));
   371     mOptionMenuActions.mFileOpenDirectory->setVisible( !(isFileItemListEmpty || isDriveListActive || !currentItemDirectory));
   412 
   372 
   413     //aMenuPane->SetItemDimmed(EFileBrowserCmdFileView, emptyListBox || listBoxSelections || currentItemDirectory || driveListActive);
   373     //aMenuPane->SetItemDimmed(EFileBrowserCmdFileView, isFileItemListEmpty || listBoxSelections || currentItemDirectory || isDriveListActive);
   414     //aMenuPane->SetItemDimmed(EFileBrowserCmd FileEdit, emptyListBox || listBoxSelections || currentItemDirectory || driveListActive);
   374     //aMenuPane->SetItemDimmed(EFileBrowserCmd FileEdit, isFileItemListEmpty || listBoxSelections || currentItemDirectory || isDriveListActive);
   415     //aMenuPane->SetItemDimmed(EFileBrowserCmdFileSendTo, emptyListBox || driveListActive || currentItemDirectory);
   375     //aMenuPane->SetItemDimmed(EFileBrowserCmdFileSendTo, isFileItemListEmpty || driveListActive || currentItemDirectory);
   416 
   376 
   417     mFileViewMenuActions.mFileNewMenu->menuAction()->setVisible(!(driveListActive || currentDriveReadOnly));
   377     mOptionMenuActions.mFileNewMenu->menuAction()->setVisible(!(isDriveListActive || currentDriveReadOnly));
   418     mFileViewMenuActions.mFileDelete->setVisible(!(emptyListBox || driveListActive || currentDriveReadOnly));
   378     mOptionMenuActions.mFileDelete->setVisible(!isFileItemListEmpty && !isDriveListActive && !currentDriveReadOnly && isSelectionMode);
   419     mFileViewMenuActions.mFileRename->setVisible(!(emptyListBox || driveListActive || currentDriveReadOnly || listBoxSelections));
   379     mOptionMenuActions.mFileRename->setVisible(!isFileItemListEmpty && !isDriveListActive && !currentDriveReadOnly && !listBoxSelections && isSelectionMode);
   420     mFileViewMenuActions.mFileTouch->setVisible(!(emptyListBox || driveListActive || currentDriveReadOnly));
   380     mOptionMenuActions.mFileTouch->setVisible(!(isFileItemListEmpty || isDriveListActive || currentDriveReadOnly));
   421     mFileViewMenuActions.mFileProperties->setVisible(!(emptyListBox || listBoxSelections));
   381     mOptionMenuActions.mFileProperties->setVisible(!(isFileItemListEmpty || listBoxSelections));
   422     // TODO mFileViewMenuActions.mFileChecksums->setVisible(!(emptyListBox || listBoxSelections || currentItemDirectory || driveListActive));
   382     // TODO mOptionMenuActions.mFileChecksumsMenu->setVisible(!(isFileItemListEmpty || listBoxSelections || currentItemDirectory || isDriveListActive));
   423     // TODO mFileViewMenuActions.mFileSetAttributes->setVisible(!(emptyListBox || driveListActive || currentDriveReadOnly));
   383     // TODO mOptionMenuActions.mFileSetAttributes->setVisible(!(isFileItemListEmpty || isDriveListActive || currentDriveReadOnly));
   424     // TODO mFileViewMenuActions.mFileCompress->setVisible(!(currentDriveReadOnly || emptyListBox || listBoxSelections || currentItemDirectory || driveListActive));
   384     // TODO mOptionMenuActions.mFileCompress->setVisible(!(currentDriveReadOnly || isFileItemListEmpty || listBoxSelections || currentItemDirectory || isDriveListActive));
   425     // TODO mFileViewMenuActions.mFileDecompress->setVisible(!(currentDriveReadOnly || emptyListBox || listBoxSelections || currentItemDirectory || driveListActive));
   385     // TODO mOptionMenuActions.mFileDecompress->setVisible(!(currentDriveReadOnly || isFileItemListEmpty || listBoxSelections || currentItemDirectory || isDriveListActive));
   426 
   386 
   427     bool currentSelected = true;    //iContainer->ListBox()->View()->ItemIsSelected(iContainer->ListBox()->View()->CurrentItemIndex());
   387 //    bool currentSelected = true;    //iContainer->ListBox()->View()->ItemIsSelected(iContainer->ListBox()->View()->CurrentItemIndex());
   428     bool allSelected = mListView->selectionModel()->selection().count() == mFileBrowserModel->rowCount();        //iContainer->ListBox()->SelectionIndexes()->Count() == iContainer->ListBox()->Model()->NumberOfItems();
   388     bool allSelected = mListView->selectionModel()->selection().count() == mFileBrowserModel->rowCount();
   429     bool noneSelected = mListView->selectionModel()->selection().count() != 0;       //iContainer->ListBox()->SelectionIndexes()->Count() == 0;
   389     bool noneSelected = mListView->selectionModel()->selection().count() != 0;
   430 
   390 
   431     //mFileViewMenuActions.mEditSnapShotToE->setVisible(driveListActive); // TODO
   391     //mOptionMenuActions.mEditSnapShotToE->setVisible(isDriveListActive); // TODO
   432     mFileViewMenuActions.mEditCut->setVisible(!(driveListActive || currentDriveReadOnly || emptyListBox));
   392     mOptionMenuActions.mEditCut->setVisible(!isDriveListActive && !currentDriveReadOnly && !isFileItemListEmpty && !isSelectionMode);
   433     mFileViewMenuActions.mEditCopy->setVisible(!(driveListActive || emptyListBox));
   393     mOptionMenuActions.mEditCopy->setVisible(!isDriveListActive && !isFileItemListEmpty);
   434     mFileViewMenuActions.mEditPaste->setVisible(!(driveListActive || emptyClipBoard || currentDriveReadOnly));
   394     mOptionMenuActions.mEditPaste->setVisible(!(isDriveListActive || emptyClipBoard || currentDriveReadOnly));
   435     mFileViewMenuActions.mEditCopyToFolder->setVisible(!(driveListActive || emptyListBox));
   395     mOptionMenuActions.mEditCopyToFolder->setVisible(!(isDriveListActive || isFileItemListEmpty));
   436     mFileViewMenuActions.mEditMoveToFolder->setVisible(!(driveListActive || currentDriveReadOnly || emptyListBox));
   396     mOptionMenuActions.mEditMoveToFolder->setVisible(!(isDriveListActive || currentDriveReadOnly || isFileItemListEmpty));
   437     mFileViewMenuActions.mEditSelect->setVisible(!(driveListActive || currentSelected || emptyListBox));
   397 
   438     mFileViewMenuActions.mEditUnselect->setVisible(!(driveListActive || !currentSelected || emptyListBox));
   398     mOptionMenuActions.mEditSelect->setVisible(false/*!isDriveListActive && !currentSelected && !isFileItemListEmpty*/);
   439     mFileViewMenuActions.mEditSelectAll->setVisible(!(driveListActive || allSelected || emptyListBox));
   399     mOptionMenuActions.mEditUnselect->setVisible(false/*!isDriveListActive && currentSelected && !isFileItemListEmpty*/);
   440     mFileViewMenuActions.mEditUnselectAll->setVisible(!(driveListActive || noneSelected || emptyListBox));
   400     mOptionMenuActions.mEditSelectAll->setVisible(!isDriveListActive && !allSelected && !isFileItemListEmpty);
   441 
   401     mOptionMenuActions.mEditUnselectAll->setVisible(!isDriveListActive && !noneSelected && !isFileItemListEmpty);
   442     // TODO mFileViewMenuActions.mViewSort->setVisible(!(!normalModeActive || driveListActive || emptyListBox));
   402 
   443     // TODO mFileViewMenuActions.mViewOrder->setVisible(!(!normalModeActive || driveListActive || emptyListBox));
   403     // TODO mOptionMenuActions.mViewSort->setVisible(!(!isNormalModeActive || isDriveListActive || isFileItemListEmpty));
   444     mFileViewMenuActions.mViewRefresh->setVisible(normalModeActive);
   404     // TODO mOptionMenuActions.mViewOrder->setVisible(!(!isNormalModeActive || isDriveListActive || isFileItemListEmpty));
   445     mFileViewMenuActions.mViewFilterEntries->setVisible(!emptyListBox);
   405     mOptionMenuActions.mViewRefresh->setVisible(isNormalModeActive);
       
   406     mOptionMenuActions.mViewFilterEntries->setVisible(!isFileItemListEmpty);
   446 
   407 
   447     // TODO R_FILEBROWSER_VIEW_SORT_SUBMENU
   408     // TODO R_FILEBROWSER_VIEW_SORT_SUBMENU
   448     // aMenuPane->SetItemButtonState(iModel->FileUtils()->SortMode(), EEikMenuItemSymbolOn);
   409     // aMenuPane->SetItemButtonState(iModel->FileUtils()->SortMode(), EEikMenuItemSymbolOn);
   449 
   410 
   450     // TODO R_FILEBROWSER_VIEW_ORDER_SUBMENU
   411     // TODO R_FILEBROWSER_VIEW_ORDER_SUBMENU
   451     // aMenuPane->SetItemButtonState(iModel->FileUtils()->OrderMode(), EEikMenuItemSymbolOn);
   412     // aMenuPane->SetItemButtonState(iModel->FileUtils()->OrderMode(), EEikMenuItemSymbolOn);
   452 
   413 
   453     // aResourceId == R_FILEBROWSER_TOOLS_SUBMENU
   414     // aResourceId == R_FILEBROWSER_TOOLS_SUBMENU
   454     bool noExtendedErrorsAllowed = mEngineWrapper->ErrRdFileExists();
   415     bool noExtendedErrorsAllowed = mEngineWrapper->ErrRdFileExists();
   455     mFileViewMenuActions.mToolsDisableExtendedErrors->setVisible(noExtendedErrorsAllowed);
   416     mOptionMenuActions.mToolsDisableExtendedErrors->setVisible(noExtendedErrorsAllowed);
   456     mFileViewMenuActions.mToolsEnableExtendedErrors->setVisible(!noExtendedErrorsAllowed);
   417     mOptionMenuActions.mToolsEnableExtendedErrors->setVisible(!noExtendedErrorsAllowed);
   457 
   418 
   458 //    bool infraRedAllowed = mEngineWrapper->FileExists(KIRAppPath);
   419 //    bool infraRedAllowed = mEngineWrapper->FileExists(KIRAppPath);
   459 //    bool bluetoothAllowed = mEngineWrapper->FileExists(KBTAppPath);
   420 //    bool bluetoothAllowed = mEngineWrapper->FileExists(KBTAppPath);
   460 //    bool usbAllowed = mEngineWrapper->FileExists(KUSBAppPath);
   421 //    bool usbAllowed = mEngineWrapper->FileExists(KUSBAppPath);
   461 //
   422 //
   462 //    bool noLocalCon = !infraRedAllowed && !bluetoothAllowed && !usbAllowed;
   423 //    bool noLocalCon = !infraRedAllowed && !bluetoothAllowed && !usbAllowed;
   463 //    mFileViewMenuActions.mToolsLocalConnectivityMenu->menuAction()->setVisible(!noLocalCon);
   424 //    mOptionMenuActions.mToolsLocalConnectivityMenu->menuAction()->setVisible(!noLocalCon);
   464 //
   425 //
   465 //    mFileViewMenuActions.mToolsLocalConnectivityActivateInfrared->setVisible(infraRedAllowed);
   426 //    mOptionMenuActions.mToolsLocalConnectivityActivateInfrared->setVisible(infraRedAllowed);
   466 //    mFileViewMenuActions.mToolsLocalConnectivityLaunchBTUI->setVisible(bluetoothAllowed);
   427 //    mOptionMenuActions.mToolsLocalConnectivityLaunchBTUI->setVisible(bluetoothAllowed);
   467 //    mFileViewMenuActions.mToolsLocalConnectivityLaunchUSBUI->setVisible(usbAllowed);
   428 //    mOptionMenuActions.mToolsLocalConnectivityLaunchUSBUI->setVisible(usbAllowed);
       
   429 }
       
   430 
       
   431 void FileBrowserView::createContextMenu()
       
   432 {
       
   433     mContextMenu = new HbMenu();
       
   434     connect(mContextMenu, SIGNAL(aboutToShow()), this, SLOT(updateContextMenu()));
       
   435 
       
   436     createFileContextMenu();
       
   437     createEditContextMenu();
       
   438     createViewContextMenu();
       
   439     createDiskAdminContextMenu();
       
   440 }
       
   441 
       
   442 
       
   443 void FileBrowserView::createFileContextMenu()
       
   444 {
       
   445     mContextMenuActions.mFileMenu = mContextMenu->addMenu("File");
       
   446 
       
   447     mContextMenuActions.mFileBackMoveUp = mContextMenuActions.mFileMenu->addAction("Back/Move up (<-)", this, SLOT(fileBackMoveUp()));
       
   448     mContextMenuActions.mFileOpenDrive = mContextMenuActions.mFileMenu->addAction("Open drive (->)", this, SLOT(fileOpenDrive()));
       
   449     mContextMenuActions.mFileOpenDirectory = mContextMenuActions.mFileMenu->addAction("Open directory (->)", this, SLOT(fileOpenDirectory()));
       
   450 //    mContextMenuActions.mFileSearch = mContextMenuActions.mFileMenu->addAction("Search...", this, SLOT(fileSearch()));
       
   451     //mContextMenuActions.mFileSearch->setVisible(false);
       
   452 
       
   453 //    mContextMenuActions.mFileNewMenu = mContextMenuActions.mFileMenu->addMenu("New");
       
   454 //    mContextMenuActions.mFileNewFile = mContextMenuActions.mFileNewMenu->addAction("File", this, SLOT(fileNewFile()));
       
   455 //    mContextMenuActions.mFileNewDirectory = mContextMenuActions.mFileNewMenu->addAction("Directory", this, SLOT(fileNewDirectory()));
       
   456 
       
   457     mContextMenuActions.mFileDelete = mContextMenuActions.mFileMenu->addAction("Delete", this, SLOT(fileDelete()));
       
   458     mContextMenuActions.mFileRename = mContextMenuActions.mFileMenu->addAction("Rename", this, SLOT(fileRename()));
       
   459     mContextMenuActions.mFileTouch = mContextMenuActions.mFileMenu->addAction("Touch", this, SLOT(fileTouch()));
       
   460     mContextMenuActions.mFileProperties = mContextMenuActions.mFileMenu->addAction("Properties", this, SLOT(fileProperties()));
       
   461 
       
   462     mContextMenuActions.mFileChecksumsMenu = mContextMenuActions.mFileMenu->addMenu("Checksums");
       
   463     mContextMenuActions.mFileChecksumsMD5 = mContextMenuActions.mFileChecksumsMenu->addAction("MD5", this, SLOT(fileChecksumsMD5()));
       
   464     mContextMenuActions.mFileChecksumsMD2 = mContextMenuActions.mFileChecksumsMenu->addAction("MD2", this, SLOT(fileChecksumsMD2()));
       
   465     mContextMenuActions.mFileChecksumsSHA1 = mContextMenuActions.mFileChecksumsMenu->addAction("SHA-1", this, SLOT(fileChecksumsSHA1()));
       
   466 
       
   467 //    mContextMenuActions.mFileSetAttributes = mContextMenuActions.mFileMenu->addAction("Set attributes...", this, SLOT(fileSetAttributes()));
       
   468 //    mContextMenuActions.mFileSetAttributes->setVisible(false);
       
   469 }
       
   470 
       
   471 void FileBrowserView::createEditContextMenu()
       
   472 {
       
   473     mContextMenuActions.mEditMenu = mContextMenu->addMenu("Edit");
       
   474 
       
   475     //mContextMenuActions.mEditSnapShotToE = mContextMenuActions.mEditMenu->addAction("Snap shot to E:", this, SLOT(editSnapShotToE()));
       
   476 //    mContextMenuActions.mEditSnapShotToE->setVisible(false);
       
   477     mContextMenuActions.mEditCut = mContextMenuActions.mEditMenu->addAction("Cut", this, SLOT(editCut()));
       
   478     mContextMenuActions.mEditCopy = mContextMenuActions.mEditMenu->addAction("Copy", this, SLOT(editCopy()));
       
   479     mContextMenuActions.mEditPaste = mContextMenuActions.mEditMenu->addAction("Paste", this, SLOT(editPaste()));
       
   480 
       
   481     mContextMenuActions.mEditCopyToFolder = mContextMenuActions.mEditMenu->addAction("Copy to folder...", this, SLOT(editCopyToFolder()));
       
   482     mContextMenuActions.mEditMoveToFolder = mContextMenuActions.mEditMenu->addAction("Move to folder...", this, SLOT(editMoveToFolder()));
       
   483 }
       
   484 
       
   485 void FileBrowserView::createViewContextMenu()
       
   486 {
       
   487 
       
   488 }
       
   489 
       
   490 /**
       
   491   Initial setup for Disk Admin submenu
       
   492   */
       
   493 void FileBrowserView::createDiskAdminContextMenu()
       
   494 {
       
   495     mContextMenuActions.mDiskAdminMenu = mContextMenu->addMenu("Disk admin");
       
   496     //mContextMenuActions.mDiskAdminMenu->menuAction()->setVisible(false);
       
   497 
       
   498     mContextMenuActions.mDiskAdminSetDrivePassword = mContextMenuActions.mDiskAdminMenu->addAction("Set drive password", this, SLOT(diskAdminSetDrivePassword()));
       
   499     mContextMenuActions.mDiskAdminUnlockDrive = mContextMenuActions.mDiskAdminMenu->addAction("Unlock drive", this, SLOT(diskAdminUnlockDrive()));
       
   500     mContextMenuActions.mDiskAdminClearDrivePassword = mContextMenuActions.mDiskAdminMenu->addAction("Clear drive password", this, SLOT(diskAdminClearDrivePassword()));
       
   501     mContextMenuActions.mDiskAdminEraseDrivePassword = mContextMenuActions.mDiskAdminMenu->addAction("Erase drive password", this, SLOT(diskAdminEraseDrivePassword()));
       
   502 
       
   503     mContextMenuActions.mDiskAdminFormatDrive = mContextMenuActions.mDiskAdminMenu->addAction("Format drive", this, SLOT(diskAdminFormatDrive()));
       
   504     mContextMenuActions.mDiskAdminFormatDrive->setVisible(false);
       
   505     mContextMenuActions.mDiskAdminQuickFormatDrive = mContextMenuActions.mDiskAdminMenu->addAction("Quick format drive", this, SLOT(diskAdminQuickFormatDrive()));
       
   506     mContextMenuActions.mDiskAdminQuickFormatDrive->setVisible(false);
       
   507 
       
   508     mContextMenuActions.mDiskAdminCheckDisk = mContextMenuActions.mDiskAdminMenu->addAction("Check disk", this, SLOT(diskAdminCheckDisk()));
       
   509     mContextMenuActions.mDiskAdminScanDrive = mContextMenuActions.mDiskAdminMenu->addAction("Scan drive", this, SLOT(diskAdminScanDrive()));
       
   510     mContextMenuActions.mDiskAdminSetDriveName = mContextMenuActions.mDiskAdminMenu->addAction("Set drive name", this, SLOT(diskAdminSetDriveName()));
       
   511     mContextMenuActions.mDiskAdminSetDriveVolumeLabel = mContextMenuActions.mDiskAdminMenu->addAction("Set drive volume label", this, SLOT(diskAdminSetDriveVolumeLabel()));
       
   512     mContextMenuActions.mDiskAdminEjectDrive = mContextMenuActions.mDiskAdminMenu->addAction("Eject drive", this, SLOT(diskAdminEjectDrive()));
       
   513     mContextMenuActions.mDiskAdminDismountDrive = mContextMenuActions.mDiskAdminMenu->addAction("Dismount drive", this, SLOT(diskAdminDismountDrive()));
       
   514     mContextMenuActions.mDiskAdminEraseMBR = mContextMenuActions.mDiskAdminMenu->addAction("Erase MBR", this, SLOT(diskAdminEraseMBR()));
       
   515     mContextMenuActions.mDiskAdminPartitionDrive = mContextMenuActions.mDiskAdminMenu->addAction("Partition drive", this, SLOT(diskAdminPartitionDrive()));
       
   516 }
       
   517 
       
   518 void FileBrowserView::updateContextMenu()
       
   519 {
       
   520     bool isFileItemListEmpty = mFileBrowserModel->rowCount() == 0;
       
   521     bool isDriveListActive = mEngineWrapper->isDriveListViewActive();
       
   522 //    bool isNormalModeActive = true;       //iModel->FileUtils()->IsNormalModeActive();
       
   523     bool currentDriveReadOnly = mEngineWrapper->isCurrentDriveReadOnly();
       
   524     bool currentItemDirectory = mEngineWrapper->getFileEntry(mCurrentIndex /*currentItemIndex()*/).isDir();
       
   525     bool listBoxSelections = mListView->selectionModel()->selection().count() == 0;
       
   526     bool isSelectionMode = mOptionMenuActions.mSelection && mOptionMenuActions.mSelection->isChecked();
       
   527     bool emptyClipBoard = !mEngineWrapper->isClipBoardListInUse();
       
   528 //    bool showSnapShot = false;           //iModel->FileUtils()->DriveSnapShotPossible();
       
   529 
       
   530 //    bool showEditMenu(true);
       
   531 //    if (isDriveListActive) {
       
   532 //        if (!showSnapShot || isFileItemListEmpty && emptyClipBoard)
       
   533 //            showEditMenu = false;
       
   534 //        else
       
   535 //            showEditMenu = true;
       
   536 //    } else {
       
   537 //        if (isFileItemListEmpty && emptyClipBoard)
       
   538 //            showEditMenu = false;
       
   539 //        else
       
   540 //            showEditMenu = true;
       
   541 //    }
       
   542 
       
   543     // File submenu
       
   544     mContextMenuActions.mFileBackMoveUp->setVisible( !isDriveListActive);
       
   545     mContextMenuActions.mFileOpenDrive->setVisible( !isFileItemListEmpty && isDriveListActive);
       
   546     mContextMenuActions.mFileOpenDirectory->setVisible( !isFileItemListEmpty && !isDriveListActive && currentItemDirectory);
       
   547 
       
   548 //    mContextMenuActions.mFileNewMenu->menuAction()->setVisible(!(isDriveListActive || currentDriveReadOnly));
       
   549     mContextMenuActions.mFileDelete->setVisible(!isFileItemListEmpty && !isDriveListActive && !currentDriveReadOnly);
       
   550     mContextMenuActions.mFileRename->setVisible(!isFileItemListEmpty && !isDriveListActive && !currentDriveReadOnly && !listBoxSelections);
       
   551     mContextMenuActions.mFileTouch->setVisible(!isFileItemListEmpty && !isDriveListActive && !currentDriveReadOnly);
       
   552     mContextMenuActions.mFileProperties->setVisible(!isFileItemListEmpty && !listBoxSelections && !isSelectionMode);
       
   553 
       
   554     mContextMenuActions.mFileChecksumsMenu->menuAction()->setVisible(!(isFileItemListEmpty || isSelectionMode /*|| listBoxSelections*/ || currentItemDirectory || isDriveListActive));
       
   555     // Edit submenu
       
   556     mContextMenuActions.mEditMenu->menuAction()->setVisible(!isDriveListActive);
       
   557     mContextMenuActions.mEditCut->setVisible(!(isDriveListActive || currentDriveReadOnly || isFileItemListEmpty));
       
   558     mContextMenuActions.mEditCopy->setVisible(!(isDriveListActive || isFileItemListEmpty));
       
   559     mContextMenuActions.mEditPaste->setVisible(!isDriveListActive && !emptyClipBoard && !currentDriveReadOnly);
       
   560     mContextMenuActions.mEditCopyToFolder->setVisible(!(isDriveListActive || isFileItemListEmpty));
       
   561     mContextMenuActions.mEditMoveToFolder->setVisible(!(isDriveListActive || currentDriveReadOnly || isFileItemListEmpty));
       
   562     //DiskAdmin submenu
       
   563     mContextMenuActions.mDiskAdminMenu->menuAction()->setVisible(isDriveListActive);
       
   564 }
       
   565 
       
   566 // ---------------------------------------------------------------------------
       
   567 
       
   568 void FileBrowserView::onLongPressed(HbAbstractViewItem *listViewItem, QPointF coords)
       
   569 {
       
   570     //Q_UNUSED(listViewItem);
       
   571 
       
   572 //    QItemSelectionModel *selectionIndexes = mListView->selectionModel();
       
   573 
       
   574     // by default use selected items
       
   575 //    if (selectionIndexes && selectionIndexes->hasSelection()) {
       
   576 //        mSelectionIndexes = mListView->selectionModel()->selectedIndexes();
       
   577 //    } else {
       
   578         mCurrentIndex = listViewItem->modelIndex();
       
   579 //        mSelectionIndexes.clear();
       
   580 //        mSelectionIndexes.append(mModelIndex);
       
   581 //    }
       
   582     mContextMenu->setPreferredPos(coords);
       
   583     mContextMenu->show();
       
   584 }
       
   585 
       
   586 
       
   587 /**
       
   588   Create a file browser tool bar
       
   589   */
       
   590 void FileBrowserView::createToolBar()
       
   591 {
       
   592     mToolBar = new HbToolBar(this);
       
   593 
       
   594     mToolbarBackAction = new HbAction(/*"Back"*/);
       
   595     mToolbarBackAction->setToolTip("Back");
       
   596     mToolbarBackAction->setIcon(HbIcon(QString(":/qgn_indi_tb_filebrowser_folder_parent.svg")));
       
   597     connect(mToolbarBackAction, SIGNAL(triggered()), this, SLOT(fileBackMoveUp()));
       
   598     mToolBar->addAction(mToolbarBackAction);
       
   599 
       
   600     if (mOptionMenuActions.mSelection) {
       
   601         mToolBar->addAction(mOptionMenuActions.mSelection);
       
   602     }
       
   603 
       
   604     setToolBar(mToolBar);
   468 }
   605 }
   469 
   606 
   470 /**
   607 /**
   471   Refresh FileBrowser view
   608   Refresh FileBrowser view
   472   */
   609   */
   473 void FileBrowserView::refreshList()
   610 void FileBrowserView::refreshList()
   474 {
   611 {
   475     mEngineWrapper->refreshView();
   612     mEngineWrapper->refreshView();
   476     mNaviPane->setPlainText(QString(mEngineWrapper->currentPath()));
   613 //    mNaviPane->setPlainText(QString(mEngineWrapper->currentPath()));
   477     mListView->reset();
   614     mListView->reset();
   478     mListView->setModel(mFileBrowserModel);
   615     mListView->setModel(mFileBrowserModel);
   479     mToolbarBackAction->setEnabled(!mEngineWrapper->isDriveListViewActive());
   616     mToolbarBackAction->setEnabled(!mEngineWrapper->isDriveListViewActive());
       
   617 
       
   618     TListingMode listingMode = mEngineWrapper->listingMode();
       
   619     if (listingMode == ENormalEntries)
       
   620         mNaviPane->setPlainText(QString(mEngineWrapper->currentPath()));
       
   621     else if (listingMode == ESearchResults)
       
   622         mNaviPane->setPlainText(QString(tr("Search results")));
       
   623     else if (listingMode == EOpenFiles)
       
   624         mNaviPane->setPlainText(QString(tr("Open files")));
       
   625     else if (listingMode == EMsgAttachmentsInbox)
       
   626         mNaviPane->setPlainText(QString(tr("Attachments in Inbox")));
       
   627     else if (listingMode == EMsgAttachmentsDrafts)
       
   628         mNaviPane->setPlainText(QString(tr("Attachments in Drafts")));
       
   629     else if (listingMode == EMsgAttachmentsSentItems)
       
   630         mNaviPane->setPlainText(QString(tr("Attachments in Sent Items")));
       
   631     else if (listingMode == EMsgAttachmentsOutbox)
       
   632         mNaviPane->setPlainText(QString(tr("Attachments in Outbox")));
   480 }
   633 }
   481 
   634 
   482 /**
   635 /**
   483   Populate changed folder content, i.e. in practice navigation list items
   636   Populate changed folder content, i.e. in practice navigation list items
   484   */
   637   */
   624     dialog->setContentWidget(list);
   777     dialog->setContentWidget(list);
   625     // Launch popup and handle the user response:
   778     // Launch popup and handle the user response:
   626     dialog->open();
   779     dialog->open();
   627 }
   780 }
   628 
   781 
   629 QModelIndexList FileBrowserView::getSelectedItemsOrCurrentItem()
   782 void FileBrowserView::storeSelectedItemsOrCurrentItem()
   630 {
   783 {
   631     QModelIndexList modelIndexList;
       
   632     QItemSelectionModel *selectionIndexes = mListView->selectionModel();
   784     QItemSelectionModel *selectionIndexes = mListView->selectionModel();
   633 
   785 
   634     // by default use selected items
   786     // by default use selected items
   635     if (selectionIndexes) {
   787     if (selectionIndexes) {
   636         if (selectionIndexes->hasSelection()) {
   788         if (selectionIndexes->hasSelection()) {
   637             modelIndexList = mListView->selectionModel()->selectedIndexes();
   789             mSelectionIndexes = mListView->selectionModel()->selectedIndexes();
   638         } else { // or if none selected, use the current item index
   790         } else { // or if none selected, use the current item index
       
   791             mSelectionIndexes.clear();
       
   792             mSelectionIndexes.append(mCurrentIndex);
   639 //            QModelIndex currentIndex = currentItemIndex();
   793 //            QModelIndex currentIndex = currentItemIndex();
   640 //            if (mFileBrowserModel->rowCount(currentItemIndex) > currentItemIndex && currentItemIndex >= 0)
   794 //            if (mFileBrowserModel->rowCount(currentItemIndex) > currentItemIndex && currentItemIndex >= 0)
   641 //            {
   795 //            {
   642 //                modelIndexList.append(currentIndex);
   796 //                modelIndexList.append(currentIndex);
   643 //            }
   797 //            }
   644         }
   798         }
   645     }
   799     }
   646     mClipBoardInUse = true;
   800 //    mClipBoardInUse = true;
   647     return modelIndexList;
       
   648 }
   801 }
   649 
   802 
   650 // ---------------------------------------------------------------------------
   803 // ---------------------------------------------------------------------------
   651 
   804 
   652 QModelIndex FileBrowserView::currentItemIndex()
   805 QModelIndex FileBrowserView::currentItemIndex()
   653 {
   806 {
   654     return mListView->selectionModel()->currentIndex();
   807     return mCurrentIndex;//mListView->selectionModel()->currentIndex();
   655 }
   808 }
   656 
   809 
   657 // ---------------------------------------------------------------------------
   810 // ---------------------------------------------------------------------------
   658 // operations in File Menu
   811 // operations in File Menu
   659 // ---------------------------------------------------------------------------
   812 // ---------------------------------------------------------------------------
   692 {
   845 {
   693     // TODO make a separate function to be called from here and fileOpenDirectory()
   846     // TODO make a separate function to be called from here and fileOpenDirectory()
   694     mLocationChanged = true;
   847     mLocationChanged = true;
   695     // get selected drive or directory from list view model and open it:
   848     // get selected drive or directory from list view model and open it:
   696     //if (mListView->selectionModel()->hasSelection()) {
   849     //if (mListView->selectionModel()->hasSelection()) {
   697     if (mListView->selectionModel()->selection().count() != 0) {
   850 //    if (mListView->selectionModel()->selection().count() != 0) {
   698         QModelIndex currentIndex = currentItemIndex();
   851 //        QModelIndex currentIndex = currentItemIndex();
   699         mEngineWrapper->moveDownToDirectory(currentIndex);
   852         mEngineWrapper->moveDownToDirectory(mCurrentIndex);
   700         populateFolderContent();
   853         populateFolderContent();
   701     } else {
   854 //    } else {
   702         Notifications::showErrorNote("not selected item!");
   855 //        Notifications::showErrorNote("not selected item!");
   703     }
   856 //    }
   704 }
   857 }
   705 
   858 
   706 void FileBrowserView::fileOpenDirectory()
   859 void FileBrowserView::fileOpenDirectory()
   707 {
   860 {
   708     mLocationChanged = true;
   861     mLocationChanged = true;
   709     // get selected drive or directory from list view model and open it:
   862     // get selected drive or directory from list view model and open it:
   710     //if (mListView->selectionModel()->hasSelection()) {
   863     //if (mListView->selectionModel()->hasSelection()) {
   711     if (mListView->selectionModel()->selection().count() != 0) {
   864 //    if (mListView->selectionModel()->selection().count() != 0) {
   712         QModelIndex currentIndex = currentItemIndex();
   865 //        QModelIndex currentIndex = currentItemIndex();
   713         mEngineWrapper->moveDownToDirectory(currentIndex);
   866         mEngineWrapper->moveDownToDirectory(mCurrentIndex);
   714         populateFolderContent();
   867         populateFolderContent();
   715     } else {
   868 //    } else {
   716         Notifications::showErrorNote("not selected item!");
   869 //        Notifications::showErrorNote("not selected item!");
   717     }
   870 //    }
   718 }
   871 }
   719 
   872 
   720 void FileBrowserView::fileSearch()
   873 void FileBrowserView::fileSearch()
   721 {
   874 {
   722     QString searchPath;
   875     QString searchPath;
   777 /**
   930 /**
   778   Question for Delete actually selected files
   931   Question for Delete actually selected files
   779   */
   932   */
   780 void FileBrowserView::fileDelete()
   933 void FileBrowserView::fileDelete()
   781 {
   934 {
   782     QModelIndexList currentSelection = getSelectedItemsOrCurrentItem();
   935     storeSelectedItemsOrCurrentItem();
   783     const QString messageFormat = "Delete %1 entries?";
   936     const QString messageFormat = "Delete %1 entries?";
   784     QString message = messageFormat.arg(currentSelection.count());
   937     QString message = messageFormat.arg(mSelectionIndexes.count());
   785     HbMessageBox::question(message, this, SLOT(doFileDelete(HbAction*)));
   938     HbMessageBox::question(message, this, SLOT(doFileDelete(HbAction*)));
   786 }
   939 }
   787 
   940 
   788 /**
   941 /**
   789   Delete actually selected files
   942   Delete actually selected files
   790   */
   943   */
   791 void FileBrowserView::doFileDelete(HbAction* action)
   944 void FileBrowserView::doFileDelete(HbAction* action)
   792 {
   945 {
   793     if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
   946     if (action && action->text().compare(QString("Yes"), Qt::CaseInsensitive) == 0) {
   794         QModelIndexList currentSelection = getSelectedItemsOrCurrentItem();
   947         //storeSelectedItemsOrCurrentItem();
   795         mEngineWrapper->deleteItems(currentSelection);
   948         mEngineWrapper->deleteItems(mSelectionIndexes);
   796         refreshList();
   949         refreshList();
   797     }
   950     }
   798 }
   951 }
   799 
   952 
   800 /**
   953 /**
   801   Open rename dialog for actually selected files
   954   Open rename dialog for actually selected files
   802   */
   955   */
   803 void FileBrowserView::fileRename()
   956 void FileBrowserView::fileRename()
   804 {
   957 {
   805     QModelIndexList currentSelection = getSelectedItemsOrCurrentItem();
   958     storeSelectedItemsOrCurrentItem();
   806     mEngineWrapper->setCurrentSelection(currentSelection);
   959     mEngineWrapper->setCurrentSelection(mSelectionIndexes);
   807 
   960 
   808     for (int i(0), ie(currentSelection.count()); i < ie; ++i ) {
   961     for (int i(0), ie(mSelectionIndexes.count()); i < ie; ++i ) {
   809         mProceed = (i == ie-1); // if the last item
   962         mProceed = (i == ie-1); // if the last item
   810         mModelIndex = currentSelection.at(i);
   963         mModelIndex = mSelectionIndexes.at(i);
   811         FileEntry entry = mEngineWrapper->getFileEntry(mModelIndex);
   964         FileEntry entry = mEngineWrapper->getFileEntry(mModelIndex);
   812 
   965 
   813         QString heading = QString("Enter new name");
   966         QString heading = QString("Enter new name");
   814         HbInputDialog::getText(heading, this, SLOT(doFileRename(HbAction*)), entry.name(), scene());
   967         HbInputDialog::getText(heading, this, SLOT(doFileRename(HbAction*)), entry.name(), scene());
   815     }
   968     }
   855 /**
  1008 /**
   856   Touch actually selected files
  1009   Touch actually selected files
   857   */
  1010   */
   858 void FileBrowserView::fileTouch()
  1011 void FileBrowserView::fileTouch()
   859 {
  1012 {
   860     QModelIndexList currentSelection = getSelectedItemsOrCurrentItem();
  1013     storeSelectedItemsOrCurrentItem();
   861     mEngineWrapper->setCurrentSelection(currentSelection);
  1014     mEngineWrapper->setCurrentSelection(mSelectionIndexes);
   862 
  1015 
   863     if (mEngineWrapper->selectionHasDirs()) {
  1016     if (mEngineWrapper->selectionHasDirs()) {
   864         const QString message = "Recurse touch for all selected dirs?";
  1017         const QString message = "Recurse touch for all selected dirs?";
   865         HbMessageBox::question(message, this, SLOT(doFileTouch(HbAction*)));
  1018         HbMessageBox::question(message, this, SLOT(doFileTouch(HbAction*)));
   866     }
  1019     }
   898     fileChecksums(EFileChecksumsSHA1);
  1051     fileChecksums(EFileChecksumsSHA1);
   899 }
  1052 }
   900 
  1053 
   901 void FileBrowserView::fileChecksums(TFileBrowserCmdFileChecksums checksumType)
  1054 void FileBrowserView::fileChecksums(TFileBrowserCmdFileChecksums checksumType)
   902 {
  1055 {
   903     QModelIndex currentIndex = currentItemIndex();
  1056 //    QModelIndex currentIndex = currentItemIndex();
   904     mEngineWrapper->showFileCheckSums(currentIndex, checksumType);
  1057     mEngineWrapper->showFileCheckSums(mCurrentIndex, checksumType);
   905 }
  1058 }
   906 
  1059 
   907 /**
  1060 /**
   908   Show file properties
  1061   Show file properties
   909   */
  1062   */
   931   Set selected files into clipboard.
  1084   Set selected files into clipboard.
   932   Selected item will be removed after paste operation.
  1085   Selected item will be removed after paste operation.
   933   */
  1086   */
   934 void FileBrowserView::editCut()
  1087 void FileBrowserView::editCut()
   935 {
  1088 {
   936     mClipboardIndices = getSelectedItemsOrCurrentItem();
  1089     storeSelectedItemsOrCurrentItem();
   937 
  1090     mClipboardIndexes = mSelectionIndexes;
   938     mEngineWrapper->clipboardCut(mClipboardIndices);
  1091 
   939 
  1092     mEngineWrapper->clipboardCut(mClipboardIndexes);
   940     int operations = mClipboardIndices.count();
  1093 
       
  1094     int operations = mClipboardIndexes.count();
   941     const QString message = QString ("%1 entries cut to clipboard");
  1095     const QString message = QString ("%1 entries cut to clipboard");
   942     QString noteMsg = message.arg(operations);
  1096     QString noteMsg = message.arg(operations);
   943 
  1097 
   944     Notifications::showInformationNote(noteMsg);
  1098     Notifications::showInformationNote(noteMsg);
   945 }
  1099 }
   948   Set selected files into clipboard.
  1102   Set selected files into clipboard.
   949   Selected item will not be removed after paste operation.
  1103   Selected item will not be removed after paste operation.
   950   */
  1104   */
   951 void FileBrowserView::editCopy()
  1105 void FileBrowserView::editCopy()
   952 {
  1106 {
   953     mClipboardIndices = getSelectedItemsOrCurrentItem();
  1107     storeSelectedItemsOrCurrentItem();
   954 
  1108     mClipboardIndexes = mSelectionIndexes;
   955     mEngineWrapper->clipboardCopy(mClipboardIndices);
  1109 
   956 
  1110     mEngineWrapper->clipboardCopy(mClipboardIndexes);
   957     int operations = mClipboardIndices.count();
  1111 
       
  1112     int operations = mClipboardIndexes.count();
   958 
  1113 
   959     const QString message = QString ("%1 entries copied to clipboard");
  1114     const QString message = QString ("%1 entries copied to clipboard");
   960     QString noteMsg = message.arg(operations);
  1115     QString noteMsg = message.arg(operations);
   961 
  1116 
   962     Notifications::showInformationNote(noteMsg);
  1117     Notifications::showInformationNote(noteMsg);
   970 {
  1125 {
   971     bool someEntryExists(false);
  1126     bool someEntryExists(false);
   972 
  1127 
   973     // TODO Set entry items here
  1128     // TODO Set entry items here
   974 
  1129 
   975     someEntryExists = mEngineWrapper->isDestinationEntriesExists(mClipboardIndices, mEngineWrapper->currentPath());
  1130     someEntryExists = mEngineWrapper->isDestinationEntriesExists(mClipboardIndexes, mEngineWrapper->currentPath());
   976     if (someEntryExists) {
  1131     if (someEntryExists) {
   977         fileOverwriteDialog();
  1132         fileOverwriteDialog();
   978     }
  1133     }
   979     mEngineWrapper->clipboardPaste(mOverwriteOptions);
  1134     mEngineWrapper->clipboardPaste(mOverwriteOptions);
   980 }
  1135 }
   997     if (dlg && action && action->text().compare(QString("Ok"), Qt::CaseInsensitive) == 0) {
  1152     if (dlg && action && action->text().compare(QString("Ok"), Qt::CaseInsensitive) == 0) {
   998         QString targetDir = dlg->value().toString();
  1153         QString targetDir = dlg->value().toString();
   999         bool someEntryExists(false);
  1154         bool someEntryExists(false);
  1000 
  1155 
  1001         // TODO Set entry items here
  1156         // TODO Set entry items here
  1002         QModelIndexList currentSelection = getSelectedItemsOrCurrentItem();
  1157         storeSelectedItemsOrCurrentItem();
  1003         mEngineWrapper->setCurrentSelection(currentSelection);
  1158         mEngineWrapper->setCurrentSelection(mSelectionIndexes);
  1004 
  1159 
  1005         someEntryExists = mEngineWrapper->isDestinationEntriesExists(currentSelection, targetDir);
  1160         someEntryExists = mEngineWrapper->isDestinationEntriesExists(mSelectionIndexes, targetDir);
  1006         if (someEntryExists) {
  1161         if (someEntryExists) {
  1007             fileOverwriteDialog();
  1162             fileOverwriteDialog();
  1008         }
  1163         }
  1009         mEngineWrapper->copyToFolder(targetDir, mOverwriteOptions, false);
  1164         mEngineWrapper->copyToFolder(targetDir, mOverwriteOptions, false);
  1010         refreshList();
  1165         refreshList();
  1029     if (dlg && action && action->text().compare(QString("Ok"), Qt::CaseInsensitive) == 0) {
  1184     if (dlg && action && action->text().compare(QString("Ok"), Qt::CaseInsensitive) == 0) {
  1030         QString targetDir = dlg->value().toString();
  1185         QString targetDir = dlg->value().toString();
  1031         bool someEntryExists(false);
  1186         bool someEntryExists(false);
  1032 
  1187 
  1033         // TODO Set entry items here
  1188         // TODO Set entry items here
  1034         QModelIndexList currentSelection = getSelectedItemsOrCurrentItem();
  1189         storeSelectedItemsOrCurrentItem();
  1035         mEngineWrapper->setCurrentSelection(currentSelection);
  1190         mEngineWrapper->setCurrentSelection(mSelectionIndexes);
  1036 
  1191 
  1037         someEntryExists = mEngineWrapper->isDestinationEntriesExists(currentSelection, targetDir);
  1192         someEntryExists = mEngineWrapper->isDestinationEntriesExists(mSelectionIndexes, targetDir);
  1038         if (someEntryExists) {
  1193         if (someEntryExists) {
  1039             fileOverwriteDialog();
  1194             fileOverwriteDialog();
  1040         }
  1195         }
  1041         mEngineWrapper->copyToFolder(targetDir, mOverwriteOptions, true);
  1196         mEngineWrapper->copyToFolder(targetDir, mOverwriteOptions, true);
  1042         refreshList();
  1197         refreshList();
  1756 // ---------------------------------------------------------------------------
  1911 // ---------------------------------------------------------------------------
  1757 // main menu items
  1912 // main menu items
  1758 // ---------------------------------------------------------------------------
  1913 // ---------------------------------------------------------------------------
  1759 void FileBrowserView::selectionModeChanged()
  1914 void FileBrowserView::selectionModeChanged()
  1760 {
  1915 {
  1761     if (mFileViewMenuActions.mSelection->isChecked()) {
  1916     if (mOptionMenuActions.mSelection->isChecked()) {
  1762          activateSelectionMode();
  1917          activateSelectionMode();
  1763      } else {
  1918      } else {
  1764          deActivateSelectionMode();
  1919          deActivateSelectionMode();
  1765      }
  1920      }
  1766 }
  1921 }