File indexing completed on 2024-03-24 04:45:16
0001 /* 0002 SPDX-FileCopyrightText: 2009 Dawit Alemayehu <adawit@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 0007 #ifndef WEBKITPART_EXT_H 0008 #define WEBKITPART_EXT_H 0009 0010 #include <QPointer> 0011 0012 #include <KParts/BrowserExtension> 0013 #include <KParts/TextExtension> 0014 #include <KParts/HtmlExtension> 0015 #include <KParts/HtmlSettingsInterface> 0016 #include <KParts/SelectorInterface> 0017 #include <KParts/ScriptableExtension> 0018 0019 class QUrl; 0020 class KWebKitPart; 0021 class WebView; 0022 class KSaveFile; 0023 class QWebFrame; 0024 0025 class WebKitBrowserExtension : public KParts::BrowserExtension 0026 { 0027 Q_OBJECT 0028 0029 public: 0030 WebKitBrowserExtension(KWebKitPart *parent, const QByteArray& cachedHistoryData); 0031 ~WebKitBrowserExtension() override; 0032 0033 int xOffset() override; 0034 int yOffset() override; 0035 void saveState(QDataStream &) override; 0036 void restoreState(QDataStream &) override; 0037 void saveHistory(); 0038 0039 Q_SIGNALS: 0040 void saveUrl(const QUrl &); 0041 void saveHistory(QObject*, const QByteArray&); 0042 0043 public Q_SLOTS: 0044 void cut(); 0045 void copy(); 0046 void paste(); 0047 void print(); 0048 0049 void slotSaveDocument(); 0050 void slotSaveFrame(); 0051 void searchProvider(); 0052 void reparseConfiguration(); 0053 void disableScrolling(); 0054 0055 void zoomIn(); 0056 void zoomOut(); 0057 void zoomNormal(); 0058 void toogleZoomTextOnly(); 0059 void toogleZoomToDPI(); 0060 void slotSelectAll(); 0061 0062 void slotFrameInWindow(); 0063 void slotFrameInTab(); 0064 void slotFrameInTop(); 0065 void slotReloadFrame(); 0066 void slotBlockIFrame(); 0067 0068 void slotSaveImageAs(); 0069 void slotSendImage(); 0070 void slotCopyImageURL(); 0071 void slotCopyImage(); 0072 void slotViewImage(); 0073 void slotBlockImage(); 0074 void slotBlockHost(); 0075 0076 void slotCopyLinkURL(); 0077 void slotCopyLinkText(); 0078 void slotSaveLinkAs(); 0079 void slotCopyEmailAddress(); 0080 0081 void slotViewDocumentSource(); 0082 void slotViewFrameSource(); 0083 0084 void updateEditActions(); 0085 void updateActions(); 0086 0087 void slotPlayMedia(); 0088 void slotMuteMedia(); 0089 void slotLoopMedia(); 0090 void slotShowMediaControls(); 0091 void slotSaveMedia(); 0092 void slotCopyMedia(); 0093 void slotTextDirectionChanged(); 0094 void slotCheckSpelling(); 0095 void slotSpellCheckSelection(); 0096 void slotSpellCheckDone(const QString&); 0097 void spellCheckerCorrected(const QString&, int, const QString&); 0098 void spellCheckerMisspelling(const QString&, int); 0099 void slotPrintRequested(QWebFrame*); 0100 void slotPrintPreview(); 0101 0102 void slotOpenSelection(); 0103 void slotLinkInTop(); 0104 0105 private: 0106 WebView* view(); 0107 QPointer<KWebKitPart> m_part; 0108 QPointer<WebView> m_view; 0109 quint32 m_spellTextSelectionStart; 0110 quint32 m_spellTextSelectionEnd; 0111 QByteArray m_historyData; 0112 }; 0113 0114 /** 0115 * @internal 0116 * Implements the TextExtension interface 0117 */ 0118 class KWebKitTextExtension : public KParts::TextExtension 0119 { 0120 Q_OBJECT 0121 public: 0122 explicit KWebKitTextExtension(KWebKitPart* part); 0123 0124 bool hasSelection() const override; 0125 QString selectedText(Format format) const override; 0126 QString completeText(Format format) const override; 0127 0128 private: 0129 KWebKitPart* part() const; 0130 }; 0131 0132 /** 0133 * @internal 0134 * Implements the HtmlExtension interface 0135 */ 0136 class KWebKitHtmlExtension : public KParts::HtmlExtension, 0137 public KParts::SelectorInterface, 0138 public KParts::HtmlSettingsInterface 0139 { 0140 Q_OBJECT 0141 Q_INTERFACES(KParts::SelectorInterface) 0142 Q_INTERFACES(KParts::HtmlSettingsInterface) 0143 0144 public: 0145 explicit KWebKitHtmlExtension(KWebKitPart* part); 0146 0147 // HtmlExtension 0148 QUrl baseUrl() const override; 0149 bool hasSelection() const override; 0150 0151 // SelectorInterface 0152 QueryMethods supportedQueryMethods() const override; 0153 Element querySelector(const QString& query, KParts::SelectorInterface::QueryMethod method) const override; 0154 QList<Element> querySelectorAll(const QString& query, KParts::SelectorInterface::QueryMethod method) const override; 0155 0156 // HtmlSettingsInterface 0157 QVariant htmlSettingsProperty(HtmlSettingsType type) const override; 0158 bool setHtmlSettingsProperty(HtmlSettingsType type, const QVariant& value) override; 0159 0160 private: 0161 KWebKitPart* part() const; 0162 }; 0163 0164 class KWebKitScriptableExtension : public KParts::ScriptableExtension 0165 { 0166 Q_OBJECT 0167 0168 public: 0169 explicit KWebKitScriptableExtension(KWebKitPart* part); 0170 0171 QVariant rootObject() override; 0172 0173 QVariant get(ScriptableExtension* callerPrincipal, quint64 objId, const QString& propName) override; 0174 0175 bool put(ScriptableExtension* callerPrincipal, quint64 objId, const QString& propName, const QVariant& value) override; 0176 0177 bool setException(ScriptableExtension* callerPrincipal, const QString& message) override; 0178 0179 QVariant evaluateScript(ScriptableExtension* callerPrincipal, 0180 quint64 contextObjectId, 0181 const QString& code, 0182 ScriptLanguage language = ECMAScript) override; 0183 0184 bool isScriptLanguageSupported(ScriptLanguage lang) const override; 0185 0186 private: 0187 QVariant encloserForKid(KParts::ScriptableExtension* kid) override; 0188 KWebKitPart* part(); 0189 }; 0190 0191 #endif // WEBKITPART_EXT_H