forked from qt-creator/qt-creator
QMake: Centralize determination of available creationIds
No need for each target to do essentially the same. Change-Id: I76b6a0f2d064d7721f4ebe676f6efe12d3b5f87c Reviewed-by: BogDan Vatra <bogdan@kdab.com> Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
This commit is contained in:
@@ -97,15 +97,12 @@ QList<Core::Id> IosRunConfigurationFactory::availableCreationIds(Target *parent,
|
|||||||
{
|
{
|
||||||
if (!IosManager::supportsIos(parent))
|
if (!IosManager::supportsIos(parent))
|
||||||
return QList<Core::Id>();
|
return QList<Core::Id>();
|
||||||
QmakeProject *project = static_cast<QmakeProject *>(parent->project());
|
|
||||||
|
|
||||||
|
QmakeProject *project = static_cast<QmakeProject *>(parent->project());
|
||||||
QList<QmakeProFile *> files = project->allProFiles({ProjectType::ApplicationTemplate,
|
QList<QmakeProFile *> files = project->allProFiles({ProjectType::ApplicationTemplate,
|
||||||
ProjectType::SharedLibraryTemplate,
|
ProjectType::SharedLibraryTemplate,
|
||||||
ProjectType::AuxTemplate});
|
ProjectType::AuxTemplate});
|
||||||
if (mode == AutoCreate)
|
return QmakeProject::creationIds(IOS_RC_ID_PREFIX, files, mode);
|
||||||
files = QmakeProject::proFilesWithQtcRunnable(files);
|
|
||||||
Core::Id baseId(IOS_RC_ID_PREFIX);
|
|
||||||
return QmakeProject::idsForProFiles(baseId, files);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString IosRunConfigurationFactory::displayNameForId(Core::Id id) const
|
QString IosRunConfigurationFactory::displayNameForId(Core::Id id) const
|
||||||
|
@@ -86,12 +86,7 @@ QList<Core::Id> QmakeAndroidRunConfigurationFactory::availableCreationIds(Target
|
|||||||
QmakeProject *project = static_cast<QmakeProject *>(parent->project());
|
QmakeProject *project = static_cast<QmakeProject *>(parent->project());
|
||||||
QList<QmakeProFile *> files = project->allProFiles({ProjectType::ApplicationTemplate,
|
QList<QmakeProFile *> files = project->allProFiles({ProjectType::ApplicationTemplate,
|
||||||
ProjectType::SharedLibraryTemplate});
|
ProjectType::SharedLibraryTemplate});
|
||||||
|
return QmakeProject::creationIds(ANDROID_RC_ID_PREFIX, files, mode);
|
||||||
if (mode == AutoCreate)
|
|
||||||
files = QmakeProject::proFilesWithQtcRunnable(files);
|
|
||||||
|
|
||||||
const Core::Id base = Core::Id(ANDROID_RC_ID_PREFIX);
|
|
||||||
return QmakeProject::idsForProFiles(base, files);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
RunConfiguration *QmakeAndroidRunConfigurationFactory::doCreate(Target *parent, Core::Id id)
|
RunConfiguration *QmakeAndroidRunConfigurationFactory::doCreate(Target *parent, Core::Id id)
|
||||||
|
@@ -564,13 +564,7 @@ QList<Core::Id> DesktopQmakeRunConfigurationFactory::availableCreationIds(Target
|
|||||||
return QList<Core::Id>();
|
return QList<Core::Id>();
|
||||||
|
|
||||||
QmakeProject *project = static_cast<QmakeProject *>(parent->project());
|
QmakeProject *project = static_cast<QmakeProject *>(parent->project());
|
||||||
QList<QmakeProFile *> files = project->applicationProFiles();
|
return QmakeProject::creationIds(QMAKE_RC_PREFIX, project->applicationProFiles(), mode);
|
||||||
if (mode == AutoCreate) {
|
|
||||||
QList<QmakeProFile *> markedFiles = QmakeProject::proFilesWithQtcRunnable(files);
|
|
||||||
if (!markedFiles.isEmpty())
|
|
||||||
files = markedFiles;
|
|
||||||
}
|
|
||||||
return QmakeProject::idsForProFiles(Core::Id(QMAKE_RC_PREFIX), files);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString DesktopQmakeRunConfigurationFactory::displayNameForId(Core::Id id) const
|
QString DesktopQmakeRunConfigurationFactory::displayNameForId(Core::Id id) const
|
||||||
|
@@ -902,14 +902,19 @@ bool QmakeProject::hasApplicationProFile(const FileName &path) const
|
|||||||
return Utils::contains(list, Utils::equal(&QmakeProFile::filePath, path));
|
return Utils::contains(list, Utils::equal(&QmakeProFile::filePath, path));
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<QmakeProFile *> QmakeProject::proFilesWithQtcRunnable(QList<QmakeProFile *> files)
|
QList<Core::Id> QmakeProject::creationIds(Core::Id base, const QList<QmakeProFile *> &files,
|
||||||
|
IRunConfigurationFactory::CreationMode mode)
|
||||||
{
|
{
|
||||||
return Utils::filtered(files, [](const QmakeProFile *f) { return f->isQtcRunnable(); });
|
QList<QmakeProFile *> temp = files;
|
||||||
}
|
|
||||||
|
|
||||||
QList<Core::Id> QmakeProject::idsForProFiles(Core::Id base, const QList<QmakeProFile *> &files)
|
if (mode == IRunConfigurationFactory::AutoCreate) {
|
||||||
{
|
QList<QmakeProFile *> filtered = Utils::filtered(files, [](const QmakeProFile *f) {
|
||||||
return Utils::transform(files, [&base](QmakeProFile *f) {
|
return f->isQtcRunnable();
|
||||||
|
});
|
||||||
|
temp = filtered.isEmpty() ? files : filtered;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Utils::transform(temp, [&base](QmakeProFile *f) {
|
||||||
return base.withSuffix(f->filePath().toString());
|
return base.withSuffix(f->filePath().toString());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@@ -31,6 +31,7 @@
|
|||||||
#include "qmakeparsernodes.h"
|
#include "qmakeparsernodes.h"
|
||||||
|
|
||||||
#include <projectexplorer/project.h>
|
#include <projectexplorer/project.h>
|
||||||
|
#include <projectexplorer/runconfiguration.h>
|
||||||
|
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
#include <QFutureInterface>
|
#include <QFutureInterface>
|
||||||
@@ -84,8 +85,8 @@ public:
|
|||||||
QList<QmakeProFile *> applicationProFiles(Parsing parse = ExactParse) const;
|
QList<QmakeProFile *> applicationProFiles(Parsing parse = ExactParse) const;
|
||||||
bool hasApplicationProFile(const Utils::FileName &path) const;
|
bool hasApplicationProFile(const Utils::FileName &path) const;
|
||||||
|
|
||||||
static QList<QmakeProFile *> proFilesWithQtcRunnable(QList<QmakeProFile *> nodes);
|
static QList<Core::Id> creationIds(Core::Id base, const QList<QmakeProFile *> &files,
|
||||||
static QList<Core::Id> idsForProFiles(Core::Id base, const QList<QmakeProFile *> &files);
|
ProjectExplorer::IRunConfigurationFactory::CreationMode mode);
|
||||||
|
|
||||||
void notifyChanged(const Utils::FileName &name);
|
void notifyChanged(const Utils::FileName &name);
|
||||||
|
|
||||||
|
@@ -56,13 +56,9 @@ QList<Core::Id> QnxRunConfigurationFactory::availableCreationIds(ProjectExplorer
|
|||||||
auto project = qobject_cast<QmakeProject *>(parent->project());
|
auto project = qobject_cast<QmakeProject *>(parent->project());
|
||||||
if (!project)
|
if (!project)
|
||||||
return QList<Core::Id>();
|
return QList<Core::Id>();
|
||||||
|
|
||||||
QList<QmakeProjectManager::QmakeProFile *> files = project->applicationProFiles();
|
QList<QmakeProjectManager::QmakeProFile *> files = project->applicationProFiles();
|
||||||
|
return QmakeProject::creationIds(Constants::QNX_QNX_RUNCONFIGURATION_PREFIX, files, mode);
|
||||||
if (mode == AutoCreate)
|
|
||||||
files = QmakeProject::proFilesWithQtcRunnable(files);
|
|
||||||
|
|
||||||
return QmakeProject::idsForProFiles(Core::Id(Constants::QNX_QNX_RUNCONFIGURATION_PREFIX),
|
|
||||||
files);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QnxRunConfigurationFactory::displayNameForId(Core::Id id) const
|
QString QnxRunConfigurationFactory::displayNameForId(Core::Id id) const
|
||||||
|
@@ -67,9 +67,7 @@ QList<Core::Id> WinRtRunConfigurationFactory::availableCreationIds(Target *paren
|
|||||||
|
|
||||||
QmakeProject *project = static_cast<QmakeProject *>(parent->project());
|
QmakeProject *project = static_cast<QmakeProject *>(parent->project());
|
||||||
QList<QmakeProFile *> files = project->applicationProFiles();
|
QList<QmakeProFile *> files = project->applicationProFiles();
|
||||||
if (mode == AutoCreate)
|
return QmakeProject::creationIds(Constants::WINRT_RC_PREFIX, files, mode);
|
||||||
files = QmakeProject::proFilesWithQtcRunnable(files);
|
|
||||||
return QmakeProject::idsForProFiles(Core::Id(Constants::WINRT_RC_PREFIX), files);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString WinRtRunConfigurationFactory::displayNameForId(Core::Id id) const
|
QString WinRtRunConfigurationFactory::displayNameForId(Core::Id id) const
|
||||||
|
Reference in New Issue
Block a user