From e8975d6dc095eb3976347c95028d03c3d3f8cec0 Mon Sep 17 00:00:00 2001 From: Mahmoud Badri Date: Thu, 22 Feb 2024 15:02:16 +0200 Subject: [PATCH] QmlDesigner: Fix collection editor model list empty sometimes Also few tweaks Change-Id: I6041c0b37aa5c576e0c4efc988ed15eae02d767f Reviewed-by: Miikka Heikkinen Reviewed-by: Ali Kianian --- .../components/collectioneditor/collectionview.cpp | 13 ++++++------- .../components/collectioneditor/collectionview.h | 2 +- .../collectioneditor/collectionwidget.cpp | 4 ++-- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/plugins/qmldesigner/components/collectioneditor/collectionview.cpp b/src/plugins/qmldesigner/components/collectioneditor/collectionview.cpp index 77997f2dd4f..8de665eeaa6 100644 --- a/src/plugins/qmldesigner/components/collectioneditor/collectionview.cpp +++ b/src/plugins/qmldesigner/components/collectioneditor/collectionview.cpp @@ -25,9 +25,8 @@ #include #include -#include -#include #include +#include namespace { @@ -68,7 +67,6 @@ CollectionView::CollectionView(ExternalDependenciesInterface &externalDependenci if (m_widget.get()) m_widget->collectionDetailsModel()->removeAllCollections(); }); - resetDataStoreNode(); } bool CollectionView::hasWidget() const @@ -226,9 +224,9 @@ void CollectionView::customNotification(const AbstractView *, m_widget->openCollection(collectionNameFromDataStoreChildren(data.first().toByteArray())); } -void CollectionView::addResource(const QUrl &url, const QString &name, const QString &type) +void CollectionView::addResource(const QUrl &url, const QString &name) { - executeInTransaction(Q_FUNC_INFO, [this, &url, &name, &type]() { + executeInTransaction(Q_FUNC_INFO, [this, &url, &name]() { ensureStudioModelImport(); QString sourceAddress; if (url.isLocalFile()) { @@ -319,7 +317,7 @@ void CollectionView::registerDeclarativeType() void CollectionView::resetDataStoreNode() { - m_dataStore->reloadModel(); + QTimer::singleShot(0, this, [&] { m_dataStore->reloadModel(); }); refreshModel(); } @@ -447,7 +445,8 @@ void DelayedAssignCollectionToItem::checkAndAssign() bool dataStoreFound = false; if (m_collectionView->isDataStoreReady()) { - for (const QmlTypeData &cppTypeData : view->rewriterView()->getQMLTypes()) { + const QList types = view->rewriterView()->getQMLTypes(); + for (const QmlTypeData &cppTypeData : types) { if (cppTypeData.isSingleton && cppTypeData.typeName == "DataStore") dataStoreFound = true; } diff --git a/src/plugins/qmldesigner/components/collectioneditor/collectionview.h b/src/plugins/qmldesigner/components/collectioneditor/collectionview.h index 9f24a856d51..ea02273318d 100644 --- a/src/plugins/qmldesigner/components/collectioneditor/collectionview.h +++ b/src/plugins/qmldesigner/components/collectioneditor/collectionview.h @@ -50,7 +50,7 @@ public: const QList &nodeList, const QList &data) override; - void addResource(const QUrl &url, const QString &name, const QString &type); + void addResource(const QUrl &url, const QString &name); void assignCollectionToNode(const QString &collectionName, const ModelNode &node); void assignCollectionToSelectedNode(const QString &collectionName); diff --git a/src/plugins/qmldesigner/components/collectioneditor/collectionwidget.cpp b/src/plugins/qmldesigner/components/collectioneditor/collectionwidget.cpp index d17cbb5bfd0..5e76bcc0498 100644 --- a/src/plugins/qmldesigner/components/collectioneditor/collectionwidget.cpp +++ b/src/plugins/qmldesigner/components/collectioneditor/collectionwidget.cpp @@ -153,14 +153,14 @@ bool CollectionWidget::loadJsonFile(const QUrl &url, const QString &collectionNa if (!isJsonFile(url)) return false; - m_view->addResource(url, getPreferredCollectionName(url, collectionName), "json"); + m_view->addResource(url, getPreferredCollectionName(url, collectionName)); return true; } bool CollectionWidget::loadCsvFile(const QUrl &url, const QString &collectionName) { - m_view->addResource(url, getPreferredCollectionName(url, collectionName), "csv"); + m_view->addResource(url, getPreferredCollectionName(url, collectionName)); return true; }