diff --git a/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h b/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h index 98fb572de26e809109d0eb4d36ac1418244b6c58..68d36c8022d395d533441d810132ab0dfdf57e23 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h +++ b/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h @@ -94,6 +94,7 @@ const char * const DESKTOP_TARGET_ID("Qt4ProjectManager.Target.DesktopTarget"); const char * const S60_EMULATOR_TARGET_ID("Qt4ProjectManager.Target.S60EmulatorTarget"); const char * const S60_DEVICE_TARGET_ID("Qt4ProjectManager.Target.S60DeviceTarget"); const char * const MAEMO_DEVICE_TARGET_ID("Qt4ProjectManager.Target.MaemoDeviceTarget"); +const char * const QT_SIMULATOR_TARGET_ID("Qt4ProjectManager.Target.QtSimulatorTarget"); } // namespace Constants } // namespace Qt4ProjectManager diff --git a/src/plugins/qt4projectmanager/qt4target.cpp b/src/plugins/qt4projectmanager/qt4target.cpp index 26cafa8ba1564b267889553900355728a490c2d0..784897f64613a8800b0b0270e80efa7feb930375 100644 --- a/src/plugins/qt4projectmanager/qt4target.cpp +++ b/src/plugins/qt4projectmanager/qt4target.cpp @@ -65,6 +65,8 @@ QString displayNameForId(const QString &id) { return QApplication::translate("Qt4ProjectManager::Internal::Qt4Target", "Symbian Device", "Qt4 Symbian Device target display name"); if (id == QLatin1String(Constants::MAEMO_DEVICE_TARGET_ID)) return QApplication::translate("Qt4ProjectManager::Internal::Qt4Target", "Maemo", "Qt4 Maemo target display name"); + if (id == QLatin1String(Constants::QT_SIMULATOR_TARGET_ID)) + return QApplication::translate("Qt4ProjectManager::Internal::Qt4Target", "Qt Simulator", "Qt4 Simulator target display name"); return QString(); } @@ -77,6 +79,8 @@ QIcon iconForId(const QString &id) { return QIcon(":/projectexplorer/images/SymbianDevice.png"); if (id == QLatin1String(Constants::MAEMO_DEVICE_TARGET_ID)) return QIcon(":/projectexplorer/images/MaemoDevice.png"); + if (id == QLatin1String(Constants::QT_SIMULATOR_TARGET_ID)) + return QIcon(":/projectexplorer/images/SymbianEmulator.png"); return QIcon(); } @@ -315,7 +319,8 @@ Qt4BuildConfigurationFactory *Qt4Target::buildConfigurationFactory() const void Qt4Target::addRunConfigurationForPath(const QString &proFilePath) { - if (id() == QLatin1String(Constants::DESKTOP_TARGET_ID)) + if (id() == QLatin1String(Constants::DESKTOP_TARGET_ID) || + id() == QLatin1String(Constants::QT_SIMULATOR_TARGET_ID)) addRunConfiguration(new Qt4RunConfiguration(this, proFilePath)); else if (id() == QLatin1String(Constants::S60_EMULATOR_TARGET_ID)) addRunConfiguration(new S60EmulatorRunConfiguration(this, proFilePath)); @@ -370,6 +375,8 @@ QString Qt4Target::defaultBuildDirectory() const shortName = QLatin1String("symbian"); else if (id() == QLatin1String(Constants::MAEMO_DEVICE_TARGET_ID)) shortName = QLatin1String("maemo"); + else if (id() == QLatin1String(Constants::QT_SIMULATOR_TARGET_ID)) + shortName = QLatin1String("simulator"); // currently we can't have the build directory to be deeper then the source directory // since that is broken in qmake diff --git a/src/plugins/qt4projectmanager/qtoptionspage.cpp b/src/plugins/qt4projectmanager/qtoptionspage.cpp index 26b27def1c608ac0f504151da504294a9185672d..12c42f4b85d09024c88700065d98df5242453bce 100644 --- a/src/plugins/qt4projectmanager/qtoptionspage.cpp +++ b/src/plugins/qt4projectmanager/qtoptionspage.cpp @@ -528,6 +528,8 @@ void QtOptionsPageWidget::showEnvironmentPage(QTreeWidgetItem *item) envs = tr("Symbian", "Qt Version is meant for Symbian"); else if (targets.contains(Constants::MAEMO_DEVICE_TARGET_ID)) envs = tr("Maemo", "Qt Version is meant for Maemo"); + else if (targets.contains(Constants::QT_SIMULATOR_TARGET_ID)) + envs = tr("Qt Simulator", "Qt Version is meant for Qt Simulator"); else envs = tr("unkown", "No idea what this Qt Version is meant for!"); m_ui->errorLabel->setText(tr("Found Qt version %1, using mkspec %2 (%3)") diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp index b55b4b0729966685fa8157fb80eea2a0a9dc0d08..bcaed3f63397b8afb8acea134fa1f1b978cb346d 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.cpp +++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp @@ -47,6 +47,7 @@ #include <help/helpmanager.h> #include <utils/qtcassert.h> +#include <QtCore/QFile> #include <QtCore/QProcess> #include <QtCore/QSettings> #include <QtCore/QTime> @@ -1420,6 +1421,31 @@ void QtVersion::updateToolChainAndMkspec() const delete reader; ProFileCacheManager::instance()->decRefCount(); m_toolChainUpToDate = true; + + // Check qconfig.h for QT_SIMULATOR define on desktop builds and switch the + // Qt version to Qt simulator target: + if (m_targetIds.contains(Constants::DESKTOP_TARGET_ID)) { + QString path(headerInstallPath()); + path.append(QLatin1String("/Qt/qconfig.h")); + QFile qconfig(path); + if (!qconfig.exists()) + return; + qconfig.open(QIODevice::ReadOnly); + QTextStream stream(&qconfig); + QString line; + bool isSimulator = false; + while (!(line = stream.readLine()).isNull()) { + if (line.startsWith(QLatin1String("#define QT_SIMULATOR"))) { + isSimulator = true; + break; + } + } + qconfig.close(); + if (isSimulator) { + m_targetIds.remove(QLatin1String(Constants::DESKTOP_TARGET_ID)); + m_targetIds.insert(QLatin1String(Constants::QT_SIMULATOR_TARGET_ID)); + } + } } QString QtVersion::mwcDirectory() const @@ -1590,6 +1616,12 @@ QString QtVersion::demosPath() const return m_versionInfo["QT_INSTALL_DEMOS"]; } +QString QtVersion::headerInstallPath() const +{ + updateVersionInfo(); + return m_versionInfo["QT_INSTALL_HEADERS"]; +} + bool QtVersion::hasExamples() const { updateVersionInfo(); diff --git a/src/plugins/qt4projectmanager/qtversionmanager.h b/src/plugins/qt4projectmanager/qtversionmanager.h index 68e155348f955bfe901d75b2ed092d89bfeb9e2f..6ccacad40614f1d8445f2a18031ea5d7ede8173e 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.h +++ b/src/plugins/qt4projectmanager/qtversionmanager.h @@ -123,6 +123,8 @@ public: bool hasDemos() const; QString demosPath() const; + QString headerInstallPath() const; + // All valid Ids are >= 0 int uniqueId() const; bool isQt64Bit() const;