diff --git a/src/plugins/qt4projectmanager/qt-desktop/desktopqtversionfactory.cpp b/src/plugins/qt4projectmanager/qt-desktop/desktopqtversionfactory.cpp index 4126348142640911c0656202339d4fefd6512448..a8dc739164106551f302e2641a4cefb2491e85b4 100644 --- a/src/plugins/qt4projectmanager/qt-desktop/desktopqtversionfactory.cpp +++ b/src/plugins/qt4projectmanager/qt-desktop/desktopqtversionfactory.cpp @@ -58,8 +58,10 @@ bool DesktopQtVersionFactory::canRestore(const QString &type) return type == QLatin1String(QtSupport::Constants::DESKTOPQT); } -QtSupport::BaseQtVersion *DesktopQtVersionFactory::restore(const QVariantMap &data) +QtSupport::BaseQtVersion *DesktopQtVersionFactory::restore(const QString &type, const QVariantMap &data) { + if (!canRestore(type)) + return 0; DesktopQtVersion *v = new DesktopQtVersion; v->fromMap(data); return v; diff --git a/src/plugins/qt4projectmanager/qt-desktop/desktopqtversionfactory.h b/src/plugins/qt4projectmanager/qt-desktop/desktopqtversionfactory.h index 8bf1e6c873cf7b43c670c693e6404739dcacbc5e..f93b4a675a4b4b3e78587c932a2f137b09f314af 100644 --- a/src/plugins/qt4projectmanager/qt-desktop/desktopqtversionfactory.h +++ b/src/plugins/qt4projectmanager/qt-desktop/desktopqtversionfactory.h @@ -45,7 +45,7 @@ public: ~DesktopQtVersionFactory(); virtual bool canRestore(const QString &type); - virtual QtSupport::BaseQtVersion *restore(const QVariantMap &data); + virtual QtSupport::BaseQtVersion *restore(const QString &type, const QVariantMap &data); virtual int priority() const; virtual QtSupport::BaseQtVersion *create(const QString &qmakePath, ProFileEvaluator *evaluator, bool isAutoDetected = false, const QString &autoDetectionSource = QString()); diff --git a/src/plugins/qt4projectmanager/qt-desktop/simulatorqtversionfactory.cpp b/src/plugins/qt4projectmanager/qt-desktop/simulatorqtversionfactory.cpp index 65f31a28c4891017c76c6be2f107e29a2117e2a0..0b7de3d235f2e63c7e2be68596ce48ac9754325b 100644 --- a/src/plugins/qt4projectmanager/qt-desktop/simulatorqtversionfactory.cpp +++ b/src/plugins/qt4projectmanager/qt-desktop/simulatorqtversionfactory.cpp @@ -58,8 +58,10 @@ bool SimulatorQtVersionFactory::canRestore(const QString &type) return type == QLatin1String(QtSupport::Constants::SIMULATORQT); } -QtSupport::BaseQtVersion *SimulatorQtVersionFactory::restore(const QVariantMap &data) +QtSupport::BaseQtVersion *SimulatorQtVersionFactory::restore(const QString &type, const QVariantMap &data) { + if (!canRestore(type)) + return 0; QtSupport::BaseQtVersion *v = new SimulatorQtVersion; v->fromMap(data); return v; diff --git a/src/plugins/qt4projectmanager/qt-desktop/simulatorqtversionfactory.h b/src/plugins/qt4projectmanager/qt-desktop/simulatorqtversionfactory.h index e1f9685d23a1cb5570f116fc5298a0b2772f3642..cb1b1b066570d6a009cf81ea1ffcb9a1ae800eff 100644 --- a/src/plugins/qt4projectmanager/qt-desktop/simulatorqtversionfactory.h +++ b/src/plugins/qt4projectmanager/qt-desktop/simulatorqtversionfactory.h @@ -45,7 +45,7 @@ public: ~SimulatorQtVersionFactory(); virtual bool canRestore(const QString &type); - virtual QtSupport::BaseQtVersion *restore(const QVariantMap &data); + virtual QtSupport::BaseQtVersion *restore(const QString &type, const QVariantMap &data); virtual int priority() const; virtual QtSupport::BaseQtVersion *create(const QString &qmakePath, ProFileEvaluator *evaluator, bool isAutoDetected = false, const QString &autoDetectionSource = QString()); diff --git a/src/plugins/qt4projectmanager/qt-s60/symbianqtversionfactory.cpp b/src/plugins/qt4projectmanager/qt-s60/symbianqtversionfactory.cpp index 81913a07a2fab551a3ec70f34a2f331d506170fb..4bec26747f295113af6679f7630667a1b4c63dfc 100644 --- a/src/plugins/qt4projectmanager/qt-s60/symbianqtversionfactory.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/symbianqtversionfactory.cpp @@ -59,8 +59,10 @@ bool SymbianQtVersionFactory::canRestore(const QString &type) return type == QLatin1String(QtSupport::Constants::SYMBIANQT); } -QtSupport::BaseQtVersion *SymbianQtVersionFactory::restore(const QVariantMap &data) +QtSupport::BaseQtVersion *SymbianQtVersionFactory::restore(const QString &type, const QVariantMap &data) { + if (!canRestore(type)) + return 0; SymbianQtVersion *v = new SymbianQtVersion; v->fromMap(data); return v; diff --git a/src/plugins/qt4projectmanager/qt-s60/symbianqtversionfactory.h b/src/plugins/qt4projectmanager/qt-s60/symbianqtversionfactory.h index 21fe875470460ed2006ad78bccd56ea4ab7ef174..2735d6e4bbe6c80d4ca2031a4912cdd07c26b51c 100644 --- a/src/plugins/qt4projectmanager/qt-s60/symbianqtversionfactory.h +++ b/src/plugins/qt4projectmanager/qt-s60/symbianqtversionfactory.h @@ -45,7 +45,7 @@ public: ~SymbianQtVersionFactory(); virtual bool canRestore(const QString &type); - virtual QtSupport::BaseQtVersion *restore(const QVariantMap &data); + virtual QtSupport::BaseQtVersion *restore(const QString &type, const QVariantMap &data); virtual int priority() const; virtual QtSupport::BaseQtVersion *create(const QString &qmakePath, ProFileEvaluator *evaluator, bool isAutoDetected = false, const QString &autoDetectionSource = QString()); diff --git a/src/plugins/qt4projectmanager/winceqtversionfactory.cpp b/src/plugins/qt4projectmanager/winceqtversionfactory.cpp index 59b2acfdd27730084f64f17c3e52e4a1e0d0a3d6..aaaf960a0be4c6beab1f2cdff1b3d3b1938a4fe7 100644 --- a/src/plugins/qt4projectmanager/winceqtversionfactory.cpp +++ b/src/plugins/qt4projectmanager/winceqtversionfactory.cpp @@ -55,8 +55,10 @@ bool WinCeQtVersionFactory::canRestore(const QString &type) return type == QLatin1String(QtSupport::Constants::WINCEQT); } -QtSupport::BaseQtVersion *WinCeQtVersionFactory::restore(const QVariantMap &data) +QtSupport::BaseQtVersion *WinCeQtVersionFactory::restore(const QString &type, const QVariantMap &data) { + if (!canRestore(type)) + return 0; WinCeQtVersion *v = new WinCeQtVersion; v->fromMap(data); return v; diff --git a/src/plugins/qt4projectmanager/winceqtversionfactory.h b/src/plugins/qt4projectmanager/winceqtversionfactory.h index 56761b65b6163eeddf2e9f864bd308f405f646d0..10f9037829eac604e4411d60cd18ccf0590e7925 100644 --- a/src/plugins/qt4projectmanager/winceqtversionfactory.h +++ b/src/plugins/qt4projectmanager/winceqtversionfactory.h @@ -44,7 +44,7 @@ public: ~WinCeQtVersionFactory(); virtual bool canRestore(const QString &type); - virtual QtSupport::BaseQtVersion *restore(const QVariantMap &data); + virtual QtSupport::BaseQtVersion *restore(const QString &type, const QVariantMap &data); virtual int priority() const; diff --git a/src/plugins/qtsupport/qtversionfactory.h b/src/plugins/qtsupport/qtversionfactory.h index c4a157f5da28587b2d44bd072c7beb03742bfbf1..41d150e3424498acedb2e43c89b4656ed48ae9bf 100644 --- a/src/plugins/qtsupport/qtversionfactory.h +++ b/src/plugins/qtsupport/qtversionfactory.h @@ -49,7 +49,7 @@ public: ~QtVersionFactory(); virtual bool canRestore(const QString &type) = 0; - virtual BaseQtVersion *restore(const QVariantMap &data) = 0; + virtual BaseQtVersion *restore(const QString &type, const QVariantMap &data) = 0; /// factories with higher priority are asked first to identify /// a qtversion, the priority of the desktop factory is 0 and diff --git a/src/plugins/qtsupport/qtversionmanager.cpp b/src/plugins/qtsupport/qtversionmanager.cpp index 4d389ccc0954b52376ad56458f1ca0b3cd1f7735..8195f8dedaba3b523066636dc04d8c820b414ecc 100644 --- a/src/plugins/qtsupport/qtversionmanager.cpp +++ b/src/plugins/qtsupport/qtversionmanager.cpp @@ -176,7 +176,7 @@ bool QtVersionManager::restoreQtVersions() bool restored = false; foreach (QtVersionFactory *f, factories) { if (f->canRestore(type)) { - if (BaseQtVersion *qtv = f->restore(qtversionMap)) { + if (BaseQtVersion *qtv = f->restore(type, qtversionMap)) { if (m_versions.contains(qtv->uniqueId())) { // This shouldn't happen, we are restoring the same id multiple times? qWarning() << "A Qt version with id"<<qtv->uniqueId()<<"already exists"; @@ -292,7 +292,7 @@ void QtVersionManager::updateFromInstaller() removeVersion(v); qtversionMap[QLatin1String("Id")] = id; - if (BaseQtVersion *qtv = factory->restore(qtversionMap)) { + if (BaseQtVersion *qtv = factory->restore(type, qtversionMap)) { Q_ASSERT(qtv->isAutodetected()); addVersion(qtv); restored = true; @@ -303,7 +303,7 @@ void QtVersionManager::updateFromInstaller() if (!restored) { // didn't replace any existing versions if (debug) qDebug() << " No Qt version found matching" << autoDetectionSource << " => Creating new version"; - if (BaseQtVersion *qtv = factory->restore(qtversionMap)) { + if (BaseQtVersion *qtv = factory->restore(type, qtversionMap)) { Q_ASSERT(qtv->isAutodetected()); addVersion(qtv); restored = true; diff --git a/src/plugins/remotelinux/maemoqtversionfactory.cpp b/src/plugins/remotelinux/maemoqtversionfactory.cpp index f4ea0828a6222e39f4c666d1d405522d14873e78..86bcc41d655cb2025e2df1280361f2297876cbb3 100644 --- a/src/plugins/remotelinux/maemoqtversionfactory.cpp +++ b/src/plugins/remotelinux/maemoqtversionfactory.cpp @@ -35,6 +35,7 @@ #include "maemoqtversion.h" #include <qtsupport/qtsupportconstants.h> +#include <utils/qtcassert.h> #include <QtCore/QFileInfo> @@ -57,8 +58,10 @@ bool MaemoQtVersionFactory::canRestore(const QString &type) return type == QLatin1String(QtSupport::Constants::MAEMOQT); } -QtSupport::BaseQtVersion *MaemoQtVersionFactory::restore(const QVariantMap &data) +QtSupport::BaseQtVersion *MaemoQtVersionFactory::restore(const QString &type, + const QVariantMap &data) { + QTC_ASSERT(canRestore(type), return 0); MaemoQtVersion *v = new MaemoQtVersion; v->fromMap(data); return v; diff --git a/src/plugins/remotelinux/maemoqtversionfactory.h b/src/plugins/remotelinux/maemoqtversionfactory.h index 78f72971fcaf4c932b33aec705b27d4169f34583..41234cd614234cd70ebbadd56e0ebed54ed0f580 100644 --- a/src/plugins/remotelinux/maemoqtversionfactory.h +++ b/src/plugins/remotelinux/maemoqtversionfactory.h @@ -45,7 +45,7 @@ public: ~MaemoQtVersionFactory(); virtual bool canRestore(const QString &type); - virtual QtSupport::BaseQtVersion *restore(const QVariantMap &data); + virtual QtSupport::BaseQtVersion *restore(const QString &type, const QVariantMap &data); virtual int priority() const; virtual QtSupport::BaseQtVersion *create(const QString &qmakePath, ProFileEvaluator *evaluator, bool isAutoDetected = false, const QString &autoDetectionSource = QString());