From 3558b897e7f21df6564093ea0840dc18774ffee2 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Wed, 4 Sep 2024 15:00:01 +0200 Subject: [PATCH] Axivion: Allow disabling of inline issues Enables the user to disable fetching inline issues for opened documents and removes all existing issue markers when disabling. Change-Id: I93f1982b0ca4a1f3efdd38befc378fcef5188591 Reviewed-by: Jarek Kobus --- src/plugins/axivion/axivionoutputpane.cpp | 13 +++++++++++-- src/plugins/axivion/axivionplugin.cpp | 22 ++++++++++++++++++++++ src/plugins/axivion/axivionplugin.h | 1 + 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/plugins/axivion/axivionoutputpane.cpp b/src/plugins/axivion/axivionoutputpane.cpp index 255e69f4ec2..b6133fd4a58 100644 --- a/src/plugins/axivion/axivionoutputpane.cpp +++ b/src/plugins/axivion/axivionoutputpane.cpp @@ -13,6 +13,7 @@ #include #include +#include #include #include @@ -56,7 +57,7 @@ namespace Axivion::Internal { static QPixmap trendIcon(qint64 added, qint64 removed) { - static const QPixmap unchanged = Icons::NEXT.pixmap(); + static const QPixmap unchanged = Utils::Icons::NEXT.pixmap(); static const QPixmap increased = Icon( { {":/utils/images/arrowup.png", Theme::IconsErrorColor} }).pixmap(); static const QPixmap decreased = Icon( @@ -677,6 +678,13 @@ public: pal.setColor(QPalette::Window, creatorColor(Theme::Color::BackgroundColorNormal)); m_outputWidget->setPalette(pal); + m_disableInlineIssues = new QToolButton(m_outputWidget); + m_disableInlineIssues->setIcon(ProjectExplorer::Icons::BUILDSTEP_DISABLE.icon()); + m_disableInlineIssues->setToolTip(Tr::tr("Disable inline issues")); + m_disableInlineIssues->setCheckable(true); + m_disableInlineIssues->setChecked(false); + connect(m_disableInlineIssues, &QToolButton::toggled, + this, [](bool checked) { disableInlineIssues(checked); }); m_toggleIssues = new QToolButton(m_outputWidget); m_toggleIssues->setIcon(Utils::Icons::WARNING_TOOLBAR.icon()); m_toggleIssues->setToolTip(Tr::tr("Show issue annotations inline")); @@ -707,7 +715,7 @@ public: QList toolBarWidgets() const final { - return {m_toggleIssues}; + return {m_disableInlineIssues, m_toggleIssues}; } void clearContents() final {} @@ -773,6 +781,7 @@ public: private: QStackedWidget *m_outputWidget = nullptr; QToolButton *m_toggleIssues = nullptr; + QToolButton *m_disableInlineIssues = nullptr; }; diff --git a/src/plugins/axivion/axivionplugin.cpp b/src/plugins/axivion/axivionplugin.cpp index b674480805b..e82b3f37099 100644 --- a/src/plugins/axivion/axivionplugin.cpp +++ b/src/plugins/axivion/axivionplugin.cpp @@ -221,6 +221,7 @@ public: void clearAllMarks(); void updateExistingMarks(); void handleIssuesForFile(const Dto::FileViewDto &fileView); + void disableInlineIssues(bool disable); void fetchIssueInfo(const QString &id); void setIssueDetails(const QString &issueDetailsHtml); void handleAnchorClicked(const QUrl &url); @@ -248,6 +249,7 @@ public: FileInProjectFinder m_fileFinder; // FIXME maybe obsolete when path mapping is implemented QMetaObject::Connection m_fileFinderConnection; QHash> m_allMarks; + bool m_inlineIssuesEnabled = true; }; static AxivionPluginPrivate *dd = nullptr; @@ -952,6 +954,8 @@ void AxivionPluginPrivate::updateExistingMarks() // update whether highlight mar void AxivionPluginPrivate::onDocumentOpened(IDocument *doc) { + if (!m_inlineIssuesEnabled) + return; if (!doc || !m_currentProjectInfo || !m_project || !m_project->isKnownFile(doc->filePath())) return; @@ -1012,6 +1016,18 @@ void AxivionPluginPrivate::handleIssuesForFile(const Dto::FileViewDto &fileView) } } +void AxivionPluginPrivate::disableInlineIssues(bool disable) +{ + if (m_inlineIssuesEnabled != disable) + return; + m_inlineIssuesEnabled = !disable; + + if (disable) + clearAllMarks(); + else + handleOpenedDocs(); +} + void AxivionPluginPrivate::handleAnchorClicked(const QUrl &url) { QTC_ASSERT(dd, return); @@ -1137,6 +1153,12 @@ void setAnalysisVersion(const QString &version) dd->handleOpenedDocs(); } +void disableInlineIssues(bool disable) +{ + QTC_ASSERT(dd, return); + dd->disableInlineIssues(disable); +} + Utils::FilePath findFileForIssuePath(const Utils::FilePath &issuePath) { QTC_ASSERT(dd, return {}); diff --git a/src/plugins/axivion/axivionplugin.h b/src/plugins/axivion/axivionplugin.h index 2ee02b67a25..322e92caca1 100644 --- a/src/plugins/axivion/axivionplugin.h +++ b/src/plugins/axivion/axivionplugin.h @@ -89,6 +89,7 @@ void fetchIssueInfo(const QString &id); void switchActiveDashboardId(const Utils::Id &toDashboardId); const std::optional currentDashboardInfo(); void setAnalysisVersion(const QString &version); +void disableInlineIssues(bool disable); Utils::FilePath findFileForIssuePath(const Utils::FilePath &issuePath);