From 28c22a1d634b46c8d9ea5a6aa3eccfb047c81306 Mon Sep 17 00:00:00 2001 From: dt <qtc-committer@nokia.com> Date: Thu, 12 May 2011 15:48:41 +0200 Subject: [PATCH] Make TargetSetupDialog fast for Maemo Task-Nr: QTCREATORBUG-4880 --- .../qt4projectmanager/qt-maemo/maemoglobal.h | 2 +- .../qt-maemo/maemoqtversion.cpp | 39 ++++++++++++++----- .../qt-maemo/maemoqtversion.h | 6 +++ .../qt-maemo/maemotoolchain.cpp | 8 ++-- 4 files changed, 40 insertions(+), 15 deletions(-) diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h b/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h index 6f229bdb981..e100b43dfc7 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h @@ -145,9 +145,9 @@ public: } } -private: static bool isValidMaemoQtVersion(const QString &qmakePath, MaemoDeviceConfig::OsVersion maemoVersion); +private: static QString madAdminCommand(const QString &qmakePath); static bool callMaddeShellScript(QProcess &proc, const QString &qmakePath, const QString &command, const QStringList &args, bool useTarget); diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoqtversion.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemoqtversion.cpp index 652acfe5046..7abda3e9d1e 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemoqtversion.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemoqtversion.cpp @@ -48,7 +48,9 @@ MaemoQtVersion::MaemoQtVersion() } MaemoQtVersion::MaemoQtVersion(const QString &path, bool isAutodetected, const QString &autodetectionSource) - : BaseQtVersion(path, isAutodetected, autodetectionSource) + : BaseQtVersion(path, isAutodetected, autodetectionSource), + m_osVersion(MaemoGlobal::version(path)), + m_isvalidVersion(MaemoGlobal::isValidMaemoQtVersion(path, m_osVersion)) { } @@ -58,6 +60,14 @@ MaemoQtVersion::~MaemoQtVersion() } +void MaemoQtVersion::fromMap(const QVariantMap &map) +{ + BaseQtVersion::fromMap(map); + QString path = qmakeCommand(); + m_osVersion = MaemoGlobal::version(path); + m_isvalidVersion = MaemoGlobal::isValidMaemoQtVersion(path, m_osVersion); +} + QString MaemoQtVersion::type() const { return Constants::MAEMOQT; @@ -93,16 +103,18 @@ QString MaemoQtVersion::systemRoot() const QList<ProjectExplorer::Abi> MaemoQtVersion::qtAbis() const { QList<ProjectExplorer::Abi> result; - if (MaemoGlobal::isValidMaemo5QtVersion(qmakeCommand())) { + if (!m_isvalidVersion) + return result; + if (m_osVersion == MaemoDeviceConfig::Maemo5) { result.append(ProjectExplorer::Abi(ProjectExplorer::Abi::ArmArchitecture, ProjectExplorer::Abi::LinuxOS, ProjectExplorer::Abi::MaemoLinuxFlavor, ProjectExplorer::Abi::ElfFormat, 32)); - } else if (MaemoGlobal::isValidHarmattanQtVersion(qmakeCommand())) { + } else if (m_osVersion == MaemoDeviceConfig::Maemo6) { result.append(ProjectExplorer::Abi(ProjectExplorer::Abi::ArmArchitecture, ProjectExplorer::Abi::LinuxOS, ProjectExplorer::Abi::HarmattanLinuxFlavor, ProjectExplorer::Abi::ElfFormat, 32)); - } else if (MaemoGlobal::isValidMeegoQtVersion(qmakeCommand())) { + } else if (m_osVersion == MaemoDeviceConfig::Meego) { result.append(ProjectExplorer::Abi(ProjectExplorer::Abi::ArmArchitecture, ProjectExplorer::Abi::LinuxOS, ProjectExplorer::Abi::MeegoLinuxFlavor, ProjectExplorer::Abi::ElfFormat, 32)); @@ -118,11 +130,13 @@ bool MaemoQtVersion::supportsTargetId(const QString &id) const QSet<QString> MaemoQtVersion::supportedTargetIds() const { QSet<QString> result; - if (MaemoGlobal::isValidMaemo5QtVersion(qmakeCommand())) { + if (!m_isvalidVersion) + return result; + if (m_osVersion == MaemoDeviceConfig::Maemo5) { result.insert(QLatin1String(Constants::MAEMO5_DEVICE_TARGET_ID)); - } else if (MaemoGlobal::isValidHarmattanQtVersion(qmakeCommand())) { + } else if (m_osVersion == MaemoDeviceConfig::Maemo6) { result.insert(QLatin1String(Constants::HARMATTAN_DEVICE_TARGET_ID)); - } else if (MaemoGlobal::isValidMeegoQtVersion(qmakeCommand())) { + } else if (m_osVersion == MaemoDeviceConfig::Meego) { result.insert(QLatin1String(Constants::MEEGO_DEVICE_TARGET_ID)); } return result; @@ -130,11 +144,11 @@ QSet<QString> MaemoQtVersion::supportedTargetIds() const QString MaemoQtVersion::description() const { - if (MaemoGlobal::isValidMaemo5QtVersion(qmakeCommand())) + if (m_osVersion == MaemoDeviceConfig::Maemo5) return QCoreApplication::translate("QtVersion", "Maemo", "Qt Version is meant for Maemo5"); - else if (MaemoGlobal::isValidHarmattanQtVersion(qmakeCommand())) + else if (m_osVersion == MaemoDeviceConfig::Maemo6) return QCoreApplication::translate("QtVersion", "Harmattan ", "Qt Version is meant for Harmattan"); - else if (MaemoGlobal::isValidMeegoQtVersion(qmakeCommand())) + else if (m_osVersion == MaemoDeviceConfig::Meego) return QCoreApplication::translate("QtVersion", "Meego", "Qt Version is meant for Meego"); return QString(); } @@ -146,3 +160,8 @@ bool MaemoQtVersion::supportsShadowBuilds() const #endif return true; } + +MaemoDeviceConfig::OsVersion MaemoQtVersion::osVersion() const +{ + return m_osVersion; +} diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoqtversion.h b/src/plugins/qt4projectmanager/qt-maemo/maemoqtversion.h index 184b2add6d7..c1b4d3d18a2 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemoqtversion.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemoqtversion.h @@ -33,6 +33,7 @@ #define MAEMOQTVERSION_H #include "baseqtversion.h" +#include "maemodeviceconfigurations.h" namespace Qt4ProjectManager { namespace Internal { @@ -43,6 +44,8 @@ public: MaemoQtVersion(); MaemoQtVersion(const QString &path, bool isAutodetected = false, const QString &autodetectionSource = QString()); ~MaemoQtVersion(); + + void fromMap(const QVariantMap &map); MaemoQtVersion *clone() const; virtual QString type() const; @@ -56,8 +59,11 @@ public: virtual QString description() const; virtual bool supportsShadowBuilds() const; + MaemoDeviceConfig::OsVersion osVersion() const; private: mutable QString m_systemRoot; + mutable MaemoDeviceConfig::OsVersion m_osVersion; + mutable bool m_isvalidVersion; }; } diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemotoolchain.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemotoolchain.cpp index 6fb5eef449a..31cedc9ecd4 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemotoolchain.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemotoolchain.cpp @@ -183,14 +183,14 @@ void MaemoToolChain::setQtVersionId(int id) return; } - BaseQtVersion *version = QtVersionManager::instance()->version(id); + MaemoQtVersion *version = dynamic_cast<MaemoQtVersion *>(QtVersionManager::instance()->version(id)); Q_ASSERT(version); ProjectExplorer::Abi::OSFlavor flavour = ProjectExplorer::Abi::HarmattanLinuxFlavor; - if (MaemoGlobal::isValidMaemo5QtVersion(version->qmakeCommand())) + if (version->osVersion() == MaemoDeviceConfig::Maemo5) flavour = ProjectExplorer::Abi::MaemoLinuxFlavor; - else if (MaemoGlobal::isValidHarmattanQtVersion(version->qmakeCommand())) + else if (version->osVersion() == MaemoDeviceConfig::Maemo6) flavour = ProjectExplorer::Abi::HarmattanLinuxFlavor; - else if (MaemoGlobal::isValidMeegoQtVersion(version->qmakeCommand())) + else if (version->osVersion() == MaemoDeviceConfig::Meego) flavour = ProjectExplorer::Abi::MeegoLinuxFlavor; else return; -- GitLab