Falkon Develop
Cross-platform Qt-based web browser
qmlplugins.cpp
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#include "qmlplugins.h"
19#include "qmlplugininterface.h"
20#include "qmlengine.h"
29#include "api/tabs/qmltab.h"
30#include "api/tabs/qmltabs.h"
37#include "api/menus/qmlmenu.h"
38#include "api/menus/qmlaction.h"
51#include "api/qmlenums.h"
52#include "qml/qmlstaticdata.h"
53#include <QQmlEngine>
54#include <QQmlContext>
55
56// static
58{
59 const char *url = "org.kde.falkon";
60 const int majorVersion = 1;
61 const int minorVersion = 0;
62 // PluginInterface
63 qmlRegisterType<QmlPluginInterface>(url, majorVersion, minorVersion, "PluginInterface");
64
65 // Bookmarks
66 qmlRegisterUncreatableType<QmlBookmarkTreeNode>(url, majorVersion, minorVersion, "BookmarkTreeNode", QSL("Unable to register type: BookmarkTreeNode"));
67
68 qmlRegisterSingletonType<QmlBookmarks>(url, majorVersion, minorVersion, "Bookmarks", [](QQmlEngine *engine, QJSEngine *scriptEngine) -> QObject * {
69 Q_UNUSED(engine)
70 Q_UNUSED(scriptEngine)
71
73 });
74
75 // TopSites
76 qmlRegisterUncreatableType<QmlMostVisitedUrl>(url, majorVersion, minorVersion, "MostVisitedURL", QSL("Unable to register type: MostVisitedURL"));
77
78 qmlRegisterSingletonType<QmlTopSites>(url, majorVersion, minorVersion, "TopSites", [](QQmlEngine *engine, QJSEngine *scriptEngine) -> QObject * {
79 Q_UNUSED(engine)
80 Q_UNUSED(scriptEngine)
81
83 });
84
85 // History
86 qmlRegisterUncreatableType<QmlHistoryItem>(url, majorVersion, minorVersion, "HistoryItem", QSL("Unable to register type: HistoryItem"));
87
88 qmlRegisterSingletonType<QmlHistory>(url, majorVersion, minorVersion, "History", [](QQmlEngine *engine, QJSEngine *scriptEngine) -> QObject * {
89 Q_UNUSED(engine)
90 Q_UNUSED(scriptEngine)
91
93 });
94
95 // Cookies
96 qmlRegisterUncreatableType<QmlCookie>(url, majorVersion, minorVersion, "Cookie", QSL("Unable to register type: Cookie"));
97
98 qmlRegisterSingletonType<QmlCookies>(url, majorVersion, minorVersion, "Cookies", [](QQmlEngine *engine, QJSEngine *scriptEngine) -> QObject * {
99 Q_UNUSED(engine)
100 Q_UNUSED(scriptEngine)
101
103 });
104
105 // Tabs
106 qmlRegisterUncreatableType<QmlTab>(url, majorVersion, minorVersion, "Tab", QSL("Unable to register type: Tab"));
107
108 qmlRegisterSingletonType<QmlTabs>(url, majorVersion, minorVersion, "Tabs", [](QQmlEngine *engine, QJSEngine *scriptEngine) -> QObject * {
109 Q_UNUSED(engine)
110 Q_UNUSED(scriptEngine)
111
113 });
114
115 // Notifications
116 qmlRegisterSingletonType<QmlNotifications>(url, majorVersion, minorVersion, "Notifications", [](QQmlEngine *engine, QJSEngine *scriptEngine) -> QObject * {
117 Q_UNUSED(scriptEngine)
118
119 auto *qmlEngine = qobject_cast<QmlEngine*>(engine);
120 if (!qmlEngine) {
121 qWarning() << "Unable to cast QQmlEngine * to QmlEngine *";
122 return nullptr;
123 }
124 QString filePath = qmlEngine->extensionPath();
125
126 auto *object = new QmlNotifications();
127 object->setPluginPath(filePath);
128 return object;
129 });
130
131 // Clipboard
132 qmlRegisterSingletonType<QmlClipboard>(url, majorVersion, minorVersion, "Clipboard", [](QQmlEngine *engine, QJSEngine *scriptEngine) -> QObject * {
133 Q_UNUSED(engine)
134 Q_UNUSED(scriptEngine)
135
137 });
138
139 // Windows
140 qmlRegisterUncreatableType<QmlWindow>(url, majorVersion, minorVersion, "Window", QSL("Unable to register type: Window"));
141
142 qmlRegisterSingletonType<QmlWindows>(url, majorVersion, minorVersion, "Windows", [](QQmlEngine *engine, QJSEngine *scriptEngine) -> QObject * {
143 Q_UNUSED(engine)
144 Q_UNUSED(scriptEngine)
145
147 });
148
149 // BrowserAction
150 qmlRegisterType<QmlBrowserAction>(url, majorVersion, minorVersion, "BrowserAction");
151
152 // SideBar
153 qmlRegisterType<QmlSideBar>(url, majorVersion, minorVersion, "SideBar");
154
155 // Menu
156 qmlRegisterUncreatableType<QmlMenu>(url, majorVersion, minorVersion, "Menu", QSL("Unable to register type: Menu"));
157
158 // Action
159 qmlRegisterUncreatableType<QmlAction>(url, majorVersion, minorVersion, "Action", QSL("Unable to register type: Action"));
160
161 // WebHitTestResult
162 qmlRegisterUncreatableType<QmlWebHitTestResult>(url, majorVersion, minorVersion, "WebHitTestResult", QSL("Unable to register type: WebHitTestResult"));
163
164 // Settings
165 qmlRegisterType<QmlSettings>(url, majorVersion, minorVersion, "Settings");
166
167 // Qz::Objects
168 qmlRegisterUncreatableType<QmlQzObjects>(url, majorVersion, minorVersion, "QzObjects", QSL("Unable to register type: QzObjects"));
169
170 // KeyEvents
171 qmlRegisterUncreatableType<QmlKeyEvent>(url, majorVersion, minorVersion, "KeyEvent", QSL("Unable to register type: KeyEvent"));
172
173 // MouseEvents
174 qmlRegisterUncreatableType<QmlMouseEvent>(url, majorVersion, minorVersion, "MouseEvent", QSL("Unable to register type: MouseEvent"));
175
176 // WheelEvents
177 qmlRegisterUncreatableType<QmlWheelEvent>(url, majorVersion, minorVersion, "WheelEvent", QSL("Unable to register type: WheelEvent"));
178
179 // UserScripts
180 qmlRegisterType<QmlUserScript>(url, majorVersion, minorVersion, "UserScript");
181
182 qmlRegisterSingletonType<QmlUserScripts>(url, majorVersion, minorVersion, "UserScripts", [](QQmlEngine *engine, QJSEngine *scriptEngine) -> QObject * {
183 Q_UNUSED(engine)
184 Q_UNUSED(scriptEngine)
185
187 });
188
189 qmlRegisterSingletonType<QmlExternalJsObject>(url, majorVersion, minorVersion, "ExternalJsObject", [](QQmlEngine *engine, QJSEngine *scriptEngine) -> QObject * {
190 Q_UNUSED(engine)
191 Q_UNUSED(scriptEngine)
192
194 });
195
196 // ExtensionScheme
197 qmlRegisterType<QmlExtensionScheme>(url, majorVersion, minorVersion, "ExtensionScheme");
198
199 qmlRegisterUncreatableType<QmlWebEngineUrlRequestJob>(url, majorVersion, minorVersion, "WebEngineUrlRequestJob", QSL("Unable to register type: WebEngineUrlRequestJob"));
200
201 // FileUtils
202 qmlRegisterSingletonType<QmlFileUtils>(url, majorVersion, minorVersion, "FileUtils", [](QQmlEngine *engine, QJSEngine *scriptEngine) -> QObject * {
203 Q_UNUSED(scriptEngine)
204
205 auto *qmlEngine = qobject_cast<QmlEngine*>(engine);
206 if (!qmlEngine) {
207 qWarning() << "Unable to cast QQmlEngine * to QmlEngine *";
208 return nullptr;
209 }
210 QString filePath = qmlEngine->extensionPath();
211 return new QmlFileUtils(filePath);
212 });
213
214 qmlRegisterUncreatableType<QmlEnums>(url, majorVersion, minorVersion, "Enums", QSL("Unable to register type: Enums"));
215}
The QmlFileUtils class, exposed to QML as FileUtils.
Definition: qmlfileutils.h:26
The class to display notifications.
static void registerQmlTypes()
Definition: qmlplugins.cpp:57
QmlClipboard * getClipboardSingleton()
QmlBookmarks * getBookmarksSingleton()
QmlUserScripts * getUserScriptsSingleton()
QmlExternalJsObject * getExternalJsObjectSingleton()
QmlTopSites * getTopSitesSingleton()
static QmlStaticData & instance()
QmlTabs * getTabsSingleton()
QmlCookies * getCookiesSingleton()
QmlWindows * getWindowsSingleton()
QmlHistory * getHistorySingleton()
#define QSL(x)
Definition: qzcommon.h:40