@@ -305,9 +305,10 @@ void MainWindow::OnFileManagerChanged(GenericStatus status, FileOperation operat
305305 QString storage = ui->storageOption ->currentText ();
306306 storage = storage.contains (" User's Data" , Qt::CaseInsensitive) ? " " : storage;
307307
308- // partial update
309- QFileInfo fileInfo (message);
310- QString dirPath = fileInfo.dir ().absolutePath ();
308+ // partial update — trailing '/' means message is already the refresh directory
309+ QString dirPath = message.endsWith (' /' )
310+ ? message.chopped (1 )
311+ : QFileInfo (message).dir ().absolutePath ();
311312 DeviceBridge::Get ()->GetAccessibleStorage (dirPath, storage, true );
312313 }
313314 }
@@ -426,21 +427,42 @@ void MainWindow::OnPushFileClicked()
426427
427428void MainWindow::OnDeleteFileClicked ()
428429{
429- FileManagerAction ([this ](QString& initialText, QString& storageAccess){
430- QMessageBox msgBox (this );
431- msgBox.setWindowTitle (" Delete" );
432- msgBox.setText (" Are you sure to delete " + initialText + " from device?" );
433- msgBox.setStandardButtons (QMessageBox::Ok | QMessageBox::Cancel);
434- msgBox.setDefaultButton (QMessageBox::Ok);
435-
436- int ret = msgBox.exec ();
437- if (ret == QMessageBox::Ok) {
438- DeviceBridge::Get ()->DeleteFromStorage (initialText, storageAccess);
439- }
440- else {
441- m_loadingFileOperation->close ();
442- }
443- }, false );
430+ QString storage = ui->storageOption ->currentText ();
431+ storage = storage.contains (" User's Data" , Qt::CaseInsensitive) ? " " : storage;
432+
433+ QModelIndexList selected = ui->fileBrowserTree ->selectionModel ()->selectedIndexes ();
434+ QStringList selectedPaths;
435+ for (const QModelIndex& idx : selected) {
436+ if (idx.column () != 0 ) continue ;
437+ QString path = idx.data (Qt::UserRole).toString ();
438+ if (path.isEmpty ()) continue ;
439+ if (!selectedPaths.contains (path))
440+ selectedPaths.append (path);
441+ }
442+
443+ if (selectedPaths.isEmpty ()) {
444+ QMessageBox::critical (this , " Error" , " Please choose file(s) in File Manager's Browser!" , QMessageBox::Ok);
445+ return ;
446+ }
447+
448+ QString confirmMsg = selectedPaths.size () == 1
449+ ? " Are you sure to delete " + selectedPaths.first () + " from device?"
450+ : QString (" Are you sure to delete %1 items from device?" ).arg (selectedPaths.size ());
451+
452+ QMessageBox msgBox (this );
453+ msgBox.setWindowTitle (" Delete" );
454+ msgBox.setText (confirmMsg);
455+ msgBox.setStandardButtons (QMessageBox::Ok | QMessageBox::Cancel);
456+ msgBox.setDefaultButton (QMessageBox::Ok);
457+
458+ if (msgBox.exec () == QMessageBox::Ok) {
459+ if (selectedPaths.size () == 1 )
460+ DeviceBridge::Get ()->DeleteFromStorage (selectedPaths.first (), storage);
461+ else
462+ DeviceBridge::Get ()->DeleteMultipleFromStorage (selectedPaths, storage);
463+ } else {
464+ m_loadingFileOperation->close ();
465+ }
444466}
445467
446468void MainWindow::OnRenameFileClicked ()
0 commit comments