Utils: Merge settingsutils.h into Store setup

Change-Id: I4f87400d3ff50869798a363f0d15aa77af0edf5c
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
hjk
2023-09-11 15:30:07 +02:00
parent 7268f036de
commit d6dba7dc9f
16 changed files with 47 additions and 86 deletions

View File

@@ -147,7 +147,6 @@ add_qtc_library(Utils
set_algorithm.h
settingsaccessor.cpp settingsaccessor.h
settingsselector.cpp settingsselector.h
settingsutils.h
singleton.cpp singleton.h
sizedarray.h
smallstring.h

View File

@@ -1,47 +0,0 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include "store.h"
#include "qtcsettings.h"
#include <QSettings>
#include <QStringList>
#include <QVariant>
namespace Utils {
template <class SettingsClassT>
void fromSettings(const Key &postFix,
const Key &category,
QtcSettings *s,
SettingsClassT *obj)
{
Store map;
s->beginGroup(category + postFix);
const KeyList keys = keysFromStrings(s->allKeys());
for (const Key &key : keys)
map.insert(key, s->value(key));
s->endGroup();
obj->fromMap(map);
}
template <class SettingsClassT>
void toSettings(const Key &postFix,
const Key &category,
QtcSettings *s,
const SettingsClassT *obj)
{
Key group = postFix;
if (!category.isEmpty())
group.insert(0, category);
const Store map = obj->toMap();
s->beginGroup(group);
for (auto it = map.constBegin(), end = map.constEnd(); it != end; ++it)
s->setValue(it.key(), it.value());
s->endGroup();
}
} // Utils

View File

@@ -5,6 +5,7 @@
#include "algorithm.h"
#include "qtcassert.h"
#include "qtcsettings.h"
#include <QJsonDocument>
#include <QJsonParseError>
@@ -133,4 +134,23 @@ QByteArray jsonFromStore(const Store &store)
return doc.toJson();
}
Store storeFromSettings(const Key &groupKey, QtcSettings *s)
{
Store store;
s->beginGroup(groupKey);
const KeyList keys = keysFromStrings(s->allKeys());
for (const Key &key : keys)
store.insert(key, s->value(key));
s->endGroup();
return store;
}
void storeToSettings(const Key &groupKey, QtcSettings *s, const Store &store)
{
s->beginGroup(groupKey);
for (auto it = store.constBegin(), end = store.constEnd(); it != end; ++it)
s->setValue(it.key(), it.value());
s->endGroup();
}
} // Utils

View File

@@ -11,6 +11,8 @@
namespace Utils {
class QtcSettings;
using KeyList = QList<Key>;
using Store = QMap<Key, QVariant>;
@@ -31,6 +33,11 @@ QTCREATOR_UTILS_EXPORT Key numberedKey(const Key &key, int number);
QTCREATOR_UTILS_EXPORT expected_str<Store> storeFromJson(const QByteArray &json);
QTCREATOR_UTILS_EXPORT QByteArray jsonFromStore(const Store &store);
// Don't use in new code.
QTCREATOR_UTILS_EXPORT Store storeFromSettings(const Key &groupKey, QtcSettings *s);
QTCREATOR_UTILS_EXPORT void storeToSettings(const Key &groupKey, QtcSettings *s, const Store &store);
} // Utils
Q_DECLARE_METATYPE(Utils::Store)

View File

