From 11e90d520a782e1d5da1ed965ab070f868199032 Mon Sep 17 00:00:00 2001 From: Valentin Fokin Date: Tue, 23 Jan 2018 13:46:43 +0100 Subject: Add EditFlags and MediaFlags to Quick and Widget API - EditFlags shows the available edit actions - MediaFlags shows the status and available actions of the current media element - Update the documentations - Register ContextMenuRequest 1.1 - Update plugins.qmltypes [ChangeLog][QtWebEngine][QtWebEngineWidgets] Add EditFlags and MediaFlags to the APIs Change-Id: Ia7603696a291df5465c5e612adc2456f5f6cb479 Reviewed-by: Leena Miettinen Reviewed-by: Peter Varga Reviewed-by: Allan Sandfeld Jensen --- .../api/qwebenginecontextmenudata.cpp | 87 ++++++++++++++++++++++ .../api/qwebenginecontextmenudata.h | 36 +++++++++ 2 files changed, 123 insertions(+) (limited to 'src/webenginewidgets/api') diff --git a/src/webenginewidgets/api/qwebenginecontextmenudata.cpp b/src/webenginewidgets/api/qwebenginecontextmenudata.cpp index 63e11175b..82c17fe3b 100644 --- a/src/webenginewidgets/api/qwebenginecontextmenudata.cpp +++ b/src/webenginewidgets/api/qwebenginecontextmenudata.cpp @@ -43,6 +43,7 @@ QT_BEGIN_NAMESPACE +// Match MediaType enum ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::MediaTypeNone, QWebEngineContextMenuData::MediaTypeNone) ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::MediaTypeImage, QWebEngineContextMenuData::MediaTypeImage) ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::MediaTypeAudio, QWebEngineContextMenuData::MediaTypeAudio) @@ -51,6 +52,31 @@ ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::MediaTypeCanvas, Q ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::MediaTypeFile, QWebEngineContextMenuData::MediaTypeFile) ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::MediaTypePlugin, QWebEngineContextMenuData::MediaTypePlugin) +// Match MediaFlag enum +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::MediaNone, QWebEngineContextMenuData::MediaNone) +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::MediaInError, QWebEngineContextMenuData::MediaInError) +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::MediaPaused, QWebEngineContextMenuData::MediaPaused) +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::MediaMuted, QWebEngineContextMenuData::MediaMuted) +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::MediaLoop, QWebEngineContextMenuData::MediaLoop) +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::MediaCanSave, QWebEngineContextMenuData::MediaCanSave) +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::MediaHasAudio, QWebEngineContextMenuData::MediaHasAudio) +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::MediaCanToggleControls, QWebEngineContextMenuData::MediaCanToggleControls) +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::MediaControls, QWebEngineContextMenuData::MediaControls) +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::MediaCanPrint, QWebEngineContextMenuData::MediaCanPrint) +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::MediaCanRotate, QWebEngineContextMenuData::MediaCanRotate) + +// Match EditFlag enum +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::CanDoNone, QWebEngineContextMenuData::CanDoNone) +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::CanUndo, QWebEngineContextMenuData::CanUndo) +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::CanRedo, QWebEngineContextMenuData::CanRedo) +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::CanCut, QWebEngineContextMenuData::CanCut) +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::CanCopy, QWebEngineContextMenuData::CanCopy) +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::CanPaste, QWebEngineContextMenuData::CanPaste) +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::CanDelete, QWebEngineContextMenuData::CanDelete) +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::CanSelectAll, QWebEngineContextMenuData::CanSelectAll) +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::CanTranslate, QWebEngineContextMenuData::CanTranslate) +ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::CanEditRichly, QWebEngineContextMenuData::CanEditRichly) + /*! \class QWebEngineContextMenuData \since 5.7 @@ -77,6 +103,46 @@ ASSERT_ENUMS_MATCH(QtWebEngineCore::WebEngineContextMenuData::MediaTypePlugin, Q \value MediaTypePlugin The context is a plugin element. */ +/*! + \enum QWebEngineContextMenuData::EditFlag + \readonly + \since 5.11 + + The available edit operations in the current context. + + \value CanDoNone Nothing can be done. + \value CanUndo Undo is available. + \value CanRedo Redo is available. + \value CanCut Cut is available. + \value CanCopy Copy is available. + \value CanPaste Paste is available. + \value CanDelete Delete is available. + \value CanSelectAll Select All is available. + \value CanTranslate Translate is available. + \value CanEditRichly Context is richly editable. +*/ + +/*! + \enum QWebEngineContextMenuData::MediaFlag + \readonly + \since 5.11 + + The current media element's status and its available operations. + \c MediaNone if the selected web page content is not a media element. + + \value MediaNone Not a media element. + \value MediaInError An error occurred. + \value MediaPaused Media is paused. + \value MediaMuted Media is muted. + \value MediaLoop Media can be looped. + \value MediaCanSave Media can be saved. + \value MediaHasAudio Media has audio. + \value MediaCanToggleControls Media can show controls. + \value MediaControls Media controls are shown. + \value MediaCanPrint Media is printable. + \value MediaCanRotate Media is rotatable. +*/ + /*! Constructs null context menu data. */ @@ -224,4 +290,25 @@ QWebEngineContextMenuData &QWebEngineContextMenuData::operator=(const QWebEngine return *this; } +/*! + Returns the current media element's status and its available operations. + \c MediaNone if the selected web page content is not a media element. +*/ +QWebEngineContextMenuData::MediaFlags QWebEngineContextMenuData::mediaFlags() const +{ + if (d) + return static_cast(d->mediaFlags()); + return QWebEngineContextMenuData::MediaNone; +} + +/*! + Returns the available edit operations in the current context or \c CanDoNone if no actions are available. +*/ +QWebEngineContextMenuData::EditFlags QWebEngineContextMenuData::editFlags() const +{ + if (d) + return static_cast(d->editFlags()); + return QWebEngineContextMenuData::CanDoNone; +} + QT_END_NAMESPACE diff --git a/src/webenginewidgets/api/qwebenginecontextmenudata.h b/src/webenginewidgets/api/qwebenginecontextmenudata.h index 97cfe9f65..8c2e9c5e5 100644 --- a/src/webenginewidgets/api/qwebenginecontextmenudata.h +++ b/src/webenginewidgets/api/qwebenginecontextmenudata.h @@ -67,6 +67,38 @@ public: MediaTypeFile, MediaTypePlugin }; + + // Must match QWebEngineCore::WebEngineContextMenuData::MediaFlags: + enum MediaFlag { + MediaNone = 0x0, + MediaInError = 0x1, + MediaPaused = 0x2, + MediaMuted = 0x4, + MediaLoop = 0x8, + MediaCanSave = 0x10, + MediaHasAudio = 0x20, + MediaCanToggleControls = 0x40, + MediaControls = 0x80, + MediaCanPrint = 0x100, + MediaCanRotate = 0x200, + }; + Q_DECLARE_FLAGS(MediaFlags, MediaFlag) + + // Must match QWebEngineCore::WebEngineContextMenuData::EditFlags: + enum EditFlag { + CanDoNone = 0x0, + CanUndo = 0x1, + CanRedo = 0x2, + CanCut = 0x4, + CanCopy = 0x8, + CanPaste = 0x10, + CanDelete = 0x20, + CanSelectAll = 0x40, + CanTranslate = 0x80, + CanEditRichly = 0x100, + }; + Q_DECLARE_FLAGS(EditFlags, EditFlag) + bool isValid() const; QPoint position() const; @@ -78,12 +110,16 @@ public: bool isContentEditable() const; QString misspelledWord() const; QStringList spellCheckerSuggestions() const; + MediaFlags mediaFlags() const; + EditFlags editFlags() const; private: void reset(); typedef QtWebEngineCore::WebEngineContextMenuData QWebEngineContextDataPrivate; QWebEngineContextMenuData &operator=(const QWebEngineContextDataPrivate &priv); const QWebEngineContextDataPrivate *d; + Q_FLAGS(MediaFlags) + Q_FLAGS(EditFlags) friend class QWebEnginePagePrivate; friend class QWebEnginePage; -- cgit v1.2.3