mirror of
https://invent.kde.org/network/falkon.git
synced 2024-12-20 18:56:34 +01:00
Created Menu API
This commit is contained in:
parent
368dcd4811
commit
316bc85eb6
@ -175,6 +175,9 @@ set(SRCS ${SRCS}
|
|||||||
plugins/qml/api/windows/qmlwindowtype.cpp
|
plugins/qml/api/windows/qmlwindowtype.cpp
|
||||||
plugins/qml/api/browseraction/qmlbrowseraction.cpp
|
plugins/qml/api/browseraction/qmlbrowseraction.cpp
|
||||||
plugins/qml/api/sidebar/qmlsidebar.cpp
|
plugins/qml/api/sidebar/qmlsidebar.cpp
|
||||||
|
plugins/qml/api/menus/qmlmenu.cpp
|
||||||
|
plugins/qml/api/menus/qmlaction.cpp
|
||||||
|
plugins/qml/api/menus/qmlwebhittestresult.cpp
|
||||||
popupwindow/popuplocationbar.cpp
|
popupwindow/popuplocationbar.cpp
|
||||||
popupwindow/popupstatusbarmessage.cpp
|
popupwindow/popupstatusbarmessage.cpp
|
||||||
popupwindow/popupwebview.cpp
|
popupwindow/popupwebview.cpp
|
||||||
|
50
src/lib/plugins/qml/api/menus/qmlaction.cpp
Normal file
50
src/lib/plugins/qml/api/menus/qmlaction.cpp
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
/* ============================================================
|
||||||
|
* Falkon - Qt web browser
|
||||||
|
* Copyright (C) 2018 Anmol Gautam <tarptaeya@gmail.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
* ============================================================ */
|
||||||
|
#include "qmlaction.h"
|
||||||
|
#include "qztools.h"
|
||||||
|
|
||||||
|
QmlAction::QmlAction(QAction *action, QObject *parent)
|
||||||
|
: QObject(parent)
|
||||||
|
, m_action(action)
|
||||||
|
{
|
||||||
|
connect(m_action, &QAction::triggered, this, &QmlAction::triggered);
|
||||||
|
}
|
||||||
|
|
||||||
|
void QmlAction::setProperties(const QVariantMap &map)
|
||||||
|
{
|
||||||
|
if (!m_action) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const QString &key : map.keys()) {
|
||||||
|
if (key == QSL("icon")) {
|
||||||
|
QUrl url = map.value(key).toUrl();
|
||||||
|
QIcon icon(QzTools::getPathFromUrl(url));
|
||||||
|
m_action->setIcon(icon);
|
||||||
|
} else if (key == QSL("shortcut")) {
|
||||||
|
m_action->setShortcut(QKeySequence(map.value(key).toString()));
|
||||||
|
} else {
|
||||||
|
m_action->setProperty(key.toUtf8(), map.value(key));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void QmlAction::update(const QVariantMap &map)
|
||||||
|
{
|
||||||
|
setProperties(map);
|
||||||
|
}
|
37
src/lib/plugins/qml/api/menus/qmlaction.h
Normal file
37
src/lib/plugins/qml/api/menus/qmlaction.h
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
/* ============================================================
|
||||||
|
* Falkon - Qt web browser
|
||||||
|
* Copyright (C) 2018 Anmol Gautam <tarptaeya@gmail.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
* ============================================================ */
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
#include <QAction>
|
||||||
|
#include <QVariantMap>
|
||||||
|
|
||||||
|
class QmlAction : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit QmlAction(QAction *action, QObject *parent = nullptr);
|
||||||
|
void setProperties(const QVariantMap &map);
|
||||||
|
Q_INVOKABLE void update(const QVariantMap &map);
|
||||||
|
|
||||||
|
Q_SIGNALS:
|
||||||
|
void triggered();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QAction *m_action;
|
||||||
|
};
|
70
src/lib/plugins/qml/api/menus/qmlmenu.cpp
Normal file
70
src/lib/plugins/qml/api/menus/qmlmenu.cpp
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
/* ============================================================
|
||||||
|
* Falkon - Qt web browser
|
||||||
|
* Copyright (C) 2018 Anmol Gautam <tarptaeya@gmail.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
* ============================================================ */
|
||||||
|
#include "qmlmenu.h"
|
||||||
|
#include "qztools.h"
|
||||||
|
|
||||||
|
QmlMenu::QmlMenu(QMenu *menu, QObject *parent)
|
||||||
|
: QObject(parent)
|
||||||
|
, m_menu(menu)
|
||||||
|
{
|
||||||
|
connect(m_menu, &QMenu::triggered, this, &QmlMenu::triggered);
|
||||||
|
}
|
||||||
|
|
||||||
|
QmlAction *QmlMenu::addAction(const QVariantMap &map)
|
||||||
|
{
|
||||||
|
if (!m_menu) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
QAction *action = new QAction();
|
||||||
|
QmlAction *qmlAction = new QmlAction(action, this);
|
||||||
|
qmlAction->setProperties(map);
|
||||||
|
m_menu->addAction(action);
|
||||||
|
|
||||||
|
return qmlAction;
|
||||||
|
}
|
||||||
|
|
||||||
|
QmlMenu *QmlMenu::addMenu(const QVariantMap &map)
|
||||||
|
{
|
||||||
|
if (!m_menu) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
QMenu *newMenu = new QMenu();
|
||||||
|
for (const QString &key : map.keys()) {
|
||||||
|
if (key == QSL("icon")) {
|
||||||
|
QUrl url = map.value(key).toUrl();
|
||||||
|
QIcon icon(QzTools::getPathFromUrl(url));
|
||||||
|
newMenu->setIcon(icon);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
newMenu->setProperty(key.toUtf8(), map.value(key));
|
||||||
|
}
|
||||||
|
m_menu->addMenu(newMenu);
|
||||||
|
QmlMenu *newQmlMenu = new QmlMenu(newMenu, this);
|
||||||
|
return newQmlMenu;
|
||||||
|
}
|
||||||
|
|
||||||
|
void QmlMenu::addSeparator()
|
||||||
|
{
|
||||||
|
if (!m_menu) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_menu->addSeparator();
|
||||||
|
}
|
37
src/lib/plugins/qml/api/menus/qmlmenu.h
Normal file
37
src/lib/plugins/qml/api/menus/qmlmenu.h
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
/* ============================================================
|
||||||
|
* Falkon - Qt web browser
|
||||||
|
* Copyright (C) 2018 Anmol Gautam <tarptaeya@gmail.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
* ============================================================ */
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "qmlaction.h"
|
||||||
|
#include <QMenu>
|
||||||
|
|
||||||
|
class QmlMenu : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit QmlMenu(QMenu *menu, QObject *parent = nullptr);
|
||||||
|
Q_INVOKABLE QmlAction *addAction(const QVariantMap &map);
|
||||||
|
Q_INVOKABLE QmlMenu *addMenu(const QVariantMap &map);
|
||||||
|
Q_INVOKABLE void addSeparator();
|
||||||
|
|
||||||
|
Q_SIGNALS:
|
||||||
|
void triggered();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QMenu *m_menu;
|
||||||
|
};
|
71
src/lib/plugins/qml/api/menus/qmlwebhittestresult.cpp
Normal file
71
src/lib/plugins/qml/api/menus/qmlwebhittestresult.cpp
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
/* ============================================================
|
||||||
|
* Falkon - Qt web browser
|
||||||
|
* Copyright (C) 2018 Anmol Gautam <tarptaeya@gmail.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
* ============================================================ */
|
||||||
|
#include "qmlwebhittestresult.h"
|
||||||
|
|
||||||
|
#define NOT !
|
||||||
|
|
||||||
|
QmlWebHitTestResult::QmlWebHitTestResult(const WebHitTestResult &webHitTestResult, QObject *parent)
|
||||||
|
: QObject(parent)
|
||||||
|
, m_webHitTestResult(webHitTestResult)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool QmlWebHitTestResult::isImage() const
|
||||||
|
{
|
||||||
|
return NOT m_webHitTestResult.imageUrl().isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool QmlWebHitTestResult::isContentEditable() const
|
||||||
|
{
|
||||||
|
return m_webHitTestResult.isContentEditable();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool QmlWebHitTestResult::isContentSelected() const
|
||||||
|
{
|
||||||
|
return m_webHitTestResult.isContentSelected();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool QmlWebHitTestResult::isNull() const
|
||||||
|
{
|
||||||
|
return m_webHitTestResult.isNull();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool QmlWebHitTestResult::isLink() const
|
||||||
|
{
|
||||||
|
return NOT m_webHitTestResult.linkUrl().isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool QmlWebHitTestResult::isMedia() const
|
||||||
|
{
|
||||||
|
return NOT m_webHitTestResult.mediaUrl().isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool QmlWebHitTestResult::mediaPaused() const
|
||||||
|
{
|
||||||
|
return m_webHitTestResult.mediaPaused();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool QmlWebHitTestResult::mediaMuted() const
|
||||||
|
{
|
||||||
|
return m_webHitTestResult.mediaMuted();
|
||||||
|
}
|
||||||
|
|
||||||
|
QString QmlWebHitTestResult::tagName() const
|
||||||
|
{
|
||||||
|
return m_webHitTestResult.tagName();
|
||||||
|
}
|
40
src/lib/plugins/qml/api/menus/qmlwebhittestresult.h
Normal file
40
src/lib/plugins/qml/api/menus/qmlwebhittestresult.h
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
/* ============================================================
|
||||||
|
* Falkon - Qt web browser
|
||||||
|
* Copyright (C) 2018 Anmol Gautam <tarptaeya@gmail.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
* ============================================================ */
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "webhittestresult.h"
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
class QmlWebHitTestResult : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit QmlWebHitTestResult(const WebHitTestResult &webHitTestResult, QObject *parent = nullptr);
|
||||||
|
Q_INVOKABLE bool isImage() const;
|
||||||
|
Q_INVOKABLE bool isContentEditable() const;
|
||||||
|
Q_INVOKABLE bool isContentSelected() const;
|
||||||
|
Q_INVOKABLE bool isNull() const;
|
||||||
|
Q_INVOKABLE bool isLink() const;
|
||||||
|
Q_INVOKABLE bool isMedia() const;
|
||||||
|
Q_INVOKABLE bool mediaPaused() const;
|
||||||
|
Q_INVOKABLE bool mediaMuted() const;
|
||||||
|
Q_INVOKABLE QString tagName() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
WebHitTestResult m_webHitTestResult;
|
||||||
|
};
|
@ -22,6 +22,8 @@
|
|||||||
#include "browserwindow.h"
|
#include "browserwindow.h"
|
||||||
#include "navigationbar.h"
|
#include "navigationbar.h"
|
||||||
#include "sidebar.h"
|
#include "sidebar.h"
|
||||||
|
#include "api/menus/qmlmenu.h"
|
||||||
|
#include "api/menus/qmlwebhittestresult.h"
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
QmlPluginInterface::QmlPluginInterface()
|
QmlPluginInterface::QmlPluginInterface()
|
||||||
@ -32,7 +34,7 @@ QmlPluginInterface::QmlPluginInterface()
|
|||||||
|
|
||||||
void QmlPluginInterface::init(InitState state, const QString &settingsPath)
|
void QmlPluginInterface::init(InitState state, const QString &settingsPath)
|
||||||
{
|
{
|
||||||
if (!m_jsInit.isCallable()) {
|
if (!m_init.isCallable()) {
|
||||||
qWarning() << "Unable to call" << __FUNCTION__ << "on" << m_name << "plugin";
|
qWarning() << "Unable to call" << __FUNCTION__ << "on" << m_name << "plugin";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -40,7 +42,7 @@ void QmlPluginInterface::init(InitState state, const QString &settingsPath)
|
|||||||
QJSValueList args;
|
QJSValueList args;
|
||||||
args.append(state);
|
args.append(state);
|
||||||
args.append(settingsPath);
|
args.append(settingsPath);
|
||||||
m_jsInit.call(args);
|
m_init.call(args);
|
||||||
|
|
||||||
if (m_browserAction) {
|
if (m_browserAction) {
|
||||||
for (BrowserWindow *window : mApp->windows()) {
|
for (BrowserWindow *window : mApp->windows()) {
|
||||||
@ -62,12 +64,12 @@ DesktopFile QmlPluginInterface::metaData() const
|
|||||||
|
|
||||||
void QmlPluginInterface::unload()
|
void QmlPluginInterface::unload()
|
||||||
{
|
{
|
||||||
if (!m_jsUnload.isCallable()) {
|
if (!m_unload.isCallable()) {
|
||||||
qWarning() << "Unable to call" << __FUNCTION__ << "on" << m_name << "plugin";
|
qWarning() << "Unable to call" << __FUNCTION__ << "on" << m_name << "plugin";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_jsUnload.call();
|
m_unload.call();
|
||||||
|
|
||||||
if (m_browserAction) {
|
if (m_browserAction) {
|
||||||
for (BrowserWindow *window : mApp->windows()) {
|
for (BrowserWindow *window : mApp->windows()) {
|
||||||
@ -86,43 +88,69 @@ void QmlPluginInterface::unload()
|
|||||||
|
|
||||||
bool QmlPluginInterface::testPlugin()
|
bool QmlPluginInterface::testPlugin()
|
||||||
{
|
{
|
||||||
if (!m_jsTestPlugin.isCallable()) {
|
if (!m_testPlugin.isCallable()) {
|
||||||
qWarning() << "Unable to call" << __FUNCTION__ << "on" << m_name << "plugin";
|
qWarning() << "Unable to call" << __FUNCTION__ << "on" << m_name << "plugin";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
QJSValue ret = m_jsTestPlugin.call();
|
QJSValue ret = m_testPlugin.call();
|
||||||
return ret.toBool();
|
return ret.toBool();
|
||||||
}
|
}
|
||||||
|
|
||||||
QJSValue QmlPluginInterface::jsInit() const
|
void QmlPluginInterface::populateWebViewMenu(QMenu *menu, WebView *webview, const WebHitTestResult &webHitTestResult)
|
||||||
{
|
{
|
||||||
return m_jsInit;
|
Q_UNUSED(webview)
|
||||||
|
|
||||||
|
if (!m_populateWebViewMenu.isCallable()) {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmlPluginInterface::setJsInit(const QJSValue &init)
|
QmlMenu *qmlMenu = new QmlMenu(menu);
|
||||||
{
|
QmlWebHitTestResult *qmlWebHitTestResult = new QmlWebHitTestResult(webHitTestResult);
|
||||||
m_jsInit = init;
|
|
||||||
|
QJSValueList args;
|
||||||
|
args.append(m_engine->newQObject(qmlMenu));
|
||||||
|
args.append(m_engine->newQObject(qmlWebHitTestResult));
|
||||||
|
m_populateWebViewMenu.call(args);
|
||||||
|
menu->addSeparator();
|
||||||
|
|
||||||
|
qmlMenu->deleteLater();
|
||||||
|
qmlWebHitTestResult->deleteLater();
|
||||||
}
|
}
|
||||||
|
|
||||||
QJSValue QmlPluginInterface::jsUnload() const
|
QJSValue QmlPluginInterface::readInit() const
|
||||||
{
|
{
|
||||||
return m_jsUnload;
|
return m_init;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmlPluginInterface::setJsUnload(const QJSValue &unload)
|
void QmlPluginInterface::setInit(const QJSValue &init)
|
||||||
{
|
{
|
||||||
m_jsUnload = unload;
|
m_init = init;
|
||||||
}
|
}
|
||||||
|
|
||||||
QJSValue QmlPluginInterface::jsTestPlugin() const
|
QJSValue QmlPluginInterface::readUnload() const
|
||||||
{
|
{
|
||||||
return m_jsTestPlugin;
|
return m_unload;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmlPluginInterface::setJsTestPlugin(const QJSValue &testPlugin)
|
void QmlPluginInterface::setUnload(const QJSValue &unload)
|
||||||
{
|
{
|
||||||
m_jsTestPlugin = testPlugin;
|
m_unload = unload;
|
||||||
|
}
|
||||||
|
|
||||||
|
QJSValue QmlPluginInterface::readTestPlugin() const
|
||||||
|
{
|
||||||
|
return m_testPlugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
void QmlPluginInterface::setTestPlugin(const QJSValue &testPlugin)
|
||||||
|
{
|
||||||
|
m_testPlugin = testPlugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
void QmlPluginInterface::setEngine(QQmlEngine *engine)
|
||||||
|
{
|
||||||
|
m_engine = engine;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmlPluginInterface::setName(const QString &name)
|
void QmlPluginInterface::setName(const QString &name)
|
||||||
@ -150,6 +178,16 @@ void QmlPluginInterface::setSideBar(QmlSideBar *sideBar)
|
|||||||
m_sideBar = sideBar;
|
m_sideBar = sideBar;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QJSValue QmlPluginInterface::readPopulateWebViewMenu() const
|
||||||
|
{
|
||||||
|
return m_populateWebViewMenu;
|
||||||
|
}
|
||||||
|
|
||||||
|
void QmlPluginInterface::setPopulateWebViewMenu(const QJSValue &value)
|
||||||
|
{
|
||||||
|
m_populateWebViewMenu = value;
|
||||||
|
}
|
||||||
|
|
||||||
void QmlPluginInterface::addButton(BrowserWindow *window)
|
void QmlPluginInterface::addButton(BrowserWindow *window)
|
||||||
{
|
{
|
||||||
if (m_browserAction->location().testFlag(QmlBrowserAction::NavigationToolBar)) {
|
if (m_browserAction->location().testFlag(QmlBrowserAction::NavigationToolBar)) {
|
||||||
|
@ -30,11 +30,12 @@ class QmlPluginInterface : public QObject, public PluginInterface
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
Q_INTERFACES(PluginInterface)
|
Q_INTERFACES(PluginInterface)
|
||||||
Q_ENUMS(InitState)
|
Q_ENUMS(InitState)
|
||||||
Q_PROPERTY(QJSValue init READ jsInit WRITE setJsInit)
|
Q_PROPERTY(QJSValue init READ readInit WRITE setInit)
|
||||||
Q_PROPERTY(QJSValue unload READ jsUnload WRITE setJsUnload)
|
Q_PROPERTY(QJSValue unload READ readUnload WRITE setUnload)
|
||||||
Q_PROPERTY(QJSValue testPlugin READ jsTestPlugin WRITE setJsTestPlugin)
|
Q_PROPERTY(QJSValue testPlugin READ readTestPlugin WRITE setTestPlugin)
|
||||||
Q_PROPERTY(QmlBrowserAction* browserAction READ browserAction WRITE setBrowserAction)
|
Q_PROPERTY(QmlBrowserAction* browserAction READ browserAction WRITE setBrowserAction)
|
||||||
Q_PROPERTY(QmlSideBar* sideBar READ sideBar WRITE setSideBar)
|
Q_PROPERTY(QmlSideBar* sideBar READ sideBar WRITE setSideBar)
|
||||||
|
Q_PROPERTY(QJSValue populateWebViewMenu READ readPopulateWebViewMenu WRITE setPopulateWebViewMenu)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit QmlPluginInterface();
|
explicit QmlPluginInterface();
|
||||||
@ -42,30 +43,35 @@ public:
|
|||||||
void init(InitState state, const QString &settingsPath);
|
void init(InitState state, const QString &settingsPath);
|
||||||
void unload();
|
void unload();
|
||||||
bool testPlugin();
|
bool testPlugin();
|
||||||
|
void setEngine(QQmlEngine *engine);
|
||||||
void setName(const QString &name);
|
void setName(const QString &name);
|
||||||
|
void populateWebViewMenu(QMenu *menu, WebView *webview, const WebHitTestResult &webHitTestResult) override;
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void qmlPluginUnloaded();
|
void qmlPluginUnloaded();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
QQmlEngine *m_engine;
|
||||||
QString m_name;
|
QString m_name;
|
||||||
QJSValue m_jsInit;
|
QJSValue m_init;
|
||||||
QJSValue m_jsUnload;
|
QJSValue m_unload;
|
||||||
QJSValue m_jsTestPlugin;
|
QJSValue m_testPlugin;
|
||||||
QmlBrowserAction *m_browserAction;
|
QmlBrowserAction *m_browserAction;
|
||||||
QmlSideBar *m_sideBar;
|
QmlSideBar *m_sideBar;
|
||||||
bool loaded;
|
QJSValue m_populateWebViewMenu;
|
||||||
|
|
||||||
QJSValue jsInit() const;
|
QJSValue readInit() const;
|
||||||
void setJsInit(const QJSValue &init);
|
void setInit(const QJSValue &init);
|
||||||
QJSValue jsUnload() const;
|
QJSValue readUnload() const;
|
||||||
void setJsUnload(const QJSValue &unload);
|
void setUnload(const QJSValue &unload);
|
||||||
QJSValue jsTestPlugin() const;
|
QJSValue readTestPlugin() const;
|
||||||
void setJsTestPlugin(const QJSValue &testPlugin);
|
void setTestPlugin(const QJSValue &testPlugin);
|
||||||
QmlBrowserAction *browserAction() const;
|
QmlBrowserAction *browserAction() const;
|
||||||
void setBrowserAction(QmlBrowserAction *browserAction);
|
void setBrowserAction(QmlBrowserAction *browserAction);
|
||||||
QmlSideBar *sideBar() const;
|
QmlSideBar *sideBar() const;
|
||||||
void setSideBar(QmlSideBar *sideBar);
|
void setSideBar(QmlSideBar *sideBar);
|
||||||
|
QJSValue readPopulateWebViewMenu() const;
|
||||||
|
void setPopulateWebViewMenu(const QJSValue &value);
|
||||||
|
|
||||||
void addButton(BrowserWindow *window);
|
void addButton(BrowserWindow *window);
|
||||||
void removeButton(BrowserWindow *window);
|
void removeButton(BrowserWindow *window);
|
||||||
|
@ -27,6 +27,7 @@ QmlPluginLoader::QmlPluginLoader(const QString &path)
|
|||||||
void QmlPluginLoader::createComponent()
|
void QmlPluginLoader::createComponent()
|
||||||
{
|
{
|
||||||
m_interface = qobject_cast<QmlPluginInterface*>(m_component->create());
|
m_interface = qobject_cast<QmlPluginInterface*>(m_component->create());
|
||||||
|
m_interface->setEngine(m_engine);
|
||||||
connect(m_interface, &QmlPluginInterface::qmlPluginUnloaded, this, [this]{
|
connect(m_interface, &QmlPluginInterface::qmlPluginUnloaded, this, [this]{
|
||||||
delete m_component;
|
delete m_component;
|
||||||
delete m_engine;
|
delete m_engine;
|
||||||
|
@ -35,6 +35,9 @@
|
|||||||
#include "api/windows/qmlwindowtype.h"
|
#include "api/windows/qmlwindowtype.h"
|
||||||
#include "api/browseraction/qmlbrowseraction.h"
|
#include "api/browseraction/qmlbrowseraction.h"
|
||||||
#include "api/sidebar/qmlsidebar.h"
|
#include "api/sidebar/qmlsidebar.h"
|
||||||
|
#include "api/menus/qmlmenu.h"
|
||||||
|
#include "api/menus/qmlaction.h"
|
||||||
|
#include "api/menus/qmlwebhittestresult.h"
|
||||||
|
|
||||||
#include <QQmlEngine>
|
#include <QQmlEngine>
|
||||||
|
|
||||||
@ -137,4 +140,13 @@ void QmlPlugins::registerQmlTypes()
|
|||||||
|
|
||||||
// SideBar
|
// SideBar
|
||||||
qmlRegisterType<QmlSideBar>("org.kde.falkon", 1, 0, "SideBar");
|
qmlRegisterType<QmlSideBar>("org.kde.falkon", 1, 0, "SideBar");
|
||||||
|
|
||||||
|
// Menu
|
||||||
|
qmlRegisterUncreatableType<QmlMenu>("org.kde.falkon", 1, 0, "Menu", "Unable to register type: Menu");
|
||||||
|
|
||||||
|
// Action
|
||||||
|
qmlRegisterUncreatableType<QmlAction>("org.kde.falkon", 1, 0, "Action", "Unable to register type: Action");
|
||||||
|
|
||||||
|
// WebHitTestResult
|
||||||
|
qmlRegisterUncreatableType<QmlWebHitTestResult>("org.kde.falkon", 1, 0, "WebHitTestResult", "Unable to register type: WebHitTestResult");
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user