diff --git a/YACReaderLibrary/comic_files_manager.cpp b/YACReaderLibrary/comic_files_manager.cpp index f187aab6..0d2f3ef9 100644 --- a/YACReaderLibrary/comic_files_manager.cpp +++ b/YACReaderLibrary/comic_files_manager.cpp @@ -3,6 +3,8 @@ #include #include +#include + ComicFilesManager::ComicFilesManager(QObject *parent) : QObject(parent), canceled(false) { @@ -27,6 +29,16 @@ void ComicFilesManager::process() int i=0; bool successProcesingFiles = false; foreach (QString source, comics) { + + if(canceled) + { + if(successProcesingFiles) + emit success(); + emit finished(); + + return; //TODO rollback? + } + QFileInfo info(source); if(QFile::copy(source, QDir::cleanPath(folder+'/'+info.fileName()))) { @@ -46,5 +58,6 @@ void ComicFilesManager::process() void ComicFilesManager::cancel() { - + QLOG_DEBUG() << "Operation canceled"; + canceled = true; } diff --git a/YACReaderLibrary/library_window.cpp b/YACReaderLibrary/library_window.cpp index fb134107..36f1fd55 100644 --- a/YACReaderLibrary/library_window.cpp +++ b/YACReaderLibrary/library_window.cpp @@ -1335,6 +1335,8 @@ void LibraryWindow::processComicFiles(ComicFilesManager * comicFilesManager, QPr comicFilesManager->moveToThread(thread); + connect(progressDialog, SIGNAL(canceled()), comicFilesManager, SLOT(cancel()), Qt::DirectConnection); + connect(thread, SIGNAL(started()), comicFilesManager, SLOT(process())); connect(comicFilesManager, SIGNAL(success()), this, SLOT(updateCopyMoveFolderDestination())); connect(comicFilesManager, SIGNAL(finished()), thread, SLOT(quit()));