Warning, file /network/falkon/src/lib/plugins/qml/qmlplugininterface.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /* ============================================================
0002 * Falkon - Qt web browser
0003 * Copyright (C) 2018 Anmol Gautam <tarptaeya@gmail.com>
0004 *
0005 * This program is free software: you can redistribute it and/or modify
0006 * it under the terms of the GNU General Public License as published by
0007 * the Free Software Foundation, either version 3 of the License, or
0008 * (at your option) any later version.
0009 *
0010 * This program is distributed in the hope that it will be useful,
0011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0013 * GNU General Public License for more details.
0014 *
0015 * You should have received a copy of the GNU General Public License
0016 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
0017 * ============================================================ */
0018 #pragma once
0019 
0020 #include <QJSValue>
0021 #include <QObject>
0022 #include <QQmlComponent>
0023 
0024 #include "desktopfile.h"
0025 #include "plugininterface.h"
0026 
0027 class QmlTab;
0028 
0029 class QmlPluginInterface : public QObject, public PluginInterface
0030 {
0031     Q_OBJECT
0032     Q_INTERFACES(PluginInterface)
0033     Q_ENUM(InitState)
0034     Q_PROPERTY(QJSValue init READ readInit WRITE setInit)
0035     Q_PROPERTY(QJSValue unload READ readUnload WRITE setUnload)
0036     Q_PROPERTY(QJSValue testPlugin READ readTestPlugin WRITE setTestPlugin)
0037     Q_PROPERTY(QJSValue populateWebViewMenu READ readPopulateWebViewMenu WRITE setPopulateWebViewMenu)
0038     Q_PROPERTY(QQmlComponent* settingsWindow READ settingsWindow WRITE setSettingsWindow)
0039     Q_PROPERTY(QJSValue mouseDoubleClick READ readMouseDoubleClick WRITE setMouseDoubleClick)
0040     Q_PROPERTY(QJSValue mousePress READ readMousePress WRITE setMousePress)
0041     Q_PROPERTY(QJSValue mouseRelease READ readMouseRelease WRITE setMouseRelease)
0042     Q_PROPERTY(QJSValue mouseMove READ readMouseMove WRITE setMouseMove)
0043     Q_PROPERTY(QJSValue wheelEvent READ readWheelEvent WRITE setWheelEvent)
0044     Q_PROPERTY(QJSValue keyPress READ readKeyPress WRITE setKeyPress)
0045     Q_PROPERTY(QJSValue keyRelease READ readKeyRelease WRITE setKeyRelease)
0046     Q_PROPERTY(QJSValue acceptNavigationRequest READ readAcceptNavigationRequest WRITE setAcceptNavigationRequest)
0047     Q_PROPERTY(QQmlListProperty<QObject> childItems READ childItems)
0048     Q_CLASSINFO("DefaultProperty", "childItems")
0049 
0050 public:
0051     explicit QmlPluginInterface();
0052     ~QmlPluginInterface() override;
0053     void init(InitState state, const QString &settingsPath) override;
0054     void unload() override;
0055     bool testPlugin() override;
0056     void setEngine(QQmlEngine *engine);
0057     void setName(const QString &name);
0058     void populateWebViewMenu(QMenu *menu, WebView *webview, const WebHitTestResult &webHitTestResult) override;
0059     void showSettings(QWidget *parent = nullptr) override;
0060 
0061     bool mouseDoubleClick(Qz::ObjectName type, QObject *obj, QMouseEvent *event) override;
0062     bool mousePress(Qz::ObjectName type, QObject *obj, QMouseEvent *event) override;
0063     bool mouseRelease(Qz::ObjectName type, QObject *obj, QMouseEvent *event) override;
0064     bool mouseMove(Qz::ObjectName type, QObject *obj, QMouseEvent *event) override;
0065 
0066     bool wheelEvent(Qz::ObjectName type, QObject *obj, QWheelEvent *event) override;
0067 
0068     bool keyPress(Qz::ObjectName type, QObject *obj, QKeyEvent *event) override;
0069     bool keyRelease(Qz::ObjectName type, QObject *obj, QKeyEvent *event) override;
0070 
0071     bool acceptNavigationRequest(WebPage *page, const QUrl &url, QWebEnginePage::NavigationType type, bool isMainFrame) override;
0072 
0073 Q_SIGNALS:
0074     void qmlPluginUnloaded();
0075 
0076 private:
0077     QQmlEngine *m_engine = nullptr;
0078     QString m_name;
0079     QJSValue m_init;
0080     QJSValue m_unload;
0081     QJSValue m_testPlugin;
0082     QJSValue m_populateWebViewMenu;
0083     QQmlComponent *m_settingsWindow = nullptr;
0084     QJSValue m_mouseDoubleClick;
0085     QJSValue m_mousePress;
0086     QJSValue m_mouseRelease;
0087     QJSValue m_mouseMove;
0088     QJSValue m_wheelEvent;
0089     QJSValue m_keyPress;
0090     QJSValue m_keyRelease;
0091     QJSValue m_acceptNavigationRequest;
0092     QList<QObject*> m_childItems;
0093     QmlTab *m_qmlReusableTab = nullptr;
0094     QJSValue readInit() const;
0095     void setInit(const QJSValue &init);
0096     QJSValue readUnload() const;
0097     void setUnload(const QJSValue &unload);
0098     QJSValue readTestPlugin() const;
0099     void setTestPlugin(const QJSValue &testPlugin);
0100     QJSValue readPopulateWebViewMenu() const;
0101     void setPopulateWebViewMenu(const QJSValue &value);
0102     QQmlComponent *settingsWindow() const;
0103     void setSettingsWindow(QQmlComponent *settingsWindow);
0104     QJSValue readMouseDoubleClick() const;
0105     void setMouseDoubleClick(const QJSValue &mouseDoubleClick);
0106     QJSValue readMousePress() const;
0107     void setMousePress(const QJSValue &mousePress);
0108     QJSValue readMouseRelease() const;
0109     void setMouseRelease(const QJSValue &mouseRelease);
0110     QJSValue readMouseMove() const;
0111     void setMouseMove(const QJSValue &mouseMove);
0112     QJSValue readWheelEvent() const;
0113     void setWheelEvent(const QJSValue &wheelEvent);
0114     QJSValue readKeyPress() const;
0115     void setKeyPress(const QJSValue &keyPress);
0116     QJSValue readKeyRelease() const;
0117     void setKeyRelease(const QJSValue &keyRelease);
0118     QJSValue readAcceptNavigationRequest() const;
0119     void setAcceptNavigationRequest(const QJSValue &acceptNavigationRequest);
0120     QQmlListProperty<QObject> childItems();
0121 };