QmlDesigner: Deprecate more NodeMetaInfo

There is now allExportedTypeNames which provides the same information.
Maybe we have to add more information to the modules like a flag for the
module type.

Change-Id: I1a8c0b33fc70a157d16a153102331447f370a032
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Marco Bubke
2024-04-24 16:24:14 +02:00
parent 31aec73423
commit 3edd18a9da
3 changed files with 64 additions and 8 deletions

View File

@@ -446,8 +446,13 @@ void QmlDesigner::MaterialBrowserView::loadPropertyGroups()
if (!m_hasQuick3DImport || m_propertyGroupsLoaded || !model())
return;
#ifdef QDS_USE_PROJECTSTORAGE
// TODO
QString matPropsPath;
#else
QString matPropsPath = model()->metaInfo("QtQuick3D.Material").importDirectoryPath()
+ "/designer/propertyGroups.json";
#endif
m_propertyGroupsLoaded = m_widget->materialBrowserModel()->loadPropertyGroups(matPropsPath);
}

View File

@@ -28,10 +28,14 @@ QT_END_NAMESPACE
[[deprecated( \
"In most cases you don't need them anymore because the import is setting them!")]]
# define DEPRECATED_COMPONENT_FILE_NAME [[deprecated("Use sourceId() instead.")]]
# define DEPRECATED_IMPORT_DIRECTORY_PATH [[deprecated("Use allExportedTypeNames().")]]
# define DEPRECATED_REQUIRED_IMPORT_STRING [[deprecated("Use allExportedTypeNames().")]]
#else
# define DEPRECATED_TYPENAME
# define DEPRECATED_VERSION_NUMBER
# define DEPRECATED_COMPONENT_FILE_NAME
# define DEPRECATED_IMPORT_DIRECTORY_PATH
# define DEPRECATED_REQUIRED_IMPORT_STRING
#endif
namespace QmlDesigner {
@@ -237,8 +241,8 @@ public:
bool usesCustomParser() const;
bool isEnumeration() const;
QString importDirectoryPath() const;
QString requiredImportString() const;
DEPRECATED_IMPORT_DIRECTORY_PATH QString importDirectoryPath() const;
DEPRECATED_REQUIRED_IMPORT_STRING QString requiredImportString() const;
friend bool operator==(const NodeMetaInfo &first, const NodeMetaInfo &second)
{

View File

@@ -16,12 +16,14 @@
#include <filemanager/objectlengthcalculator.h>
#include <modelnode.h>
#include <modelnodepositionstorage.h>
#include <nodemetainfo.h>
#include <nodeproperty.h>
#include <projectstorage/projectstorage.h>
#include <qmlobjectnode.h>
#include <qmltimelinekeyframegroup.h>
#include <rewritingexception.h>
#include <signalhandlerproperty.h>
#include <variantproperty.h>
#include <qmlobjectnode.h>
#include <qmltimelinekeyframegroup.h>
#include <qmljs/parser/qmljsengine_p.h>
#include <qmljs/qmljsmodelmanagerinterface.h>
@@ -1004,6 +1006,45 @@ QSet<QPair<QString, QString> > RewriterView::qrcMapping() const
return m_textToModelMerger->qrcMapping();
}
namespace {
#ifdef QDS_USE_PROJECTSTORAGE
ModuleIds generateModuleIds(const ModelNodes &nodes)
{
ModuleIds moduleIds;
moduleIds.reserve(Utils::usize(nodes));
for (const auto &node : nodes) {
auto exportedNames = node.metaInfo().allExportedTypeNames();
if (exportedNames.size())
moduleIds.push_back(exportedNames.front().moduleId);
}
std::sort(moduleIds.begin(), moduleIds.end());
moduleIds.erase(std::unique(moduleIds.begin(), moduleIds.end()), moduleIds.end());
return moduleIds;
}
QStringList generateImports(ModuleIds moduleIds, const ProjectStorageType &projectStorage)
{
return Utils::transform<QStringList>(moduleIds, [&](auto id) {
return "import " + projectStorage.moduleName(id).toQString();
});
}
QStringList generateImports(const ModelNodes &nodes)
{
if (nodes.empty())
return {};
auto moduleIds = generateModuleIds(nodes);
return generateImports(moduleIds, *nodes.front().model()->projectStorage());
}
#endif
} // namespace
void RewriterView::moveToComponent(const ModelNode &modelNode)
{
if (!modelNode.isValid())
@@ -1012,20 +1053,26 @@ void RewriterView::moveToComponent(const ModelNode &modelNode)
int offset = nodeOffset(modelNode);
const QList<ModelNode> nodes = modelNode.allSubModelNodesAndThisNode();
QSet<QString> directPaths;
#ifdef QDS_USE_PROJECTSTORAGE
auto directPaths = generateImports(nodes);
#else
QSet<QString> directPathsSet;
// Always add QtQuick import
QString quickImport = model()->qtQuickItemMetaInfo().requiredImportString();
if (!quickImport.isEmpty())
directPaths.insert(quickImport);
directPathsSet.insert(quickImport);
for (const ModelNode &partialNode : nodes) {
QString importStr = partialNode.metaInfo().requiredImportString();
if (importStr.size())
directPaths << importStr;
directPathsSet << importStr;
}
QString importData = Utils::sorted(directPaths.values()).join(QChar::LineFeed);
auto directPaths = directPathsSet.values();
#endif
QString importData = Utils::sorted(directPaths).join(QChar::LineFeed);
if (importData.size())
importData.append(QString(2, QChar::LineFeed));