From 9d98513e6f4e406727df58d05b0a1dcf982471c7 Mon Sep 17 00:00:00 2001 From: Montel Laurent Date: Tue, 10 May 2016 13:49:08 +0200 Subject: [PATCH] Display page --- .../src/print/printpreviewdialog.cpp | 8 ++++++- .../src/print/printpreviewdialog.h | 1 + .../src/print/printpreviewpageviewer.cpp | 21 ++++++++++++++++++- .../src/print/printpreviewpageviewer.h | 9 ++++++++ 4 files changed, 37 insertions(+), 2 deletions(-) diff --git a/webengineviewer/src/print/printpreviewdialog.cpp b/webengineviewer/src/print/printpreviewdialog.cpp index 4a7e8eb0..72950327 100644 --- a/webengineviewer/src/print/printpreviewdialog.cpp +++ b/webengineviewer/src/print/printpreviewdialog.cpp @@ -78,6 +78,12 @@ void PrintPreviewDialog::loadFile(const QString &path) KMessageBox::error(this, i18n("Unable to open file \"%1\"", path), i18n("Open file error")); return; } + showPage(0); +} - //TODO +void PrintPreviewDialog::showPage(int index) +{ + Poppler::Page *popplerPage = mDoc->page(index); + mPrintPreviewPage->showPage(popplerPage); + delete popplerPage; } diff --git a/webengineviewer/src/print/printpreviewdialog.h b/webengineviewer/src/print/printpreviewdialog.h index bc3712d6..197789a2 100644 --- a/webengineviewer/src/print/printpreviewdialog.h +++ b/webengineviewer/src/print/printpreviewdialog.h @@ -38,6 +38,7 @@ public: private: void writeConfig(); void readConfig(); + void showPage(int index); PrintPreviewPageViewer *mPrintPreviewPage; Poppler::Document *mDoc; }; diff --git a/webengineviewer/src/print/printpreviewpageviewer.cpp b/webengineviewer/src/print/printpreviewpageviewer.cpp index 7d477ccd..8090ee32 100644 --- a/webengineviewer/src/print/printpreviewpageviewer.cpp +++ b/webengineviewer/src/print/printpreviewpageviewer.cpp @@ -16,13 +16,20 @@ */ #include "printpreviewpageviewer.h" +#include + #include +#include +#include using namespace WebEngineViewer; PrintPreviewPageViewer::PrintPreviewPageViewer(QWidget *parent) - : QScrollArea(parent) + : QScrollArea(parent), + mDpiX(QApplication::desktop()->physicalDpiX()), + mDpiY(QApplication::desktop()->physicalDpiY()) { + mImage = new QLabel(this); mImage->setObjectName(QStringLiteral("page")); mImage->resize(0, 0); @@ -33,3 +40,15 @@ PrintPreviewPageViewer::~PrintPreviewPageViewer() { } + +void PrintPreviewPageViewer::showPage(Poppler::Page *page) +{ + const QImage image = page->renderToImage(mDpiX, mDpiY); + if (!image.isNull()) { + mImage->resize(image.size()); + mImage->setPixmap(QPixmap::fromImage(image)); + } else { + mImage->resize(0, 0); + mImage->setPixmap(QPixmap()); + } +} diff --git a/webengineviewer/src/print/printpreviewpageviewer.h b/webengineviewer/src/print/printpreviewpageviewer.h index 08ed05e4..bfd585d3 100644 --- a/webengineviewer/src/print/printpreviewpageviewer.h +++ b/webengineviewer/src/print/printpreviewpageviewer.h @@ -21,6 +21,10 @@ #include class QLabel; +namespace Poppler +{ +class Page; +} namespace WebEngineViewer { class PrintPreviewPageViewer : public QScrollArea @@ -29,7 +33,12 @@ class PrintPreviewPageViewer : public QScrollArea public: explicit PrintPreviewPageViewer(QWidget *parent = Q_NULLPTR); ~PrintPreviewPageViewer(); + + void showPage(Poppler::Page *page); + private: + int mDpiX; + int mDpiY; QLabel *mImage; }; } -- GitLab