Utils: Introduce variantFromStore and storeFromVariant

These are functional replacements for
  QVariant::fromValue(QVariantMap) (or QVariant::fromValue(Store)) and
  QVariant::toMap() (or QVariant::toValue<Store>())

We will have a few code paths in the end that need to explicitly
operarate on both QVariantMap and Store (e.g. actual reading/writing
to keep format compatibility etc), so these can't in the end be
simple to/fromValue(OneType) but need an internal 'if' or such.

Change-Id: I954f3cb24fa8fe123162b72bbd25d891dd19b768
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This commit is contained in:
hjk
2023-08-28 10:55:31 +02:00
parent bb59dfd636
commit 23149b27ab
39 changed files with 149 additions and 136 deletions

View File

@@ -186,7 +186,7 @@ void CMakeToolSettingsAccessor::saveCMakeTools(const QList<CMakeTool *> &cmakeTo
Store tmp = item->toMap();
if (tmp.isEmpty())
continue;
data.insert(CMAKE_TOOL_DATA_KEY + Key::number(count), QVariant::fromValue(tmp));
data.insert(CMAKE_TOOL_DATA_KEY + Key::number(count), variantFromStore(tmp));
++count;
}
}
@@ -206,7 +206,7 @@ CMakeToolSettingsAccessor::cmakeTools(const Store &data, bool fromSdk) const
if (!data.contains(key))
continue;
const Store dbMap = data.value(key).value<Store>();
const Store dbMap = storeFromVariant(data.value(key));
auto item = std::make_unique<CMakeTool>(dbMap, fromSdk);
const FilePath cmakeExecutable = item->cmakeExecutable();
if (item->isAutoDetected() && !cmakeExecutable.needsDevice() && !cmakeExecutable.isExecutableFile()) {