From fa8e351859ce1ad8a9f0573a87cde6e0dc71285c Mon Sep 17 00:00:00 2001 From: Albert S Date: Mon, 26 Aug 2019 09:20:21 +0200 Subject: [PATCH] paging for pdfpreviews --- gui/mainwindow.cpp | 30 +++++++++++++++++++++++------- gui/mainwindow.h | 4 +++- gui/mainwindow.ui | 20 ++++++++++++++++++++ 3 files changed, 46 insertions(+), 8 deletions(-) diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index 8e0b33a..99288ef 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -19,9 +19,10 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); + QSettings settings; db = QSqlDatabase::addDatabase("QSQLITE"); - db.setDatabaseName(QSettings().value("dbpath").toString()); + db.setDatabaseName(settings.value("dbpath").toString()); if(!db.open()) { qDebug() << "failed to open database"; @@ -33,8 +34,9 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi ui->statusBar->addWidget(ui->lblSearchResults); ui->statusBar->addWidget(ui->pdfProcessBar); ui->pdfProcessBar->hide(); - QSettings settings; ui->comboScale->setCurrentText(settings.value("currentScale").toString()); + pdfPreviewsPerPage = settings.value("pdfPreviewsPerPage", 20).toInt(); + ui->spinPdfPreviewPage->setMinimum(1); } void MainWindow::connectSignals() @@ -64,13 +66,20 @@ void MainWindow::connectSignals() connect(ui->tabWidget, &QTabWidget::currentChanged, this, &MainWindow::tabChanged); connect(ui->comboScale, qOverload(&QComboBox::currentIndexChanged), this, &MainWindow::comboScaleChanged); + connect(ui->spinPdfPreviewPage, qOverload(&QSpinBox::valueChanged), this, + &MainWindow::spinPdfPreviewPageValueChanged); +} + +void MainWindow::spinPdfPreviewPageValueChanged(int val) +{ + makePdfPreview(val); } void MainWindow::comboScaleChanged(QString text) { QSettings scaleSetting; scaleSetting.setValue("currentScale", ui->comboScale->currentText()); - makePdfPreview(); + makePdfPreview(ui->spinPdfPreviewPage->value()); } bool MainWindow::pdfTabActive() { @@ -104,7 +113,7 @@ void MainWindow::tabChanged() { if(pdfDirty) { - makePdfPreview(); + makePdfPreview(ui->spinPdfPreviewPage->value()); } ui->pdfProcessBar->show(); } @@ -195,13 +204,18 @@ void MainWindow::handleSearchResults(const QVector &results) ui->treeResultsList->resizeColumnToContents(0); ui->treeResultsList->resizeColumnToContents(1); pdfDirty = !this->pdfSearchResults.empty(); + + int numpages = ceil(static_cast(this->pdfSearchResults.size()) / pdfPreviewsPerPage); + ui->spinPdfPreviewPage->setMinimum(1); + ui->spinPdfPreviewPage->setMaximum(numpages); + ui->spinPdfPreviewPage->setValue(1); if(pdfTabActive() && pdfDirty) { - makePdfPreview(); + makePdfPreview(1); } } -void MainWindow::makePdfPreview() +void MainWindow::makePdfPreview(int page) { this->pdfWorkerWatcher.cancel(); @@ -237,8 +251,10 @@ void MainWindow::makePdfPreview() } } PdfWorker worker; + int end = pdfPreviewsPerPage; + int begin = page * pdfPreviewsPerPage - pdfPreviewsPerPage; this->pdfWorkerWatcher.setFuture( - worker.generatePreviews(this->pdfSearchResults, wordsToHighlight, scaleText.toInt() / 100.)); + worker.generatePreviews(this->pdfSearchResults.mid(begin, end), wordsToHighlight, scaleText.toInt() / 100.)); ui->pdfProcessBar->setMaximum(this->pdfWorkerWatcher.progressMaximum()); ui->pdfProcessBar->setMinimum(this->pdfWorkerWatcher.progressMinimum()); } diff --git a/gui/mainwindow.h b/gui/mainwindow.h index ad9aa50..b5b5237 100644 --- a/gui/mainwindow.h +++ b/gui/mainwindow.h @@ -36,13 +36,14 @@ class MainWindow : public QMainWindow void add(QString path, unsigned int page); QVector pdfSearchResults; void connectSignals(); - void makePdfPreview(); + void makePdfPreview(int page); bool pdfTabActive(); void keyPressEvent(QKeyEvent *event) override; unsigned int processedPdfPreviews; void handleSearchResults(const QVector &results); void handleSearchError(QString error); QSSQuery currentQuery; + int pdfPreviewsPerPage; private slots: void lineEditReturnPressed(); void treeSearchItemActivated(QTreeWidgetItem *item, int i); @@ -50,6 +51,7 @@ class MainWindow : public QMainWindow void tabChanged(); void pdfPreviewReceived(PdfPreview preview); void comboScaleChanged(QString text); + void spinPdfPreviewPageValueChanged(int val); }; #endif // MAINWINDOW_H diff --git a/gui/mainwindow.ui b/gui/mainwindow.ui index 8de1fd7..3cf967d 100644 --- a/gui/mainwindow.ui +++ b/gui/mainwindow.ui @@ -148,6 +148,26 @@ + + + + Page: + + + + + + + QAbstractSpinBox::PlusMinus + + + false + + + false + + +