diff options
Diffstat (limited to 'src/webengine/api/qquickwebenginecontextmenudata.cpp')
-rw-r--r-- | src/webengine/api/qquickwebenginecontextmenudata.cpp | 209 |
1 files changed, 209 insertions, 0 deletions
diff --git a/src/webengine/api/qquickwebenginecontextmenudata.cpp b/src/webengine/api/qquickwebenginecontextmenudata.cpp new file mode 100644 index 000000000..2cc6eaf4b --- /dev/null +++ b/src/webengine/api/qquickwebenginecontextmenudata.cpp @@ -0,0 +1,209 @@ +/**************************************************************************** +** +** 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 "qquickwebenginecontextmenudata_p.h" + +#include "web_contents_adapter_client.h" + +QT_BEGIN_NAMESPACE + +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::MediaTypeNone, QQuickWebEngineContextMenuData::MediaTypeNone) +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::MediaTypeImage, QQuickWebEngineContextMenuData::MediaTypeImage) +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::MediaTypeAudio, QQuickWebEngineContextMenuData::MediaTypeAudio) +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::MediaTypeVideo, QQuickWebEngineContextMenuData::MediaTypeVideo) +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::MediaTypeCanvas, QQuickWebEngineContextMenuData::MediaTypeCanvas) +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::MediaTypeFile, QQuickWebEngineContextMenuData::MediaTypeFile) +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::MediaTypePlugin, QQuickWebEngineContextMenuData::MediaTypePlugin) + +/*! + \qmltype WebEngineContextMenuData + \instantiates QQuickWebEngineContextMenuData + \inqmlmodule QtWebEngine + \since QtWebEngine 1.3 + \brief Provides context data for populating or extending a context menu with actions. + + + WebEngineContextMenuData is returned by WebEngineView::contextMenuData() after a context menu event, + and contains information about where the context menu event took place. This is also in the context + in which any context specific WebEngineView::WebAction will be performed. +*/ + +QQuickWebEngineContextMenuData::QQuickWebEngineContextMenuData() : d(nullptr) +{ +} + +QQuickWebEngineContextMenuData::~QQuickWebEngineContextMenuData() +{ + delete d; +} + +/*! + \qmlproperty bool WebEngineContextMenuData::isValid + + Is \c true if the context data is valid; otherwise \c false. +*/ +bool QQuickWebEngineContextMenuData::isValid() const +{ + return d; +} + +/*! + \qmlproperty point WebEngineContextMenuData::position + + + Returns the position of the context, usually the mouse position where the context menu event was triggered. +*/ +QPoint QQuickWebEngineContextMenuData::position() const +{ + return d ? d->pos : QPoint(); +} + +/*! + \qmlproperty string WebEngineContextMenuData::linkText + + Returns the text of a link if the context is a link. +*/ +QString QQuickWebEngineContextMenuData::linkText() const +{ + return d ? d->linkText : QString(); +} + +/*! + \qmlproperty url WebEngineContextMenuData::linkUrl + + Returns the URL of a link if the context is a link. +*/ +QUrl QQuickWebEngineContextMenuData::linkUrl() const +{ + return d ? d->linkUrl : QUrl(); +} + +/*! + \qmlproperty string WebEngineContextMenuData::selectedText + + Returns the selected text of the context. +*/ +QString QQuickWebEngineContextMenuData::selectedText() const +{ + return d ? d->selectedText : QString(); +} + +/*! + \qmlproperty url WebEngineContextMenuData::mediaUrl + + If the context is a media element, returns the URL of that media. +*/ +QUrl QQuickWebEngineContextMenuData::mediaUrl() const +{ + return d ? d->mediaUrl : QUrl(); +} + +/*! + \qmlproperty enumeration WebEngineContextMenuData::mediaType + + Returns the type of the media element or \c MediaTypeNone if the context is not a media element. + + \value WebEngineContextMenuData.MediaTypeNone + The context is not a media element. + \value WebEngineContextMenuData.MediaTypeImage + The context is an image element + \value WebEngineContextMenuData.MediaTypeVideo + The context is a video element + \value WebEngineContextMenuData.MediaTypeAudio + The context is an audio element + \value WebEngineContextMenuData.MediaTypeCanvas + The context is a canvas element + \value WebEngineContextMenuData.MediaTypeFile + The context is a file + \value WebEngineContextMenuData.MediaTypePlugin + The context is a plugin +*/ + +QQuickWebEngineContextMenuData::MediaType QQuickWebEngineContextMenuData::mediaType() const +{ + return d ? static_cast<QQuickWebEngineContextMenuData::MediaType>(d->mediaType) : MediaTypeNone; +} + +/*! + \qmlproperty bool WebEngineContextMenuData::isContentEditable + + Returns \c true if the content is editable by the user; otherwise returns \c false. +*/ +bool QQuickWebEngineContextMenuData::isContentEditable() const +{ + return d ? d->isEditable : false; +} + +void QQuickWebEngineContextMenuData::update(const QtWebEngineCore::WebEngineContextMenuData &update) +{ + const QQuickWebEngineContextMenuData old(d); + d = new QtWebEngineCore::WebEngineContextMenuData(update); + + if (isValid() != old.isValid()) + Q_EMIT isValidChanged(); + + if (position() != old.position()) + Q_EMIT positionChanged(); + + if (selectedText() != old.selectedText()) + Q_EMIT selectedTextChanged(); + + if (linkText() != old.linkText()) + Q_EMIT linkTextChanged(); + + if (linkUrl() != old.linkUrl()) + Q_EMIT linkUrlChanged(); + + if (mediaUrl() != old.mediaUrl()) + Q_EMIT mediaUrlChanged(); + + if (mediaType() != old.mediaType()) + Q_EMIT mediaTypeChanged(); + + if (isContentEditable() != old.isContentEditable()) + Q_EMIT isContentEditableChanged(); +} + +QQuickWebEngineContextMenuData::QQuickWebEngineContextMenuData(const QQuickWebEngineContextMenuDataPrivate *p, QObject *parent) + : QObject(parent) + , d(p) +{ +} + +QT_END_NAMESPACE |