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.cpp88
1 files changed, 30 insertions, 58 deletions
diff --git a/examples/pdfwidgets/pdfviewer/mainwindow.cpp b/examples/pdfwidgets/pdfviewer/mainwindow.cpp
index fd2656305..5f9bf389f 100644
--- a/examples/pdfwidgets/pdfviewer/mainwindow.cpp
+++ b/examples/pdfwidgets/pdfviewer/mainwindow.cpp
@@ -37,14 +37,14 @@
#include "mainwindow.h"
#include "ui_mainwindow.h"
-#include "sequentialpagewidget.h"
+#include "pageselector.h"
+#include "zoomselector.h"
#include <QFileDialog>
-#include <QLineEdit>
#include <QMessageBox>
#include <QPdfBookmarkModel>
#include <QPdfDocument>
-#include <QScroller>
+#include <QPdfPageNavigation>
#include <QtMath>
const qreal zoomMultiplier = qSqrt(2.0);
@@ -54,27 +54,23 @@ Q_LOGGING_CATEGORY(lcExample, "qt.examples.pdfviewer")
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
- , m_pageWidget(new SequentialPageWidget(this))
- , m_zoomEdit(new QLineEdit(this))
- , m_pageEdit(new QLineEdit(this))
+ , m_zoomSelector(new ZoomSelector(this))
+ , m_pageSelector(new PageSelector(this))
, m_document(new QPdfDocument(this))
{
ui->setupUi(this);
- ui->scrollArea->setWidget(m_pageWidget);
- m_zoomEdit->setMaximumWidth(50);
- m_zoomEdit->setAlignment(Qt::AlignHCenter);
- ui->mainToolBar->insertWidget(ui->actionZoom_In, m_zoomEdit);
- m_pageEdit->setMaximumWidth(50);
- m_pageEdit->setAlignment(Qt::AlignHCenter);
- ui->mainToolBar->insertWidget(ui->actionGo, m_pageEdit);
- connect(m_pageWidget, SIGNAL(showingPageRange(int,int)),
- this, SLOT(showingPageRange(int,int)), Qt::QueuedConnection);
- connect(m_pageWidget, SIGNAL(zoomChanged(qreal)),
- this, SLOT(zoomChanged(qreal)));
- connect(m_zoomEdit, SIGNAL(returnPressed()), this, SLOT(zoomEdited()));
- connect(m_pageEdit, SIGNAL(returnPressed()), this, SLOT(on_actionGo_triggered()));
-
- QScroller::grabGesture(ui->scrollArea);
+
+ 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());
+
+ connect(m_zoomSelector, &ZoomSelector::zoomModeChanged, ui->pdfView, &QPdfView::setZoomMode);
+ connect(m_zoomSelector, &ZoomSelector::zoomFactorChanged, ui->pdfView, &QPdfView::setZoomFactor);
+ m_zoomSelector->reset();
QPdfBookmarkModel *bookmarkModel = new QPdfBookmarkModel(this);
bookmarkModel->setDocument(m_document);
@@ -84,7 +80,10 @@ MainWindow::MainWindow(QWidget *parent)
ui->tabWidget->setTabEnabled(1, false); // disable 'Pages' tab for now
- m_pageWidget->setDocument(m_document);
+ ui->pdfView->setDocument(m_document);
+
+ connect(ui->pdfView, &QPdfView::zoomFactorChanged,
+ m_zoomSelector, &ZoomSelector::setZoomFactor);
}
MainWindow::~MainWindow()
@@ -103,30 +102,6 @@ void MainWindow::open(const QUrl &docLocation)
QMessageBox::critical(this, tr("Failed to open"), tr("%1 is not a valid local file").arg(docLocation.toString()));
}
qCDebug(lcExample) << docLocation;
- ui->scrollArea->ensureVisible(0, 0, 0, 0);
-}
-
-void MainWindow::showingPageRange(int start, int end)
-{
- ui->statusBar->clearMessage();
- if (start == end)
- ui->statusBar->showMessage(tr("showing page %1").arg(start));
- else
- ui->statusBar->showMessage(tr("showing pages %1 to %2").arg(start).arg(end));
- m_pageEdit->setText(QString::number(end));
-}
-
-void MainWindow::zoomChanged(qreal factor)
-{
- m_zoomEdit->setText(tr("%1%").arg(factor * 100., 0, 'f', 0));
-}
-
-void MainWindow::zoomEdited()
-{
- bool ok = false;
- qreal factor = m_zoomEdit->text().remove(QChar('%')).toDouble(&ok);
- if (ok)
- m_pageWidget->setZoom(factor / 100.);
}
void MainWindow::bookmarkSelected(const QModelIndex &index)
@@ -135,7 +110,7 @@ void MainWindow::bookmarkSelected(const QModelIndex &index)
return;
const int page = index.data(QPdfBookmarkModel::PageNumberRole).toInt();
- ui->scrollArea->ensureVisible(0, m_pageWidget->yForPage(page));
+ ui->pdfView->pageNavigation()->setCurrentPage(page);
}
void MainWindow::on_actionOpen_triggered()
@@ -163,28 +138,25 @@ void MainWindow::on_actionAbout_Qt_triggered()
void MainWindow::on_actionZoom_In_triggered()
{
- m_pageWidget->setZoom(m_pageWidget->zoom() * zoomMultiplier);
+ ui->pdfView->setZoomFactor(ui->pdfView->zoomFactor() * zoomMultiplier);
}
void MainWindow::on_actionZoom_Out_triggered()
{
- m_pageWidget->setZoom(m_pageWidget->zoom() / zoomMultiplier);
+ ui->pdfView->setZoomFactor(ui->pdfView->zoomFactor() / zoomMultiplier);
}
-void MainWindow::on_actionGo_triggered()
+void MainWindow::on_actionPrevious_Page_triggered()
{
- bool ok = false;
- int page = m_pageEdit->text().toInt(&ok);
- if (!ok) return;
- ui->scrollArea->ensureVisible(0, m_pageWidget->yForPage(page));
+ ui->pdfView->pageNavigation()->goToPreviousPage();
}
-void MainWindow::on_actionPrevious_Page_triggered()
+void MainWindow::on_actionNext_Page_triggered()
{
- ui->scrollArea->ensureVisible(0, m_pageWidget->yForPage(m_pageWidget->topPageShowing() - 1));
+ ui->pdfView->pageNavigation()->goToNextPage();
}
-void MainWindow::on_actionNext_Page_triggered()
+void MainWindow::on_actionContinuous_triggered()
{
- ui->scrollArea->ensureVisible(0, m_pageWidget->yForPage(m_pageWidget->bottomPageShowing() + 1));
+ ui->pdfView->setPageMode(ui->actionContinuous->isChecked() ? QPdfView::MultiPage : QPdfView::SinglePage);
}