From 6e2e7a63e6f3f80d9bd1ead5ca85b16d9f22ed6b Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Thu, 4 May 2023 09:05:27 +0200 Subject: [PATCH] QmlJS: Allow reset of the customized analyzer Provide a context menu to reset the enabled and disabled messages of the static analyzer to the internal default. Change-Id: I98bde71899ad4de50d0e170bf0d2892b87989ceb Reviewed-by: Fabian Kosmale Reviewed-by: Leena Miettinen --- .../qmljseditor/qmljseditingsettingspage.cpp | 55 +++++++++++++------ 1 file changed, 38 insertions(+), 17 deletions(-) diff --git a/src/plugins/qmljseditor/qmljseditingsettingspage.cpp b/src/plugins/qmljseditor/qmljseditingsettingspage.cpp index 1a8ff90e552..bfb5a002cfa 100644 --- a/src/plugins/qmljseditor/qmljseditingsettingspage.cpp +++ b/src/plugins/qmljseditor/qmljseditingsettingspage.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -44,6 +45,22 @@ const char DEFAULT_CUSTOM_FORMAT_COMMAND[] = "%{CurrentDocument:Project:QT_HOST_ using namespace QmlJSEditor; using namespace QmlJSEditor::Internal; +static QList defaultDisabledMessages() +{ + static const QList disabledByDefault = Utils::transform( + QmlJS::Check::defaultDisabledMessages(), + [](QmlJS::StaticAnalysis::Type t) { return int(t); }); + return disabledByDefault; +} + +static QList defaultDisabledMessagesNonQuickUi() +{ + static const QList disabledForNonQuickUi = Utils::transform( + QmlJS::Check::defaultDisabledMessagesForNonQuickUi(), + [](QmlJS::StaticAnalysis::Type t){ return int(t); }); + return disabledForNonQuickUi; +} + void QmlJsEditingSettings::set() { if (get() != *this) @@ -67,19 +84,13 @@ void QmlJsEditingSettings::fromSettings(QSettings *settings) m_useCustomFormatCommand = settings->value(CUSTOM_COMMAND, QVariant(false)).toBool(); m_useCustomAnalyzer = settings->value(CUSTOM_ANALYZER, QVariant(false)).toBool(); - const QList disabledByDefault = Utils::transform( - QmlJS::Check::defaultDisabledMessages(), - [](QmlJS::StaticAnalysis::Type t) { return int(t); }); m_disabledMessages = Utils::transform( settings->value(DISABLED_MESSAGES, - QVariant::fromValue(disabledByDefault)).toList(), + QVariant::fromValue(defaultDisabledMessages())).toList(), [](const QVariant &v){ return v.toInt(); }); - const QList disabledForNonQuickUi = Utils::transform( - QmlJS::Check::defaultDisabledMessagesForNonQuickUi(), - [](QmlJS::StaticAnalysis::Type t){ return int(t); }); m_disabledMessagesForNonQuickUi = Utils::transform( settings->value(DISABLED_MESSAGES_NONQUICKUI, - QVariant::fromValue(disabledForNonQuickUi)).toList(), + QVariant::fromValue(defaultDisabledMessagesNonQuickUi())).toList(), [](const QVariant &v) { return v.toInt(); }); settings->endGroup(); @@ -109,20 +120,14 @@ void QmlJsEditingSettings::toSettings(QSettings *settings) const CUSTOM_ANALYZER, m_useCustomAnalyzer, false); - const QList disabledByDefault = Utils::transform( - QmlJS::Check::defaultDisabledMessages(), - [](QmlJS::StaticAnalysis::Type t){ return int(t); }); Utils::QtcSettings::setValueWithDefault(settings, DISABLED_MESSAGES, Utils::sorted(Utils::toList(m_disabledMessages)), - disabledByDefault); - const QList disabledNonQuickUi = Utils::transform( - QmlJS::Check::defaultDisabledMessagesForNonQuickUi(), - [](QmlJS::StaticAnalysis::Type t){ return int(t); }); + defaultDisabledMessages()); Utils::QtcSettings::setValueWithDefault(settings, DISABLED_MESSAGES_NONQUICKUI, Utils::sorted(Utils::toList(m_disabledMessagesForNonQuickUi)), - disabledNonQuickUi); + defaultDisabledMessagesNonQuickUi()); settings->endGroup(); QmllsSettingsManager::instance()->checkForChanges(); } @@ -394,7 +399,9 @@ public: analyzerMessagesView->setToolTip(Tr::tr("Enabled checks can be disabled for non Qt Quick UI" " files,\nbut disabled checks cannot get explicitly" " enabled for non Qt Quick UI files.")); - + analyzerMessagesView->setContextMenuPolicy(Qt::CustomContextMenu); + connect(analyzerMessagesView, &QTreeView::customContextMenuRequested, + this, &QmlJsEditingSettingsPageWidget::showContextMenu); using namespace Layouting; // clang-format off QWidget *formattingGroup = nullptr; @@ -503,6 +510,20 @@ private: analyzerMessagesView->resizeColumnToContents(column); } + void showContextMenu(const QPoint &position) + { + QMenu menu; + QAction *reset = new QAction(Tr::tr("Reset to Default"), &menu); + menu.addAction(reset); + connect(reset, &QAction::triggered, this, [this](){ + analyzerMessageModel->clear(); + populateAnalyzerMessages(Utils::toSet(defaultDisabledMessages()), + Utils::toSet(defaultDisabledMessagesNonQuickUi())); + + }); + menu.exec(analyzerMessagesView->mapToGlobal(position)); + } + QCheckBox *autoFormatOnSave; QCheckBox *autoFormatOnlyCurrentProject; QCheckBox *useCustomFormatCommand;