diff options
| author | Simon Hausmann <simon.hausmann@theqtcompany.com> | 2014-12-16 12:11:13 +0100 |
|---|---|---|
| committer | Simon Hausmann <simon.hausmann@theqtcompany.com> | 2014-12-16 12:11:13 +0100 |
| commit | 61138411a87d1c155fcb33f1966387ebdeaae3e2 (patch) | |
| tree | a9f3bd78249d942e26dc02a0e11119c7ae194248 /examples/widgets/pdfviewer/pagerenderer.h | |
| parent | 188d4a072bdca8facad1b1e0670ed440050384ae (diff) | |
WIP: network loadingwip/network-loading
Diffstat (limited to 'examples/widgets/pdfviewer/pagerenderer.h')
| -rw-r--r-- | examples/widgets/pdfviewer/pagerenderer.h | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/examples/widgets/pdfviewer/pagerenderer.h b/examples/widgets/pdfviewer/pagerenderer.h index 35c8939..a35bc74 100644 --- a/examples/widgets/pdfviewer/pagerenderer.h +++ b/examples/widgets/pdfviewer/pagerenderer.h @@ -7,10 +7,11 @@ #include <QRunnable> #include <QThread> #include <QPdfDocument> +#include <QNetworkAccessManager> class QPdfDocument; -class PageRenderer : public QThread +class PageRenderer : public QObject { Q_OBJECT public: @@ -18,24 +19,31 @@ public: ~PageRenderer(); public slots: - QVector<QSizeF> openDocument(const QUrl &location); - void requestPage(int page, qreal zoom, Priority priority = QThread::NormalPriority); + void openDocument(const QUrl &location); + void requestPage(int page, qreal zoom); signals: + void pageSizesAvailable(const QVector<QSizeF> &sizes); void pageReady(int page, qreal zoom, QImage image); -protected: - void run() Q_DECL_OVERRIDE; - -private: - void renderPage(int page, qreal zoom); +private slots: + void reportPageSizes(); + void loadDocumentImpl(const QUrl &url); + void requestPageImpl(int page, qreal zoom); + void renderPages(); + void renderPageIfRequested(int page); + void handleNetworkRequestError(); private: + QThread m_workerThread; QPdfDocument m_doc; - // current request only - int m_page; - qreal m_zoom; + struct RenderRequest { + int page; + qreal zoom; + }; + QVector<RenderRequest> m_renderRequests; + QNetworkAccessManager *m_networkAccessManager; // performance statistics qreal m_minRenderTime; |
