From 0ff8e646dbc4ffe96bb5d1b77de15ecb89e447ff Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 28 Jun 2011 14:35:38 +0200 Subject: [PATCH] QtSupport: Additional parameter for QtVersion::restore(). This enables a QtVersionFactory to be able to create more than one QtVersion, which can make sense e.g. if there are several closely related ones. Change-Id: I597f524abfc27c483c71bb6567ce7b77bc3d3041 Reviewed-on: http://codereview.qt.nokia.com/835 Reviewed-by: Daniel Teske --- .../qt4projectmanager/qt-desktop/desktopqtversionfactory.cpp | 4 +++- src/plugins/qt4projectmanager/qt-desktop/desktopqtversionfactory.h | 2 +- .../qt4projectmanager/qt-desktop/simulatorqtversionfactory.cpp | 4 +++- .../qt4projectmanager/qt-desktop/simulatorqtversionfactory.h | 2 +- src/plugins/qt4projectmanager/qt-s60/symbianqtversionfactory.cpp | 4 +++- src/plugins/qt4projectmanager/qt-s60/symbianqtversionfactory.h | 2 +- src/plugins/qt4projectmanager/winceqtversionfactory.cpp | 4 +++- src/plugins/qt4projectmanager/winceqtversionfactory.h | 2 +- src/plugins/qtsupport/qtversionfactory.h | 2 +- src/plugins/qtsupport/qtversionmanager.cpp | 6 +++--- src/plugins/remotelinux/maemoqtversionfactory.cpp | 5 ++++- src/plugins/remotelinux/maemoqtversionfactory.h | 2 +- 12 files changed, 25 insertions(+), 14 deletions(-) diff --git a/src/plugins/qt4projectmanager/qt-desktop/desktopqtversionfactory.cpp b/src/plugins/qt4projectmanager/qt-desktop/desktopqtversionfactory.cpp index 4126348142..a8dc739164 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 8bf1e6c873..f93b4a675a 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 65f31a28c4..0b7de3d235 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 e1f9685d23..cb1b1b0665 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 81913a07a2..4bec26747f 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 21fe875470..2735d6e4bb 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 59b2acfdd2..aaaf960a0b 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 56761b65b6..10f9037829 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 c4a157f5da..41d150e342 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 4d389ccc09..8195f8deda 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"<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 f4ea0828a6..86bcc41d65 100644 --- a/src/plugins/remotelinux/maemoqtversionfactory.cpp +++ b/src/plugins/remotelinux/maemoqtversionfactory.cpp @@ -35,6 +35,7 @@ #include "maemoqtversion.h" #include +#include #include @@ -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 78f72971fc..41234cd614 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()); -- 2.11.0