From e3d3af81cb8d104201a4cb7e961faeea8022b424 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 20 Jun 2024 08:44:26 +0200 Subject: [PATCH] QmlJsEditor: Start aspectification of settings Rename qmljseditingsettingspage.* to qmljseditorsettings.*, re-arrange some includes, use settings() for the singleton access etc. Change-Id: Iff36a99baf0afd238a935386e9111818be5d7987 Reviewed-by: Christian Stenger --- src/plugins/qmljseditor/CMakeLists.txt | 2 +- src/plugins/qmljseditor/qmljseditor.cpp | 9 +++-- src/plugins/qmljseditor/qmljseditor.qbs | 4 +- src/plugins/qmljseditor/qmljseditorplugin.cpp | 14 +++---- ...ttingspage.cpp => qmljseditorsettings.cpp} | 38 ++++++++----------- ...ngsettingspage.h => qmljseditorsettings.h} | 13 ++----- src/plugins/qmljseditor/qmljshoverhandler.cpp | 20 ++++++---- src/plugins/qmljseditor/qmllssettings.cpp | 8 ++-- src/plugins/qmljseditor/qmllssettings.h | 8 ++-- src/plugins/qmljseditor/quicktoolbar.cpp | 22 +++++------ 10 files changed, 64 insertions(+), 74 deletions(-) rename src/plugins/qmljseditor/{qmljseditingsettingspage.cpp => qmljseditorsettings.cpp} (97%) rename src/plugins/qmljseditor/{qmljseditingsettingspage.h => qmljseditorsettings.h} (93%) diff --git a/src/plugins/qmljseditor/CMakeLists.txt b/src/plugins/qmljseditor/CMakeLists.txt index 122bb39aed1..d2155c9ae4c 100644 --- a/src/plugins/qmljseditor/CMakeLists.txt +++ b/src/plugins/qmljseditor/CMakeLists.txt @@ -9,7 +9,7 @@ add_qtc_plugin(QmlJSEditor qmljscompletionassist.cpp qmljscompletionassist.h qmljscomponentfromobjectdef.cpp qmljscomponentfromobjectdef.h qmljscomponentnamedialog.cpp qmljscomponentnamedialog.h - qmljseditingsettingspage.cpp qmljseditingsettingspage.h + qmljseditorsettings.cpp qmljseditorsettings.h qmljseditor.cpp qmljseditor.h qmljseditor_global.h qmljseditortr.h diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp index 76aeb70666f..a079fdf3b75 100644 --- a/src/plugins/qmljseditor/qmljseditor.cpp +++ b/src/plugins/qmljseditor/qmljseditor.cpp @@ -5,7 +5,7 @@ #include "qmljsautocompleter.h" #include "qmljscompletionassist.h" -#include "qmljseditingsettingspage.h" +#include "qmljseditorsettings.h" #include "qmljseditorconstants.h" #include "qmljseditordocument.h" #include "qmljseditorplugin.h" @@ -24,6 +24,7 @@ #include #include + #include #include #include @@ -88,6 +89,7 @@ const char QT_QUICK_TOOLBAR_MARKER_ID[] = "QtQuickToolbarMarkerId"; using namespace Core; using namespace QmlJS; using namespace QmlJS::AST; +using namespace QmlJSEditor::Internal; using namespace QmlJSTools; using namespace TextEditor; using namespace Utils; @@ -97,8 +99,7 @@ namespace QmlJSEditor { static LanguageClient::Client *getQmllsClient(const Utils::FilePath &fileName) { // the value in disableBuiltinCodemodel is only valid when useQmlls is enabled - if (QmlJsEditingSettings::get().useQmlls() - && !QmlJsEditingSettings::get().disableBuiltinCodemodel()) + if (settings().useQmlls() && !settings().disableBuiltinCodemodel()) return nullptr; auto client = LanguageClient::LanguageClientManager::clientForFilePath(fileName); @@ -163,7 +164,7 @@ void QmlJSEditorWidget::restoreState(const QByteArray &state) using namespace Utils::Constants; QStringList qmlTypes = {QML_MIMETYPE, QBS_MIMETYPE, QMLTYPES_MIMETYPE, QMLUI_MIMETYPE}; - if (QmlJsEditingSettings::get().foldAuxData() && qmlTypes.contains(textDocument()->mimeType())) { + if (settings().foldAuxData() && qmlTypes.contains(textDocument()->mimeType())) { int version = 0; QDataStream stream(state); stream >> version; diff --git a/src/plugins/qmljseditor/qmljseditor.qbs b/src/plugins/qmljseditor/qmljseditor.qbs index e2affa93ff4..544c2fd67f0 100644 --- a/src/plugins/qmljseditor/qmljseditor.qbs +++ b/src/plugins/qmljseditor/qmljseditor.qbs @@ -31,8 +31,8 @@ QtcPlugin { "qmljscomponentfromobjectdef.h", "qmljscomponentnamedialog.cpp", "qmljscomponentnamedialog.h", - "qmljseditingsettingspage.cpp", - "qmljseditingsettingspage.h", + "qmljseditorsettings.cpp", + "qmljseditorsettings.h", "qmljseditor.cpp", "qmljseditor.h", "qmljseditor_global.h", "qmljseditortr.h", diff --git a/src/plugins/qmljseditor/qmljseditorplugin.cpp b/src/plugins/qmljseditor/qmljseditorplugin.cpp index e75370ab14d..b81eb209b9f 100644 --- a/src/plugins/qmljseditor/qmljseditorplugin.cpp +++ b/src/plugins/qmljseditor/qmljseditorplugin.cpp @@ -3,9 +3,9 @@ #include "qmljseditorplugin.h" -#include "qmljseditingsettingspage.h" #include "qmljseditorconstants.h" #include "qmljseditordocument.h" +#include "qmljseditorsettings.h" #include "qmljseditortr.h" #include "qmljsoutline.h" #include "qmljsquickfixassist.h" @@ -183,13 +183,13 @@ QmlJS::JsonSchemaManager *jsonManager() void QmlJSEditorPluginPrivate::reformatFile() { if (m_currentDocument) { - if (QmlJsEditingSettings::get().useCustomFormatCommand()) { - QString formatCommand = QmlJsEditingSettings::get().formatCommand(); + if (settings().useCustomFormatCommand()) { + QString formatCommand = settings().formatCommand(); if (formatCommand.isEmpty()) - formatCommand = QmlJsEditingSettings::get().defaultFormatCommand(); + formatCommand = settings().defaultFormatCommand(); const auto exe = FilePath::fromUserInput(globalMacroExpander()->expand(formatCommand)); const QString args = globalMacroExpander()->expand( - QmlJsEditingSettings::get().formatCommandOptions()); + settings().formatCommandOptions()); const CommandLine commandLine(exe, args, CommandLine::Raw); TextEditor::Command command; command.setExecutable(commandLine.executable()); @@ -296,7 +296,7 @@ void QmlJSEditorPluginPrivate::checkCurrentEditorSemanticInfoUpToDate() void QmlJSEditorPluginPrivate::autoFormatOnSave(IDocument *document) { - if (!QmlJsEditingSettings::get().autoFormatOnSave()) + if (!settings().autoFormatOnSave()) return; // Check that we are dealing with a QML/JS editor @@ -305,7 +305,7 @@ void QmlJSEditorPluginPrivate::autoFormatOnSave(IDocument *document) return; // Check if file is contained in the current project (if wished) - if (QmlJsEditingSettings::get().autoFormatOnlyCurrentProject()) { + if (settings().autoFormatOnlyCurrentProject()) { const Project *pro = ProjectTree::currentProject(); if (!pro || !pro->files(Project::SourceFiles).contains(document->filePath())) return; diff --git a/src/plugins/qmljseditor/qmljseditingsettingspage.cpp b/src/plugins/qmljseditor/qmljseditorsettings.cpp similarity index 97% rename from src/plugins/qmljseditor/qmljseditingsettingspage.cpp rename to src/plugins/qmljseditor/qmljseditorsettings.cpp index 4d492781c2a..9073a2109e6 100644 --- a/src/plugins/qmljseditor/qmljseditingsettingspage.cpp +++ b/src/plugins/qmljseditor/qmljseditorsettings.cpp @@ -1,7 +1,7 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 -#include "qmljseditingsettingspage.h" +#include "qmljseditorsettings.h" #include "qmljseditorconstants.h" #include "qmljseditortr.h" @@ -50,7 +50,13 @@ const char DEFAULT_CUSTOM_FORMAT_COMMAND[] = "%{CurrentDocument:Project:QT_HOST_ using namespace QmlJSEditor::Internal; using namespace Utils; -namespace QmlJSEditor { +namespace QmlJSEditor::Internal { + +QmlJsEditingSettings &settings() +{ + static QmlJsEditingSettings settings; + return settings; +} static QList defaultDisabledMessages() { @@ -68,18 +74,12 @@ static QList defaultDisabledMessagesNonQuickUi() return disabledForNonQuickUi; } -void QmlJsEditingSettings::set() -{ - if (get() != *this) - toSettings(Core::ICore::settings()); -} - static QStringList intListToStringList(const QList &list) { return Utils::transform(list, [](int v) { return QString::number(v); }); } -QList intListFromStringList(const QStringList &list) +static QList intListFromStringList(const QStringList &list) { return Utils::transform >(list, [](const QString &v) { return v.toInt(); }); } @@ -96,8 +96,10 @@ static QStringList defaultDisabledNonQuickUiAsString() return result; } -void QmlJsEditingSettings::fromSettings(QtcSettings *settings) +QmlJsEditingSettings::QmlJsEditingSettings() { + QtcSettings *settings = Core::ICore::settings(); + settings->beginGroup(QmlJSEditor::Constants::SETTINGS_CATEGORY_QML); m_enableContextPane = settings->value(QML_CONTEXTPANE_KEY, QVariant(false)).toBool(); m_pinContextPane = settings->value(QML_CONTEXTPANEPIN_KEY, QVariant(false)).toBool(); @@ -413,7 +415,7 @@ class QmlJsEditingSettingsPageWidget final : public Core::IOptionsPageWidget public: QmlJsEditingSettingsPageWidget() { - auto s = QmlJsEditingSettings::get(); + const QmlJsEditingSettings &s = settings(); autoFormatOnSave = new QCheckBox(Tr::tr("Enable auto format on file save")); autoFormatOnSave->setChecked(s.autoFormatOnSave()); autoFormatOnlyCurrentProject = @@ -557,7 +559,7 @@ public: void apply() final { - QmlJsEditingSettings s; + QmlJsEditingSettings &s = settings(); s.setEnableContextPane(enableContextPane->isChecked()); s.setPinContextPane(pinContextPane->isChecked()); s.setAutoFormatOnSave(autoFormatOnSave->isChecked()); @@ -584,7 +586,7 @@ public: }); s.setDisabledMessages(disabled); s.setDisabledMessagesForNonQuickUi(disabledForNonQuickUi); - s.set(); + s.toSettings(Core::ICore::settings()); } private: @@ -638,14 +640,6 @@ private: Utils::TreeModel *analyzerMessageModel; }; - -QmlJsEditingSettings QmlJsEditingSettings::get() -{ - QmlJsEditingSettings settings; - settings.fromSettings(Core::ICore::settings()); - return settings; -} - QmlJsEditingSettingsPage::QmlJsEditingSettingsPage() { setId("C.QmlJsEditing"); @@ -654,4 +648,4 @@ QmlJsEditingSettingsPage::QmlJsEditingSettingsPage() setWidgetCreator([] { return new QmlJsEditingSettingsPageWidget; }); } -} // QmlJsEditor +} // QmlJsEditor::Internal diff --git a/src/plugins/qmljseditor/qmljseditingsettingspage.h b/src/plugins/qmljseditor/qmljseditorsettings.h similarity index 93% rename from src/plugins/qmljseditor/qmljseditingsettingspage.h rename to src/plugins/qmljseditor/qmljseditorsettings.h index 99dd335f11a..f4290fba299 100644 --- a/src/plugins/qmljseditor/qmljseditingsettingspage.h +++ b/src/plugins/qmljseditor/qmljseditorsettings.h @@ -10,17 +10,13 @@ #include #include -namespace QmlJSEditor { +namespace QmlJSEditor::Internal { class QmlJsEditingSettings { public: - QmlJsEditingSettings() = default; + QmlJsEditingSettings(); - static QmlJsEditingSettings get(); - void set(); - - void fromSettings(Utils::QtcSettings *); void toSettings(Utils::QtcSettings *) const; bool equals(const QmlJsEditingSettings &other) const; @@ -102,7 +98,7 @@ private: QSet m_disabledMessagesForNonQuickUi; }; -namespace Internal { +QmlJsEditingSettings &settings(); class QmlJsEditingSettingsPage : public Core::IOptionsPage { @@ -110,5 +106,4 @@ public: QmlJsEditingSettingsPage(); }; -} // namespace Internal -} // namespace QmlDesigner +} // QmlJSEditor::Internal diff --git a/src/plugins/qmljseditor/qmljshoverhandler.cpp b/src/plugins/qmljseditor/qmljshoverhandler.cpp index 7cd66696c5c..a2cb1bacf89 100644 --- a/src/plugins/qmljseditor/qmljshoverhandler.cpp +++ b/src/plugins/qmljseditor/qmljshoverhandler.cpp @@ -1,21 +1,21 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 -#include "qmlexpressionundercursor.h" -#include "qmljseditor.h" -#include "qmljseditorconstants.h" -#include "qmljseditordocument.h" -#include "qmljseditortr.h" #include "qmljshoverhandler.h" -#include "qmljseditingsettingspage.h" + +#include "qmljseditor.h" +#include "qmljseditordocument.h" +#include "qmljseditorsettings.h" +#include "qmljseditortr.h" #include #include #include #include #include -#include + #include + #include #include #include @@ -23,7 +23,10 @@ #include #include #include + #include + +#include #include #include @@ -35,6 +38,7 @@ using namespace Core; using namespace QmlJS; +using namespace QmlJSEditor::Internal; using namespace TextEditor; namespace QmlJSEditor { @@ -375,7 +379,7 @@ void QmlJSHoverHandler::reset() void QmlJSHoverHandler::operateTooltip(TextEditorWidget *editorWidget, const QPoint &point) { // disable hoverhandling in case qmlls is enabled - if (QmlJsEditingSettings::get().useQmlls()) { + if (settings().useQmlls()) { BaseHoverHandler::operateTooltip(editorWidget, point); return; } diff --git a/src/plugins/qmljseditor/qmllssettings.cpp b/src/plugins/qmljseditor/qmllssettings.cpp index 170f3122709..268439e055c 100644 --- a/src/plugins/qmljseditor/qmllssettings.cpp +++ b/src/plugins/qmljseditor/qmllssettings.cpp @@ -2,7 +2,7 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #include "qmllssettings.h" -#include "qmljseditingsettingspage.h" +#include "qmljseditorsettings.h" #include #include @@ -17,7 +17,7 @@ using namespace QtSupport; using namespace Utils; -namespace QmlJSEditor { +namespace QmlJSEditor::Internal { namespace { Q_LOGGING_CATEGORY(qmllsLog, "qtc.qmlls.settings", QtWarningMsg); @@ -90,7 +90,7 @@ void QmllsSettingsManager::setupAutoupdate() void QmllsSettingsManager::checkForChanges() { - const QmlJsEditingSettings &newSettings = QmlJsEditingSettings::get(); + const QmlJsEditingSettings &newSettings = settings(); FilePath newLatest = newSettings.useLatestQmlls() && newSettings.useQmlls() ? evaluateLatestQmlls() : m_latestQmlls; if (m_useQmlls == newSettings.useQmlls() @@ -127,4 +127,4 @@ bool QmllsSettingsManager::useQmlls() const return m_useQmlls; } -} // namespace QmlJSEditor +} // QmlJSEditor::Internal diff --git a/src/plugins/qmljseditor/qmllssettings.h b/src/plugins/qmljseditor/qmllssettings.h index c1a82b986b8..05e335ba81e 100644 --- a/src/plugins/qmljseditor/qmllssettings.h +++ b/src/plugins/qmljseditor/qmllssettings.h @@ -3,17 +3,15 @@ #pragma once -#include "qmljseditor_global.h" - #include #include #include #include -namespace QmlJSEditor { +namespace QmlJSEditor::Internal { -class QMLJSEDITOR_EXPORT QmllsSettingsManager : public QObject +class QmllsSettingsManager : public QObject { Q_OBJECT @@ -44,4 +42,4 @@ private: Utils::FilePath m_latestQmlls; }; -} // namespace QmlJSEditor +} // QmlJSEditor::Internal diff --git a/src/plugins/qmljseditor/quicktoolbar.cpp b/src/plugins/qmljseditor/quicktoolbar.cpp index 9154b7d47d9..1e0e9ee098c 100644 --- a/src/plugins/qmljseditor/quicktoolbar.cpp +++ b/src/plugins/qmljseditor/quicktoolbar.cpp @@ -2,7 +2,8 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #include "quicktoolbar.h" -#include "qmljseditingsettingspage.h" + +#include "qmljseditorsettings.h" #include #include @@ -27,6 +28,7 @@ using namespace QmlJS; using namespace AST; using namespace QmlEditorWidgets; +using namespace QmlJSEditor::Internal; namespace QmlJSEditor { @@ -94,7 +96,7 @@ QuickToolBar *QuickToolBar::instance() void QuickToolBar::apply(TextEditor::TextEditorWidget *editorWidget, Document::Ptr document, const ScopeChain *scopeChain, Node *node, bool update, bool force) { - if (!QmlJsEditingSettings::get().enableContextPane() && !force && !update) { + if (!settings().enableContextPane() && !force && !update) { contextWidget()->hide(); return; } @@ -199,10 +201,10 @@ void QuickToolBar::apply(TextEditor::TextEditorWidget *editorWidget, Document::P if (!update) contextWidget()->setType(m_prototypes); if (!update) - contextWidget()->activate(p3 , p1, p2, QmlJsEditingSettings::get().pinContextPane()); + contextWidget()->activate(p3 , p1, p2, settings().pinContextPane()); else - contextWidget()->rePosition(p3 , p1, p2, QmlJsEditingSettings::get().pinContextPane()); - contextWidget()->setOptions(QmlJsEditingSettings::get().enableContextPane(), QmlJsEditingSettings::get().pinContextPane()); + contextWidget()->rePosition(p3 , p1, p2, settings().pinContextPane()); + contextWidget()->setOptions(settings().enableContextPane(), settings().pinContextPane()); contextWidget()->setPath(document->path().toString()); contextWidget()->setProperties(&propertyReader); m_doc = document; @@ -381,17 +383,13 @@ void QuickToolBar::onPropertyRemovedAndChange(const QString &remove, const QStri void QuickToolBar::onPinnedChanged(bool b) { - QmlJsEditingSettings settings = QmlJsEditingSettings::get(); - settings.setPinContextPane(b); - settings.set(); + settings().setPinContextPane(b); } void QuickToolBar::onEnabledChanged(bool b) { - QmlJsEditingSettings settings = QmlJsEditingSettings::get(); - settings.setPinContextPane(b); - settings.setEnableContextPane(b); - settings.set(); + settings().setPinContextPane(b); + settings().setEnableContextPane(b); } void QuickToolBar::indentLines(int startLine, int endLine)