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.cpp22
1 files changed, 19 insertions, 3 deletions
diff --git a/examples/widgets/pdfviewer/sequentialpagewidget.cpp b/examples/widgets/pdfviewer/sequentialpagewidget.cpp
index e7dd08746..a9d5c428b 100644
--- a/examples/widgets/pdfviewer/sequentialpagewidget.cpp
+++ b/examples/widgets/pdfviewer/sequentialpagewidget.cpp
@@ -13,6 +13,7 @@ SequentialPageWidget::SequentialPageWidget(QWidget *parent)
, m_doc(Q_NULLPTR)
, m_background(Qt::darkGray)
, m_pageSpacing(3)
+ , m_topPageShowing(0)
, m_zoom(1.)
, m_screenResolution(QGuiApplication::primaryScreen()->logicalDotsPerInch() / 72.0)
{
@@ -25,12 +26,14 @@ SequentialPageWidget::~SequentialPageWidget()
void SequentialPageWidget::setDocument(QPdfDocument *doc)
{
m_doc = doc;
+ m_topPageShowing = 0;
invalidate();
}
void SequentialPageWidget::setZoom(qreal factor)
{
m_zoom = factor;
+ emit zoomChanged(factor);
invalidate();
}
@@ -52,6 +55,7 @@ void SequentialPageWidget::invalidate()
}
m_totalSize = totalSize.toSize();
setMinimumSize(m_totalSize);
+ emit zoomChanged(m_zoom);
qCDebug(lcExample) << "total size" << m_totalSize;
update();
}
@@ -74,11 +78,11 @@ void SequentialPageWidget::paintEvent(QPaintEvent * event)
int height = size.toSize().height();
if (y + height >= event->rect().top())
break;
- y += height;
+ y += height + m_pageSpacing;
++page;
}
y += m_pageSpacing;
- int startPage = page;
+ m_topPageShowing = page;
// Actually render pages
while (y < event->rect().bottom() && page < m_doc->pageCount()) {
@@ -92,6 +96,18 @@ void SequentialPageWidget::paintEvent(QPaintEvent * event)
y += pm.height() + m_pageSpacing;
++page;
}
+ m_bottomPageShowing = page - 1;
+ emit showingPageRange(m_topPageShowing, m_bottomPageShowing);
+}
- emit showingPageRange(startPage, page - 1);
+qreal SequentialPageWidget::yForPage(int endPage)
+{
+ // TODO maybe put this loop into a page iterator class
+ int y = m_pageSpacing;
+ for (int page = 0; page < m_doc->pageCount() && page < endPage; ++page) {
+ QSizeF size = pageSize(page);
+ int height = size.toSize().height();
+ y += height + m_pageSpacing;
+ }
+ return y;
}