forked from qt-creator/qt-creator
Fix broken enabled/ disabled emulator startbutton state.
Functionality depends entirely on the active start-up project, all other projects should have the the button disabled if they have no Maemo run config or the the run config is not the active on. Reviewed-by: ck
This commit is contained in:
@@ -144,7 +144,7 @@ MaemoManager::addQemuSimulatorStarter(Project *project)
|
|||||||
m_qemuCommand = actionManager->registerAction(action, "MaemoEmulator",
|
m_qemuCommand = actionManager->registerAction(action, "MaemoEmulator",
|
||||||
QList<int>() << Core::Constants::C_GLOBAL_ID);
|
QList<int>() << Core::Constants::C_GLOBAL_ID);
|
||||||
modeManager->addAction(m_qemuCommand, 1);
|
modeManager->addAction(m_qemuCommand, 1);
|
||||||
m_qemuCommand->action()->setEnabled(true);
|
m_qemuCommand->action()->setEnabled(false);
|
||||||
m_qemuCommand->setAttribute(Core::Command::CA_UpdateText);
|
m_qemuCommand->setAttribute(Core::Command::CA_UpdateText);
|
||||||
m_qemuCommand->setAttribute(Core::Command::CA_UpdateIcon);
|
m_qemuCommand->setAttribute(Core::Command::CA_UpdateIcon);
|
||||||
|
|
||||||
@@ -154,9 +154,11 @@ MaemoManager::addQemuSimulatorStarter(Project *project)
|
|||||||
void
|
void
|
||||||
MaemoManager::removeQemuSimulatorStarter(Project *project)
|
MaemoManager::removeQemuSimulatorStarter(Project *project)
|
||||||
{
|
{
|
||||||
|
if (projects.contains(project)) {
|
||||||
projects.remove(project);
|
projects.remove(project);
|
||||||
if (projects.isEmpty() && m_qemuCommand)
|
if (projects.isEmpty() && m_qemuCommand)
|
||||||
m_qemuCommand->action()->setVisible(false);
|
m_qemuCommand->action()->setVisible(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -97,9 +97,6 @@ void MaemoRunConfiguration::init()
|
|||||||
connect(qt4Target(), SIGNAL(targetInformationChanged()), this,
|
connect(qt4Target(), SIGNAL(targetInformationChanged()), this,
|
||||||
SLOT(invalidateCachedTargetInformation()));
|
SLOT(invalidateCachedTargetInformation()));
|
||||||
|
|
||||||
connect(qt4Target(), SIGNAL(targetInformationChanged()), this,
|
|
||||||
SLOT(enabledStateChanged()));
|
|
||||||
|
|
||||||
connect(qt4Target()->qt4Project(),
|
connect(qt4Target()->qt4Project(),
|
||||||
SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
|
SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
|
||||||
this, SLOT(proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode*)));
|
this, SLOT(proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode*)));
|
||||||
@@ -232,6 +229,7 @@ bool MaemoRunConfiguration::fileNeedsDeployment(const QString &path,
|
|||||||
void MaemoRunConfiguration::setDeviceConfig(const MaemoDeviceConfig &devConf)
|
void MaemoRunConfiguration::setDeviceConfig(const MaemoDeviceConfig &devConf)
|
||||||
{
|
{
|
||||||
m_devConfig = devConf;
|
m_devConfig = devConf;
|
||||||
|
emit deviceConfigurationChanged(target());
|
||||||
}
|
}
|
||||||
|
|
||||||
MaemoDeviceConfig MaemoRunConfiguration::deviceConfig() const
|
MaemoDeviceConfig MaemoRunConfiguration::deviceConfig() const
|
||||||
@@ -454,6 +452,10 @@ void MaemoRunConfiguration::updateSimulatorInformation() const
|
|||||||
|
|
||||||
void MaemoRunConfiguration::startStopQemu()
|
void MaemoRunConfiguration::startStopQemu()
|
||||||
{
|
{
|
||||||
|
const MaemoDeviceConfig &config = deviceConfig();
|
||||||
|
if (!config.isValid()|| config.type != MaemoDeviceConfig::Simulator)
|
||||||
|
return;
|
||||||
|
|
||||||
if (qemu->state() != QProcess::NotRunning) {
|
if (qemu->state() != QProcess::NotRunning) {
|
||||||
if (qemu->state() == QProcess::Running) {
|
if (qemu->state() == QProcess::Running) {
|
||||||
qemu->terminate();
|
qemu->terminate();
|
||||||
@@ -496,11 +498,6 @@ void MaemoRunConfiguration::qemuProcessFinished()
|
|||||||
emit qemuProcessStatus(false);
|
emit qemuProcessStatus(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaemoRunConfiguration::enabledStateChanged()
|
|
||||||
{
|
|
||||||
MaemoManager::instance().setQemuSimulatorStarterEnabled(isEnabled());
|
|
||||||
}
|
|
||||||
|
|
||||||
void MaemoRunConfiguration::updateDeviceConfigurations()
|
void MaemoRunConfiguration::updateDeviceConfigurations()
|
||||||
{
|
{
|
||||||
qDebug("%s: Current devid = %llu", Q_FUNC_INFO, m_devConfig.internalId);
|
qDebug("%s: Current devid = %llu", Q_FUNC_INFO, m_devConfig.internalId);
|
||||||
|
|||||||
@@ -64,7 +64,6 @@ public:
|
|||||||
virtual ~MaemoRunConfiguration();
|
virtual ~MaemoRunConfiguration();
|
||||||
|
|
||||||
bool isEnabled(ProjectExplorer::BuildConfiguration *config) const;
|
bool isEnabled(ProjectExplorer::BuildConfiguration *config) const;
|
||||||
using RunConfiguration::isEnabled;
|
|
||||||
QWidget *configurationWidget();
|
QWidget *configurationWidget();
|
||||||
Qt4Target *qt4Target() const;
|
Qt4Target *qt4Target() const;
|
||||||
Qt4BuildConfiguration *activeQt4BuildConfiguration() const;
|
Qt4BuildConfiguration *activeQt4BuildConfiguration() const;
|
||||||
@@ -102,6 +101,7 @@ public:
|
|||||||
|
|
||||||
signals:
|
signals:
|
||||||
void deviceConfigurationsUpdated();
|
void deviceConfigurationsUpdated();
|
||||||
|
void deviceConfigurationChanged(ProjectExplorer::Target *target);
|
||||||
void targetInformationChanged() const;
|
void targetInformationChanged() const;
|
||||||
void cachedSimulatorInformationChanged() const;
|
void cachedSimulatorInformationChanged() const;
|
||||||
void qemuProcessStatus(bool running);
|
void qemuProcessStatus(bool running);
|
||||||
@@ -118,8 +118,6 @@ private slots:
|
|||||||
void startStopQemu();
|
void startStopQemu();
|
||||||
void qemuProcessFinished();
|
void qemuProcessFinished();
|
||||||
|
|
||||||
void enabledStateChanged();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void init();
|
void init();
|
||||||
void updateTarget() const;
|
void updateTarget() const;
|
||||||
|
|||||||
@@ -67,8 +67,9 @@ MaemoRunConfigurationFactory::MaemoRunConfigurationFactory(QObject *parent)
|
|||||||
this, SLOT(projectAdded(ProjectExplorer::Project*)));
|
this, SLOT(projectAdded(ProjectExplorer::Project*)));
|
||||||
connect(explorer->session(), SIGNAL(projectRemoved(ProjectExplorer::Project*)),
|
connect(explorer->session(), SIGNAL(projectRemoved(ProjectExplorer::Project*)),
|
||||||
this, SLOT(projectRemoved(ProjectExplorer::Project*)));
|
this, SLOT(projectRemoved(ProjectExplorer::Project*)));
|
||||||
connect(explorer, SIGNAL(currentProjectChanged(ProjectExplorer::Project*)),
|
connect(explorer->session(),
|
||||||
this, SLOT(currentProjectChanged(ProjectExplorer::Project*)));
|
SIGNAL(startupProjectChanged(ProjectExplorer::Project*)), this,
|
||||||
|
SLOT(projectChanged(ProjectExplorer::Project*)));
|
||||||
}
|
}
|
||||||
|
|
||||||
MaemoRunConfigurationFactory::~MaemoRunConfigurationFactory()
|
MaemoRunConfigurationFactory::~MaemoRunConfigurationFactory()
|
||||||
@@ -151,65 +152,100 @@ RunConfiguration *MaemoRunConfigurationFactory::clone(Target *parent,
|
|||||||
return new MaemoRunConfiguration(static_cast<Qt4Target *>(parent), old);
|
return new MaemoRunConfiguration(static_cast<Qt4Target *>(parent), old);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaemoRunConfigurationFactory::projectAdded(
|
void MaemoRunConfigurationFactory::projectAdded(ProjectExplorer::Project *project)
|
||||||
ProjectExplorer::Project *project)
|
|
||||||
{
|
{
|
||||||
connect(project, SIGNAL(addedTarget(ProjectExplorer::Target*)), this,
|
connect(project, SIGNAL(addedTarget(ProjectExplorer::Target*)), this,
|
||||||
SLOT(targetAdded(ProjectExplorer::Target*)));
|
SLOT(targetAdded(ProjectExplorer::Target*)));
|
||||||
connect(project, SIGNAL(removedTarget(ProjectExplorer::Target*)), this,
|
connect(project, SIGNAL(removedTarget(ProjectExplorer::Target*)), this,
|
||||||
SLOT(targetRemoved(ProjectExplorer::Target*)));
|
SLOT(targetRemoved(ProjectExplorer::Target*)));
|
||||||
|
connect(project, SIGNAL(activeTargetChanged(ProjectExplorer::Target*)),
|
||||||
|
this, SLOT(targetChanged(ProjectExplorer::Target*)));
|
||||||
|
|
||||||
foreach (Target *target, project->targets())
|
foreach (Target *target, project->targets())
|
||||||
targetAdded(target);
|
targetAdded(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaemoRunConfigurationFactory::projectRemoved(
|
void MaemoRunConfigurationFactory::projectRemoved(ProjectExplorer::Project *project)
|
||||||
ProjectExplorer::Project *project)
|
|
||||||
{
|
{
|
||||||
disconnect(project, SIGNAL(addedTarget(ProjectExplorer::Target*)), this,
|
disconnect(project, SIGNAL(addedTarget(ProjectExplorer::Target*)), this,
|
||||||
SLOT(targetAdded(ProjectExplorer::Target*)));
|
SLOT(targetAdded(ProjectExplorer::Target*)));
|
||||||
disconnect(project, SIGNAL(removedTarget(ProjectExplorer::Target*)), this,
|
disconnect(project, SIGNAL(removedTarget(ProjectExplorer::Target*)), this,
|
||||||
SLOT(targetRemoved(ProjectExplorer::Target*)));
|
SLOT(targetRemoved(ProjectExplorer::Target*)));
|
||||||
|
disconnect(project, SIGNAL(activeTargetChanged(ProjectExplorer::Target*)),
|
||||||
|
this, SLOT(targetChanged(ProjectExplorer::Target*)));
|
||||||
|
|
||||||
foreach (Target *target, project->targets())
|
foreach (Target *target, project->targets())
|
||||||
targetRemoved(target);
|
targetRemoved(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MaemoRunConfigurationFactory::projectChanged(ProjectExplorer::Project *project)
|
||||||
|
{
|
||||||
|
if (project)
|
||||||
|
updateMaemoEmulatorStarter(project->target(QLatin1String(MAEMO_DEVICE_TARGET_ID)));
|
||||||
|
}
|
||||||
|
|
||||||
void MaemoRunConfigurationFactory::targetAdded(ProjectExplorer::Target *target)
|
void MaemoRunConfigurationFactory::targetAdded(ProjectExplorer::Target *target)
|
||||||
{
|
{
|
||||||
if (target->id() != QLatin1String(MAEMO_DEVICE_TARGET_ID))
|
if (!target || target->id() != QLatin1String(MAEMO_DEVICE_TARGET_ID))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
MaemoManager::instance().addQemuSimulatorStarter(target->project());
|
MaemoManager::instance().addQemuSimulatorStarter(target->project());
|
||||||
|
foreach (RunConfiguration *runConfig, target->runConfigurations()) {
|
||||||
|
if (MaemoRunConfiguration *mrc = qobject_cast<MaemoRunConfiguration *> (runConfig)) {
|
||||||
|
connect(mrc, SIGNAL(deviceConfigurationChanged(ProjectExplorer::Target*)),
|
||||||
|
this, SLOT(targetChanged(ProjectExplorer::Target*)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
updateMaemoEmulatorStarter(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaemoRunConfigurationFactory::targetRemoved(ProjectExplorer::Target *target)
|
void MaemoRunConfigurationFactory::targetRemoved(ProjectExplorer::Target *target)
|
||||||
{
|
{
|
||||||
if (target->id() != QLatin1String(MAEMO_DEVICE_TARGET_ID))
|
if (!target || target->id() != QLatin1String(MAEMO_DEVICE_TARGET_ID))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
MaemoManager::instance().removeQemuSimulatorStarter(target->project());
|
MaemoManager::instance().removeQemuSimulatorStarter(target->project());
|
||||||
|
foreach (RunConfiguration *runConfig, target->runConfigurations()) {
|
||||||
|
if (MaemoRunConfiguration *mrc = qobject_cast<MaemoRunConfiguration *> (runConfig)) {
|
||||||
|
disconnect(mrc, SIGNAL(deviceConfigurationChanged(ProjectExplorer::Target*)),
|
||||||
|
this, SLOT(targetChanged(ProjectExplorer::Target*)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
updateMaemoEmulatorStarter(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaemoRunConfigurationFactory::currentProjectChanged(
|
void MaemoRunConfigurationFactory::targetChanged(ProjectExplorer::Target *target)
|
||||||
ProjectExplorer::Project *project)
|
|
||||||
{
|
{
|
||||||
if (!project)
|
if (target)
|
||||||
return;
|
updateMaemoEmulatorStarter(target);
|
||||||
|
}
|
||||||
Target *maemoTarget = project->target(QLatin1String(MAEMO_DEVICE_TARGET_ID));
|
|
||||||
MaemoManager::instance().setQemuSimulatorStarterEnabled(maemoTarget != 0);
|
|
||||||
|
|
||||||
|
void MaemoRunConfigurationFactory::updateMaemoEmulatorStarter(Target *target) const
|
||||||
|
{
|
||||||
|
bool enable = false;
|
||||||
bool isRunning = false;
|
bool isRunning = false;
|
||||||
if (maemoTarget
|
|
||||||
&& project->activeTarget() == maemoTarget
|
if (target) {
|
||||||
&& maemoTarget->activeRunConfiguration()) {
|
MaemoRunConfiguration *mrc = 0;
|
||||||
MaemoRunConfiguration *mrc = qobject_cast<MaemoRunConfiguration *>
|
if (target->project()->activeTarget() == target)
|
||||||
(maemoTarget->activeRunConfiguration());
|
mrc = qobject_cast<MaemoRunConfiguration *> (target->activeRunConfiguration());
|
||||||
if (mrc)
|
|
||||||
|
if (mrc) {
|
||||||
isRunning = mrc->isQemuRunning();
|
isRunning = mrc->isQemuRunning();
|
||||||
|
const MaemoDeviceConfig &config = mrc ? mrc->deviceConfig() : MaemoDeviceConfig();
|
||||||
|
|
||||||
|
ProjectExplorerPlugin *explorer = ProjectExplorerPlugin::instance();
|
||||||
|
if (config.isValid()
|
||||||
|
&& !mrc->simulatorPath().isEmpty()
|
||||||
|
&& config.type == MaemoDeviceConfig::Simulator
|
||||||
|
&& explorer->startupProject() == target->project()) {
|
||||||
|
enable = true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
MaemoManager::instance().updateQemuSimulatorStarter(isRunning);
|
MaemoManager::instance().updateQemuSimulatorStarter(isRunning);
|
||||||
|
MaemoManager::instance().setQemuSimulatorStarterEnabled(enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -75,11 +75,14 @@ public:
|
|||||||
private slots:
|
private slots:
|
||||||
void projectAdded(ProjectExplorer::Project *project);
|
void projectAdded(ProjectExplorer::Project *project);
|
||||||
void projectRemoved(ProjectExplorer::Project *project);
|
void projectRemoved(ProjectExplorer::Project *project);
|
||||||
|
void projectChanged(ProjectExplorer::Project *project);
|
||||||
|
|
||||||
void targetAdded(ProjectExplorer::Target *target);
|
void targetAdded(ProjectExplorer::Target *target);
|
||||||
void targetRemoved(ProjectExplorer::Target *target);
|
void targetRemoved(ProjectExplorer::Target *target);
|
||||||
|
void targetChanged(ProjectExplorer::Target *target);
|
||||||
|
|
||||||
void currentProjectChanged(ProjectExplorer::Project *project);
|
private:
|
||||||
|
void updateMaemoEmulatorStarter(ProjectExplorer::Target *target) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
class MaemoRunControlFactory : public IRunControlFactory
|
class MaemoRunControlFactory : public IRunControlFactory
|
||||||
|
|||||||
Reference in New Issue
Block a user