File indexing completed on 2024-04-21 04:42:39
0001 /* 0002 SPDX-FileCopyrightText: 2007 Trolltech ASA 0003 SPDX-FileCopyrightText: 2008 Urs Wolfer <uwolfer@kde.org> 0004 SPDX-FileCopyrightText: 2008 Laurent Montel <montel@kde.org> 0005 SPDX-FileCopyrightText: 2009 Dawit Alemayehu <adawit@kde.org> 0006 0007 SPDX-License-Identifier: LGPL-2.1-or-later 0008 */ 0009 0010 #ifndef WEBVIEW_H 0011 #define WEBVIEW_H 0012 0013 #include <QPointer> 0014 #include <KParts/BrowserExtension> 0015 #include <QWebFrame> 0016 #include <KWebView> 0017 0018 class QUrl; 0019 class KWebKitPart; 0020 class QWebInspector; 0021 class QLabel; 0022 0023 class WebView : public KWebView 0024 { 0025 Q_OBJECT 0026 public: 0027 WebView(KWebKitPart* part, QWidget* parent); 0028 ~WebView() override; 0029 0030 /** 0031 * Same as QWebPage::load, but with KParts style arguments instead. 0032 * 0033 * @see KParts::OpenUrlArguments, KParts::BrowserArguments. 0034 * 0035 * @param url the url to load. 0036 * @param args reference to a OpenUrlArguments object. 0037 * @param bargs reference to a BrowserArguments object. 0038 */ 0039 void loadUrl(const QUrl& url, const KParts::OpenUrlArguments& args, const KParts::BrowserArguments& bargs); 0040 0041 QWebHitTestResult contextMenuResult() const; 0042 0043 protected: 0044 /** 0045 * Reimplemented for internal reasons, the API is not affected. 0046 * 0047 * @see QWidget::contextMenuEvent 0048 * @internal 0049 */ 0050 void contextMenuEvent(QContextMenuEvent*) override; 0051 0052 /** 0053 * Reimplemented for internal reasons, the API is not affected. 0054 * 0055 * @see QWidget::keyPressEvent 0056 * @internal 0057 */ 0058 void keyPressEvent(QKeyEvent*) override; 0059 0060 /** 0061 * Reimplemented for internal reasons, the API is not affected. 0062 * 0063 * @see QWidget::keyReleaseEvent 0064 * @internal 0065 */ 0066 void keyReleaseEvent(QKeyEvent*) override; 0067 0068 /** 0069 * Reimplemented for internal reasons, the API is not affected. 0070 * 0071 * @see QWidget::mouseReleaseEvent 0072 * @internal 0073 */ 0074 void mouseReleaseEvent(QMouseEvent*) override; 0075 0076 /** 0077 * Reimplemented for internal reasons, the API is not affected. 0078 * 0079 * @see QObject::timerEvent 0080 * @internal 0081 */ 0082 void timerEvent(QTimerEvent*) override; 0083 0084 /** 0085 * Reimplemented for internal reasons, the API is not affected. 0086 * 0087 * @see QWidget::wheelEvent 0088 * @internal 0089 */ 0090 void wheelEvent(QWheelEvent*) override; 0091 0092 private Q_SLOTS: 0093 void slotStopAutoScroll(); 0094 void hideAccessKeys(); 0095 0096 private: 0097 void editableContentActionPopupMenu(KParts::BrowserExtension::ActionGroupMap&); 0098 void selectActionPopupMenu(KParts::BrowserExtension::ActionGroupMap&); 0099 void linkActionPopupMenu(KParts::BrowserExtension::ActionGroupMap&); 0100 void partActionPopupMenu(KParts::BrowserExtension::ActionGroupMap &); 0101 void multimediaActionPopupMenu(KParts::BrowserExtension::ActionGroupMap&); 0102 void addSearchActions(QList<QAction*>& selectActions, QWebView*); 0103 0104 void showAccessKeys(); 0105 bool checkForAccessKey(QKeyEvent *event); 0106 void makeAccessKeyLabel(const QChar &accessKey, const QWebElement &element); 0107 0108 KActionCollection* m_actionCollection; 0109 QWebHitTestResult m_result; 0110 QPointer<KWebKitPart> m_part; 0111 QWebInspector* m_webInspector; 0112 0113 qint32 m_autoScrollTimerId; 0114 qint32 m_verticalAutoScrollSpeed; 0115 qint32 m_horizontalAutoScrollSpeed; 0116 0117 enum AccessKeyState { 0118 NotActivated, 0119 PreActivated, 0120 Activated 0121 }; 0122 AccessKeyState m_accessKeyActivated; 0123 QList<QLabel*> m_accessKeyLabels; 0124 QHash<QChar, QWebElement> m_accessKeyNodes; 0125 QHash<QString, QChar> m_duplicateLinkElements; 0126 }; 0127 0128 #endif // WEBVIEW_H