diff options
author | Katja Marttila <katja.marttila@qt.io> | 2023-06-06 11:43:36 +0300 |
---|---|---|
committer | Katja Marttila <katja.marttila@qt.io> | 2023-08-23 15:58:38 +0300 |
commit | a9fd39352c3d3717fb9ea33871bb8e3a2ddf5483 (patch) | |
tree | 28bd5d8c3f7717a2ad28fcddf67e4ca3f3029074 /src/libs/kdtools | |
parent | 27d9e170d4191fb218b65f100a3c8d43c47dc9f6 (diff) |
Fix deprecated QVariant usage
Also adding tests for UpdateOperations which used the deprecated
QVariant functions
Task-number: QTIFW-3077
Change-Id: I5b6b975631b4d0380511f614b0cad1f90a4849e8
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
Diffstat (limited to 'src/libs/kdtools')
-rw-r--r-- | src/libs/kdtools/updateoperation.cpp | 45 |
1 files changed, 29 insertions, 16 deletions
diff --git a/src/libs/kdtools/updateoperation.cpp b/src/libs/kdtools/updateoperation.cpp index 6a7e62f2b..e9e69fc13 100644 --- a/src/libs/kdtools/updateoperation.cpp +++ b/src/libs/kdtools/updateoperation.cpp @@ -1,7 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB) -** Copyright (C) 2022 The Qt Company Ltd. +** Copyright (C) 2023 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -577,14 +577,21 @@ QDomDocument UpdateOperation::toXml() const value.setAttribute(QLatin1String("name"), it.key()); value.setAttribute(QLatin1String("type"), QLatin1String(variant.typeName())); - if (variant.type() != QVariant::List && variant.type() != QVariant::StringList - && variant.canConvert(QVariant::String)) { - // it can convert to string? great! - value.appendChild(doc.createTextNode(QInstaller::replacePath(variant.toString(), - target, QLatin1String(QInstaller::scRelocatable)))); + int variantType; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + variantType = variant.typeId(); +#else + variantType = variant.type(); +#endif + + if (variantType != QMetaType::QStringList + && variant.canConvert<QString>()) { + // it can convert to string? great! + value.appendChild(doc.createTextNode(QInstaller::replacePath(variant.toString(), + target, QLatin1String(QInstaller::scRelocatable)))); } else { // no? then we have to go the hard way... - if (variant.type() == QVariant::StringList) { + if (variantType == QMetaType::QStringList) { QStringList list = variant.toStringList(); for (int i = 0; i < list.count(); ++i) { list[i] = QInstaller::replacePath(list.at(i), target, @@ -651,25 +658,31 @@ bool UpdateOperation::fromXml(const QDomDocument &doc) const QString type = v.attribute(QLatin1String("type")); const QString value = v.text(); + int variantType; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + const QMetaType t = QMetaType::fromName(type.toLatin1().data()); + variantType = t.id(); +#else const QVariant::Type t = QVariant::nameToType(type.toLatin1().data()); + variantType = t; +#endif QVariant var = QVariant::fromValue(value); - if (t == QVariant::List || t == QVariant::StringList || !var.convert(t)) { - QDataStream stream(QByteArray::fromBase64( value.toLatin1())); + if (variantType == QMetaType::QStringList || !var.canConvert(t)) { + QDataStream stream(QByteArray::fromBase64(value.toLatin1())); stream >> var; - if (t == QVariant::StringList) { + if (variantType == QMetaType::QStringList) { QStringList list = var.toStringList(); for (int i = 0; i < list.count(); ++i) { list[i] = QInstaller::replacePath(list.at(i), - relocatable, target); + relocatable, target); } var = QVariant::fromValue(list); } - } else if (t == QVariant::String) { - const QString str = QInstaller::replacePath(value, - relocatable, target); - var = QVariant::fromValue(str); + } else if (variantType == QMetaType::QString) { + const QString str = QInstaller::replacePath(value, + relocatable, target); + var = QVariant::fromValue(str); } - m_values[name] = var; } |