Update .gitignore
[pykit.git] / PDFWidget.cc
1 // $Id$
2 //
3 // Copyright (C) 2010
4 //     Stefan Bund <info@j32.de>
5
6 /** \file
7     \brief PDFWidget non-inline non-template implementation */
8
9 #include "PDFWidget.hh"
10 //#include "PDFWidget.ih"
11
12 // Custom includes
13 #include <iostream>
14 #include <QNetworkRequest>
15 #include <QNetworkReply>
16
17 //#include "PDFWidget.mpp"
18 #define prefix_
19 ///////////////////////////////cc.p////////////////////////////////////////
20
21 prefix_ pykit::PDFWidget::PDFWidget(QNetworkAccessManager * manager, QWidget * parent)
22     : QLabel(parent), manager_ (manager), currentPage_ (0)
23 {}
24
25 prefix_ pykit::PDFWidget::PDFWidget(QString const & document, QNetworkAccessManager * manager,
26                                     QWidget * parent)
27     : QLabel(parent), manager_ (manager), currentPage_ (0)
28 {
29     document_.reset(Poppler::Document::load(document));
30     showPage();
31 }
32
33 prefix_ void pykit::PDFWidget::load(QUrl const & url)
34 {
35     QNetworkRequest request (url);
36     QNetworkReply * reply (manager_->get(request));
37     connect(reply, SIGNAL(finished()), this, SLOT(netLoadDocument()));
38 }
39
40 prefix_ void pykit::PDFWidget::netLoadDocument()
41 {
42     QNetworkReply * reply = static_cast<QNetworkReply*>(sender());
43     if (reply->error() != QNetworkReply::NoError)
44         return;
45     QByteArray data (reply->read(reply->size()));
46     document_.reset(Poppler::Document::loadFromData(data));
47     showPage();
48     reply->deleteLater();
49 }
50
51 prefix_ void pykit::PDFWidget::showPage()
52 {
53     if (! document_)
54         return;
55     QImage image (document_->page(currentPage_)->renderToImage(
56                       physicalDpiX(), physicalDpiY()));
57     setPixmap(QPixmap::fromImage(image));
58 }
59
60 ///////////////////////////////cc.e////////////////////////////////////////
61 #undef prefix_
62 //#include "PDFWidget.mpp"
63
64 \f
65 // Local Variables:
66 // mode: c++
67 // fill-column: 100
68 // comment-column: 40
69 // c-file-style: "j32"
70 // indent-tabs-mode: nil
71 // ispell-local-dictionary: "american"
72 // compile-command: "scons -U"
73 // End: