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>
This commit is contained in:
Burak Hancerli
2023-04-25 15:47:52 +02:00
committed by Tim Jenssen
parent f4dbbaabc6
commit cadca7212e
15 changed files with 116 additions and 23 deletions

View File

@@ -135,7 +135,7 @@ QString jsonToQmlProject(const QJsonObject &rootObject)
appendBreak(); appendBreak();
appendString("qdsVersion", versionConfig["designStudio"].toString()); appendString("qdsVersion", versionConfig["designStudio"].toString());
appendString("quickVersion", versionConfig["qtQuick"].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()); appendBool("qtForMCUs", rootObject["mcuConfig"].toObject().isEmpty());
appendBreak(); appendBreak();
appendBool("multilanguageSupport", languageConfig["multiLanguageSupport"].toBool()); appendBool("multilanguageSupport", languageConfig["multiLanguageSupport"].toBool());
@@ -217,6 +217,7 @@ QJsonObject qmlProjectTojson(const Utils::FilePath &projectFile)
for (const QString &propName : rootNode->propertyNames()) { for (const QString &propName : rootNode->propertyNames()) {
QJsonObject *currentObj = &rootObject; QJsonObject *currentObj = &rootObject;
QString objKey = propName; QString objKey = propName;
QJsonValue value = rootNode->property(propName).value.toJsonValue();
if (propName.contains("language", Qt::CaseInsensitive)) { if (propName.contains("language", Qt::CaseInsensitive)) {
currentObj = &languageObject; currentObj = &languageObject;
@@ -240,11 +241,12 @@ QJsonObject qmlProjectTojson(const Utils::FilePath &projectFile)
currentObj = &mcuObject; currentObj = &mcuObject;
objKey = "mcuEnabled"; objKey = "mcuEnabled";
} else if (propName.contains("qt6project", Qt::CaseInsensitive)) { } else if (propName.contains("qt6project", Qt::CaseInsensitive)) {
// we are skipping these ones in the new json format currentObj = &versionObject;
continue; 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 // add missing non-object props if any
@@ -252,6 +254,10 @@ QJsonObject qmlProjectTojson(const Utils::FilePath &projectFile)
runConfigObject.insert("fileSelectors", QJsonArray{}); runConfigObject.insert("fileSelectors", QJsonArray{});
} }
if (!versionObject.contains("qt")) {
versionObject.insert("qt", "5");
}
// convert the the object props // convert the the object props
for (const QmlJS::SimpleReaderNode::Ptr &childNode : rootNode->children()) { for (const QmlJS::SimpleReaderNode::Ptr &childNode : rootNode->children()) {
if (childNode->name().contains("files", Qt::CaseInsensitive)) { if (childNode->name().contains("files", Qt::CaseInsensitive)) {

View File

@@ -131,9 +131,40 @@ QJsonObject QmlProjectItem::project() const
return m_project; 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 QStringList QmlProjectItem::importPaths() const

View File

@@ -29,7 +29,16 @@ public:
explicit QmlProjectItem(const Utils::FilePath &filePath); explicit QmlProjectItem(const Utils::FilePath &filePath);
bool isQt4McuProject() const; 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; Utils::FilePath sourceDirectory() const;
QString targetDirectory() const; QString targetDirectory() const;

View File

@@ -484,7 +484,7 @@ bool QmlBuildSystem::qtForMCUs() const
bool QmlBuildSystem::qt6Project() const bool QmlBuildSystem::qt6Project() const
{ {
return m_projectItem->isQt6Project(); return m_projectItem->versionQt() == "6";
} }
Utils::EnvironmentItems QmlBuildSystem::environment() const Utils::EnvironmentItems QmlBuildSystem::environment() const
@@ -547,4 +547,19 @@ Utils::FilePaths QmlBuildSystem::files() const
return m_projectItem->files(); 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 } // namespace QmlProjectManager

View File

@@ -81,6 +81,10 @@ public:
QStringList importPaths() const; QStringList importPaths() const;
Utils::FilePaths files() const; Utils::FilePaths files() const;
QString versionQt() const;
QString versionQtQuick() const;
QString versionDesignStudio() const;
bool addFiles(const QStringList &filePaths); bool addFiles(const QStringList &filePaths);
void refreshProjectFile(); void refreshProjectFile();

View File

@@ -171,6 +171,7 @@
}, },
"versions": { "versions": {
"designStudio": "4.0", "designStudio": "4.0",
"qt": "6",
"qtQuick": "6.2" "qtQuick": "6.2"
} }
} }

View File

@@ -12,7 +12,7 @@ Project {
qdsVersion: "3.9" qdsVersion: "3.9"
quickVersion: "" quickVersion: ""
qt6Project: false qt6Project: true
qtForMCUs: true qtForMCUs: true
multilanguageSupport: true multilanguageSupport: true

View File

@@ -168,6 +168,7 @@
] ]
}, },
"versions": { "versions": {
"designStudio": "3.9" "designStudio": "3.9",
"qt": "6"
} }
} }

