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 <QWebHistory>
25 //#include "Viewer.mpp"
27 ///////////////////////////////cc.p////////////////////////////////////////
33 class PDFWebPluginFactory
34 : public QWebPluginFactory
37 PDFWebPluginFactory(QNetworkAccessManager * manager, QObject * parent = 0);
39 QObject * create(QString const & mimeType, QUrl const & url,
40 QStringList const & argumentNames, QStringList const & argumentValues)
42 QList<QWebPluginFactory::Plugin> plugins() const;
45 QNetworkAccessManager * manager_;
50 prefix_ PDFWebPluginFactory::PDFWebPluginFactory(QNetworkAccessManager * manager,
52 : QWebPluginFactory(parent), manager_ (manager)
55 prefix_ QObject * PDFWebPluginFactory::create(QString const & mimeType, QUrl const & url,
56 QStringList const & argumentNames,
57 QStringList const & argumentValues)
60 if (mimeType == "application/pdf") {
61 int idix (argumentNames.indexOf("id"));
64 id = argumentValues[idix];
65 pykit::PDFWidget * plugin = new pykit::PDFWidget(
66 id, manager_, dynamic_cast<QWidget*>(parent()));
73 prefix_ QList<QWebPluginFactory::Plugin> PDFWebPluginFactory::plugins()
76 QList<QWebPluginFactory::Plugin> plugins;
79 QWebPluginFactory::Plugin plugin;
80 plugin.name = "PDF viewer";
81 plugin.description = "View PDF files";
83 QWebPluginFactory::MimeType mimeType;
84 mimeType.name = "application/pdf";
85 mimeType.description = "PDF file";
86 plugin.mimeTypes += mimeType;
96 ///////////////////////////////////////////////////////////////////////////
100 pykit::Viewer * instance_ (0);
103 prefix_ pykit::Viewer::Viewer(QUrl const & url, Publisher * publisher, QWidget * parent)
107 QWebSettings::globalSettings()->setAttribute(QWebSettings::PluginsEnabled, true);
108 if (! QWebSettings::globalSettings()->testAttribute(QWebSettings::DeveloperExtrasEnabled))
109 setContextMenuPolicy(Qt::NoContextMenu);
110 page()->setNetworkAccessManager(
111 new InternalNetworkAccessManager(page()->networkAccessManager(), this, publisher));
113 page()->setPluginFactory(new PDFWebPluginFactory (page()->networkAccessManager(), this));
115 connect(page(), SIGNAL(printRequested(QWebFrame*)), this, SLOT(printRequested()));
117 inspector_ = new QWebInspector();
118 inspector_->setPage(page());
119 connect(page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()),
120 this, SLOT(initJSObjects()));
124 prefix_ pykit::Viewer::~Viewer()
130 prefix_ pykit::Viewer * pykit::Viewer::instance()
135 prefix_ bool pykit::Viewer::canGoBack()
137 return page()->history()->canGoBack();
140 prefix_ bool pykit::Viewer::canGoForward()
142 return page()->history()->canGoForward();
145 prefix_ void pykit::Viewer::initJSObjects()
147 page()->mainFrame()->addToJavaScriptWindowObject("view", this);
150 prefix_ void pykit::Viewer::printRequested()
153 QPrintDialog printDialog(&printer, this);
154 if (printDialog.exec() == QPrintDialog::Accepted) {
159 ///////////////////////////////cc.e////////////////////////////////////////
161 //#include "Viewer.mpp"
167 // comment-column: 40
168 // c-file-style: "j32"
169 // indent-tabs-mode: nil
170 // ispell-local-dictionary: "american"
171 // compile-command: "scons -U"