ClangTools: Add clear button to toolbar

Change-Id: I0caeb3fa118b57084f7df7a22952f3057ca601e0
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
Nikolai Kosjar
2019-01-22 15:19:17 +01:00
parent ef4c53e9ef
commit 9ec8deb55e
4 changed files with 24 additions and 2 deletions

View File

@@ -245,6 +245,18 @@ ClangTidyClazyTool::ClangTidyClazyTool()
connect(action, &QAction::triggered, m_diagnosticView, &DetailedErrorView::goNext); connect(action, &QAction::triggered, m_diagnosticView, &DetailedErrorView::goNext);
m_goNext = action; 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 // Filter line edit
m_filterLineEdit = new Utils::FancyLineEdit(); m_filterLineEdit = new Utils::FancyLineEdit();
m_filterLineEdit->setFiltering(true); m_filterLineEdit->setFiltering(true);
@@ -291,6 +303,7 @@ ClangTidyClazyTool::ClangTidyClazyTool()
m_perspective.addToolBarAction(m_startAction); m_perspective.addToolBarAction(m_startAction);
m_perspective.addToolBarAction(m_stopAction); m_perspective.addToolBarAction(m_stopAction);
m_perspective.addToolBarAction(m_clear);
m_perspective.addToolBarAction(m_goBack); m_perspective.addToolBarAction(m_goBack);
m_perspective.addToolBarAction(m_goNext); m_perspective.addToolBarAction(m_goNext);
m_perspective.addToolBarWidget(m_filterLineEdit); m_perspective.addToolBarWidget(m_filterLineEdit);
@@ -362,7 +375,6 @@ void ClangTidyClazyTool::startTool(bool askUserForFileSelection)
m_perspective.select(); m_perspective.select();
m_diagnosticModel->clearAndSetupCache();
m_diagnosticModel->clear(); m_diagnosticModel->clear();
setToolBusy(true); setToolBusy(true);
@@ -381,6 +393,7 @@ void ClangTidyClazyTool::updateRunActions()
QString tooltipText = tr("Clang-Tidy and Clazy are still running."); QString tooltipText = tr("Clang-Tidy and Clazy are still running.");
m_startAction->setToolTip(tooltipText); m_startAction->setToolTip(tooltipText);
m_stopAction->setEnabled(true); m_stopAction->setEnabled(true);
m_clear->setEnabled(false);
} else { } else {
QString toolTip = tr("Start Clang-Tidy and Clazy."); QString toolTip = tr("Start Clang-Tidy and Clazy.");
Project *project = SessionManager::startupProject(); Project *project = SessionManager::startupProject();
@@ -394,6 +407,7 @@ void ClangTidyClazyTool::updateRunActions()
m_startAction->setToolTip(toolTip); m_startAction->setToolTip(toolTip);
m_startAction->setEnabled(canRun); m_startAction->setEnabled(canRun);
m_stopAction->setEnabled(false); m_stopAction->setEnabled(false);
m_clear->setEnabled(m_diagnosticModel->diagnosticsCount());
} }
} }

View File

@@ -69,6 +69,7 @@ private:
QAction *m_goBack = nullptr; QAction *m_goBack = nullptr;
QAction *m_goNext = nullptr; QAction *m_goNext = nullptr;
QAction *m_clear = nullptr;
Utils::Perspective m_perspective{ClangTidyClazyPerspectiveId, tr("Clang-Tidy and Clazy")}; Utils::Perspective m_perspective{ClangTidyClazyPerspectiveId, tr("Clang-Tidy and Clazy")};
}; };

View File

@@ -90,6 +90,12 @@ int ClangToolsDiagnosticModel::diagnosticsCount() const
return rootItem()->childCount(); return rootItem()->childCount();
} }
void ClangToolsDiagnosticModel::clear()
{
clearAndSetupCache();
Utils::TreeModel<>::clear();
}
void ClangToolsDiagnosticModel::updateItems(const DiagnosticItem *changedItem) void ClangToolsDiagnosticModel::updateItems(const DiagnosticItem *changedItem)
{ {
for (auto item : stepsToItemsCache[changedItem->diagnostic().explainingSteps]) { for (auto item : stepsToItemsCache[changedItem->diagnostic().explainingSteps]) {

View File

@@ -107,7 +107,7 @@ public:
DiagnosticRole = Debugger::DetailedErrorView::FullTextRole + 1 DiagnosticRole = Debugger::DetailedErrorView::FullTextRole + 1
}; };
void clearAndSetupCache(); void clear();
void removeWatchedPath(const QString &path); void removeWatchedPath(const QString &path);
void addWatchedPath(const QString &path); void addWatchedPath(const QString &path);
@@ -118,6 +118,7 @@ private:
void connectFileWatcher(); void connectFileWatcher();
void updateItems(const DiagnosticItem *changedItem); void updateItems(const DiagnosticItem *changedItem);
void onFileChanged(const QString &path); void onFileChanged(const QString &path);
void clearAndSetupCache();
private: private:
std::map<QVector<ExplainingStep>, QVector<DiagnosticItem *>> stepsToItemsCache; std::map<QVector<ExplainingStep>, QVector<DiagnosticItem *>> stepsToItemsCache;