aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/projectexplorer/targetsettingspanel.cpp
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@theqtcompany.com>2015-11-16 16:52:36 +0100
committerTobias Hunger <tobias.hunger@theqtcompany.com>2015-11-23 10:26:10 +0000
commit4a5ed881fa2b13b72bfe07253b209e999f6f53eb (patch)
treeee766ed8cc5671f7e22fab680a015faf1b73a341 /src/plugins/projectexplorer/targetsettingspanel.cpp
parent6a80b43e30cc2e925d5d3c09805541fbd169f65f (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.cpp140
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);