diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index eb60358..50390f9 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include "mainwindow.h" #include "ui_mainwindow.h" #include "clicklabel.h" @@ -61,7 +62,27 @@ void MainWindow::pdfPreviewReceived(PdfPreview preview) ClickLabel *label = new ClickLabel(); label->setPixmap(QPixmap::fromImage(preview.previewImage)); ui->scrollAreaWidgetContents->layout()->addWidget(label); - connect(label, &ClickLabel::clicked, [=]() { QDesktopServices::openUrl(QUrl::fromLocalFile(preview.documentPath)); }); + connect(label, &ClickLabel::clicked, [=]() { + QSettings settings; + QString command = settings.value("pdfviewer").toString(); + qDebug() << command; + if(command != "" && command.contains("%p") && command.contains("%f")) + { + command = command.replace("%f", preview.documentPath); + command = command.replace("%p", QString::number(preview.page)); + QStringList splitted = command.split(" "); + if(splitted.size() > 1) + { + QString cmd = splitted[0]; + QStringList args = splitted.mid(1); + QProcess::startDetached(cmd, args); + } + } + else + { + QDesktopServices::openUrl(QUrl::fromLocalFile(preview.documentPath)); + } + }); } void MainWindow::lineEditReturnPressed() diff --git a/gui/pdfpreview.h b/gui/pdfpreview.h index 5418440..9bf120d 100644 --- a/gui/pdfpreview.h +++ b/gui/pdfpreview.h @@ -8,6 +8,7 @@ public: PdfPreview(); QImage previewImage; QString documentPath; + unsigned int page; }; #endif // PDFPREVIEW_H diff --git a/gui/pdfworker.cpp b/gui/pdfworker.cpp index 028b59c..761f515 100644 --- a/gui/pdfworker.cpp +++ b/gui/pdfworker.cpp @@ -29,6 +29,10 @@ void PdfWorker::generatePreviews(QVector paths, double scalefactor this->generating = true; for(SearchResult &sr : paths) { + if(this->cancelCurrent.load()) + { + break; + } Poppler::Document *doc = document(sr.path); if(doc == nullptr) { @@ -48,12 +52,8 @@ void PdfWorker::generatePreviews(QVector paths, double scalefactor PdfPreview preview; preview.previewImage = image; preview.documentPath = sr.path; + preview.page = sr.page; emit previewReady(preview); - if(this->cancelCurrent.load()) - { - - break; - } } isFreeMutex.lock(); isFree.wakeOne();