diff options
Diffstat (limited to 'src/webview.h')
-rw-r--r-- | src/webview.h | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/src/webview.h b/src/webview.h new file mode 100644 index 00000000..11f04571 --- /dev/null +++ b/src/webview.h @@ -0,0 +1,155 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2007-2008 Trolltech ASA. All rights reserved +* Copyright (C) 2008 Benjamin C. Meyer <ben@meyerhome.net> +* Copyright (C) 2008-2009 by Andrea Diamantini <adjam7 at gmail dot com> +* Copyright (C) 2009 by Paweł Prażak <pawelprazak at gmail dot com> +* +* +* This program is free software; you can redistribute it +* and/or modify it under the terms of the GNU General +* Public License as published by the Free Software Foundation; +* either version 2, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* ============================================================ */ + + +#ifndef WEBVIEW_H +#define WEBVIEW_H + +// KDE Includes +#include <KUrl> + +// Qt Includes +#include <QWebPage> + +// Forward Declarations +class MainWindow; +class Application; + +class KActionCollection; + +class QWebFrame; +class QAuthenticator; +class QMouseEvent; +class QNetworkProxy; +class QNetworkReply; +class QSslError; + + +class WebPage : public QWebPage +{ + Q_OBJECT + +signals: + void loadingUrl(const QUrl &url); // WARNING has to be QUrl!! + +public: + WebPage(QObject *parent = 0); + ~WebPage(); + +protected: + bool acceptNavigationRequest(QWebFrame *frame, + const QNetworkRequest &request, + NavigationType type); + + QWebPage *createWindow(QWebPage::WebWindowType type); + QObject *createPlugin(const QString &classId, + const QUrl &url, + const QStringList ¶mNames, + const QStringList ¶mValues); + +private slots: + void handleUnsupportedContent(QNetworkReply *reply); + +private: + friend class WebView; + + // set the webview mousepressedevent + Qt::KeyboardModifiers m_keyboardModifiers; + Qt::MouseButtons m_pressedButtons; + bool m_openInNewTab; + KUrl m_loadingUrl; +}; + + +// ---------------------------------------------------------------------------------------------------- + +// Qt Includes +#include <QWebView> + + +class WebView : public QWebView +{ + Q_OBJECT + +public: + WebView(QWidget *parent = 0); + + KActionCollection* webActions(); + + // inline + WebPage *webPage() const + { + return m_page; + } + KUrl url() const + { + return KUrl(QWebView::url()); + } + QString lastStatusBarText() const + { + return m_statusBarText; + } + int progress() const + { + return m_progress; + } + +signals: + // switching tabs + void ctrlTabPressed(); + void shiftCtrlTabPressed(); + +protected: + void mousePressEvent(QMouseEvent *event); + void mouseReleaseEvent(QMouseEvent *event); + void contextMenuEvent(QContextMenuEvent *event); + void wheelEvent(QWheelEvent *event); + + /** + * Filters (SHIFT + ) CTRL + TAB events and emit (shift)ctrlTabPressed() + * to make switch tab + */ + void keyPressEvent(QKeyEvent *event); + +private slots: + void setProgress(int progress) + { + m_progress = progress; + } + void loadFinished(); + void setStatusBarText(const QString &string) + { + m_statusBarText = string; + } + void downloadRequested(const QNetworkRequest &request); + void openLinkInNewTab(); + +private: + static KActionCollection* s_webActionCollection; + + WebPage *m_page; + + int m_progress; + QString m_statusBarText; +}; + +#endif |