diff options
author | Ariya Hidayat <ariya.hidayat@nokia.com> | 2009-06-08 12:34:29 +0200 |
---|---|---|
committer | Ariya Hidayat <ariya.hidayat@nokia.com> | 2009-06-08 12:34:29 +0200 |
commit | 98dc689b9266904e83256c18ad153ec22f79e75f (patch) | |
tree | b61fc8c8e797245b8fd2694a69e3a628a342c6fd | |
parent | aa25fd6f7f0e0472e4425ca2e04e5879fd2260f5 (diff) |
New example: inverted ("night-mode"-like) rendering in QWebView.
-rw-r--r-- | webnightmode/webnightmode.cpp | 85 | ||||
-rw-r--r-- | webnightmode/webnightmode.pro | 2 |
2 files changed, 87 insertions, 0 deletions
diff --git a/webnightmode/webnightmode.cpp b/webnightmode/webnightmode.cpp new file mode 100644 index 0000000..100d364 --- /dev/null +++ b/webnightmode/webnightmode.cpp @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the Graphics Dojo project on Qt Labs. +** +** This file may be used under the terms of the GNU General Public +** License version 2.0 or 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of +** this file. Please review the following information to ensure GNU +** General Public Licensing requirements will be met: +** http://www.fsf.org/licensing/licenses/info/GPLv2.html and +** http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +****************************************************************************/ + +#include <QtCore> +#include <QtGui> +#include <QtWebKit> + +#if QT_VERSION < 0x0040500 +#error You need Qt 4.5 or newer +#endif + +class NightModeView : public QWebView +{ + Q_OBJECT + +public: + + NightModeView(QWidget *parent = 0): QWebView(parent), invert(true) { + connect(this, SIGNAL(titleChanged(const QString&)), SLOT(setWindowTitle(const QString&))); + load(QUrl("http://maps.google.com")); + } + +private: + + bool invert; + + void paintEvent(QPaintEvent *event) { + QWebView::paintEvent(event); + if (invert) { + QPainter p(this); + p.setCompositionMode(QPainter::CompositionMode_Difference); + p.fillRect(event->rect(), Qt::white); + p.end(); + } + } + + void keyPressEvent(QKeyEvent *event) { + if (event->key() == Qt::Key_F3) { + invert = !invert; + update(); + event->accept(); + return; + } + QWebView::keyPressEvent(event); + } + +}; + +#include "webnightmode.moc" + +int main(int argc, char **argv) +{ +#ifdef Q_WS_X11 + QApplication::setGraphicsSystem("raster"); +#endif + + QApplication app(argc, argv); + + NightModeView w; + w.show(); + + QMessageBox::information(&w, "Hint", "Use F3 to toggle night mode"); + + return app.exec(); +} diff --git a/webnightmode/webnightmode.pro b/webnightmode/webnightmode.pro new file mode 100644 index 0000000..a6b7f57 --- /dev/null +++ b/webnightmode/webnightmode.pro @@ -0,0 +1,2 @@ +SOURCES = webnightmode.cpp +QT += network webkit |