ProjectExplorer: Replace QSignalMapper with lambdas

Change-Id: Iaa7334ba3bddd7fe873796daac40e0c81c78c68e
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
Orgad Shaneh
2016-07-19 23:21:53 +03:00
committed by Orgad Shaneh
parent 008c4a222a
commit 8e833db5a6
2 changed files with 20 additions and 65 deletions

View File

@@ -38,8 +38,6 @@
#include <utils/hostosinfo.h> #include <utils/hostosinfo.h>
#include <utils/theme/theme.h> #include <utils/theme/theme.h>
#include <QSignalMapper>
#include <QLabel> #include <QLabel>
#include <QPushButton> #include <QPushButton>
#include <QMenu> #include <QMenu>
@@ -341,15 +339,6 @@ void BuildStepListWidget::addBuildStepWidget(int pos, BuildStep *step)
connect(s->step, &BuildStep::enabledChanged, connect(s->step, &BuildStep::enabledChanged,
this, &BuildStepListWidget::updateEnabledState); this, &BuildStepListWidget::updateEnabledState);
connect(s->toolWidget, &ToolWidget::disabledClicked,
m_disableMapper, static_cast<void (QSignalMapper::*)()>(&QSignalMapper::map));
connect(s->toolWidget, &ToolWidget::upClicked,
m_upMapper, static_cast<void (QSignalMapper::*)()>(&QSignalMapper::map));
connect(s->toolWidget, &ToolWidget::downClicked,
m_downMapper, static_cast<void (QSignalMapper::*)()>(&QSignalMapper::map));
connect(s->toolWidget, &ToolWidget::removeClicked,
m_removeMapper, static_cast<void (QSignalMapper::*)()>(&QSignalMapper::map));
} }
void BuildStepListWidget::addBuildStep(int pos) void BuildStepListWidget::addBuildStep(int pos)
@@ -367,11 +356,6 @@ void BuildStepListWidget::addBuildStep(int pos)
updateBuildStepButtonsState(); updateBuildStepButtonsState();
} }
void BuildStepListWidget::triggerStepMoveUp(int pos)
{
m_buildStepList->moveStepUp(pos);
}
void BuildStepListWidget::stepMoved(int from, int to) void BuildStepListWidget::stepMoved(int from, int to)
{ {
m_vbox->insertWidget(to, m_buildStepsData.at(from)->detailsWidget); m_vbox->insertWidget(to, m_buildStepsData.at(from)->detailsWidget);
@@ -383,21 +367,6 @@ void BuildStepListWidget::stepMoved(int from, int to)
updateBuildStepButtonsState(); updateBuildStepButtonsState();
} }
void BuildStepListWidget::triggerStepMoveDown(int pos)
{
triggerStepMoveUp(pos + 1);
}
void BuildStepListWidget::triggerRemoveBuildStep(int pos)
{
if (!m_buildStepList->removeStep(pos)) {
QMessageBox::warning(Core::ICore::mainWindow(),
tr("Removing Step failed"),
tr("Cannot remove build step while building"),
QMessageBox::Ok, QMessageBox::Ok);
}
}
void BuildStepListWidget::removeBuildStep(int pos) void BuildStepListWidget::removeBuildStep(int pos)
{ {
delete m_buildStepsData.takeAt(pos); delete m_buildStepsData.takeAt(pos);
@@ -408,31 +377,11 @@ void BuildStepListWidget::removeBuildStep(int pos)
m_noStepsLabel->setVisible(hasSteps); m_noStepsLabel->setVisible(hasSteps);
} }
void BuildStepListWidget::triggerDisable(int pos)
{
BuildStep *bs = m_buildStepsData.at(pos)->step;
bs->setEnabled(!bs->enabled());
m_buildStepsData.at(pos)->toolWidget->setBuildStepEnabled(bs->enabled());
}
void BuildStepListWidget::setupUi() void BuildStepListWidget::setupUi()
{ {
if (m_addButton) if (m_addButton)
return; return;
m_disableMapper = new QSignalMapper(this);
connect(m_disableMapper, static_cast<void (QSignalMapper::*)(int)>(&QSignalMapper::mapped),
this, &BuildStepListWidget::triggerDisable);
m_upMapper = new QSignalMapper(this);
connect(m_upMapper, static_cast<void (QSignalMapper::*)(int)>(&QSignalMapper::mapped),
this, &BuildStepListWidget::triggerStepMoveUp);
m_downMapper = new QSignalMapper(this);
connect(m_downMapper, static_cast<void (QSignalMapper::*)(int)>(&QSignalMapper::mapped),
this, &BuildStepListWidget::triggerStepMoveDown);
m_removeMapper = new QSignalMapper(this);
connect(m_removeMapper, static_cast<void (QSignalMapper::*)(int)>(&QSignalMapper::mapped),
this, &BuildStepListWidget::triggerRemoveBuildStep);
m_vbox = new QVBoxLayout(this); m_vbox = new QVBoxLayout(this);
m_vbox->setContentsMargins(0, 0, 0, 0); m_vbox->setContentsMargins(0, 0, 0, 0);
m_vbox->setSpacing(0); m_vbox->setSpacing(0);
@@ -464,18 +413,34 @@ void BuildStepListWidget::updateBuildStepButtonsState()
return; return;
for (int i = 0; i < m_buildStepsData.count(); ++i) { for (int i = 0; i < m_buildStepsData.count(); ++i) {
BuildStepsWidgetData *s = m_buildStepsData.at(i); BuildStepsWidgetData *s = m_buildStepsData.at(i);
m_disableMapper->setMapping(s->toolWidget, i); disconnect(s->toolWidget, nullptr, this, nullptr);
connect(s->toolWidget, &ToolWidget::disabledClicked,
this, [s] {
BuildStep *bs = s->step;
bs->setEnabled(!bs->enabled());
s->toolWidget->setBuildStepEnabled(bs->enabled());
});
s->toolWidget->setRemoveEnabled(!m_buildStepList->at(i)->immutable()); s->toolWidget->setRemoveEnabled(!m_buildStepList->at(i)->immutable());
m_removeMapper->setMapping(s->toolWidget, i); connect(s->toolWidget, &ToolWidget::removeClicked,
this, [this, i] {
if (!m_buildStepList->removeStep(i)) {
QMessageBox::warning(Core::ICore::mainWindow(),
tr("Removing Step failed"),
tr("Cannot remove build step while building"),
QMessageBox::Ok, QMessageBox::Ok);
}
});
s->toolWidget->setUpEnabled((i > 0) s->toolWidget->setUpEnabled((i > 0)
&& !(m_buildStepList->at(i)->immutable() && !(m_buildStepList->at(i)->immutable()
&& m_buildStepList->at(i - 1)->immutable())); && m_buildStepList->at(i - 1)->immutable()));
m_upMapper->setMapping(s->toolWidget, i); connect(s->toolWidget, &ToolWidget::upClicked,
this, [this, i] { m_buildStepList->moveStepUp(i); });
s->toolWidget->setDownEnabled((i + 1 < m_buildStepList->count()) s->toolWidget->setDownEnabled((i + 1 < m_buildStepList->count())
&& !(m_buildStepList->at(i)->immutable() && !(m_buildStepList->at(i)->immutable()
&& m_buildStepList->at(i + 1)->immutable())); && m_buildStepList->at(i + 1)->immutable()));
m_downMapper->setMapping(s->toolWidget, i); connect(s->toolWidget, &ToolWidget::downClicked,
this, [this, i] { m_buildStepList->moveStepUp(i + 1); });
// Only show buttons when needed // Only show buttons when needed
s->toolWidget->setDownVisible(m_buildStepList->count() != 1); s->toolWidget->setDownVisible(m_buildStepList->count() != 1);

View File

@@ -34,7 +34,6 @@ class QPushButton;
class QToolButton; class QToolButton;
class QLabel; class QLabel;
class QVBoxLayout; class QVBoxLayout;
class QSignalMapper;
class QGraphicsOpacityEffect; class QGraphicsOpacityEffect;
QT_END_NAMESPACE QT_END_NAMESPACE
@@ -109,12 +108,8 @@ private:
void updateSummary(); void updateSummary();
void updateAdditionalSummary(); void updateAdditionalSummary();
void updateEnabledState(); void updateEnabledState();
void triggerStepMoveUp(int pos);
void stepMoved(int from, int to); void stepMoved(int from, int to);
void triggerStepMoveDown(int pos);
void triggerRemoveBuildStep(int pos);
void removeBuildStep(int pos); void removeBuildStep(int pos);
void triggerDisable(int pos);
void setupUi(); void setupUi();
void updateBuildStepButtonsState(); void updateBuildStepButtonsState();
@@ -129,11 +124,6 @@ private:
QLabel *m_noStepsLabel; QLabel *m_noStepsLabel;
QPushButton *m_addButton; QPushButton *m_addButton;
QSignalMapper *m_disableMapper;
QSignalMapper *m_upMapper;
QSignalMapper *m_downMapper;
QSignalMapper *m_removeMapper;
int m_leftMargin; int m_leftMargin;
}; };