From 83edceafe48f9a2102c7d6ea977aa890210aa661 Mon Sep 17 00:00:00 2001 From: kh1 <qt-info@nokia.com> Date: Mon, 21 Jun 2010 13:25:34 +0200 Subject: [PATCH] Fix missing update notification if a device config get's added/removed. Task-number: QTCREATORBUG-1686 Reviewed-by: ck --- .../qt-maemo/maemorunconfiguration.cpp | 2 +- .../qt-maemo/maemorunconfiguration.h | 2 +- .../qt-maemo/maemorunconfigurationwidget.cpp | 2 +- .../qt-maemo/qemuruntimemanager.cpp | 61 +++++++++---------- .../qt-maemo/qemuruntimemanager.h | 5 +- 5 files changed, 37 insertions(+), 35 deletions(-) diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp index 2fb1d87bfca..b408f038ab1 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp @@ -321,7 +321,7 @@ void MaemoRunConfiguration::updateDeviceConfigurations() } else { m_devConfig = configManager.find(m_devConfig.internalId); } - emit deviceConfigurationsUpdated(); + emit deviceConfigurationsUpdated(target()); } } // namespace Internal diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h index e76a8593382..26abb766496 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h @@ -93,7 +93,7 @@ public: virtual QVariantMap toMap() const; signals: - void deviceConfigurationsUpdated(); + void deviceConfigurationsUpdated(ProjectExplorer::Target *target); void deviceConfigurationChanged(ProjectExplorer::Target *target); void targetInformationChanged() const; diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.cpp index 2e89fb31788..e5b7fdf5d2c 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.cpp @@ -89,7 +89,7 @@ MaemoRunConfigurationWidget::MaemoRunConfigurationWidget( mainLayout->addRow(tr("Arguments:"), m_argsLineEdit); resetDeviceConfigurations(); - connect(m_runConfiguration, SIGNAL(deviceConfigurationsUpdated()), + connect(m_runConfiguration, SIGNAL(deviceConfigurationsUpdated(ProjectExplorer::Target *)), this, SLOT(resetDeviceConfigurations())); connect(m_configNameLineEdit, SIGNAL(textEdited(QString)), this, diff --git a/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.cpp b/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.cpp index 8e23a27a146..b08172cac64 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.cpp @@ -199,7 +199,7 @@ void QemuRuntimeManager::projectRemoved(ProjectExplorer::Project *project) void QemuRuntimeManager::projectChanged(ProjectExplorer::Project *project) { if (project) - toogleStarterButton(project->activeTarget()); + toggleStarterButton(project->activeTarget()); } bool targetIsMaemo(const QString &id) @@ -231,13 +231,8 @@ void QemuRuntimeManager::targetAdded(ProjectExplorer::Target *target) // handle the qt version changes the build configuration uses connect(target, SIGNAL(environmentChanged()), this, SLOT(environmentChanged())); - foreach (RunConfiguration *runConfig, target->runConfigurations()) { - MaemoRunConfiguration *mrc = qobject_cast<MaemoRunConfiguration *> (runConfig); - if (mrc) { // handle device configuration change too - connect(mrc, SIGNAL(deviceConfigurationChanged(ProjectExplorer::Target*)), - this, SLOT(deviceConfigurationChanged(ProjectExplorer::Target*))); - } - } + foreach (RunConfiguration *rc, target->runConfigurations()) + toggleDeviceConnections(qobject_cast<MaemoRunConfiguration*> (rc), true); m_qemuAction->setVisible(!m_runtimes.isEmpty() && sessionHasMaemoTarget()); } @@ -262,44 +257,29 @@ void QemuRuntimeManager::targetRemoved(ProjectExplorer::Target *target) disconnect(target, SIGNAL(environmentChanged()), this, SLOT(environmentChanged())); - foreach (RunConfiguration *runConfig, target->runConfigurations()) { - MaemoRunConfiguration *mrc = qobject_cast<MaemoRunConfiguration *> (runConfig); - if (mrc) { - disconnect(mrc, SIGNAL(deviceConfigurationChanged(ProjectExplorer::Target*)), - this, SLOT(deviceConfigurationChanged(ProjectExplorer::Target*))); - } - } + foreach (RunConfiguration *rc, target->runConfigurations()) + toggleDeviceConnections(qobject_cast<MaemoRunConfiguration*> (rc), false); m_qemuAction->setVisible(!m_runtimes.isEmpty() && sessionHasMaemoTarget()); } void QemuRuntimeManager::targetChanged(ProjectExplorer::Target *target) { if (target) - toogleStarterButton(target); + toggleStarterButton(target); } void QemuRuntimeManager::runConfigurationAdded(ProjectExplorer::RunConfiguration *rc) { if (!rc || !targetIsMaemo(rc->target()->id())) return; - - MaemoRunConfiguration *mrc = qobject_cast<MaemoRunConfiguration *> (rc); - if (mrc) { // handle device configuration change too - connect(mrc, SIGNAL(deviceConfigurationChanged(ProjectExplorer::Target*)), - this, SLOT(deviceConfigurationChanged(ProjectExplorer::Target*))); - } + toggleDeviceConnections(qobject_cast<MaemoRunConfiguration*> (rc), true); } void QemuRuntimeManager::runConfigurationRemoved(ProjectExplorer::RunConfiguration *rc) { if (!rc || rc->target()->id() != QLatin1String(Constants::MAEMO_DEVICE_TARGET_ID)) return; - - MaemoRunConfiguration *mrc = qobject_cast<MaemoRunConfiguration *> (rc); - if (mrc) { - disconnect(mrc, SIGNAL(deviceConfigurationChanged(ProjectExplorer::Target*)), - this, SLOT(deviceConfigurationChanged(ProjectExplorer::Target*))); - } + toggleDeviceConnections(qobject_cast<MaemoRunConfiguration*> (rc), false); } void QemuRuntimeManager::runConfigurationChanged(ProjectExplorer::RunConfiguration *rc) @@ -327,7 +307,7 @@ void QemuRuntimeManager::buildConfigurationRemoved(ProjectExplorer::BuildConfigu void QemuRuntimeManager::buildConfigurationChanged(ProjectExplorer::BuildConfiguration *bc) { if (bc) - toogleStarterButton(bc->target()); + toggleStarterButton(bc->target()); } void QemuRuntimeManager::environmentChanged() @@ -335,7 +315,7 @@ void QemuRuntimeManager::environmentChanged() // likely to happen when the qt version changes the build config is using if (ProjectExplorerPlugin *explorer = ProjectExplorerPlugin::instance()) { if (Project *project = explorer->session()->startupProject()) - toogleStarterButton(project->activeTarget()); + toggleStarterButton(project->activeTarget()); } } @@ -492,7 +472,7 @@ void QemuRuntimeManager::updateStarterIcon(bool running) state)); } -void QemuRuntimeManager::toogleStarterButton(Target *target) +void QemuRuntimeManager::toggleStarterButton(Target *target) { if (m_needsSetup) setupRuntimes(); @@ -619,3 +599,22 @@ QString QemuRuntimeManager::runtimeForQtVersion(const QString &qmakeCommand) con } return QString(); } + +void QemuRuntimeManager::toggleDeviceConnections(MaemoRunConfiguration *mrc, + bool _connect) +{ + if (!mrc) + return; + + if (_connect) { // handle device configuration changes + connect(mrc, SIGNAL(deviceConfigurationChanged(ProjectExplorer::Target*)), + this, SLOT(deviceConfigurationChanged(ProjectExplorer::Target*))); + connect(mrc, SIGNAL(deviceConfigurationsUpdated(ProjectExplorer::Target*)), + this, SLOT(deviceConfigurationChanged(ProjectExplorer::Target*))); + } else { + disconnect(mrc, SIGNAL(deviceConfigurationChanged(ProjectExplorer::Target*)), + this, SLOT(deviceConfigurationChanged(ProjectExplorer::Target*))); + disconnect(mrc, SIGNAL(deviceConfigurationsUpdated(ProjectExplorer::Target*)), + this, SLOT(deviceConfigurationChanged(ProjectExplorer::Target*))); + } +} diff --git a/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.h b/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.h index 0054596b2e9..3af6d60e255 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.h +++ b/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.h @@ -51,6 +51,7 @@ namespace ProjectExplorer { namespace Qt4ProjectManager { class QtVersion; namespace Internal { + class MaemoRunConfiguration; struct Runtime { @@ -115,7 +116,7 @@ private: bool sessionHasMaemoTarget() const; void updateStarterIcon(bool running); - void toogleStarterButton(ProjectExplorer::Target *target); + void toggleStarterButton(ProjectExplorer::Target *target); bool targetUsesRuntimeConfig(ProjectExplorer::Target *target); QString maddeRoot(const QString &qmake) const; @@ -124,6 +125,8 @@ private: bool fillRuntimeInformation(Runtime *runtime) const; QString runtimeForQtVersion(const QString &qmakeCommand) const; + void toggleDeviceConnections(MaemoRunConfiguration *mrc, bool connect); + private: QAction *m_qemuAction; QProcess *m_qemuProcess; -- GitLab