From ee10ba1909bec243e2a65d5fd191e38628b1d130 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 25 Nov 2022 16:55:26 +0100 Subject: [PATCH] QmlDesigner: Add support for tooltip in item library MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This allows to define tool tips in the .metainfo files. Change-Id: I3236c6e9f374a052e99b18d8c3983bfd0f072162 Reviewed-by: Henning Gründl Reviewed-by: Miikka Heikkinen --- .../itemLibraryQmlSources/ItemDelegate.qml | 2 ++ .../HelperWidgets/ImagePreviewTooltipArea.qml | 2 +- .../designercore/include/itemlibraryinfo.h | 2 ++ .../designercore/metainfo/itemlibraryinfo.cpp | 17 +++++++++++++++++ .../designercore/metainfo/metainforeader.cpp | 2 ++ 5 files changed, 24 insertions(+), 1 deletion(-) diff --git a/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemDelegate.qml b/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemDelegate.qml index b454ca7d846..72e7b8ba39d 100644 --- a/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemDelegate.qml +++ b/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemDelegate.qml @@ -68,6 +68,8 @@ Item { id: mouseRegion anchors.fill: parent + tooltip: toolTip + onShowContextMenu: delegateRoot.showContextMenu() onPressed: (mouse)=> { allowTooltip = false diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ImagePreviewTooltipArea.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ImagePreviewTooltipArea.qml index e390906b9f6..ae46115889b 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ImagePreviewTooltipArea.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ImagePreviewTooltipArea.qml @@ -5,7 +5,7 @@ import QtQuick 2.15 import QtQuick.Layouts 1.15 import HelperWidgets 2.0 -MouseArea { +ToolTipArea { id: mouseArea property bool allowTooltip: true diff --git a/src/plugins/qmldesigner/designercore/include/itemlibraryinfo.h b/src/plugins/qmldesigner/designercore/include/itemlibraryinfo.h index cd9d37ec679..3126dc00537 100644 --- a/src/plugins/qmldesigner/designercore/include/itemlibraryinfo.h +++ b/src/plugins/qmldesigner/designercore/include/itemlibraryinfo.h @@ -47,6 +47,7 @@ public: QString requiredImport() const; QString customComponentSource() const; QStringList extraFilePaths() const; + QString toolTip() const; using Property = QmlDesigner::PropertyContainer; @@ -62,6 +63,7 @@ public: void setCategory(const QString &category); void setQmlPath(const QString &qml); void setRequiredImport(const QString &requiredImport); + void setToolTip(const QString &tooltip); void addHints(const QHash &hints); void setCustomComponentSource(const QString &source); void addExtraFilePath(const QString &extraFile); diff --git a/src/plugins/qmldesigner/designercore/metainfo/itemlibraryinfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/itemlibraryinfo.cpp index a96fac3ad09..ffdf282ce1e 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/itemlibraryinfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/itemlibraryinfo.cpp @@ -3,6 +3,7 @@ #include "itemlibraryinfo.h" #include "nodemetainfo.h" +#include "qregularexpression.h" #include @@ -32,6 +33,7 @@ public: QHash hints; QString customComponentSource; QStringList extraFilePaths; + QString toolTip; }; } // namespace Internal @@ -96,6 +98,11 @@ QStringList ItemLibraryEntry::extraFilePaths() const return m_data->extraFilePaths; } +QString ItemLibraryEntry::toolTip() const +{ + return m_data->toolTip; +} + int ItemLibraryEntry::majorVersion() const { return m_data->majorVersion; @@ -165,6 +172,16 @@ void ItemLibraryEntry::setRequiredImport(const QString &requiredImport) m_data->requiredImport = requiredImport; } +void ItemLibraryEntry::setToolTip(const QString &tooltip) +{ + static QRegularExpression regularExpressionPattern(QLatin1String("^qsTr\\(\"(.*)\"\\)$")); + const QRegularExpressionMatch match = regularExpressionPattern.match(tooltip); + if (match.hasMatch()) + m_data->toolTip = match.captured(1); + else + m_data->toolTip = tooltip; +} + void ItemLibraryEntry::addHints(const QHash &hints) { Utils::addToHash(&m_data->hints, hints); diff --git a/src/plugins/qmldesigner/designercore/metainfo/metainforeader.cpp b/src/plugins/qmldesigner/designercore/metainfo/metainforeader.cpp index 862db6095b6..91fb7efab91 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/metainforeader.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/metainforeader.cpp @@ -266,6 +266,8 @@ void MetaInfoReader::readItemLibraryEntryProperty(const QString &name, const QVa setVersion(value.toString()); } else if (name == QStringLiteral("requiredImport")) { m_currentEntry.setRequiredImport(value.toString()); + } else if (name == QStringLiteral("toolTip")) { + m_currentEntry.setToolTip(value.toString()); } else { addError(::QmlDesigner::Internal::MetaInfoReader::tr( "Unknown property for ItemLibraryEntry %1")