diff options
Diffstat (limited to 'src/webenginewidgets/plugins')
-rw-r--r-- | src/webenginewidgets/plugins/qwebengineview/CMakeLists.txt | 22 | ||||
-rw-r--r-- | src/webenginewidgets/plugins/qwebengineview/images/qwebengineview.png | bin | 0 -> 1473 bytes | |||
-rw-r--r-- | src/webenginewidgets/plugins/qwebengineview/qwebengineview_plugin.cpp | 137 | ||||
-rw-r--r-- | src/webenginewidgets/plugins/qwebengineview/qwebengineview_plugin.h | 107 |
4 files changed, 266 insertions, 0 deletions
diff --git a/src/webenginewidgets/plugins/qwebengineview/CMakeLists.txt b/src/webenginewidgets/plugins/qwebengineview/CMakeLists.txt new file mode 100644 index 000000000..3e6f324da --- /dev/null +++ b/src/webenginewidgets/plugins/qwebengineview/CMakeLists.txt @@ -0,0 +1,22 @@ +qt_internal_add_plugin(QWebEngineViewPlugin + OUTPUT_NAME qwebengineview + PLUGIN_TYPE designer + SOURCES + qwebengineview_plugin.cpp qwebengineview_plugin.h + LIBRARIES + Qt::Core + Qt::Designer + Qt::Gui + Qt::WebEngineWidgets +) + +set(qwebengineview_plugin_resource_files + "images/qwebengineview.png" +) + +qt_internal_add_resource(QWebEngineViewPlugin "qwebengineview_plugin" + PREFIX + "/qt-project.org/qwebengineview" + FILES + ${qwebengineview_plugin_resource_files} +) diff --git a/src/webenginewidgets/plugins/qwebengineview/images/qwebengineview.png b/src/webenginewidgets/plugins/qwebengineview/images/qwebengineview.png Binary files differnew file mode 100644 index 000000000..01a0920c9 --- /dev/null +++ b/src/webenginewidgets/plugins/qwebengineview/images/qwebengineview.png diff --git a/src/webenginewidgets/plugins/qwebengineview/qwebengineview_plugin.cpp b/src/webenginewidgets/plugins/qwebengineview/qwebengineview_plugin.cpp new file mode 100644 index 000000000..dff041800 --- /dev/null +++ b/src/webenginewidgets/plugins/qwebengineview/qwebengineview_plugin.cpp @@ -0,0 +1,137 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtWebEngine module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qwebengineview_plugin.h" + +#include <QtDesigner/QExtensionFactory> +#include <QtDesigner/QExtensionManager> + +#include <QtCore/qplugin.h> +#include <QWebEngineView> + +QT_BEGIN_NAMESPACE + +static const char toolTipC[] = + QT_TRANSLATE_NOOP(QWebEngineViewPlugin, + "A widget for displaying a web page, from the Qt WebEngineWidgets module"); + +QWebEngineViewPlugin::QWebEngineViewPlugin(QObject *parent) : + QObject(parent), + m_initialized(false) +{ +} + +QString QWebEngineViewPlugin::name() const +{ + return QStringLiteral("QWebEngineView"); +} + +QString QWebEngineViewPlugin::group() const +{ + return QStringLiteral("Display Widgets"); +} + +QString QWebEngineViewPlugin::toolTip() const +{ + return tr(toolTipC); +} + +QString QWebEngineViewPlugin::whatsThis() const +{ + return tr(toolTipC); +} + +QString QWebEngineViewPlugin::includeFile() const +{ + return QStringLiteral("<QtWebEngineWidgets/QWebEngineView>"); +} + +QIcon QWebEngineViewPlugin::icon() const +{ + return QIcon(QStringLiteral(":/qt-project.org/qwebengineview/images/qwebengineview.png")); +} + +bool QWebEngineViewPlugin::isContainer() const +{ + return false; +} + +QWidget *QWebEngineViewPlugin::createWidget(QWidget *parent) +{ + if (parent) + return new QWebEngineView(parent); + return new fake::QWebEngineView; +} + +bool QWebEngineViewPlugin::isInitialized() const +{ + return m_initialized; +} + +void QWebEngineViewPlugin::initialize(QDesignerFormEditorInterface * /*core*/) +{ + if (m_initialized) + return; + + m_initialized = true; +} + +QString QWebEngineViewPlugin::domXml() const +{ + return QStringLiteral("\ + <ui language=\"c++\">\ + <widget class=\"QWebEngineView\" name=\"webEngineView\">\ + <property name=\"url\">\ + <url>\ + <string>about:blank</string>\ + </url>\ + </property>\ + <property name=\"geometry\">\ + <rect>\ + <x>0</x>\ + <y>0</y>\ + <width>300</width>\ + <height>200</height>\ + </rect>\ + </property>\ + </widget>\ + </ui>"); +} + +QT_END_NAMESPACE diff --git a/src/webenginewidgets/plugins/qwebengineview/qwebengineview_plugin.h b/src/webenginewidgets/plugins/qwebengineview/qwebengineview_plugin.h new file mode 100644 index 000000000..8c0960adc --- /dev/null +++ b/src/webenginewidgets/plugins/qwebengineview/qwebengineview_plugin.h @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtWebEngine module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWEBENGINEVIEW_PLUGIN_H +#define QWEBENGINEVIEW_PLUGIN_H + +#include <QtUiPlugin/QDesignerCustomWidgetInterface> +#include <QtWidgets/QWidget> +#include <QtGui/QIcon> +#include <QtCore/QUrl> + +QT_BEGIN_NAMESPACE + +namespace fake { +// A lightweight "fake" QWebEngineView class that is returned when Qt Designer +// queries the default property values by calling +// QDesignerCustomWidgetInterface::createWidget() with 0 parent, preventing +// crashes during QWebEngine initialization (QTBUG-53984). +// The property list needs to be kept in sync with QWebEngineView. +class QWebEngineView : public QWidget { + Q_OBJECT + Q_PROPERTY(QString title READ title) + Q_PROPERTY(QUrl url READ url WRITE setUrl) // Designable + Q_PROPERTY(QUrl iconUrl READ iconUrl) + Q_PROPERTY(QIcon icon READ icon) + Q_PROPERTY(QString selectedText READ selectedText) + Q_PROPERTY(bool hasSelection READ hasSelection) + Q_PROPERTY(qreal zoomFactor READ zoomFactor WRITE setZoomFactor) // Designable + +public: + explicit QWebEngineView(QWidget *parent = nullptr) : QWidget(parent) {} + + QString title() const { return QString(); } + QUrl url() const { return QUrl(); } + void setUrl(const QUrl &) {} + QUrl iconUrl() const { return QUrl(); } + QIcon icon() const { return QIcon(); } + QString selectedText() { return QString(); } + bool hasSelection() { return false; } + qreal zoomFactor() const { return 1; } + void setZoomFactor(qreal) {} +}; +} // namespace fake + +class QWebEngineViewPlugin: public QObject, public QDesignerCustomWidgetInterface +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetInterface") + Q_INTERFACES(QDesignerCustomWidgetInterface) +public: + explicit QWebEngineViewPlugin(QObject *parent = nullptr); + + QString name() const override; + QString group() const override; + QString toolTip() const override; + QString whatsThis() const override; + QString includeFile() const override; + QIcon icon() const override; + bool isContainer() const override; + QWidget *createWidget(QWidget *parent) override; + bool isInitialized() const override; + void initialize(QDesignerFormEditorInterface *core) override; + QString domXml() const override; + +private: + bool m_initialized; +}; + +QT_END_NAMESPACE + +#endif // QWEBENGINEVIEW_PLUGIN_H |