View File

@@ -12,7 +12,7 @@ Project {
qdsVersion: "3.0" qdsVersion: "3.0"
quickVersion: "" quickVersion: ""
qt6Project: false qt6Project: true
qtForMCUs: true qtForMCUs: true
multilanguageSupport: true multilanguageSupport: true

View File

@@ -155,6 +155,7 @@
"shaderTool": { "shaderTool": {
}, },
"versions": { "versions": {
"designStudio": "3.0" "designStudio": "3.0",
"qt": "6"
} }
} }

View File

@@ -12,7 +12,7 @@ Project {
qdsVersion: "" qdsVersion: ""
quickVersion: "" quickVersion: ""
qt6Project: false qt6Project: true
qtForMCUs: true qtForMCUs: true
multilanguageSupport: false multilanguageSupport: false

View File

@@ -109,5 +109,6 @@
"shaderTool": { "shaderTool": {
}, },
"versions": { "versions": {
"qt": "6"
} }
} }

View File

@@ -86,5 +86,6 @@
"shaderTool": { "shaderTool": {
}, },
"versions": { "versions": {
"qt": "5"
} }
} }

View File

@@ -34,10 +34,22 @@ TEST(QmlProjectProjectItemGetterTests, GetMcuProject)
ASSERT_EQ(dataSet.projectItem2.isQt4McuProject(), false); ASSERT_EQ(dataSet.projectItem2.isQt4McuProject(), false);
} }
TEST(QmlProjectProjectItemGetterTests, GetQt6Project) TEST(QmlProjectProjectItemGetterTests, GetQtVersion)
{ {
ASSERT_EQ(dataSet.projectItem1.isQt6Project(), true); ASSERT_EQ(dataSet.projectItem1.versionQt(), "6");
ASSERT_EQ(dataSet.projectItem2.isQt6Project(), false); 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) TEST(QmlProjectProjectItemGetterTests, GetSourceDirectory)

View File

@@ -114,6 +114,24 @@ TEST(QmlProjectProjectItemSetterTests, SetForceFreeType)
testerTemplate<bool>(&QmlProjectItem::setForceFreeType, &QmlProjectItem::forceFreeType, false); 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) TEST(QmlProjectProjectItemSetterTests, SetEnvironment)
{ {
@@ -129,13 +147,6 @@ TEST(QmlProjectProjectItemSetterTests, SetEnvironment)
// ASSERT_EQ(dataSet.projectItem2.isQt4McuProject(), false); // ASSERT_EQ(dataSet.projectItem2.isQt4McuProject(), false);
//} //}
// 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 // not available as of now
//TEST(QmlProjectProjectItemSetterTests, SetSourceDirectory) //TEST(QmlProjectProjectItemSetterTests, SetSourceDirectory)
//{ //{