From 3c94b4cb6b08c210d49cf852d6eed06d5ebda861 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 20 Feb 2018 15:29:06 +0100 Subject: [PATCH] Utils: Add variant converter for EnvironmentItem(List) Simplify saving environment items to creator settings by providing converter to QVariant. Change-Id: I65ef3b33964ba0af97bbd46e18a13ae316d7ecee Reviewed-by: Oswald Buddenhagen Reviewed-by: Tobias Hunger --- src/libs/utils/environment.cpp | 28 ++++++++++++++++++++++++++++ src/libs/utils/environment.h | 4 ++++ 2 files changed, 32 insertions(+) diff --git a/src/libs/utils/environment.cpp b/src/libs/utils/environment.cpp index 74534eeaf4b..fadaaac7598 100644 --- a/src/libs/utils/environment.cpp +++ b/src/libs/utils/environment.cpp @@ -120,6 +120,34 @@ QStringList EnvironmentItem::toStringList(const QList &list) }); } +QList EnvironmentItem::itemsFromVariantList(const QVariantList &list) +{ + return Utils::transform(list, [](const QVariant &item) { + return itemFromVariantList(item.toList()); + }); +} + +QVariantList EnvironmentItem::toVariantList(const QList &list) +{ + return Utils::transform(list, [](const EnvironmentItem &item) { + return QVariant(toVariantList(item)); + }); +} + +EnvironmentItem EnvironmentItem::itemFromVariantList(const QVariantList &list) +{ + QTC_ASSERT(list.size() == 3, return EnvironmentItem("", "")); + QString name = list.value(0).toString(); + Operation operation = Operation(list.value(1).toInt()); + QString value = list.value(2).toString(); + return EnvironmentItem(name, value, operation); +} + +QVariantList EnvironmentItem::toVariantList(const EnvironmentItem &item) +{ + return QVariantList() << item.name << item.operation << item.value; +} + static QString expand(const Environment *e, QString value) { int replaceCount = 0; diff --git a/src/libs/utils/environment.h b/src/libs/utils/environment.h index 4fed80a8bb3..d907731e7ed 100644 --- a/src/libs/utils/environment.h +++ b/src/libs/utils/environment.h @@ -63,6 +63,10 @@ public: static void sort(QList *list); static QList fromStringList(const QStringList &list); static QStringList toStringList(const QList &list); + static QList itemsFromVariantList(const QVariantList &list); + static QVariantList toVariantList(const QList &list); + static EnvironmentItem itemFromVariantList(const QVariantList &list); + static QVariantList toVariantList(const EnvironmentItem &item); private: void apply(Environment *e, Operation op) const;