4 // Stefan Bund <info@j32.de>
7 \brief Viewer non-inline non-template implementation */
10 //#include "Viewer.ih"
14 #include <QWebPluginFactory>
15 #include "Publisher.hh"
17 #include "PDFWidget.hh"
20 #include <QPrintDialog>
21 #include <QWebInspector>
23 //#include "Viewer.mpp"
25 ///////////////////////////////cc.p////////////////////////////////////////
31 class PDFWebPluginFactory
32 : public QWebPluginFactory
35 PDFWebPluginFactory(QNetworkAccessManager * manager, QObject * parent = 0);
37 QObject * create(QString const & mimeType, QUrl const & url,
38 QStringList const & argumentNames, QStringList const & argumentValues)
40 QList<QWebPluginFactory::Plugin> plugins() const;
43 QNetworkAccessManager * manager_;
48 prefix_ PDFWebPluginFactory::PDFWebPluginFactory(QNetworkAccessManager * manager,
50 : QWebPluginFactory(parent), manager_ (manager)
53 prefix_ QObject * PDFWebPluginFactory::create(QString const & mimeType, QUrl const & url,
54 QStringList const & argumentNames,
55 QStringList const & argumentValues)
58 if (mimeType == "application/pdf") {
59 int idix (argumentNames.indexOf("id"));
62 id = argumentValues[idix];
63 pykit::PDFWidget * plugin = new pykit::PDFWidget(
64 id, manager_, dynamic_cast<QWidget*>(parent()));
71 prefix_ QList<QWebPluginFactory::Plugin> PDFWebPluginFactory::plugins()
74 QList<QWebPluginFactory::Plugin> plugins;
77 QWebPluginFactory::Plugin plugin;
78 plugin.name = "PDF viewer";
79 plugin.description = "View PDF files";
81 QWebPluginFactory::MimeType mimeType;
82 mimeType.name = "application/pdf";
83 mimeType.description = "PDF file";
84 plugin.mimeTypes += mimeType;
94 ///////////////////////////////////////////////////////////////////////////
97 prefix_ pykit::Viewer::Viewer(QUrl const & url, Publisher * publisher, QWidget * parent)
100 QWebSettings::globalSettings()->setAttribute(QWebSettings::PluginsEnabled, true);
101 page()->setNetworkAccessManager(
102 new InternalNetworkAccessManager(page()->networkAccessManager(), this, publisher));
104 page()->setPluginFactory(new PDFWebPluginFactory (page()->networkAccessManager(), this));
106 connect(page(), SIGNAL(printRequested(QWebFrame*)), this, SLOT(printRequested()));
108 inspector_ = new QWebInspector();
109 inspector_->setPage(page());
112 prefix_ pykit::Viewer::~Viewer()
118 prefix_ void pykit::Viewer::printRequested()
121 QPrintDialog printDialog(&printer, this);
122 if (printDialog.exec() == QPrintDialog::Accepted) {
127 ///////////////////////////////cc.e////////////////////////////////////////
129 //#include "Viewer.mpp"
135 // comment-column: 40
136 // c-file-style: "j32"
137 // indent-tabs-mode: nil
138 // ispell-local-dictionary: "american"
139 // compile-command: "scons -U"