MiniProjectTargetSelector: Trigger less list updates

Change-Id: I39634ef201ac4a12d5ea114843c73e4558015c05
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Tim Jenssen
2017-09-26 15:15:22 +02:00
parent 272645d790
commit c9f48f87e2
2 changed files with 67 additions and 45 deletions

View File

@@ -65,8 +65,8 @@ static QIcon createCenteredIcon(const QIcon &icon, const QIcon &overlay)
{ {
QPixmap targetPixmap; QPixmap targetPixmap;
const qreal appDevicePixelRatio = qApp->devicePixelRatio(); const qreal appDevicePixelRatio = qApp->devicePixelRatio();
targetPixmap = QPixmap(Core::Constants::MODEBAR_ICON_SIZE * appDevicePixelRatio, const int deviceSpaceIconSize = static_cast<int>(Core::Constants::MODEBAR_ICON_SIZE * appDevicePixelRatio);
Core::Constants::MODEBAR_ICON_SIZE * appDevicePixelRatio); targetPixmap = QPixmap(deviceSpaceIconSize, deviceSpaceIconSize);
targetPixmap.setDevicePixelRatio(appDevicePixelRatio); targetPixmap.setDevicePixelRatio(appDevicePixelRatio);
targetPixmap.fill(Qt::transparent); targetPixmap.fill(Qt::transparent);
QPainter painter(&targetPixmap); // painter in user space QPainter painter(&targetPixmap); // painter in user space
@@ -696,10 +696,10 @@ MiniProjectTargetSelector::MiniProjectTargetSelector(QAction *targetSelectorActi
m_listWidgets[i] = new GenericListWidget(this); m_listWidgets[i] = new GenericListWidget(this);
} }
// Validate state: At this point the session is still empty!
Project *startup = SessionManager::startupProject(); Project *startup = SessionManager::startupProject();
changeStartupProject(startup); QTC_CHECK(!startup);
if (startup) QTC_CHECK(SessionManager::projects().isEmpty());
activeTargetChanged(startup->activeTarget());
connect(m_summaryLabel, &QLabel::linkActivated, connect(m_summaryLabel, &QLabel::linkActivated,
this, &MiniProjectTargetSelector::switchToProjectsMode); this, &MiniProjectTargetSelector::switchToProjectsMode);
@@ -1017,18 +1017,18 @@ void MiniProjectTargetSelector::handleNewProjectConfiguration(ProjectConfigurati
return; return;
} }
if (auto bc = qobject_cast<BuildConfiguration *>(pc)) { if (auto bc = qobject_cast<BuildConfiguration *>(pc)) {
addedBuildConfiguration(bc); if (addedBuildConfiguration(bc))
updateBuildListVisible(); updateBuildListVisible();
return; return;
} }
if (auto dc = qobject_cast<DeployConfiguration *>(pc)) { if (auto dc = qobject_cast<DeployConfiguration *>(pc)) {
addedDeployConfiguration(dc); if (addedDeployConfiguration(dc))
updateDeployListVisible(); updateDeployListVisible();
return; return;
} }
if (auto rc = qobject_cast<RunConfiguration *>(pc)) { if (auto rc = qobject_cast<RunConfiguration *>(pc)) {
addedRunConfiguration(rc); if (addedRunConfiguration(rc))
updateRunListVisible(); updateRunListVisible();
return; return;
} }
} }
@@ -1045,26 +1045,28 @@ void MiniProjectTargetSelector::handleRemovalOfProjectConfiguration(ProjectConfi
return; return;
} }
if (auto bc = qobject_cast<BuildConfiguration *>(pc)) { if (auto bc = qobject_cast<BuildConfiguration *>(pc)) {
removedBuildConfiguration(bc); if (removedBuildConfiguration(bc))
updateBuildListVisible(); updateBuildListVisible();
return; return;
} }
if (auto dc = qobject_cast<DeployConfiguration *>(pc)) { if (auto dc = qobject_cast<DeployConfiguration *>(pc)) {
removedDeployConfiguration(dc); if (removedDeployConfiguration(dc))
updateDeployListVisible(); updateDeployListVisible();
return; return;
} }
if (auto rc = qobject_cast<RunConfiguration *>(pc)) { if (auto rc = qobject_cast<RunConfiguration *>(pc)) {
removedRunConfiguration(rc); if (removedRunConfiguration(rc))
updateRunListVisible(); updateRunListVisible();
return; return;
} }
} }
void MiniProjectTargetSelector::addedTarget(Target *target) void MiniProjectTargetSelector::addedTarget(Target *target)
{ {
if (target->project() == m_project) if (target->project() != m_project)
m_listWidgets[TARGET]->addProjectConfiguration(target); return;
m_listWidgets[TARGET]->addProjectConfiguration(target);
foreach (BuildConfiguration *bc, target->buildConfigurations()) foreach (BuildConfiguration *bc, target->buildConfigurations())
addedBuildConfiguration(bc); addedBuildConfiguration(bc);
@@ -1076,8 +1078,10 @@ void MiniProjectTargetSelector::addedTarget(Target *target)
void MiniProjectTargetSelector::removedTarget(Target *target) void MiniProjectTargetSelector::removedTarget(Target *target)
{ {
if (target->project() == m_project) if (target->project() != m_project)
m_listWidgets[TARGET]->removeProjectConfiguration(target); return;
m_listWidgets[TARGET]->removeProjectConfiguration(target);
foreach (BuildConfiguration *bc, target->buildConfigurations()) foreach (BuildConfiguration *bc, target->buildConfigurations())
removedBuildConfiguration(bc); removedBuildConfiguration(bc);
@@ -1087,39 +1091,57 @@ void MiniProjectTargetSelector::removedTarget(Target *target)
removedRunConfiguration(rc); removedRunConfiguration(rc);
} }
void MiniProjectTargetSelector::addedBuildConfiguration(BuildConfiguration *bc) bool MiniProjectTargetSelector::addedBuildConfiguration(BuildConfiguration *bc)
{ {
if (bc->target() == m_target) if (bc->target() != m_project->activeTarget())
m_listWidgets[BUILD]->addProjectConfiguration(bc); return false;
m_listWidgets[BUILD]->addProjectConfiguration(bc);
return true;
} }
void MiniProjectTargetSelector::removedBuildConfiguration(BuildConfiguration *bc) bool MiniProjectTargetSelector::removedBuildConfiguration(BuildConfiguration *bc)
{ {
if (bc->target() == m_target) if (bc->target() == m_project->activeTarget())
m_listWidgets[BUILD]->removeProjectConfiguration(bc); return false;
m_listWidgets[BUILD]->removeProjectConfiguration(bc);
return true;
} }
void MiniProjectTargetSelector::addedDeployConfiguration(DeployConfiguration *dc) bool MiniProjectTargetSelector::addedDeployConfiguration(DeployConfiguration *dc)
{ {
if (dc->target() == m_target) if (dc->target() != m_project->activeTarget())
m_listWidgets[DEPLOY]->addProjectConfiguration(dc); return false;
m_listWidgets[DEPLOY]->addProjectConfiguration(dc);
return true;
} }
void MiniProjectTargetSelector::removedDeployConfiguration(DeployConfiguration *dc) bool MiniProjectTargetSelector::removedDeployConfiguration(DeployConfiguration *dc)
{ {
if (dc->target() == m_target) if (dc->target() != m_project->activeTarget())
m_listWidgets[DEPLOY]->removeProjectConfiguration(dc); return false;
m_listWidgets[DEPLOY]->removeProjectConfiguration(dc);
return true;
} }
void MiniProjectTargetSelector::addedRunConfiguration(RunConfiguration *rc) bool MiniProjectTargetSelector::addedRunConfiguration(RunConfiguration *rc)
{ {
if (rc->target() == m_target) if (rc->target() != m_project->activeTarget())
m_listWidgets[RUN]->addProjectConfiguration(rc); return false;
m_listWidgets[RUN]->addProjectConfiguration(rc);
return true;
} }
void MiniProjectTargetSelector::removedRunConfiguration(RunConfiguration *rc) bool MiniProjectTargetSelector::removedRunConfiguration(RunConfiguration *rc)
{ {
if (rc->target() == m_target) if (rc->target() != m_project->activeTarget())
m_listWidgets[RUN]->removeProjectConfiguration(rc); return false;
m_listWidgets[RUN]->removeProjectConfiguration(rc);
return true;
} }
void MiniProjectTargetSelector::updateProjectListVisible() void MiniProjectTargetSelector::updateProjectListVisible()

View File

@@ -163,12 +163,12 @@ private:
void switchToProjectsMode(); void switchToProjectsMode();
void addedTarget(Target *target); void addedTarget(Target *target);
void removedTarget(Target *target); void removedTarget(Target *target);
void addedBuildConfiguration(BuildConfiguration* bc); bool addedBuildConfiguration(BuildConfiguration* bc);
void removedBuildConfiguration(BuildConfiguration* bc); bool removedBuildConfiguration(BuildConfiguration* bc);
void addedDeployConfiguration(DeployConfiguration *dc); bool addedDeployConfiguration(DeployConfiguration *dc);
void removedDeployConfiguration(DeployConfiguration *dc); bool removedDeployConfiguration(DeployConfiguration *dc);
void addedRunConfiguration(RunConfiguration *rc); bool addedRunConfiguration(RunConfiguration *rc);
void removedRunConfiguration(RunConfiguration *rc); bool removedRunConfiguration(RunConfiguration *rc);
void updateProjectListVisible(); void updateProjectListVisible();
void updateTargetListVisible(); void updateTargetListVisible();