summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBurak Hancerli <burak.hancerli@qt.io>2023-04-25 15:47:52 +0200
committerTim Jenssen <tim.jenssen@qt.io>2023-04-26 13:11:46 +0000
commitcadca7212eeb367a2c1f2d3c50f976734d9a4dff (patch)
tree519625f31fd931c15ce5064ec5b80a8c1e488175
parentf4dbbaabc6def6295daaddd55d2e39031f114a9c (diff)
downloadqt-creator-cadca7212eeb367a2c1f2d3c50f976734d9a4dff.tar.gz
QmlDesigner: Fix project file getter/setter issues
Task-number: QDS-9781 Change-Id: I2df8cca1c4e5cd10563621b849fb54b29c0d155d (cherry picked from commit d5847e9e115a1b4a0bf36cea652724fdaeda28c3) Reviewed-by: Tim Jenssen <tim.jenssen@qt.io> Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
-rw-r--r--src/plugins/qmlprojectmanager/buildsystem/projectitem/converters.cpp14
-rw-r--r--src/plugins/qmlprojectmanager/buildsystem/projectitem/qmlprojectitem.cpp35
-rw-r--r--src/plugins/qmlprojectmanager/buildsystem/projectitem/qmlprojectitem.h11
-rw-r--r--src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp17
-rw-r--r--src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.h4
-rw-r--r--tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-1/testfile.qmltojson1
-rw-r--r--tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-2/testfile.jsontoqml2
-rw-r--r--tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-2/testfile.qmltojson3
-rw-r--r--tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-3/testfile.jsontoqml2
-rw-r--r--tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-3/testfile.qmltojson3
-rw-r--r--tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-4/testfile.jsontoqml2
-rw-r--r--tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-4/testfile.qmltojson1
-rw-r--r--tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-5/testfile.qmltojson1
-rw-r--r--tests/auto/qml/qmlprojectmanager/projectitem/test-getters.cpp18
-rw-r--r--tests/auto/qml/qmlprojectmanager/projectitem/test-setters.cpp25
15 files changed, 116 insertions, 23 deletions
diff --git a/src/plugins/qmlprojectmanager/buildsystem/projectitem/converters.cpp b/src/plugins/qmlprojectmanager/buildsystem/projectitem/converters.cpp
index 645335f8b9..aa0abf8ffe 100644
--- a/src/plugins/qmlprojectmanager/buildsystem/projectitem/converters.cpp
+++ b/src/plugins/qmlprojectmanager/buildsystem/projectitem/converters.cpp
@@ -135,7 +135,7 @@ QString jsonToQmlProject(const QJsonObject &rootObject)
appendBreak();
appendString("qdsVersion", versionConfig["designStudio"].toString());
appendString("quickVersion", versionConfig["qtQuick"].toString());
- appendBool("qt6Project", versionConfig["qtQuick"].toString().startsWith("6."));
+ appendBool("qt6Project", versionConfig["qt"].toString() == "6");
appendBool("qtForMCUs", rootObject["mcuConfig"].toObject().isEmpty());
appendBreak();
appendBool("multilanguageSupport", languageConfig["multiLanguageSupport"].toBool());
@@ -217,6 +217,7 @@ QJsonObject qmlProjectTojson(const Utils::FilePath &projectFile)
for (const QString &propName : rootNode->propertyNames()) {
QJsonObject *currentObj = &rootObject;
QString objKey = propName;
+ QJsonValue value = rootNode->property(propName).value.toJsonValue();
if (propName.contains("language", Qt::CaseInsensitive)) {
currentObj = &languageObject;
@@ -240,11 +241,12 @@ QJsonObject qmlProjectTojson(const Utils::FilePath &projectFile)
currentObj = &mcuObject;
objKey = "mcuEnabled";
} else if (propName.contains("qt6project", Qt::CaseInsensitive)) {
- // we are skipping these ones in the new json format
- continue;
+ currentObj = &versionObject;
+ objKey = "qt";
+ value = rootNode->property(propName).value.toBool() ? "6" : "5";
}
- currentObj->insert(objKey, rootNode->property(propName).value.toJsonValue());
+ currentObj->insert(objKey, value);
}
// add missing non-object props if any
@@ -252,6 +254,10 @@ QJsonObject qmlProjectTojson(const Utils::FilePath &projectFile)
runConfigObject.insert("fileSelectors", QJsonArray{});
}
+ if (!versionObject.contains("qt")) {
+ versionObject.insert("qt", "5");
+ }
+
// convert the the object props
for (const QmlJS::SimpleReaderNode::Ptr &childNode : rootNode->children()) {
if (childNode->name().contains("files", Qt::CaseInsensitive)) {
diff --git a/src/plugins/qmlprojectmanager/buildsystem/projectitem/qmlprojectitem.cpp b/src/plugins/qmlprojectmanager/buildsystem/projectitem/qmlprojectitem.cpp
index 76ad2e8836..c216ee320b 100644
--- a/src/plugins/qmlprojectmanager/buildsystem/projectitem/qmlprojectitem.cpp
+++ b/src/plugins/qmlprojectmanager/buildsystem/projectitem/qmlprojectitem.cpp
@@ -131,9 +131,40 @@ QJsonObject QmlProjectItem::project() const
return m_project;
}
-bool QmlProjectItem::isQt6Project() const
+QString QmlProjectItem::versionQt() const
{
- return m_project["versions"].toObject()["qtQuick"].toString().startsWith("6.");
+ return m_project["versions"].toObject()["qt"].toString();
+}
+
+void QmlProjectItem::setVersionQt(const QString &version)
+{
+ QJsonObject targetObj = m_project["versions"].toObject();
+ targetObj["qt"] = version;
+ insertAndUpdateProjectFile("versions", targetObj);
+}
+
+QString QmlProjectItem::versionQtQuick() const
+{
+ return m_project["versions"].toObject()["qtQuick"].toString();
+}
+
+void QmlProjectItem::setVersionQtQuick(const QString &version)
+{
+ QJsonObject targetObj = m_project["versions"].toObject();
+ targetObj["qtQuick"] = version;
+ insertAndUpdateProjectFile("versions", targetObj);
+}
+
+QString QmlProjectItem::versionDesignStudio() const
+{
+ return m_project["versions"].toObject()["designStudio"].toString();
+}
+
+void QmlProjectItem::setVersionDesignStudio(const QString &version)
+{
+ QJsonObject targetObj = m_project["versions"].toObject();
+ targetObj["designStudio"] = version;
+ insertAndUpdateProjectFile("versions", targetObj);
}
QStringList QmlProjectItem::importPaths() const
diff --git a/src/plugins/qmlprojectmanager/buildsystem/projectitem/qmlprojectitem.h b/src/plugins/qmlprojectmanager/buildsystem/projectitem/qmlprojectitem.h
index 48e389db08..30e85d53dc 100644
--- a/src/plugins/qmlprojectmanager/buildsystem/projectitem/qmlprojectitem.h
+++ b/src/plugins/qmlprojectmanager/buildsystem/projectitem/qmlprojectitem.h
@@ -29,7 +29,16 @@ public:
explicit QmlProjectItem(const Utils::FilePath &filePath);
bool isQt4McuProject() const;
- bool isQt6Project() const;
+
+
+ QString versionQt() const;
+ void setVersionQt(const QString &version);
+
+ QString versionQtQuick() const;
+ void setVersionQtQuick(const QString &version);
+
+ QString versionDesignStudio() const;
+ void setVersionDesignStudio(const QString &version);
Utils::FilePath sourceDirectory() const;
QString targetDirectory() const;
diff --git a/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp b/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp
index 0872f24ede..e06ac211df 100644
--- a/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp
+++ b/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp
@@ -484,7 +484,7 @@ bool QmlBuildSystem::qtForMCUs() const
bool QmlBuildSystem::qt6Project() const
{
- return m_projectItem->isQt6Project();
+ return m_projectItem->versionQt() == "6";
}
Utils::EnvironmentItems QmlBuildSystem::environment() const
@@ -547,4 +547,19 @@ Utils::FilePaths QmlBuildSystem::files() const
return m_projectItem->files();
}
+QString QmlBuildSystem::versionQt() const
+{
+ return m_projectItem->versionQt();
+}
+
+QString QmlBuildSystem::versionQtQuick() const
+{
+ return m_projectItem->versionQtQuick();
+}
+
+QString QmlBuildSystem::versionDesignStudio() const
+{
+ return m_projectItem->versionDesignStudio();
+}
+
} // namespace QmlProjectManager
diff --git a/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.h b/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.h
index d45658d98b..914b8d4c0f 100644
--- a/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.h
+++ b/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.h
@@ -81,6 +81,10 @@ public:
QStringList importPaths() const;
Utils::FilePaths files() const;
+ QString versionQt() const;
+ QString versionQtQuick() const;
+ QString versionDesignStudio() const;
+
bool addFiles(const QStringList &filePaths);
void refreshProjectFile();
diff --git a/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-1/testfile.qmltojson b/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-1/testfile.qmltojson
index 358a381a97..9abc7a76c3 100644
--- a/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-1/testfile.qmltojson
+++ b/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-1/testfile.qmltojson
@@ -171,6 +171,7 @@
},
"versions": {
"designStudio": "4.0",
+ "qt": "6",
"qtQuick": "6.2"
}
}
diff --git a/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-2/testfile.jsontoqml b/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-2/testfile.jsontoqml
index 47d4912c86..19276581aa 100644
--- a/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-2/testfile.jsontoqml
+++ b/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-2/testfile.jsontoqml
@@ -12,7 +12,7 @@ Project {
qdsVersion: "3.9"
quickVersion: ""
- qt6Project: false
+ qt6Project: true
qtForMCUs: true
multilanguageSupport: true
diff --git a/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-2/testfile.qmltojson b/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-2/testfile.qmltojson
index f29227dea8..64aa062313 100644
--- a/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-2/testfile.qmltojson
+++ b/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-2/testfile.qmltojson
@@ -168,6 +168,7 @@
]
},
"versions": {
- "designStudio": "3.9"
+ "designStudio": "3.9",
+ "qt": "6"
}
}
diff --git a/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-3/testfile.jsontoqml b/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-3/testfile.jsontoqml
index cb11fae9d3..1964ce018d 100644
--- a/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-3/testfile.jsontoqml
+++ b/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-3/testfile.jsontoqml
@@ -12,7 +12,7 @@ Project {
qdsVersion: "3.0"
quickVersion: ""
- qt6Project: false
+ qt6Project: true
qtForMCUs: true
multilanguageSupport: true
diff --git a/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-3/testfile.qmltojson b/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-3/testfile.qmltojson
index 9bf016a7e2..1892b9f3f9 100644
--- a/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-3/testfile.qmltojson
+++ b/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-3/testfile.qmltojson
@@ -155,6 +155,7 @@
"shaderTool": {
},
"versions": {
- "designStudio": "3.0"
+ "designStudio": "3.0",
+ "qt": "6"
}
}
diff --git a/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-4/testfile.jsontoqml b/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-4/testfile.jsontoqml
index b0819a79a4..10a20bd991 100644
--- a/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-4/testfile.jsontoqml
+++ b/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-4/testfile.jsontoqml
@@ -12,7 +12,7 @@ Project {
qdsVersion: ""
quickVersion: ""
- qt6Project: false
+ qt6Project: true
qtForMCUs: true
multilanguageSupport: false
diff --git a/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-4/testfile.qmltojson b/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-4/testfile.qmltojson
index 2f12130de3..3ccd15a839 100644
--- a/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-4/testfile.qmltojson
+++ b/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-4/testfile.qmltojson
@@ -109,5 +109,6 @@
"shaderTool": {
},
"versions": {
+ "qt": "6"
}
}
diff --git a/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-5/testfile.qmltojson b/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-5/testfile.qmltojson
index b5e7f5f3b7..5635cf1f63 100644
--- a/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-5/testfile.qmltojson
+++ b/tests/auto/qml/qmlprojectmanager/projectitem/data/converter/test-set-5/testfile.qmltojson
@@ -86,5 +86,6 @@
"shaderTool": {
},
"versions": {
+ "qt": "5"
}
}
diff --git a/tests/auto/qml/qmlprojectmanager/projectitem/test-getters.cpp b/tests/auto/qml/qmlprojectmanager/projectitem/test-getters.cpp
index 26be73b9ce..9a3367e3cc 100644
--- a/tests/auto/qml/qmlprojectmanager/projectitem/test-getters.cpp
+++ b/tests/auto/qml/qmlprojectmanager/projectitem/test-getters.cpp
@@ -34,10 +34,22 @@ TEST(QmlProjectProjectItemGetterTests, GetMcuProject)
ASSERT_EQ(dataSet.projectItem2.isQt4McuProject(), false);
}
-TEST(QmlProjectProjectItemGetterTests, GetQt6Project)
+TEST(QmlProjectProjectItemGetterTests, GetQtVersion)
{
- ASSERT_EQ(dataSet.projectItem1.isQt6Project(), true);
- ASSERT_EQ(dataSet.projectItem2.isQt6Project(), false);
+ ASSERT_EQ(dataSet.projectItem1.versionQt(), "6");
+ ASSERT_EQ(dataSet.projectItem2.versionQt(), "5");
+}
+
+TEST(QmlProjectProjectItemGetterTests, GetQtQuickVersion)
+{
+ ASSERT_EQ(dataSet.projectItem1.versionQtQuick(), "6.2");
+ ASSERT_EQ(dataSet.projectItem2.versionQtQuick(), QString());
+}
+
+TEST(QmlProjectProjectItemGetterTests, GetDesignStudioVersion)
+{
+ ASSERT_EQ(dataSet.projectItem1.versionDesignStudio(), "3.9");
+ ASSERT_EQ(dataSet.projectItem2.versionDesignStudio(), QString());
}
TEST(QmlProjectProjectItemGetterTests, GetSourceDirectory)
diff --git a/tests/auto/qml/qmlprojectmanager/projectitem/test-setters.cpp b/tests/auto/qml/qmlprojectmanager/projectitem/test-setters.cpp
index 82524aabd0..30a99d9e21 100644
--- a/tests/auto/qml/qmlprojectmanager/projectitem/test-setters.cpp
+++ b/tests/auto/qml/qmlprojectmanager/projectitem/test-setters.cpp
@@ -114,6 +114,24 @@ TEST(QmlProjectProjectItemSetterTests, SetForceFreeType)
testerTemplate<bool>(&QmlProjectItem::setForceFreeType, &QmlProjectItem::forceFreeType, false);
}
+TEST(QmlProjectProjectItemSetterTests, SetQtVersion)
+{
+ testerTemplate<QString>(&QmlProjectItem::setVersionQt, &QmlProjectItem::versionQt, "6");
+ testerTemplate<QString>(&QmlProjectItem::setVersionQt, &QmlProjectItem::versionQt, "5.3");
+}
+
+TEST(QmlProjectProjectItemSetterTests, SetQtQuickVersion)
+{
+ testerTemplate<QString>(&QmlProjectItem::setVersionQtQuick, &QmlProjectItem::versionQtQuick, "6");
+ testerTemplate<QString>(&QmlProjectItem::setVersionQtQuick, &QmlProjectItem::versionQtQuick, "5.3");
+}
+
+TEST(QmlProjectProjectItemSetterTests, SetDesignStudio)
+{
+ testerTemplate<QString>(&QmlProjectItem::setVersionDesignStudio, &QmlProjectItem::versionDesignStudio, "6");
+ testerTemplate<QString>(&QmlProjectItem::setVersionDesignStudio, &QmlProjectItem::versionDesignStudio, "5.3");
+}
+
/**
TEST(QmlProjectProjectItemSetterTests, SetEnvironment)
{
@@ -130,13 +148,6 @@ TEST(QmlProjectProjectItemSetterTests, SetEnvironment)
//}
// not available as of now
-//TEST(QmlProjectProjectItemSetterTests, SetQt6Project)
-//{
-// ASSERT_EQ(dataSet.projectItem1.isQt6Project(), true);
-// ASSERT_EQ(dataSet.projectItem2.isQt6Project(), false);
-//}
-
-// not available as of now
//TEST(QmlProjectProjectItemSetterTests, SetSourceDirectory)
//{
// ASSERT_EQ(dataSet.projectItem1.sourceDirectory(), testDataDir.path());