diff --git a/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp b/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp index 51f129b19b4a319c00a52339417fcfe7aabe5054..bd88b653b3488e5c7e8f3b54e699b774fb5425e1 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp @@ -161,14 +161,15 @@ void S60CreatePackageStep::setCustomKeyPath(const QString &path) m_customKeyPath = path; } -bool S60CreatePackageStep::createSmartInstaller() const +bool S60CreatePackageStep::createsSmartInstaller() const { return m_createSmartInstaller; } -void S60CreatePackageStep::setCreateSmartInstaller(bool value) +void S60CreatePackageStep::setCreatesSmartInstaller(bool value) { m_createSmartInstaller = value; + static_cast<Qt4BuildConfiguration *>(buildConfiguration())->emitS60CreatesSmartInstallerChanged(); } // #pragma mark -- S60SignBuildStepFactory @@ -273,7 +274,7 @@ void S60CreatePackageStepConfigWidget::updateUi() m_ui.keyFilePath->setEnabled(!selfSigned); m_ui.signaturePath->setPath(m_signStep->customSignaturePath()); m_ui.keyFilePath->setPath(m_signStep->customKeyPath()); - m_ui.smartInstaller->setChecked(m_signStep->createSmartInstaller()); + m_ui.smartInstaller->setChecked(m_signStep->createsSmartInstaller()); emit updateSummary(); } @@ -284,7 +285,7 @@ void S60CreatePackageStepConfigWidget::updateFromUi() : S60CreatePackageStep::SignCustom); m_signStep->setCustomSignaturePath(m_ui.signaturePath->path()); m_signStep->setCustomKeyPath(m_ui.keyFilePath->path()); - m_signStep->setCreateSmartInstaller(m_ui.smartInstaller->isChecked()); + m_signStep->setCreatesSmartInstaller(m_ui.smartInstaller->isChecked()); updateUi(); } @@ -298,7 +299,7 @@ QString S60CreatePackageStepConfigWidget::summaryText() const .arg(m_signStep->customSignaturePath()) .arg(m_signStep->customKeyPath()); } - if (m_signStep->createSmartInstaller()) + if (m_signStep->createsSmartInstaller()) return tr("<b>Create SIS Package:</b> %1, using Smart Installer").arg(text); return tr("<b>Create SIS Package:</b> %1").arg(text); } diff --git a/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.h b/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.h index 5a615a450214a2bd3b7a8e1689d7c25e3ba86e98..e1982b44d726e56f88430142061b413eb4180d40 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.h +++ b/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.h @@ -83,8 +83,8 @@ public: void setCustomSignaturePath(const QString &path); QString customKeyPath() const; void setCustomKeyPath(const QString &path); - bool createSmartInstaller() const; - void setCreateSmartInstaller(bool value); + bool createsSmartInstaller() const; + void setCreatesSmartInstaller(bool value); protected: S60CreatePackageStep(ProjectExplorer::BuildConfiguration *bc, S60CreatePackageStep *bs); diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp index ea94183e25109794ecbba554eb8a8bc5ee66d7d2..1e6a9ea4d05fef30e35efa6a3cd5eea8130dde2a 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp @@ -40,6 +40,7 @@ #include "symbiandevicemanager.h" #include "qt4buildconfiguration.h" #include "qt4projectmanagerconstants.h" +#include "s60createpackagestep.h" #include <coreplugin/icore.h> #include <coreplugin/messagemanager.h> @@ -109,6 +110,7 @@ QString pathToId(const QString &path) S60DeviceRunConfiguration::S60DeviceRunConfiguration(Target *parent, const QString &proFilePath) : RunConfiguration(parent, QLatin1String(S60_DEVICE_RC_ID)), m_proFilePath(proFilePath), + m_activeBuildConfiguration(0), #ifdef Q_OS_WIN m_serialPortName(QLatin1String("COM5")) #else @@ -121,6 +123,7 @@ S60DeviceRunConfiguration::S60DeviceRunConfiguration(Target *parent, const QStri S60DeviceRunConfiguration::S60DeviceRunConfiguration(Target *target, S60DeviceRunConfiguration *source) : RunConfiguration(target, source), m_proFilePath(source->m_proFilePath), + m_activeBuildConfiguration(0), m_serialPortName(source->m_serialPortName) { ctor(); @@ -135,6 +138,9 @@ void S60DeviceRunConfiguration::ctor() connect(qt4Target()->qt4Project(), SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*)), this, SLOT(proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode*))); + connect(qt4Target(), SIGNAL(activeBuildConfigurationChanged(ProjectExplorer::BuildConfiguration*)), + this, SLOT(updateActiveBuildConfiguration(ProjectExplorer::BuildConfiguration*))); + updateActiveBuildConfiguration(qt4Target()->activeBuildConfiguration()); } void S60DeviceRunConfiguration::proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode *pro) @@ -143,6 +149,17 @@ void S60DeviceRunConfiguration::proFileUpdate(Qt4ProjectManager::Internal::Qt4Pr emit targetInformationChanged(); } +void S60DeviceRunConfiguration::updateActiveBuildConfiguration(ProjectExplorer::BuildConfiguration *buildConfiguration) +{ + if (m_activeBuildConfiguration) + disconnect(m_activeBuildConfiguration, SIGNAL(s60CreatesSmartInstallerChanged()), + this, SIGNAL(targetInformationChanged())); + m_activeBuildConfiguration = buildConfiguration; + if (m_activeBuildConfiguration) + connect(m_activeBuildConfiguration, SIGNAL(s60CreatesSmartInstallerChanged()), + this, SIGNAL(targetInformationChanged())); +} + S60DeviceRunConfiguration::~S60DeviceRunConfiguration() { } @@ -346,12 +363,27 @@ QString S60DeviceRunConfiguration::localExecutableFileName() const return QDir::toNativeSeparators(localExecutable); } +bool S60DeviceRunConfiguration::runSmartInstaller() const +{ + BuildConfiguration *bc = target()->activeBuildConfiguration(); + QTC_ASSERT(bc, return false); + QList<BuildStep *> steps = bc->steps(Build); + foreach (const BuildStep *step, steps) { + if (const S60CreatePackageStep *packageStep = qobject_cast<const S60CreatePackageStep *>(step)) { + return packageStep->createsSmartInstaller(); + } + } + return false; +} + QString S60DeviceRunConfiguration::signedPackage() const { TargetInformation ti = qt4Target()->qt4Project()->rootProjectNode()->targetInformation(m_proFilePath); if (!ti.valid) return QString(); - return ti.buildDir + QLatin1Char('/') + ti.target + QLatin1String(".sis"); + return ti.buildDir + QLatin1Char('/') + ti.target + + (runSmartInstaller() ? QLatin1String("_installer") : QLatin1String("")) + + QLatin1String(".sis"); } QStringList S60DeviceRunConfiguration::commandLineArguments() const diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h index d1d1ed53db2a681280f44d15954bea243ef33a3f..f37e67e99c9e6f72f32dfe3e2681a82efbceee62 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h @@ -100,6 +100,7 @@ signals: private slots: void proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode *pro); + void updateActiveBuildConfiguration(ProjectExplorer::BuildConfiguration *buildConfiguration); protected: S60DeviceRunConfiguration(ProjectExplorer::Target *parent, S60DeviceRunConfiguration *source); @@ -109,7 +110,10 @@ private: ProjectExplorer::ToolChain::ToolChainType toolChainType(ProjectExplorer::BuildConfiguration *configuration) const; void ctor(); + bool runSmartInstaller() const; + QString m_proFilePath; + ProjectExplorer::BuildConfiguration *m_activeBuildConfiguration; QString m_serialPortName; QStringList m_commandLineArguments; }; diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp index 3f9be98d3eaa4772f1bd5367a1e7de40e91b9a30..39bd078a84f997334d41da23eafacb3872003e86 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp @@ -371,6 +371,12 @@ void Qt4BuildConfiguration::emitBuildDirectoryInitialized() emit buildDirectoryInitialized(); } +void Qt4BuildConfiguration::emitS60CreatesSmartInstallerChanged() +{ + emit s60CreatesSmartInstallerChanged(); +} + + void Qt4BuildConfiguration::getConfigCommandLineArguments(QStringList *addedUserConfigs, QStringList *removedUserConfigs) const { QtVersion::QmakeBuildConfigs defaultBuildConfiguration = qtVersion()->defaultBuildConfig(); diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.h b/src/plugins/qt4projectmanager/qt4buildconfiguration.h index 9dfb6d9ade1a19116f399e731162e17ce47f46ca..eec86005c1e5880fd806734e4e23e9452c7533d1 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfiguration.h +++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.h @@ -83,6 +83,10 @@ public: // used by qmake step to notify that the build directory was initialized // not really nice void emitBuildDirectoryInitialized(); + // used by S60CreatePackageStep to notify that the smart installer property changed + // not really nice + void emitS60CreatesSmartInstallerChanged(); + void getConfigCommandLineArguments(QStringList *addedUserConfigs, QStringList *removedUserConfigs) const; // Those functions are used in a few places. @@ -112,6 +116,8 @@ signals: /// emitted for setQMakeBuildConfig, not emitted for qt version changes, even /// if those change the qmakebuildconfig void qmakeBuildConfigurationChanged(); + /// emitted when smart installer property of S60 create package step changes + void s60CreatesSmartInstallerChanged(); /// emitted if the build configuration changed in a way that /// should trigger a reevaluation of all .pro files