QtSupport et al: Centralize QtVersionFactory::restore

Similar to the various types of project *ConfigurationFactory

Change-Id: I7b721f127c8bcc13c7db6880d36c79dd091bc037
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2019-02-13 18:45:41 +01:00
parent dcac6afcad
commit 5b03c1e059
14 changed files with 30 additions and 75 deletions

View File

@@ -38,6 +38,7 @@ namespace Internal {
AndroidQtVersionFactory::AndroidQtVersionFactory(QObject *parent) AndroidQtVersionFactory::AndroidQtVersionFactory(QObject *parent)
: QtSupport::QtVersionFactory(parent) : QtSupport::QtVersionFactory(parent)
{ {
setQtVersionCreator([] { return new AndroidQtVersion; });
} }
bool AndroidQtVersionFactory::canRestore(const QString &type) bool AndroidQtVersionFactory::canRestore(const QString &type)
@@ -45,15 +46,6 @@ bool AndroidQtVersionFactory::canRestore(const QString &type)
return type == QLatin1String(Constants::ANDROIDQT); return type == QLatin1String(Constants::ANDROIDQT);
} }
QtSupport::BaseQtVersion *AndroidQtVersionFactory::restore(const QString &type,
const QVariantMap &data)
{
QTC_ASSERT(canRestore(type), return nullptr);
auto v = new AndroidQtVersion;
v->fromMap(data);
return v;
}
int AndroidQtVersionFactory::priority() const int AndroidQtVersionFactory::priority() const
{ {
return 90; return 90;

View File

@@ -36,7 +36,6 @@ public:
explicit AndroidQtVersionFactory(QObject *parent = nullptr); explicit AndroidQtVersionFactory(QObject *parent = nullptr);
bool canRestore(const QString &type) override; bool canRestore(const QString &type) override;
QtSupport::BaseQtVersion *restore(const QString &type, const QVariantMap &data) override;
int priority() const override; int priority() const override;
QtSupport::BaseQtVersion *create(const Utils::FileName &qmakePath, ProFileEvaluator *evaluator, QtSupport::BaseQtVersion *create(const Utils::FileName &qmakePath, ProFileEvaluator *evaluator,

View File

@@ -27,7 +27,6 @@
#include "iosqtversion.h" #include "iosqtversion.h"
#include "iosconstants.h" #include "iosconstants.h"
#include <qtsupport/qtsupportconstants.h> #include <qtsupport/qtsupportconstants.h>
#include <utils/qtcassert.h>
#include <proparser/profileevaluator.h> #include <proparser/profileevaluator.h>
#include <QFileInfo> #include <QFileInfo>
@@ -38,6 +37,7 @@ namespace Internal {
IosQtVersionFactory::IosQtVersionFactory(QObject *parent) IosQtVersionFactory::IosQtVersionFactory(QObject *parent)
: QtSupport::QtVersionFactory(parent) : QtSupport::QtVersionFactory(parent)
{ {
setQtVersionCreator([] { return new IosQtVersion; });
} }
bool IosQtVersionFactory::canRestore(const QString &type) bool IosQtVersionFactory::canRestore(const QString &type)
@@ -45,15 +45,6 @@ bool IosQtVersionFactory::canRestore(const QString &type)
return type == QLatin1String(Constants::IOSQT); return type == QLatin1String(Constants::IOSQT);
} }
QtSupport::BaseQtVersion *IosQtVersionFactory::restore(const QString &type,
const QVariantMap &data)
{
QTC_ASSERT(canRestore(type), return nullptr);
auto v = new IosQtVersion;
v->fromMap(data);
return v;
}
int IosQtVersionFactory::priority() const int IosQtVersionFactory::priority() const
{ {
return 90; return 90;

View File

@@ -36,7 +36,6 @@ public:
explicit IosQtVersionFactory(QObject *parent = nullptr); explicit IosQtVersionFactory(QObject *parent = nullptr);
bool canRestore(const QString &type) override; bool canRestore(const QString &type) override;
QtSupport::BaseQtVersion *restore(const QString &type, const QVariantMap &data) override;
int priority() const override; int priority() const override;
QtSupport::BaseQtVersion *create(const Utils::FileName &qmakePath, ProFileEvaluator *evaluator, QtSupport::BaseQtVersion *create(const Utils::FileName &qmakePath, ProFileEvaluator *evaluator,

View File

@@ -39,6 +39,7 @@ using namespace Qnx::Internal;
QnxQtVersionFactory::QnxQtVersionFactory(QObject *parent) : QnxQtVersionFactory::QnxQtVersionFactory(QObject *parent) :
QtSupport::QtVersionFactory(parent) QtSupport::QtVersionFactory(parent)
{ {
setQtVersionCreator([] { return new QnxQtVersion; });
} }
QnxQtVersionFactory::~QnxQtVersionFactory() = default; QnxQtVersionFactory::~QnxQtVersionFactory() = default;
@@ -48,15 +49,6 @@ bool QnxQtVersionFactory::canRestore(const QString &type)
return type == QLatin1String(Constants::QNX_QNX_QT); return type == QLatin1String(Constants::QNX_QNX_QT);
} }
QtSupport::BaseQtVersion *QnxQtVersionFactory::restore(const QString &type, const QVariantMap &data)
{
if (!canRestore(type))
return nullptr;
auto v = new QnxQtVersion;
v->fromMap(data);
return v;
}
int QnxQtVersionFactory::priority() const int QnxQtVersionFactory::priority() const
{ {
return 50; return 50;

View File

@@ -38,7 +38,6 @@ public:
~QnxQtVersionFactory() override; ~QnxQtVersionFactory() override;
bool canRestore(const QString &type) override; bool canRestore(const QString &type) override;
QtSupport::BaseQtVersion *restore(const QString &type, const QVariantMap &data) override;
int priority() const override; int priority() const override;
QtSupport::BaseQtVersion *create(const Utils::FileName &qmakePath, QtSupport::BaseQtVersion *create(const Utils::FileName &qmakePath,

View File

@@ -35,7 +35,7 @@ using namespace QtSupport::Internal;
DesktopQtVersionFactory::DesktopQtVersionFactory(QObject *parent) DesktopQtVersionFactory::DesktopQtVersionFactory(QObject *parent)
: QtVersionFactory(parent) : QtVersionFactory(parent)
{ {
setQtVersionCreator([] { return new DesktopQtVersion; });
} }
DesktopQtVersionFactory::~DesktopQtVersionFactory() = default; DesktopQtVersionFactory::~DesktopQtVersionFactory() = default;
@@ -45,15 +45,6 @@ bool DesktopQtVersionFactory::canRestore(const QString &type)
return type == QLatin1String(Constants::DESKTOPQT); return type == QLatin1String(Constants::DESKTOPQT);
} }
BaseQtVersion *DesktopQtVersionFactory::restore(const QString &type, const QVariantMap &data)
{
if (!canRestore(type))
return nullptr;
auto v = new DesktopQtVersion;
v->fromMap(data);
return v;
}
int DesktopQtVersionFactory::priority() const int DesktopQtVersionFactory::priority() const
{ {
// Lowest of all, we want to be the fallback // Lowest of all, we want to be the fallback

View File

@@ -37,7 +37,6 @@ public:
~DesktopQtVersionFactory() override; ~DesktopQtVersionFactory() override;
bool canRestore(const QString &type) override; bool canRestore(const QString &type) override;
BaseQtVersion *restore(const QString &type, const QVariantMap &data) override;
int priority() const override; int priority() const override;
BaseQtVersion *create(const Utils::FileName &qmakePath, ProFileEvaluator *evaluator, BaseQtVersion *create(const Utils::FileName &qmakePath, ProFileEvaluator *evaluator,

View File

@@ -30,8 +30,10 @@
#include <proparser/qmakevfs.h> #include <proparser/qmakevfs.h>
#include <extensionsystem/pluginmanager.h> #include <extensionsystem/pluginmanager.h>
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/environment.h> #include <utils/environment.h>
#include <utils/qtcassert.h>
using namespace QtSupport; using namespace QtSupport;
using namespace QtSupport::Internal; using namespace QtSupport::Internal;
@@ -54,6 +56,15 @@ const QList<QtVersionFactory *> QtVersionFactory::allQtVersionFactories()
return g_qtVersionFactories; return g_qtVersionFactories;
} }
BaseQtVersion *QtVersionFactory::restore(const QString &type, const QVariantMap &data)
{
QTC_ASSERT(canRestore(type), return nullptr);
QTC_ASSERT(m_creator, return nullptr);
BaseQtVersion *version = m_creator();
version->fromMap(data);
return version;
}
BaseQtVersion *QtVersionFactory::createQtVersionFromQMakePath(const Utils::FileName &qmakePath, bool isAutoDetected, const QString &autoDetectionSource, QString *error) BaseQtVersion *QtVersionFactory::createQtVersionFromQMakePath(const Utils::FileName &qmakePath, bool isAutoDetected, const QString &autoDetectionSource, QString *error)
{ {
QHash<ProKey, ProString> versionInfo; QHash<ProKey, ProString> versionInfo;
@@ -88,3 +99,8 @@ BaseQtVersion *QtVersionFactory::createQtVersionFromQMakePath(const Utils::FileN
*error = tr("No factory found for qmake: \"%1\"").arg(qmakePath.toUserOutput()); *error = tr("No factory found for qmake: \"%1\"").arg(qmakePath.toUserOutput());
return 0; return 0;
} }
void QtVersionFactory::setQtVersionCreator(const std::function<BaseQtVersion *()> &creator)
{
m_creator = creator;
}

View File

@@ -52,7 +52,7 @@ public:
static const QList<QtVersionFactory *> allQtVersionFactories(); static const QList<QtVersionFactory *> allQtVersionFactories();
virtual bool canRestore(const QString &type) = 0; virtual bool canRestore(const QString &type) = 0;
virtual BaseQtVersion *restore(const QString &type, const QVariantMap &data) = 0; BaseQtVersion *restore(const QString &type, const QVariantMap &data);
/// factories with higher priority are asked first to identify /// factories with higher priority are asked first to identify
/// a qtversion, the priority of the desktop factory is 0 and /// a qtversion, the priority of the desktop factory is 0 and
@@ -66,6 +66,12 @@ public:
static BaseQtVersion *createQtVersionFromQMakePath( static BaseQtVersion *createQtVersionFromQMakePath(
const Utils::FileName &qmakePath, bool isAutoDetected = false, const Utils::FileName &qmakePath, bool isAutoDetected = false,
const QString &autoDetectionSource = QString(), QString *error = nullptr); const QString &autoDetectionSource = QString(), QString *error = nullptr);
protected:
void setQtVersionCreator(const std::function<BaseQtVersion *()> &creator);
private:
std::function<BaseQtVersion *()> m_creator;
}; };
} // namespace QtSupport } // namespace QtSupport

View File

@@ -36,6 +36,7 @@ namespace Internal {
EmbeddedLinuxQtVersionFactory::EmbeddedLinuxQtVersionFactory(QObject *parent) EmbeddedLinuxQtVersionFactory::EmbeddedLinuxQtVersionFactory(QObject *parent)
: QtSupport::QtVersionFactory(parent) : QtSupport::QtVersionFactory(parent)
{ {
setQtVersionCreator([] { return new EmbeddedLinuxQtVersion; });
} }
EmbeddedLinuxQtVersionFactory::~EmbeddedLinuxQtVersionFactory() = default; EmbeddedLinuxQtVersionFactory::~EmbeddedLinuxQtVersionFactory() = default;
@@ -45,15 +46,6 @@ bool EmbeddedLinuxQtVersionFactory::canRestore(const QString &type)
return type == QLatin1String(RemoteLinux::Constants::EMBEDDED_LINUX_QT); return type == QLatin1String(RemoteLinux::Constants::EMBEDDED_LINUX_QT);
} }
QtSupport::BaseQtVersion *EmbeddedLinuxQtVersionFactory::restore(const QString &type, const QVariantMap &data)
{
if (!canRestore(type))
return nullptr;
auto v = new EmbeddedLinuxQtVersion;
v->fromMap(data);
return v;
}
int EmbeddedLinuxQtVersionFactory::priority() const int EmbeddedLinuxQtVersionFactory::priority() const
{ {
return 10; return 10;

View File

@@ -37,7 +37,6 @@ public:
~EmbeddedLinuxQtVersionFactory() override; ~EmbeddedLinuxQtVersionFactory() override;
bool canRestore(const QString &type) override; bool canRestore(const QString &type) override;
QtSupport::BaseQtVersion *restore(const QString &type, const QVariantMap &data) override;
int priority() const override; int priority() const override;
QtSupport::BaseQtVersion *create(const Utils::FileName &qmakePath, ProFileEvaluator *evaluator, QtSupport::BaseQtVersion *create(const Utils::FileName &qmakePath, ProFileEvaluator *evaluator,

View File

@@ -38,6 +38,7 @@ namespace Internal {
WinRtQtVersionFactory::WinRtQtVersionFactory(QObject *parent) WinRtQtVersionFactory::WinRtQtVersionFactory(QObject *parent)
: QtSupport::QtVersionFactory(parent) : QtSupport::QtVersionFactory(parent)
{ {
setQtVersionCreator([] { return new WinRtQtVersion; });
} }
WinRtQtVersionFactory::~WinRtQtVersionFactory() WinRtQtVersionFactory::~WinRtQtVersionFactory()
@@ -49,16 +50,6 @@ bool WinRtQtVersionFactory::canRestore(const QString &type)
return type == QLatin1String(Constants::WINRT_WINRTQT); return type == QLatin1String(Constants::WINRT_WINRTQT);
} }
QtSupport::BaseQtVersion *WinRtQtVersionFactory::restore(const QString &type,
const QVariantMap &data)
{
if (!canRestore(type))
return nullptr;
WinRtQtVersion *v = new WinRtQtVersion;
v->fromMap(data);
return v;
}
int WinRtQtVersionFactory::priority() const int WinRtQtVersionFactory::priority() const
{ {
return 10; return 10;
@@ -84,6 +75,7 @@ QtSupport::BaseQtVersion *WinRtQtVersionFactory::create(const Utils::FileName &q
WinRtPhoneQtVersionFactory::WinRtPhoneQtVersionFactory(QObject *parent) WinRtPhoneQtVersionFactory::WinRtPhoneQtVersionFactory(QObject *parent)
: QtSupport::QtVersionFactory(parent) : QtSupport::QtVersionFactory(parent)
{ {
setQtVersionCreator([] { return new WinRtPhoneQtVersion; });
} }
bool WinRtPhoneQtVersionFactory::canRestore(const QString &type) bool WinRtPhoneQtVersionFactory::canRestore(const QString &type)
@@ -91,16 +83,6 @@ bool WinRtPhoneQtVersionFactory::canRestore(const QString &type)
return type == QLatin1String(Constants::WINRT_WINPHONEQT); return type == QLatin1String(Constants::WINRT_WINPHONEQT);
} }
QtSupport::BaseQtVersion *WinRtPhoneQtVersionFactory::restore(const QString &type,
const QVariantMap &data)
{
if (!canRestore(type))
return nullptr;
WinRtQtVersion *v = new WinRtPhoneQtVersion;
v->fromMap(data);
return v;
}
int WinRtPhoneQtVersionFactory::priority() const int WinRtPhoneQtVersionFactory::priority() const
{ {
return 10; return 10;

View File

@@ -37,7 +37,6 @@ public:
~WinRtQtVersionFactory(); ~WinRtQtVersionFactory();
bool canRestore(const QString &type); bool canRestore(const QString &type);
QtSupport::BaseQtVersion *restore(const QString &type, const QVariantMap &data);
int priority() const; int priority() const;
QtSupport::BaseQtVersion *create(const Utils::FileName &qmakePath, ProFileEvaluator *evaluator, QtSupport::BaseQtVersion *create(const Utils::FileName &qmakePath, ProFileEvaluator *evaluator,
@@ -50,7 +49,6 @@ public:
explicit WinRtPhoneQtVersionFactory(QObject *parent = nullptr); explicit WinRtPhoneQtVersionFactory(QObject *parent = nullptr);
bool canRestore(const QString &type); bool canRestore(const QString &type);
QtSupport::BaseQtVersion *restore(const QString &type, const QVariantMap &data);
int priority() const; int priority() const;
QtSupport::BaseQtVersion *create(const Utils::FileName &qmakePath, ProFileEvaluator *evaluator, QtSupport::BaseQtVersion *create(const Utils::FileName &qmakePath, ProFileEvaluator *evaluator,