Falkon Develop
Cross-platform Qt-based web browser
qmlplugininterface.h
Go to the documentation of this file.
1/* ============================================================
2* Falkon - Qt web browser
3* Copyright (C) 2018 Anmol Gautam <tarptaeya@gmail.com>
4*
5* This program is free software: you can redistribute it and/or modify
6* it under the terms of the GNU General Public License as published by
7* the Free Software Foundation, either version 3 of the License, or
8* (at your option) any later version.
9*
10* This program is distributed in the hope that it will be useful,
11* but WITHOUT ANY WARRANTY; without even the implied warranty of
12* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13* GNU General Public License for more details.
14*
15* You should have received a copy of the GNU General Public License
16* along with this program. If not, see <http://www.gnu.org/licenses/>.
17* ============================================================ */
18#pragma once
19
20#include <QJSValue>
21#include <QObject>
22#include <QQmlComponent>
23
24#include "desktopfile.h"
25#include "plugininterface.h"
26
27class QmlTab;
28
29class QmlPluginInterface : public QObject, public PluginInterface
30{
31 Q_OBJECT
32 Q_INTERFACES(PluginInterface)
33 Q_ENUM(InitState)
34 Q_PROPERTY(QJSValue init READ readInit WRITE setInit)
35 Q_PROPERTY(QJSValue unload READ readUnload WRITE setUnload)
36 Q_PROPERTY(QJSValue testPlugin READ readTestPlugin WRITE setTestPlugin)
37 Q_PROPERTY(QJSValue populateWebViewMenu READ readPopulateWebViewMenu WRITE setPopulateWebViewMenu)
38 Q_PROPERTY(QQmlComponent* settingsWindow READ settingsWindow WRITE setSettingsWindow)
39 Q_PROPERTY(QJSValue mouseDoubleClick READ readMouseDoubleClick WRITE setMouseDoubleClick)
40 Q_PROPERTY(QJSValue mousePress READ readMousePress WRITE setMousePress)
41 Q_PROPERTY(QJSValue mouseRelease READ readMouseRelease WRITE setMouseRelease)
42 Q_PROPERTY(QJSValue mouseMove READ readMouseMove WRITE setMouseMove)
43 Q_PROPERTY(QJSValue wheelEvent READ readWheelEvent WRITE setWheelEvent)
44 Q_PROPERTY(QJSValue keyPress READ readKeyPress WRITE setKeyPress)
45 Q_PROPERTY(QJSValue keyRelease READ readKeyRelease WRITE setKeyRelease)
46 Q_PROPERTY(QJSValue acceptNavigationRequest READ readAcceptNavigationRequest WRITE setAcceptNavigationRequest)
47 Q_PROPERTY(QQmlListProperty<QObject> childItems READ childItems)
48 Q_CLASSINFO("DefaultProperty", "childItems")
49
50public:
51 explicit QmlPluginInterface();
52 ~QmlPluginInterface() override;
53 void init(InitState state, const QString &settingsPath) override;
54 void unload() override;
55 bool testPlugin() override;
56 void setEngine(QQmlEngine *engine);
57 void setName(const QString &name);
58 void populateWebViewMenu(QMenu *menu, WebView *webview, const WebHitTestResult &webHitTestResult) override;
59 void showSettings(QWidget *parent = nullptr) override;
60
61 bool mouseDoubleClick(Qz::ObjectName type, QObject *obj, QMouseEvent *event) override;
62 bool mousePress(Qz::ObjectName type, QObject *obj, QMouseEvent *event) override;
63 bool mouseRelease(Qz::ObjectName type, QObject *obj, QMouseEvent *event) override;
64 bool mouseMove(Qz::ObjectName type, QObject *obj, QMouseEvent *event) override;
65
66 bool wheelEvent(Qz::ObjectName type, QObject *obj, QWheelEvent *event) override;
67
68 bool keyPress(Qz::ObjectName type, QObject *obj, QKeyEvent *event) override;
69 bool keyRelease(Qz::ObjectName type, QObject *obj, QKeyEvent *event) override;
70
71 bool acceptNavigationRequest(WebPage *page, const QUrl &url, QWebEnginePage::NavigationType type, bool isMainFrame) override;
72
73Q_SIGNALS:
75
76private:
77 QQmlEngine *m_engine = nullptr;
78 QString m_name;
79 QJSValue m_init;
80 QJSValue m_unload;
81 QJSValue m_testPlugin;
82 QJSValue m_populateWebViewMenu;
83 QQmlComponent *m_settingsWindow = nullptr;
84 QJSValue m_mouseDoubleClick;
85 QJSValue m_mousePress;
86 QJSValue m_mouseRelease;
87 QJSValue m_mouseMove;
88 QJSValue m_wheelEvent;
89 QJSValue m_keyPress;
90 QJSValue m_keyRelease;
91 QJSValue m_acceptNavigationRequest;
92 QList<QObject*> m_childItems;
93 QmlTab *m_qmlReusableTab = nullptr;
94 QJSValue readInit() const;
95 void setInit(const QJSValue &init);
96 QJSValue readUnload() const;
97 void setUnload(const QJSValue &unload);
98 QJSValue readTestPlugin() const;
99 void setTestPlugin(const QJSValue &testPlugin);
100 QJSValue readPopulateWebViewMenu() const;
101 void setPopulateWebViewMenu(const QJSValue &value);
102 QQmlComponent *settingsWindow() const;
103 void setSettingsWindow(QQmlComponent *settingsWindow);
104 QJSValue readMouseDoubleClick() const;
105 void setMouseDoubleClick(const QJSValue &mouseDoubleClick);
106 QJSValue readMousePress() const;
107 void setMousePress(const QJSValue &mousePress);
108 QJSValue readMouseRelease() const;
109 void setMouseRelease(const QJSValue &mouseRelease);
110 QJSValue readMouseMove() const;
111 void setMouseMove(const QJSValue &mouseMove);
112 QJSValue readWheelEvent() const;
113 void setWheelEvent(const QJSValue &wheelEvent);
114 QJSValue readKeyPress() const;
115 void setKeyPress(const QJSValue &keyPress);
116 QJSValue readKeyRelease() const;
117 void setKeyRelease(const QJSValue &keyRelease);
118 QJSValue readAcceptNavigationRequest() const;
119 void setAcceptNavigationRequest(const QJSValue &acceptNavigationRequest);
120 QQmlListProperty<QObject> childItems();
121};
bool testPlugin() override
QQmlListProperty< QObject > childItems
void showSettings(QWidget *parent=nullptr) override
void setName(const QString &name)
void unload() override
void setEngine(QQmlEngine *engine)
QJSValue acceptNavigationRequest
QQmlComponent * settingsWindow
The class exposing a browser tab to QML.
Definition: qmltab.h:32
int value(const QColor &c)
Definition: colors.cpp:238
ObjectName
Definition: qzcommon.h:89
State state