From 9ec8deb55e8dbb0aae4a044d207f0ff2a363830f Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Tue, 22 Jan 2019 15:19:17 +0100 Subject: [PATCH] ClangTools: Add clear button to toolbar Change-Id: I0caeb3fa118b57084f7df7a22952f3057ca601e0 Reviewed-by: Ivan Donchevskii --- src/plugins/clangtools/clangtidyclazytool.cpp | 16 +++++++++++++++- src/plugins/clangtools/clangtidyclazytool.h | 1 + .../clangtools/clangtoolsdiagnosticmodel.cpp | 6 ++++++ .../clangtools/clangtoolsdiagnosticmodel.h | 3 ++- 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/plugins/clangtools/clangtidyclazytool.cpp b/src/plugins/clangtools/clangtidyclazytool.cpp index 23fd043fc46..0079a9e2975 100644 --- a/src/plugins/clangtools/clangtidyclazytool.cpp +++ b/src/plugins/clangtools/clangtidyclazytool.cpp @@ -245,6 +245,18 @@ ClangTidyClazyTool::ClangTidyClazyTool() connect(action, &QAction::triggered, m_diagnosticView, &DetailedErrorView::goNext); m_goNext = action; + // Clear data + action = new QAction(this); + action->setDisabled(true); + action->setIcon(Utils::Icons::CLEAN_TOOLBAR.icon()); + action->setToolTip(tr("Clear")); + connect(action, &QAction::triggered, [this](){ + m_clear->setEnabled(false); + m_diagnosticModel->clear(); + Debugger::showPermanentStatusMessage(QString()); + }); + m_clear = action; + // Filter line edit m_filterLineEdit = new Utils::FancyLineEdit(); m_filterLineEdit->setFiltering(true); @@ -291,6 +303,7 @@ ClangTidyClazyTool::ClangTidyClazyTool() m_perspective.addToolBarAction(m_startAction); m_perspective.addToolBarAction(m_stopAction); + m_perspective.addToolBarAction(m_clear); m_perspective.addToolBarAction(m_goBack); m_perspective.addToolBarAction(m_goNext); m_perspective.addToolBarWidget(m_filterLineEdit); @@ -362,7 +375,6 @@ void ClangTidyClazyTool::startTool(bool askUserForFileSelection) m_perspective.select(); - m_diagnosticModel->clearAndSetupCache(); m_diagnosticModel->clear(); setToolBusy(true); @@ -381,6 +393,7 @@ void ClangTidyClazyTool::updateRunActions() QString tooltipText = tr("Clang-Tidy and Clazy are still running."); m_startAction->setToolTip(tooltipText); m_stopAction->setEnabled(true); + m_clear->setEnabled(false); } else { QString toolTip = tr("Start Clang-Tidy and Clazy."); Project *project = SessionManager::startupProject(); @@ -394,6 +407,7 @@ void ClangTidyClazyTool::updateRunActions() m_startAction->setToolTip(toolTip); m_startAction->setEnabled(canRun); m_stopAction->setEnabled(false); + m_clear->setEnabled(m_diagnosticModel->diagnosticsCount()); } } diff --git a/src/plugins/clangtools/clangtidyclazytool.h b/src/plugins/clangtools/clangtidyclazytool.h index eb6430ab946..48ffe07906f 100644 --- a/src/plugins/clangtools/clangtidyclazytool.h +++ b/src/plugins/clangtools/clangtidyclazytool.h @@ -69,6 +69,7 @@ private: QAction *m_goBack = nullptr; QAction *m_goNext = nullptr; + QAction *m_clear = nullptr; Utils::Perspective m_perspective{ClangTidyClazyPerspectiveId, tr("Clang-Tidy and Clazy")}; }; diff --git a/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp b/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp index 50b666b7af6..eb13577b54b 100644 --- a/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp +++ b/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp @@ -90,6 +90,12 @@ int ClangToolsDiagnosticModel::diagnosticsCount() const return rootItem()->childCount(); } +void ClangToolsDiagnosticModel::clear() +{ + clearAndSetupCache(); + Utils::TreeModel<>::clear(); +} + void ClangToolsDiagnosticModel::updateItems(const DiagnosticItem *changedItem) { for (auto item : stepsToItemsCache[changedItem->diagnostic().explainingSteps]) { diff --git a/src/plugins/clangtools/clangtoolsdiagnosticmodel.h b/src/plugins/clangtools/clangtoolsdiagnosticmodel.h index b4c108f6f78..c68e3e8f71d 100644 --- a/src/plugins/clangtools/clangtoolsdiagnosticmodel.h +++ b/src/plugins/clangtools/clangtoolsdiagnosticmodel.h @@ -107,7 +107,7 @@ public: DiagnosticRole = Debugger::DetailedErrorView::FullTextRole + 1 }; - void clearAndSetupCache(); + void clear(); void removeWatchedPath(const QString &path); void addWatchedPath(const QString &path); @@ -118,6 +118,7 @@ private: void connectFileWatcher(); void updateItems(const DiagnosticItem *changedItem); void onFileChanged(const QString &path); + void clearAndSetupCache(); private: std::map, QVector> stepsToItemsCache;