Project mode: Move the "clone" actions to dedicated buttons

Cloning, just like removing and renaming, is an action on an existing
build or run configuration and should be presented in the same way,
instead of being the odd one out in the list of possible run
configurations that pop up when clicking the "Add" button.

Change-Id: I2574cf27d013dce9c52852014a393f211f9c3799
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Christian Kandeler
2019-01-17 16:37:16 +01:00
parent cc9e5c3816
commit 479c3e9249
4 changed files with 23 additions and 16 deletions

View File

@@ -104,6 +104,11 @@ BuildSettingsWidget::BuildSettingsWidget(Target *target) :
m_renameButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); m_renameButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
hbox->addWidget(m_renameButton); hbox->addWidget(m_renameButton);
m_cloneButton = new QPushButton(this);
m_cloneButton->setText(tr("Clone..."));
m_cloneButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
hbox->addWidget(m_cloneButton);
hbox->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Fixed)); hbox->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Fixed));
vbox->addLayout(hbox); vbox->addLayout(hbox);
} }
@@ -124,6 +129,9 @@ BuildSettingsWidget::BuildSettingsWidget(Target *target) :
connect(m_renameButton, &QAbstractButton::clicked, connect(m_renameButton, &QAbstractButton::clicked,
this, &BuildSettingsWidget::renameConfiguration); this, &BuildSettingsWidget::renameConfiguration);
connect(m_cloneButton, &QAbstractButton::clicked,
this, &BuildSettingsWidget::cloneConfiguration);
connect(m_target, &Target::activeBuildConfigurationChanged, connect(m_target, &Target::activeBuildConfigurationChanged,
this, &BuildSettingsWidget::updateActiveConfiguration); this, &BuildSettingsWidget::updateActiveConfiguration);
@@ -172,11 +180,6 @@ void BuildSettingsWidget::updateAddButtonMenu()
m_buildInfoList.clear(); m_buildInfoList.clear();
if (m_target) { if (m_target) {
if (m_target->activeBuildConfiguration()) {
QAction *cloneAction = m_addButtonMenu->addAction(tr("&Clone Selected"));
connect(cloneAction, &QAction::triggered,
this, [this]() { cloneConfiguration(m_buildConfiguration); });
}
IBuildConfigurationFactory *factory = IBuildConfigurationFactory::find(m_target); IBuildConfigurationFactory *factory = IBuildConfigurationFactory::find(m_target);
if (!factory) if (!factory)
return; return;
@@ -198,6 +201,7 @@ void BuildSettingsWidget::updateBuildSettings()
QList<BuildConfiguration *> bcs = m_target->buildConfigurations(); QList<BuildConfiguration *> bcs = m_target->buildConfigurations();
m_removeButton->setEnabled(bcs.size() > 1); m_removeButton->setEnabled(bcs.size() > 1);
m_renameButton->setEnabled(!bcs.isEmpty()); m_renameButton->setEnabled(!bcs.isEmpty());
m_cloneButton->setEnabled(!bcs.isEmpty());
if (!m_buildConfiguration) if (!m_buildConfiguration)
return; return;
@@ -294,10 +298,9 @@ void BuildSettingsWidget::renameConfiguration()
} }
void BuildSettingsWidget::cloneConfiguration(BuildConfiguration *sourceConfiguration) void BuildSettingsWidget::cloneConfiguration()
{ {
if (!sourceConfiguration) QTC_ASSERT(m_buildConfiguration, return);
return;
IBuildConfigurationFactory *factory = IBuildConfigurationFactory::find(m_target); IBuildConfigurationFactory *factory = IBuildConfigurationFactory::find(m_target);
if (!factory) if (!factory)
return; return;
@@ -311,7 +314,7 @@ void BuildSettingsWidget::cloneConfiguration(BuildConfiguration *sourceConfigura
if (name.isEmpty()) if (name.isEmpty())
return; return;
BuildConfiguration *bc = factory->clone(m_target, sourceConfiguration); BuildConfiguration *bc = factory->clone(m_target, m_buildConfiguration);
if (!bc) if (!bc)
return; return;

View File

@@ -64,7 +64,7 @@ private:
void updateActiveConfiguration(); void updateActiveConfiguration();
void createConfiguration(BuildInfo *info); void createConfiguration(BuildInfo *info);
void cloneConfiguration(BuildConfiguration *toClone); void cloneConfiguration();
void deleteConfiguration(BuildConfiguration *toDelete); void deleteConfiguration(BuildConfiguration *toDelete);
QString uniqueName(const QString &name); QString uniqueName(const QString &name);
@@ -74,6 +74,7 @@ private:
QPushButton *m_addButton = nullptr; QPushButton *m_addButton = nullptr;
QPushButton *m_removeButton = nullptr; QPushButton *m_removeButton = nullptr;
QPushButton *m_renameButton = nullptr; QPushButton *m_renameButton = nullptr;
QPushButton *m_cloneButton = nullptr;
QPushButton *m_makeActiveButton = nullptr; QPushButton *m_makeActiveButton = nullptr;
QComboBox *m_buildConfigurationComboBox = nullptr; QComboBox *m_buildConfigurationComboBox = nullptr;
QMenu *m_addButtonMenu = nullptr; QMenu *m_addButtonMenu = nullptr;

View File

@@ -104,6 +104,7 @@ RunSettingsWidget::RunSettingsWidget(Target *target) :
m_addRunToolButton = new QPushButton(tr("Add"), this); m_addRunToolButton = new QPushButton(tr("Add"), this);
m_removeRunToolButton = new QPushButton(tr("Remove"), this); m_removeRunToolButton = new QPushButton(tr("Remove"), this);
m_renameRunButton = new QPushButton(tr("Rename..."), this); m_renameRunButton = new QPushButton(tr("Rename..."), this);
m_cloneRunButton = new QPushButton(tr("Clone..."), this);
auto spacer1 = new QSpacerItem(10, 10, QSizePolicy::Expanding, QSizePolicy::Minimum); auto spacer1 = new QSpacerItem(10, 10, QSizePolicy::Expanding, QSizePolicy::Minimum);
auto spacer2 = new QSpacerItem(10, 10, QSizePolicy::Minimum, QSizePolicy::Expanding); auto spacer2 = new QSpacerItem(10, 10, QSizePolicy::Minimum, QSizePolicy::Expanding);
@@ -142,7 +143,8 @@ RunSettingsWidget::RunSettingsWidget(Target *target) :
m_gridLayout->addWidget(m_addRunToolButton, 4, 2, 1, 1); m_gridLayout->addWidget(m_addRunToolButton, 4, 2, 1, 1);
m_gridLayout->addWidget(m_removeRunToolButton, 4, 3, 1, 1); m_gridLayout->addWidget(m_removeRunToolButton, 4, 3, 1, 1);
m_gridLayout->addWidget(m_renameRunButton, 4, 4, 1, 1); m_gridLayout->addWidget(m_renameRunButton, 4, 4, 1, 1);
m_gridLayout->addItem(spacer1, 4, 5, 1, 1); m_gridLayout->addWidget(m_cloneRunButton, 4, 5, 1, 1);
m_gridLayout->addItem(spacer1, 4, 6, 1, 1);
m_gridLayout->addWidget(runWidget, 5, 0, 1, 6); m_gridLayout->addWidget(runWidget, 5, 0, 1, 6);
m_gridLayout->addItem(spacer2, 6, 0, 1, 1); m_gridLayout->addItem(spacer2, 6, 0, 1, 1);
@@ -203,6 +205,7 @@ RunSettingsWidget::RunSettingsWidget(Target *target) :
m_removeRunToolButton->setEnabled(m_target->runConfigurations().size() > 1); m_removeRunToolButton->setEnabled(m_target->runConfigurations().size() > 1);
m_renameRunButton->setEnabled(rc); m_renameRunButton->setEnabled(rc);
m_cloneRunButton->setEnabled(rc);
setConfigurationWidget(rc); setConfigurationWidget(rc);
@@ -214,6 +217,8 @@ RunSettingsWidget::RunSettingsWidget(Target *target) :
this, &RunSettingsWidget::removeRunConfiguration); this, &RunSettingsWidget::removeRunConfiguration);
connect(m_renameRunButton, &QAbstractButton::clicked, connect(m_renameRunButton, &QAbstractButton::clicked,
this, &RunSettingsWidget::renameRunConfiguration); this, &RunSettingsWidget::renameRunConfiguration);
connect(m_cloneRunButton, &QAbstractButton::clicked,
this, &RunSettingsWidget::cloneRunConfiguration);
connect(m_target, &Target::addedRunConfiguration, connect(m_target, &Target::addedRunConfiguration,
this, &RunSettingsWidget::updateRemoveToolButton); this, &RunSettingsWidget::updateRemoveToolButton);
@@ -232,11 +237,6 @@ RunSettingsWidget::RunSettingsWidget(Target *target) :
void RunSettingsWidget::aboutToShowAddMenu() void RunSettingsWidget::aboutToShowAddMenu()
{ {
m_addRunMenu->clear(); m_addRunMenu->clear();
if (m_target->activeRunConfiguration()) {
QAction *cloneAction = m_addRunMenu->addAction(tr("&Clone Selected"));
connect(cloneAction, &QAction::triggered,
this, &RunSettingsWidget::cloneRunConfiguration);
}
QList<QAction *> menuActions; QList<QAction *> menuActions;
for (const RunConfigurationCreationInfo &item : for (const RunConfigurationCreationInfo &item :
RunConfigurationFactory::creatorsForTarget(m_target)) { RunConfigurationFactory::creatorsForTarget(m_target)) {
@@ -295,6 +295,7 @@ void RunSettingsWidget::removeRunConfiguration()
m_target->removeRunConfiguration(rc); m_target->removeRunConfiguration(rc);
m_removeRunToolButton->setEnabled(m_target->runConfigurations().size() > 1); m_removeRunToolButton->setEnabled(m_target->runConfigurations().size() > 1);
m_renameRunButton->setEnabled(m_target->activeRunConfiguration()); m_renameRunButton->setEnabled(m_target->activeRunConfiguration());
m_cloneRunButton->setEnabled(m_target->activeRunConfiguration());
} }
void RunSettingsWidget::activeRunConfigurationChanged() void RunSettingsWidget::activeRunConfigurationChanged()
@@ -307,6 +308,7 @@ void RunSettingsWidget::activeRunConfigurationChanged()
setConfigurationWidget(qobject_cast<RunConfiguration *>(m_runConfigurationsModel->projectConfigurationAt(actRc.row()))); setConfigurationWidget(qobject_cast<RunConfiguration *>(m_runConfigurationsModel->projectConfigurationAt(actRc.row())));
m_ignoreChange = false; m_ignoreChange = false;
m_renameRunButton->setEnabled(m_target->activeRunConfiguration()); m_renameRunButton->setEnabled(m_target->activeRunConfiguration());
m_cloneRunButton->setEnabled(m_target->activeRunConfiguration());
} }
void RunSettingsWidget::renameRunConfiguration() void RunSettingsWidget::renameRunConfiguration()

View File

@@ -106,6 +106,7 @@ private:
QPushButton *m_addRunToolButton; QPushButton *m_addRunToolButton;
QPushButton *m_removeRunToolButton; QPushButton *m_removeRunToolButton;
QPushButton *m_renameRunButton; QPushButton *m_renameRunButton;
QPushButton *m_cloneRunButton;
QPushButton *m_renameDeployButton; QPushButton *m_renameDeployButton;
QLabel *m_disabledIcon; QLabel *m_disabledIcon;
QLabel *m_disabledText; QLabel *m_disabledText;