summaryrefslogtreecommitdiffstats
path: root/examples/pdfwidgets/pdfviewer/mainwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/pdfwidgets/pdfviewer/mainwindow.cpp')
-rw-r--r--examples/pdfwidgets/pdfviewer/mainwindow.cpp43
1 files changed, 33 insertions, 10 deletions
diff --git a/examples/pdfwidgets/pdfviewer/mainwindow.cpp b/examples/pdfwidgets/pdfviewer/mainwindow.cpp
index bba1125b9..3fbb77532 100644
--- a/examples/pdfwidgets/pdfviewer/mainwindow.cpp
+++ b/examples/pdfwidgets/pdfviewer/mainwindow.cpp
@@ -51,14 +51,14 @@
#include "mainwindow.h"
#include "ui_mainwindow.h"
-#include "pageselector.h"
#include "zoomselector.h"
#include <QFileDialog>
#include <QMessageBox>
+#include <QSpinBox>
#include <QPdfBookmarkModel>
#include <QPdfDocument>
-#include <QPdfPageNavigation>
+#include <QPdfNavigationStack>
#include <QtMath>
const qreal zoomMultiplier = qSqrt(2.0);
@@ -69,7 +69,7 @@ MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
, m_zoomSelector(new ZoomSelector(this))
- , m_pageSelector(new PageSelector(this))
+ , m_pageSelector(new QSpinBox(this))
, m_document(new QPdfDocument(this))
{
ui->setupUi(this);
@@ -77,10 +77,12 @@ MainWindow::MainWindow(QWidget *parent)
m_zoomSelector->setMaximumWidth(150);
ui->mainToolBar->insertWidget(ui->actionZoom_In, m_zoomSelector);
- m_pageSelector->setMaximumWidth(150);
- ui->mainToolBar->addWidget(m_pageSelector);
-
- m_pageSelector->setPageNavigation(ui->pdfView->pageNavigation());
+ ui->mainToolBar->insertWidget(ui->actionForward, m_pageSelector);
+ connect(m_pageSelector, &QSpinBox::valueChanged, this, &MainWindow::pageSelected);
+ auto nav = ui->pdfView->pageNavigation();
+ connect(nav, &QPdfNavigationStack::currentPageChanged, m_pageSelector, &QSpinBox::setValue);
+ connect(nav, &QPdfNavigationStack::backAvailableChanged, ui->actionBack, &QAction::setEnabled);
+ connect(nav, &QPdfNavigationStack::forwardAvailableChanged, ui->actionForward, &QAction::setEnabled);
connect(m_zoomSelector, &ZoomSelector::zoomModeChanged, ui->pdfView, &QPdfView::setZoomMode);
connect(m_zoomSelector, &ZoomSelector::zoomFactorChanged, ui->pdfView, &QPdfView::setZoomFactor);
@@ -111,6 +113,8 @@ void MainWindow::open(const QUrl &docLocation)
m_document->load(docLocation.toLocalFile());
const auto documentTitle = m_document->metaData(QPdfDocument::Title).toString();
setWindowTitle(!documentTitle.isEmpty() ? documentTitle : QStringLiteral("PDF Viewer"));
+ pageSelected(0);
+ m_pageSelector->setMaximum(m_document->pageCount() - 1);
} else {
qCDebug(lcExample) << docLocation << "is not a valid local file";
QMessageBox::critical(this, tr("Failed to open"), tr("%1 is not a valid local file").arg(docLocation.toString()));
@@ -124,7 +128,14 @@ void MainWindow::bookmarkSelected(const QModelIndex &index)
return;
const int page = index.data(QPdfBookmarkModel::PageNumberRole).toInt();
- ui->pdfView->pageNavigation()->setCurrentPage(page);
+ const qreal zoomLevel = index.data(QPdfBookmarkModel::LevelRole).toReal();
+ ui->pdfView->pageNavigation()->jump(page, {}, zoomLevel);
+}
+
+void MainWindow::pageSelected(int page)
+{
+ auto nav = ui->pdfView->pageNavigation();
+ nav->jump(page, {}, nav->currentZoom());
}
void MainWindow::on_actionOpen_triggered()
@@ -162,15 +173,27 @@ void MainWindow::on_actionZoom_Out_triggered()
void MainWindow::on_actionPrevious_Page_triggered()
{
- ui->pdfView->pageNavigation()->goToPreviousPage();
+ auto nav = ui->pdfView->pageNavigation();
+ nav->jump(nav->currentPage() - 1, {}, nav->currentZoom());
}
void MainWindow::on_actionNext_Page_triggered()
{
- ui->pdfView->pageNavigation()->goToNextPage();
+ auto nav = ui->pdfView->pageNavigation();
+ nav->jump(nav->currentPage() + 1, {}, nav->currentZoom());
}
void MainWindow::on_actionContinuous_triggered()
{
ui->pdfView->setPageMode(ui->actionContinuous->isChecked() ? QPdfView::MultiPage : QPdfView::SinglePage);
}
+
+void MainWindow::on_actionBack_triggered()
+{
+ ui->pdfView->pageNavigation()->back();
+}
+
+void MainWindow::on_actionForward_triggered()
+{
+ ui->pdfView->pageNavigation()->forward();
+}