diff --git a/src/libs/utils/aspects.cpp b/src/libs/utils/aspects.cpp index 81ac6ddeb30..0296c631237 100644 --- a/src/libs/utils/aspects.cpp +++ b/src/libs/utils/aspects.cpp @@ -2019,6 +2019,7 @@ class AspectContainerPrivate public: QList m_items; // Not owned bool m_autoApply = true; + QString m_settingsGroup; }; } // Internal @@ -2061,14 +2062,38 @@ void AspectContainer::toMap(QVariantMap &map) const void AspectContainer::readSettings(const QSettings *settings) { - for (BaseAspect *aspect : qAsConst(d->m_items)) - aspect->readSettings(settings); + if (d->m_settingsGroup.isEmpty()) { + for (BaseAspect *aspect : qAsConst(d->m_items)) + aspect->readSettings(settings); + } else { + const QString keyRoot = d->m_settingsGroup + '/'; + forEachAspect([settings, keyRoot](BaseAspect *aspect) { + QString key = aspect->settingsKey(); + const QVariant value = settings->value(keyRoot + key, aspect->defaultValue()); + aspect->setValue(value); + }); + } } void AspectContainer::writeSettings(QSettings *settings) const { - for (BaseAspect *aspect : qAsConst(d->m_items)) - aspect->writeSettings(settings); + if (d->m_settingsGroup.isEmpty()) { + for (BaseAspect *aspect : qAsConst(d->m_items)) + aspect->writeSettings(settings); + } else { + settings->remove(d->m_settingsGroup); + settings->beginGroup(d->m_settingsGroup); + forEachAspect([settings](BaseAspect *aspect) { + QtcSettings::setValueWithDefault(settings, aspect->settingsKey(), + aspect->value(), aspect->defaultValue()); + }); + settings->endGroup(); + } +} + +void AspectContainer::setSettingsGroup(const QString &key) +{ + d->m_settingsGroup = key; } void AspectContainer::apply() diff --git a/src/libs/utils/aspects.h b/src/libs/utils/aspects.h index 106313ff59a..1f2712bff01 100644 --- a/src/libs/utils/aspects.h +++ b/src/libs/utils/aspects.h @@ -523,6 +523,8 @@ public: void readSettings(const QSettings *settings); void writeSettings(QSettings *settings) const; + void setSettingsGroup(const QString &key); + void apply(); void cancel(); void finish(); diff --git a/src/plugins/vcsbase/vcsbaseclientsettings.cpp b/src/plugins/vcsbase/vcsbaseclientsettings.cpp index afb7c559641..fe51a44ecd2 100644 --- a/src/plugins/vcsbase/vcsbaseclientsettings.cpp +++ b/src/plugins/vcsbase/vcsbaseclientsettings.cpp @@ -80,32 +80,4 @@ QStringList VcsBaseSettings::searchPathList() const return path.value().split(HostOsInfo::pathListSeparator(), Qt::SkipEmptyParts); } -void VcsBaseSettings::setSettingsGroup(const QString &key) -{ - m_settingsGroup = key; -} - -void VcsBaseSettings::writeSettings(QSettings *settings) const -{ - QTC_ASSERT(!m_settingsGroup.isEmpty(), return); - - settings->remove(m_settingsGroup); - settings->beginGroup(m_settingsGroup); - forEachAspect([settings](BaseAspect *aspect) { - QtcSettings::setValueWithDefault(settings, aspect->settingsKey(), - aspect->value(), aspect->defaultValue()); - }); - settings->endGroup(); -} - -void VcsBaseSettings::readSettings(const QSettings *settings) -{ - const QString keyRoot = m_settingsGroup + '/'; - forEachAspect([settings, keyRoot](BaseAspect *aspect) { - QString key = aspect->settingsKey(); - const QVariant value = settings->value(keyRoot + key, aspect->defaultValue()); - aspect->setValue(value); - }); -} - } // namespace VcsBase diff --git a/src/plugins/vcsbase/vcsbaseclientsettings.h b/src/plugins/vcsbase/vcsbaseclientsettings.h index c7c312b1b76..91dae89874c 100644 --- a/src/plugins/vcsbase/vcsbaseclientsettings.h +++ b/src/plugins/vcsbase/vcsbaseclientsettings.h @@ -48,11 +48,6 @@ public: QStringList searchPathList() const; - void writeSettings(QSettings *settings) const; - void readSettings(const QSettings *settings); - - void setSettingsGroup(const QString &key); - private: QString m_settingsGroup; };