diff options
author | Tobias Hunger <tobias.hunger@theqtcompany.com> | 2015-11-16 16:52:36 +0100 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@theqtcompany.com> | 2015-11-23 10:26:10 +0000 |
commit | 4a5ed881fa2b13b72bfe07253b209e999f6f53eb (patch) | |
tree | ee766ed8cc5671f7e22fab680a015faf1b73a341 /src/plugins/projectexplorer/targetsettingspanel.cpp | |
parent | 6a80b43e30cc2e925d5d3c09805541fbd169f65f (diff) |
Target: Move clone code from TargetSetupWidget to Project
Change-Id: If30e5c18be48c647d490c054796d9ff7844bb1d6
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
Diffstat (limited to 'src/plugins/projectexplorer/targetsettingspanel.cpp')
-rw-r--r-- | src/plugins/projectexplorer/targetsettingspanel.cpp | 140 |
1 files changed, 2 insertions, 138 deletions
diff --git a/src/plugins/projectexplorer/targetsettingspanel.cpp b/src/plugins/projectexplorer/targetsettingspanel.cpp index c75136fac9..8d45f695c2 100644 --- a/src/plugins/projectexplorer/targetsettingspanel.cpp +++ b/src/plugins/projectexplorer/targetsettingspanel.cpp @@ -51,8 +51,6 @@ #include <projectexplorer/kitmanager.h> #include <projectexplorer/buildmanager.h> #include <projectexplorer/buildconfiguration.h> -#include <projectexplorer/deployconfiguration.h> -#include <projectexplorer/runconfiguration.h> #include <utils/algorithm.h> #include <utils/qtcassert.h> @@ -303,7 +301,7 @@ void TargetSettingsPanelWidget::changeActionTriggered(QAction *action) { Kit *k = KitManager::find(action->data().value<Id>()); Target *sourceTarget = m_targets.at(m_menuTargetIndex); - Target *newTarget = cloneTarget(sourceTarget, k); + Target *newTarget = m_project->cloneTarget(sourceTarget, k); if (newTarget) { m_project->addTarget(newTarget); @@ -315,7 +313,7 @@ void TargetSettingsPanelWidget::changeActionTriggered(QAction *action) void TargetSettingsPanelWidget::duplicateActionTriggered(QAction *action) { Kit *k = KitManager::find(action->data().value<Id>()); - Target *newTarget = cloneTarget(m_targets.at(m_menuTargetIndex), k); + Target *newTarget = m_project->cloneTarget(m_targets.at(m_menuTargetIndex), k); if (newTarget) { m_project->addTarget(newTarget); @@ -338,140 +336,6 @@ void TargetSettingsPanelWidget::addActionTriggered(QAction *action) } } -Target *TargetSettingsPanelWidget::cloneTarget(Target *sourceTarget, Kit *k) -{ - Target *newTarget = new Target(m_project, k); - - QStringList buildconfigurationError; - QStringList deployconfigurationError; - QStringList runconfigurationError; - - foreach (BuildConfiguration *sourceBc, sourceTarget->buildConfigurations()) { - IBuildConfigurationFactory *factory = IBuildConfigurationFactory::find(newTarget, sourceBc); - if (!factory) { - buildconfigurationError << sourceBc->displayName(); - continue; - } - BuildConfiguration *newBc = factory->clone(newTarget, sourceBc); - if (!newBc) { - buildconfigurationError << sourceBc->displayName(); - continue; - } - newBc->setDisplayName(sourceBc->displayName()); - newTarget->addBuildConfiguration(newBc); - if (sourceTarget->activeBuildConfiguration() == sourceBc) - SessionManager::setActiveBuildConfiguration(newTarget, newBc, SetActive::NoCascade); - } - if (!newTarget->activeBuildConfiguration()) { - QList<BuildConfiguration *> bcs = newTarget->buildConfigurations(); - if (!bcs.isEmpty()) - SessionManager::setActiveBuildConfiguration(newTarget, bcs.first(), SetActive::NoCascade); - } - - foreach (DeployConfiguration *sourceDc, sourceTarget->deployConfigurations()) { - DeployConfigurationFactory *factory = DeployConfigurationFactory::find(newTarget, sourceDc); - if (!factory) { - deployconfigurationError << sourceDc->displayName(); - continue; - } - DeployConfiguration *newDc = factory->clone(newTarget, sourceDc); - if (!newDc) { - deployconfigurationError << sourceDc->displayName(); - continue; - } - newDc->setDisplayName(sourceDc->displayName()); - newTarget->addDeployConfiguration(newDc); - if (sourceTarget->activeDeployConfiguration() == sourceDc) - SessionManager::setActiveDeployConfiguration(newTarget, newDc, SetActive::NoCascade); - } - if (!newTarget->activeBuildConfiguration()) { - QList<DeployConfiguration *> dcs = newTarget->deployConfigurations(); - if (!dcs.isEmpty()) - SessionManager::setActiveDeployConfiguration(newTarget, dcs.first(), SetActive::NoCascade); - } - - foreach (RunConfiguration *sourceRc, sourceTarget->runConfigurations()) { - IRunConfigurationFactory *factory = IRunConfigurationFactory::find(newTarget, sourceRc); - if (!factory) { - runconfigurationError << sourceRc->displayName(); - continue; - } - RunConfiguration *newRc = factory->clone(newTarget, sourceRc); - if (!newRc) { - runconfigurationError << sourceRc->displayName(); - continue; - } - newRc->setDisplayName(sourceRc->displayName()); - newTarget->addRunConfiguration(newRc); - if (sourceTarget->activeRunConfiguration() == sourceRc) - newTarget->setActiveRunConfiguration(newRc); - } - if (!newTarget->activeRunConfiguration()) { - QList<RunConfiguration *> rcs = newTarget->runConfigurations(); - if (!rcs.isEmpty()) - newTarget->setActiveRunConfiguration(rcs.first()); - } - - bool fatalError = false; - if (buildconfigurationError.count() == sourceTarget->buildConfigurations().count()) - fatalError = true; - - if (deployconfigurationError.count() == sourceTarget->deployConfigurations().count()) - fatalError = true; - - if (runconfigurationError.count() == sourceTarget->runConfigurations().count()) - fatalError = true; - - if (fatalError) { - // That could be a more granular error message - QMessageBox::critical(ICore::mainWindow(), - tr("Incompatible Kit"), - tr("Kit %1 is incompatible with kit %2.") - .arg(sourceTarget->kit()->displayName()) - .arg(k->displayName())); - - delete newTarget; - newTarget = 0; - } else if (!buildconfigurationError.isEmpty() - || !deployconfigurationError.isEmpty() - || ! runconfigurationError.isEmpty()) { - - QString error; - if (!buildconfigurationError.isEmpty()) - error += tr("Build configurations:") - + QLatin1Char('\n') - + buildconfigurationError.join(QLatin1Char('\n')); - - if (!deployconfigurationError.isEmpty()) { - if (!error.isEmpty()) - error.append(QLatin1Char('\n')); - error += tr("Deploy configurations:") - + QLatin1Char('\n') - + deployconfigurationError.join(QLatin1Char('\n')); - } - - if (!runconfigurationError.isEmpty()) { - if (!error.isEmpty()) - error.append(QLatin1Char('\n')); - error += tr("Run configurations") + QLatin1Char(' ') - + runconfigurationError.join(QLatin1Char('\n')); - } - - QMessageBox msgBox(ICore::mainWindow()); - msgBox.setIcon(QMessageBox::Warning); - msgBox.setWindowTitle(tr("Partially Incompatible Kit")); - msgBox.setText(tr("Some configurations could not be copied.")); - msgBox.setDetailedText(error); - msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); - if (msgBox.exec() != QDialog::Accepted) { - delete newTarget; - newTarget = 0; - } - } - - return newTarget; -} - void TargetSettingsPanelWidget::removeTarget() { Target *t = m_targets.at(m_menuTargetIndex); |