@@ -279,7 +279,6 @@ Project {
"settingsaccessor.h",
"settingsselector.cpp",
"settingsselector.h",
"settingsutils.h",
"singleton.cpp",
"singleton.h",
"sizedarray.h",

View File

@@ -17,7 +17,6 @@
#include <utils/hostosinfo.h>
#include <utils/process.h>
#include <utils/qtcassert.h>
#include <utils/settingsutils.h>
#include <QDateTime>
#include <QHash>
@@ -400,7 +399,8 @@ FilePath ClangdSettings::clangdUserConfigFilePath()
void ClangdSettings::loadSettings()
{
const auto settings = Core::ICore::settings();
Utils::fromSettings(clangdSettingsKey(), {}, settings, &m_data);
m_data.fromMap(Utils::storeFromSettings(clangdSettingsKey(), settings));
settings->beginGroup(QLatin1String(Constants::CPPEDITOR_SETTINGSGROUP));
m_data.customDiagnosticConfigs = diagnosticConfigsFromSettings(settings);
@@ -419,7 +419,7 @@ void ClangdSettings::loadSettings()
void ClangdSettings::saveSettings()
{
const auto settings = Core::ICore::settings();
Utils::toSettings(clangdSettingsKey(), {}, settings, &m_data);
Utils::storeToSettings(clangdSettingsKey(), settings, m_data.toMap());
settings->beginGroup(QLatin1String(Constants::CPPEDITOR_SETTINGSGROUP));
diagnosticConfigsToSettings(settings, m_data.customDiagnosticConfigs);
settings->endGroup();

View File

@@ -16,7 +16,6 @@
#include <cplusplus/Overview.h>
#include <utils/qtcassert.h>
#include <utils/settingsutils.h>
static const char indentBlockBracesKey[] = "IndentBlockBraces";
static const char indentBlockBodyKey[] = "IndentBlockBody";

View File

@@ -9,16 +9,15 @@
#include "cppcodestylepreferencesfactory.h"
#include <coreplugin/icore.h>
#include <extensionsystem/pluginmanager.h>
#include <texteditor/completionsettingspage.h>
#include <texteditor/codestylepool.h>
#include <texteditor/tabsettings.h>
#include <texteditor/texteditorsettings.h>
#include <extensionsystem/pluginmanager.h>
#include <utils/qtcassert.h>
#include <utils/settingsutils.h>
#include <QSettings>
static const char idKey[] = "CppGlobal";
const bool kSortEditorDocumentOutlineDefault = true;

View File

@@ -15,7 +15,6 @@
#include <cplusplus/Overview.h>
#include <utils/qtcassert.h>
#include <utils/settingsutils.h>
static const char lineLengthKey[] = "LineLength";

View File

@@ -7,15 +7,13 @@
#include "qmljstoolssettings.h"
#include "qmljstoolstr.h"
#include <coreplugin/icore.h>
#include <texteditor/texteditorsettings.h>
#include <texteditor/tabsettings.h>
#include <texteditor/codestylepool.h>
#include <utils/settingsutils.h>
#include <utils/qtcassert.h>
#include <coreplugin/icore.h>
#include <QSettings>
using namespace TextEditor;

View File

@@ -5,8 +5,6 @@
#include <coreplugin/icore.h>
#include <utils/settingsutils.h>
#include <QString>
static const char mouseHidingKey[] = "MouseHiding";
@@ -35,13 +33,13 @@ BehaviorSettings::BehaviorSettings() :
void BehaviorSettings::toSettings(const Key &category) const
{
Utils::toSettings(groupPostfix, category, Core::ICore::settings(), this);
Utils::storeToSettings(category + groupPostfix, Core::ICore::settings(), toMap());
}
void BehaviorSettings::fromSettings(const Key &category)
{
*this = BehaviorSettings();
Utils::fromSettings(groupPostfix, category, Core::ICore::settings(), this);
fromMap(Utils::storeFromSettings(category + groupPostfix, Core::ICore::settings()));
}
Store BehaviorSettings::toMap() const

View File

@@ -3,13 +3,10 @@
#include "extraencodingsettings.h"
#include "behaviorsettingswidget.h"
#include "texteditortr.h"
#include <coreplugin/icore.h>
#include <utils/settingsutils.h>
// Keep this for compatibility reasons.
static const char kGroupPostfix[] = "EditorManager";
static const char kUtf8BomBehaviorKey[] = "Utf8BomBehavior";
@@ -27,7 +24,7 @@ void ExtraEncodingSettings::toSettings(const Key &category) const
{
Q_UNUSED(category)
Utils::toSettings(kGroupPostfix, Key(), Core::ICore::settings(), this);
Utils::storeToSettings(kGroupPostfix, Core::ICore::settings(), toMap());
}
void ExtraEncodingSettings::fromSettings(const Key &category)
@@ -35,7 +32,7 @@ void ExtraEncodingSettings::fromSettings(const Key &category)
Q_UNUSED(category)
*this = ExtraEncodingSettings();
Utils::fromSettings(kGroupPostfix, Key(), Core::ICore::settings(), this);
fromMap(Utils::storeFromSettings(kGroupPostfix, Core::ICore::settings()));
}
Store ExtraEncodingSettings::toMap() const

View File

@@ -7,8 +7,6 @@
#include <coreplugin/icore.h>
#include <utils/settingsutils.h>
using namespace Utils;
static const char currentPreferencesKey[] = "CurrentPreferences";
@@ -214,12 +212,12 @@ void ICodeStylePreferences::setSettingsSuffix(const Key &suffix)
void ICodeStylePreferences::toSettings(const Key &category) const
{
Utils::toSettings(d->m_settingsSuffix, category, Core::ICore::settings(), this);
Utils::storeToSettings(category + d->m_settingsSuffix, Core::ICore::settings(), toMap());
}
void ICodeStylePreferences::fromSettings(const Key &category)
{
Utils::fromSettings(d->m_settingsSuffix, category, Core::ICore::settings(), this);
fromMap(Utils::storeFromSettings(category + d->m_settingsSuffix, Core::ICore::settings()));
}
Store ICodeStylePreferences::toMap() const

View File

@@ -6,7 +6,6 @@
#include <coreplugin/icore.h>
#include <utils/hostosinfo.h>
#include <utils/settingsutils.h>
#include <QRegularExpression>
@@ -35,13 +34,13 @@ StorageSettings::StorageSettings()
void StorageSettings::toSettings(const Key &category) const
{
Utils::toSettings(groupPostfix, category, Core::ICore::settings(), this);
Utils::storeToSettings(category + groupPostfix, Core::ICore::settings(), toMap());
}
void StorageSettings::fromSettings(const Key &category)
{
*this = StorageSettings();
Utils::fromSettings(groupPostfix, category, Core::ICore::settings(), this);
fromMap(Utils::storeFromSettings(category + groupPostfix, Core::ICore::settings()));
}
Store StorageSettings::toMap() const

View File

@@ -3,8 +3,6 @@
#include "tabsettings.h"
#include <utils/settingsutils.h>
#include <QDebug>
#include <QSettings>
#include <QTextCursor>
@@ -35,13 +33,13 @@ TabSettings::TabSettings(TabSettings::TabPolicy tabPolicy,
void TabSettings::toSettings(const Key &category, QtcSettings *s) const
{
Utils::toSettings(groupPostfix, category, s, this);
Utils::storeToSettings(category + groupPostfix, s, toMap());
}
void TabSettings::fromSettings(const Key &category, QtcSettings *s)
{
*this = TabSettings(); // Assign defaults
Utils::fromSettings(groupPostfix, category, s, this);
fromMap(Utils::storeFromSettings(category + groupPostfix, s));
}
Store TabSettings::toMap() const

View File

@@ -5,8 +5,6 @@
#include <coreplugin/icore.h>
#include <utils/settingsutils.h>
#include <QTextCursor>
#include <QTextDocument>
@@ -30,13 +28,13 @@ TypingSettings::TypingSettings():
void TypingSettings::toSettings(const Key &category) const
{
Utils::toSettings(groupPostfix, category, Core::ICore::settings(), this);
Utils::storeToSettings(category + groupPostfix, Core::ICore::settings(), toMap());
}
void TypingSettings::fromSettings(const Key &category)
{
*this = TypingSettings(); // Assign defaults
Utils::fromSettings(groupPostfix, category, Core::ICore::settings(), this);
fromMap(Utils::storeFromSettings(category + groupPostfix, Core::ICore::settings()));
}
Store TypingSettings::toMap() const