aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesigner/designercore
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2020-07-01 14:46:15 +0200
committerThomas Hartmann <thomas.hartmann@qt.io>2020-07-03 08:47:29 +0000
commit94f9544df5138105271ac34415b7abd1fdc58919 (patch)
tree625f5fc6385eceab7114d53aefc614f8e8564cfc /src/plugins/qmldesigner/designercore
parentc05755a2e1d142149aee53c5e7f7b04eb29cc747 (diff)
QmlDesigner: Rename CppTypeData to QmlTypeData
Also adding getQMLSingletons(). The Backendmodel now also knows about QML singletons. Change-Id: I96e130678ef956e569960c431f45bd362d026f5f Reviewed-by: Aleksei German <aleksei.german@qt.io> Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Diffstat (limited to 'src/plugins/qmldesigner/designercore')
-rw-r--r--src/plugins/qmldesigner/designercore/include/rewriterview.h5
-rw-r--r--src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp2
-rw-r--r--src/plugins/qmldesigner/designercore/model/rewriterview.cpp37
-rw-r--r--src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp31
-rw-r--r--src/plugins/qmldesigner/designercore/model/texttomodelmerger.h6
5 files changed, 60 insertions, 21 deletions
diff --git a/src/plugins/qmldesigner/designercore/include/rewriterview.h b/src/plugins/qmldesigner/designercore/include/rewriterview.h
index dcd85c950d..0601da3acf 100644
--- a/src/plugins/qmldesigner/designercore/include/rewriterview.h
+++ b/src/plugins/qmldesigner/designercore/include/rewriterview.h
@@ -53,7 +53,7 @@ class ModelNodePositionStorage;
} //Internal
-struct CppTypeData
+struct QmlTypeData
{
QString superClassName;
QString importUrl;
@@ -61,6 +61,7 @@ struct CppTypeData
QString cppClassName;
QString typeName;
bool isSingleton = false;
+ bool isCppType = false;
};
class QMLDESIGNERCORE_EXPORT RewriterView : public AbstractView
@@ -158,7 +159,7 @@ public:
QStringList autoComplete(const QString &text, int pos, bool explicitComplete = true);
- QList<CppTypeData> getCppTypes();
+ QList<QmlTypeData> getQMLTypes() const;
void setWidgetStatusCallback(std::function<void(bool)> setWidgetStatusCallback);
diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp
index 2e3b5be32b..7cf2784a7d 100644
--- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp
+++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp
@@ -958,7 +958,7 @@ CreateSceneCommand NodeInstanceView::createCreateSceneCommand()
QVector<MockupTypeContainer> mockupTypesVector;
- for (const CppTypeData &cppTypeData : model()->rewriterView()->getCppTypes()) {
+ for (const QmlTypeData &cppTypeData : model()->rewriterView()->getQMLTypes()) {
const QString versionString = cppTypeData.versionString;
int majorVersion = -1;
int minorVersion = -1;
diff --git a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp
index 5d0cd5da35..eb9c650746 100644
--- a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp
+++ b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp
@@ -960,27 +960,31 @@ QStringList RewriterView::autoComplete(const QString &text, int pos, bool explic
return list;
}
-QList<CppTypeData> RewriterView::getCppTypes()
+QList<QmlTypeData> RewriterView::getQMLTypes() const
{
- QList<CppTypeData> cppDataList;
- for (const QmlJS::ModelManagerInterface::CppData &cppData : QmlJS::ModelManagerInterface::instance()->cppData().values())
+ QList<QmlTypeData> qmlDataList;
+
+ qmlDataList.append(m_textToModelMerger->getQMLSingletons());
+
+ for (const QmlJS::ModelManagerInterface::CppData &cppData :
+ QmlJS::ModelManagerInterface::instance()->cppData().values())
for (const LanguageUtils::FakeMetaObject::ConstPtr &fakeMetaObject : cppData.exportedTypes) {
- for (const LanguageUtils::FakeMetaObject::Export &exportItem : fakeMetaObject->exports()) {
-
- CppTypeData cppData;
- cppData.cppClassName = fakeMetaObject->className();
- cppData.typeName = exportItem.type;
- cppData.importUrl = exportItem.package;
- cppData.versionString = exportItem.version.toString();
- cppData.superClassName = fakeMetaObject->superclassName();
- cppData.isSingleton = fakeMetaObject->isSingleton();
-
- if (cppData.importUrl != "<cpp>") //ignore pure unregistered cpp types
- cppDataList.append(cppData);
+ for (const LanguageUtils::FakeMetaObject::Export &exportItem :
+ fakeMetaObject->exports()) {
+ QmlTypeData qmlData;
+ qmlData.cppClassName = fakeMetaObject->className();
+ qmlData.typeName = exportItem.type;
+ qmlData.importUrl = exportItem.package;
+ qmlData.versionString = exportItem.version.toString();
+ qmlData.superClassName = fakeMetaObject->superclassName();
+ qmlData.isSingleton = fakeMetaObject->isSingleton();
+
+ if (qmlData.importUrl != "<cpp>") //ignore pure unregistered cpp types
+ qmlDataList.append(qmlData);
}
}
- return cppDataList;
+ return qmlDataList;
}
void RewriterView::setWidgetStatusCallback(std::function<void (bool)> setWidgetStatusCallback)
@@ -990,7 +994,6 @@ void RewriterView::setWidgetStatusCallback(std::function<void (bool)> setWidgetS
void RewriterView::qmlTextChanged()
{
- getCppTypes();
if (inErrorState())
return;
diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
index fafa408a46..94814b7436 100644
--- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
+++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
@@ -2176,6 +2176,37 @@ QSet<QPair<QString, QString> > TextToModelMerger::qrcMapping() const
return m_qrcMapping;
}
+QList<QmlTypeData> TextToModelMerger::getQMLSingletons() const
+{
+ QList<QmlTypeData> list;
+ const QmlJS::Imports *imports = m_scopeChain->context()->imports(
+ m_scopeChain->document().data());
+
+ if (!imports)
+ return list;
+
+ for (const QmlJS::Import &import : imports->all()) {
+ if (import.info.type() == ImportType::Library && !import.libraryPath.isEmpty()) {
+ const LibraryInfo &libraryInfo = m_scopeChain->context()->snapshot().libraryInfo(
+ import.libraryPath);
+
+ for (const QmlDirParser::Component &component : libraryInfo.components()) {
+ if (component.singleton) {
+ QmlTypeData qmlData;
+
+ qmlData.typeName = component.typeName;
+ qmlData.importUrl = import.info.name();
+ qmlData.versionString = import.info.version().toString();
+ qmlData.isSingleton = component.singleton;
+
+ list.append(qmlData);
+ }
+ }
+ }
+ }
+ return list;
+}
+
QString TextToModelMerger::textAt(const Document::Ptr &doc,
const SourceLocation &location)
{
diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.h b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.h
index 2884453f8c..c729d2aedd 100644
--- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.h
+++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.h
@@ -41,6 +41,8 @@ namespace QmlDesigner {
class RewriterView;
class DocumentMessage;
+struct QmlTypeData;
+
namespace Internal {
class DifferenceHandler;
@@ -131,7 +133,9 @@ public:
void delayedSetup();
- QSet<QPair<QString, QString> > qrcMapping() const;
+ QSet<QPair<QString, QString>> qrcMapping() const;
+
+ QList<QmlTypeData> getQMLSingletons() const;
private:
void setupCustomParserNode(const ModelNode &node);