| 2512 | } |
| 2513 | |
| 2514 | void LibraryWindow::deleteComicsFromDisk() |
| 2515 | { |
| 2516 | int ret = QMessageBox::question(this, tr("Delete comics"), tr("All the selected comics will be deleted from your disk. Are you sure?"), QMessageBox::Yes, QMessageBox::No); |
| 2517 | |
| 2518 | if (ret == QMessageBox::Yes) { |
| 2519 | |
| 2520 | QModelIndexList indexList = getSelectedComics(); |
| 2521 | |
| 2522 | QList<ComicDB> comics = comicsModel->getComics(indexList); |
| 2523 | |
| 2524 | QList<QString> paths; |
| 2525 | QString libraryPath = currentPath(); |
| 2526 | for (const auto &comic : comics) { |
| 2527 | paths.append(libraryPath + comic.path); |
| 2528 | QLOG_TRACE() << comic.path; |
| 2529 | QLOG_TRACE() << comic.id; |
| 2530 | QLOG_TRACE() << comic.parentId; |
| 2531 | } |
| 2532 | |
| 2533 | auto remover = new ComicsRemover(indexList, paths, comics.at(0).parentId); |
| 2534 | const auto thread = new QThread(this); |
| 2535 | moveAndConnectRemoverToThread(remover, thread); |
| 2536 | |
| 2537 | comicsModel->startTransaction(); |
| 2538 | |
| 2539 | connect(remover, &ComicsRemover::remove, comicsModel, &ComicModel::remove); |
| 2540 | connect(remover, &ComicsRemover::removeError, this, &LibraryWindow::setRemoveError); |
| 2541 | connect(remover, &ComicsRemover::finished, comicsModel, &ComicModel::finishTransaction); |
| 2542 | connect(remover, &ComicsRemover::removedItemsFromFolder, foldersModel, &FolderModel::updateFolderChildrenInfo); |
| 2543 | |
| 2544 | connect(remover, &ComicsRemover::finished, this, &LibraryWindow::checkEmptyFolder); |
| 2545 | connect(remover, &ComicsRemover::finished, this, &LibraryWindow::checkRemoveError); |
| 2546 | |
| 2547 | thread->start(); |
| 2548 | } |
| 2549 | } |
| 2550 | |
| 2551 | void LibraryWindow::deleteComicsFromList() |
| 2552 | { |
nothing calls this directly
no test coverage detected