From 03356b31904da3091da8f532ce2870cc1c2aaee2 Mon Sep 17 00:00:00 2001 From: Albert S Date: Fri, 31 Aug 2018 20:08:23 +0200 Subject: [PATCH] open specififed pdfviewer jumping to the page of the preveiw image (cherry picked from commit 0bd429be1c9e16b96dd5e503265856107e55adaf) --- gui/mainwindow.cpp | 24 +++++++++++++++++++++++- gui/pdfpreview.h | 1 + gui/pdfworker.cpp | 10 +++++----- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index 6b8ee81..fb9e456 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,28 @@ void MainWindow::pdfPreviewReceived(PdfPreview preview) label->setPixmap(QPixmap::fromImage(preview.previewImage)); ui->scrollAreaWidgetContents->layout()->addWidget(label); connect(label, &ClickLabel::clicked, - [=]() { QDesktopServices::openUrl(QUrl::fromLocalFile(preview.documentPath)); }); + [=]() + { + 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 71ac505..10d2bd3 100644 --- a/gui/pdfpreview.h +++ b/gui/pdfpreview.h @@ -8,6 +8,7 @@ class PdfPreview PdfPreview(); QImage previewImage; QString documentPath; + unsigned int page; }; #endif // PDFPREVIEW_H diff --git a/gui/pdfworker.cpp b/gui/pdfworker.cpp index 6fc5d26..0102038 100644 --- a/gui/pdfworker.cpp +++ b/gui/pdfworker.cpp @@ -28,6 +28,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();