diff options
author | Tapani Mattila <[email protected]> | 2022-02-22 19:09:41 +0200 |
---|---|---|
committer | Thomas Hartmann <[email protected]> | 2022-02-23 16:43:15 +0000 |
commit | 24274cd90702606583d7ce6275e112a6ffcfb1ae (patch) | |
tree | 354377f29d38f14465539d11ec927f1795d871c3 /src/plugins | |
parent | 5c13dd1ac117aad5a43418ae21c8771ebb9001a1 (diff) |
CMake project converter: Enable only if project is old format
Task-number: QDS-6250
Change-Id: I41ca02ff76e53cb7470056b2f956b05d2027e773
Reviewed-by: <[email protected]>
Reviewed-by: Qt CI Bot <[email protected]>
Reviewed-by: Thomas Hartmann <[email protected]>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/qmldesigner/cmakeprojectconverter.cpp | 37 | ||||
-rw-r--r-- | src/plugins/qmldesigner/cmakeprojectconverter.h | 2 |
2 files changed, 37 insertions, 2 deletions
diff --git a/src/plugins/qmldesigner/cmakeprojectconverter.cpp b/src/plugins/qmldesigner/cmakeprojectconverter.cpp index 87c87317085..9d1320438db 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 3356311aa22..c5f4361cb11 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(); |