summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTapani Mattila <tapani.mattila@qt.io>2022-02-22 19:09:41 +0200
committerThomas Hartmann <thomas.hartmann@qt.io>2022-02-23 16:43:15 +0000
commit24274cd90702606583d7ce6275e112a6ffcfb1ae (patch)
tree354377f29d38f14465539d11ec927f1795d871c3
parent5c13dd1ac117aad5a43418ae21c8771ebb9001a1 (diff)
downloadqt-creator-24274cd90702606583d7ce6275e112a6ffcfb1ae.tar.gz
CMake project converter: Enable only if project is old format
Task-number: QDS-6250 Change-Id: I41ca02ff76e53cb7470056b2f956b05d2027e773 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
-rw-r--r--src/plugins/qmldesigner/cmakeprojectconverter.cpp37
-rw-r--r--src/plugins/qmldesigner/cmakeprojectconverter.h2
2 files changed, 37 insertions, 2 deletions
diff --git a/src/plugins/qmldesigner/cmakeprojectconverter.cpp b/src/plugins/qmldesigner/cmakeprojectconverter.cpp
index 87c8731708..9d1320438d 100644
--- a/src/plugins/qmldesigner/cmakeprojectconverter.cpp
+++ b/src/plugins/qmldesigner/cmakeprojectconverter.cpp
@@ -65,13 +65,46 @@ void CmakeProjectConverter::generateMenuEntry()
Core::Command *cmd = Core::ActionManager::registerAction(action, "QmlProject.ConvertToCmakeProject");
menu->addAction(cmd, Core::Constants::G_FILE_EXPORT);
- action->setEnabled(ProjectExplorer::SessionManager::startupProject() != nullptr);
+ action->setEnabled(isProjectConvertable(ProjectExplorer::SessionManager::startupProject()));
QObject::connect(ProjectExplorer::SessionManager::instance(),
&ProjectExplorer::SessionManager::startupProjectChanged, [action]() {
- action->setEnabled(ProjectExplorer::SessionManager::startupProject() != nullptr);
+ action->setEnabled(isProjectConvertable(ProjectExplorer::SessionManager::startupProject()));
});
}
+bool CmakeProjectConverter::isProjectConvertable(const ProjectExplorer::Project *project)
+{
+ if (!project)
+ return false;
+
+ return !isProjectCurrentFormat(project);
+}
+
+const QStringList sanityCheckFiles({FILENAME_CMAKELISTS,
+ FILENAME_MODULES,
+ FILENAME_MAINQML,
+ QString(DIRNAME_CONTENT)+'/'+FILENAME_CMAKELISTS,
+ QString(DIRNAME_IMPORT)+'/'+FILENAME_CMAKELISTS,
+ QString(DIRNAME_CPP)+'/'+FILENAME_MAINCPP,
+ QString(DIRNAME_CPP)+'/'+FILENAME_ENV_HEADER,
+ QString(DIRNAME_CPP)+'/'+FILENAME_MAINCPP_HEADER
+ });
+
+bool CmakeProjectConverter::isProjectCurrentFormat(const ProjectExplorer::Project *project)
+{
+ const QmlProjectManager::QmlProject *qmlprj = qobject_cast<const QmlProjectManager::QmlProject*>(project);
+
+ if (!qmlprj)
+ return false;
+
+ FilePath rootDir = qmlprj->rootProjectDirectory();
+ for (const QString &file : sanityCheckFiles)
+ if (!rootDir.pathAppended(file).exists())
+ return false;
+
+ return true;
+}
+
void CmakeProjectConverter::onConvertProject()
{
ProjectExplorer::Project *project = ProjectExplorer::SessionManager::startupProject();
diff --git a/src/plugins/qmldesigner/cmakeprojectconverter.h b/src/plugins/qmldesigner/cmakeprojectconverter.h
index 3356311aa2..c5f4361cb1 100644
--- a/src/plugins/qmldesigner/cmakeprojectconverter.h
+++ b/src/plugins/qmldesigner/cmakeprojectconverter.h
@@ -51,6 +51,8 @@ public:
const Utils::FilePath &targetDir);
static void generateMenuEntry();
static void onConvertProject();
+ static bool isProjectConvertable(const ProjectExplorer::Project *project);
+ static bool isProjectCurrentFormat(const ProjectExplorer::Project *project);
private:
bool prepareAndExecute();