From 2c353c37eac6f31dd10456b63c429930489b9d06 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 21 Jul 2023 18:58:18 +0200 Subject: [PATCH] Utils: Base AspectContainer on BaseAspect Change-Id: I78b11727af6e465da5731ba36bbae476d11d11ee Reviewed-by: Reviewed-by: Marcus Tillmanns --- src/app/main.cpp | 2 +- src/libs/utils/aspects.cpp | 12 +++++----- src/libs/utils/aspects.h | 22 +++++++++---------- src/plugins/autotest/testsettings.cpp | 4 ++-- src/plugins/clangtools/clangtoolssettings.cpp | 4 ++-- src/plugins/clangtools/clangtoolssettings.h | 10 +++------ .../debuggersourcepathmappingwidget.cpp | 4 ++-- .../projectexplorer/projectconfiguration.h | 4 ++-- 8 files changed, 30 insertions(+), 32 deletions(-) diff --git a/src/app/main.cpp b/src/app/main.cpp index f92930d0aa4..741b85b7149 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -655,7 +655,7 @@ int main(int argc, char **argv) PluginManager::setInstallSettings(installSettings); PluginManager::setSettings(settings); - Utils::BaseAspect::setSettings(settings); + Utils::BaseAspect::setQtcSettings(settings); using namespace Core; Utils::AppInfo info; diff --git a/src/libs/utils/aspects.cpp b/src/libs/utils/aspects.cpp index 2fc74b144b4..7742edc4d91 100644 --- a/src/libs/utils/aspects.cpp +++ b/src/libs/utils/aspects.cpp @@ -37,12 +37,12 @@ namespace Utils { static QSettings *theSettings = nullptr; -void BaseAspect::setSettings(QSettings *settings) +void BaseAspect::setQtcSettings(QSettings *settings) { theSettings = settings; } -QSettings *BaseAspect::settings() +QSettings *BaseAspect::qtcSettings() { return theSettings; } @@ -591,7 +591,8 @@ void BaseAspect::readSettings() { if (settingsKey().isEmpty()) return; - const QVariant val = settings()->value(settingsKey()); + QTC_ASSERT(theSettings, return); + const QVariant val = theSettings->value(settingsKey()); setVariantValue(val.isValid() ? fromSettingsValue(val) : defaultVariantValue(), BeQuiet); } @@ -599,7 +600,8 @@ void BaseAspect::writeSettings() const { if (settingsKey().isEmpty()) return; - QtcSettings::setValueWithDefault(settings(), + QTC_ASSERT(theSettings, return); + QtcSettings::setValueWithDefault(theSettings, settingsKey(), toSettingsValue(variantValue()), toSettingsValue(defaultVariantValue())); @@ -2562,7 +2564,7 @@ void AspectContainer::setAutoApply(bool on) aspect->setAutoApply(on); } -bool AspectContainer::isDirty() const +bool AspectContainer::isDirty() { for (BaseAspect *aspect : std::as_const(d->m_items)) { if (aspect->isDirty()) diff --git a/src/libs/utils/aspects.h b/src/libs/utils/aspects.h index b4b2d4099a9..3d7b3ca84a9 100644 --- a/src/libs/utils/aspects.h +++ b/src/libs/utils/aspects.h @@ -176,8 +176,8 @@ public: Data::Ptr extractData() const; - static void setSettings(QSettings *settings); - static QSettings *settings(); + static void setQtcSettings(QSettings *settings); + static QSettings *qtcSettings(); // This is expensive. Do not use without good reason void writeToSettingsImmediatly() const; @@ -809,7 +809,7 @@ private: const int m_groupCount; }; -class QTCREATOR_UTILS_EXPORT AspectContainer : public QObject +class QTCREATOR_UTILS_EXPORT AspectContainer : public BaseAspect { Q_OBJECT @@ -823,25 +823,25 @@ public: void registerAspect(BaseAspect *aspect, bool takeOwnership = false); void registerAspects(const AspectContainer &aspects); - void fromMap(const QVariantMap &map); - void toMap(QVariantMap &map) const; + void fromMap(const QVariantMap &map) override; + void toMap(QVariantMap &map) const override; - void readSettings(); - void writeSettings() const; + void readSettings() override; + void writeSettings() const override; void setSettingsGroup(const QString &groupKey); void setSettingsGroups(const QString &groupKey, const QString &subGroupKey); QStringList settingsGroups() const; - void apply(); - void cancel(); - void finish(); + void apply() override; + void cancel() override; + void finish() override; void reset(); bool equals(const AspectContainer &other) const; void copyFrom(const AspectContainer &other); void setAutoApply(bool on); - bool isDirty() const; + bool isDirty() override; template T *aspect() const { diff --git a/src/plugins/autotest/testsettings.cpp b/src/plugins/autotest/testsettings.cpp index 2e7926617d8..c2293a0b4ff 100644 --- a/src/plugins/autotest/testsettings.cpp +++ b/src/plugins/autotest/testsettings.cpp @@ -109,7 +109,7 @@ void TestSettings::toSettings() const { AspectContainer::writeSettings(); - QSettings *s = Utils::BaseAspect::settings(); + QSettings *s = Utils::BaseAspect::qtcSettings(); s->beginGroup(Constants::SETTINGSGROUP); // store frameworks and their current active and grouping state @@ -128,7 +128,7 @@ void TestSettings::fromSettings() { AspectContainer::readSettings(); - QSettings *s = Utils::BaseAspect::settings(); + QSettings *s = Utils::BaseAspect::qtcSettings(); s->beginGroup(Constants::SETTINGSGROUP); // try to get settings for registered frameworks diff --git a/src/plugins/clangtools/clangtoolssettings.cpp b/src/plugins/clangtools/clangtoolssettings.cpp index ba819231890..440bde4ecc6 100644 --- a/src/plugins/clangtools/clangtoolssettings.cpp +++ b/src/plugins/clangtools/clangtoolssettings.cpp @@ -176,7 +176,7 @@ void ClangToolsSettings::readSettings() writeSettings(); } -void ClangToolsSettings::writeSettings() +void ClangToolsSettings::writeSettings() const { AspectContainer::writeSettings(); @@ -192,7 +192,7 @@ void ClangToolsSettings::writeSettings() s->endGroup(); - emit changed(); + emit const_cast(this)->changed(); // FIXME: This is the wrong place } FilePath ClangToolsSettings::executable(ClangToolType tool) const diff --git a/src/plugins/clangtools/clangtoolssettings.h b/src/plugins/clangtools/clangtoolssettings.h index ddc4b9157e4..920a185d7df 100644 --- a/src/plugins/clangtools/clangtoolssettings.h +++ b/src/plugins/clangtools/clangtoolssettings.h @@ -58,12 +58,11 @@ private: class ClangToolsSettings : public Utils::AspectContainer { - Q_OBJECT - ClangToolsSettings(); + public: static ClangToolsSettings *instance(); - void writeSettings(); + void writeSettings() const override; // Executables Utils::FilePathAspect clangTidyExecutable{this}; @@ -82,11 +81,8 @@ public: static VersionAndSuffix clangTidyVersion(); static QVersionNumber clazyVersion(); -signals: - void changed(); - private: - void readSettings(); + void readSettings() override; // Diagnostic Configs CppEditor::ClangDiagnosticConfigs m_diagnosticConfigs; diff --git a/src/plugins/debugger/debuggersourcepathmappingwidget.cpp b/src/plugins/debugger/debuggersourcepathmappingwidget.cpp index 244264bf793..c0ca4bb2f6b 100644 --- a/src/plugins/debugger/debuggersourcepathmappingwidget.cpp +++ b/src/plugins/debugger/debuggersourcepathmappingwidget.cpp @@ -491,7 +491,7 @@ const char sourcePathMappingTargetKeyC[] = "Target"; void SourcePathMapAspect::writeSettings() const { const SourcePathMap sourcePathMap = value(); - QSettings *s = settings(); + QSettings *s = qtcSettings(); s->beginWriteArray(sourcePathMappingArrayNameC); if (!sourcePathMap.isEmpty()) { const QString sourcePathMappingSourceKey(sourcePathMappingSourceKeyC); @@ -510,7 +510,7 @@ void SourcePathMapAspect::writeSettings() const void SourcePathMapAspect::readSettings() { - QSettings *s = settings(); + QSettings *s = qtcSettings(); SourcePathMap sourcePathMap; if (const int count = s->beginReadArray(sourcePathMappingArrayNameC)) { const QString sourcePathMappingSourceKey(sourcePathMappingSourceKeyC); diff --git a/src/plugins/projectexplorer/projectconfiguration.h b/src/plugins/projectexplorer/projectconfiguration.h index a28c1d44152..b0f722d8054 100644 --- a/src/plugins/projectexplorer/projectconfiguration.h +++ b/src/plugins/projectexplorer/projectconfiguration.h @@ -47,9 +47,9 @@ public: bool hasError() const { return m_hasError; } // Note: Make sure subclasses call the superclasses' fromMap() function! - virtual void fromMap(const QVariantMap &map); + virtual void fromMap(const QVariantMap &map) override; // Note: Make sure subclasses call the superclasses' toMap() function! - virtual void toMap(QVariantMap &map) const; + virtual void toMap(QVariantMap &map) const override; Target *target() const; Project *project() const;