summaryrefslogtreecommitdiffstats
path: root/examples/widgets/pdfviewer/sequentialpagewidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/widgets/pdfviewer/sequentialpagewidget.cpp')
-rw-r--r--examples/widgets/pdfviewer/sequentialpagewidget.cpp25
1 files changed, 21 insertions, 4 deletions
diff --git a/examples/widgets/pdfviewer/sequentialpagewidget.cpp b/examples/widgets/pdfviewer/sequentialpagewidget.cpp
index f02290a0a..b0dcb1e19 100644
--- a/examples/widgets/pdfviewer/sequentialpagewidget.cpp
+++ b/examples/widgets/pdfviewer/sequentialpagewidget.cpp
@@ -42,6 +42,7 @@ SequentialPageWidget::SequentialPageWidget(QWidget *parent)
, m_topPageShowing(0)
, m_zoom(1.)
, m_screenResolution(QGuiApplication::primaryScreen()->logicalDotsPerInch() / 72.0)
+ , m_document(nullptr)
{
connect(m_pageRenderer, SIGNAL(pageReady(int, qreal, QImage)), this, SLOT(pageLoaded(int, qreal, QImage)), Qt::QueuedConnection);
grabGesture(Qt::SwipeGesture);
@@ -52,11 +53,14 @@ SequentialPageWidget::~SequentialPageWidget()
delete m_pageRenderer;
}
-void SequentialPageWidget::openDocument(const QUrl &url)
+void SequentialPageWidget::setDocument(QPdfDocument *document)
{
- m_pageSizes = m_pageRenderer->openDocument(url);
- m_topPageShowing = 0;
- invalidate();
+ m_pageRenderer->setDocument(document);
+
+ m_document = document;
+ connect(m_document, &QPdfDocument::statusChanged, this, &SequentialPageWidget::documentStatusChanged);
+
+ documentStatusChanged();
}
void SequentialPageWidget::setZoom(qreal factor)
@@ -90,6 +94,19 @@ void SequentialPageWidget::invalidate()
update();
}
+void SequentialPageWidget::documentStatusChanged()
+{
+ m_pageSizes.clear();
+ m_topPageShowing = 0;
+
+ if (m_document->status() == QPdfDocument::Ready) {
+ for (int page = 0; page < m_document->pageCount(); ++page)
+ m_pageSizes.append(m_document->pageSize(page));
+ }
+
+ invalidate();
+}
+
void SequentialPageWidget::pageLoaded(int page, qreal zoom, QImage image)
{
Q_UNUSED(zoom)