From d6848fc83105d331cab3c63ffc3cd5e45d2f75e9 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 9 Apr 2019 15:03:54 +0200 Subject: [PATCH] ProjectExplorer: Allow text filtering in issues pane MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QTCREATORBUG-21893 Fixes: QTCREATORBUG-22083 Change-Id: Ida227ce21d90fc2487cf3009e957eedeec507fd0 Reviewed-by: André Hartmann --- src/plugins/coreplugin/ioutputpane.h | 1 + src/plugins/projectexplorer/taskmodel.cpp | 7 ++++++- src/plugins/projectexplorer/taskwindow.cpp | 10 +++++++++- src/plugins/projectexplorer/taskwindow.h | 2 ++ 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/plugins/coreplugin/ioutputpane.h b/src/plugins/coreplugin/ioutputpane.h index 506ecddf5fb..40c6401b379 100644 --- a/src/plugins/coreplugin/ioutputpane.h +++ b/src/plugins/coreplugin/ioutputpane.h @@ -100,6 +100,7 @@ protected: void setupFilterUi(const QString &historyKey); QString filterText() const; void setFilteringEnabled(bool enable); + QWidget *filterWidget() const { return m_filterOutputLineEdit; } void setZoomButtonsEnabled(bool enabled); diff --git a/src/plugins/projectexplorer/taskmodel.cpp b/src/plugins/projectexplorer/taskmodel.cpp index 3baac2c8418..c3fac880e21 100644 --- a/src/plugins/projectexplorer/taskmodel.cpp +++ b/src/plugins/projectexplorer/taskmodel.cpp @@ -362,9 +362,14 @@ bool TaskFilterModel::filterAcceptsTask(const Task &task) const break; } - if (m_categoryIds.contains(task.category)) + if (accept && m_categoryIds.contains(task.category)) accept = false; + if (accept && !filterRegExp().isEmpty() && !task.file.toString().contains(filterRegExp()) + && !task.description.contains(filterRegExp())) { + accept = false; + } + return accept; } diff --git a/src/plugins/projectexplorer/taskwindow.cpp b/src/plugins/projectexplorer/taskwindow.cpp index 0ae486a695b..8f8e96cfb70 100644 --- a/src/plugins/projectexplorer/taskwindow.cpp +++ b/src/plugins/projectexplorer/taskwindow.cpp @@ -289,6 +289,9 @@ TaskWindow::TaskWindow() : d(std::make_unique()) d->m_categoriesButton->setMenu(d->m_categoriesMenu); + setupFilterUi("IssuesPane.Filter"); + setFilteringEnabled(true); + TaskHub *hub = TaskHub::instance(); connect(hub, &TaskHub::categoryAdded, this, &TaskWindow::addCategory); connect(hub, &TaskHub::taskAdded, this, &TaskWindow::addTask); @@ -355,7 +358,7 @@ void TaskWindow::delayedInitialization() QList TaskWindow::toolBarWidgets() const { - return {d->m_filterWarningsButton, d->m_categoriesButton}; + return {d->m_filterWarningsButton, d->m_categoriesButton, filterWidget()}; } QWidget *TaskWindow::outputWidget(QWidget *) @@ -664,6 +667,11 @@ void TaskWindow::goToPrev() triggerDefaultHandler(currentIndex); } +void TaskWindow::updateFilter() +{ + d->m_filter->setFilterRegExp(filterText()); +} + bool TaskWindow::canNavigate() const { return true; diff --git a/src/plugins/projectexplorer/taskwindow.h b/src/plugins/projectexplorer/taskwindow.h index 290927b47bb..efefb72658f 100644 --- a/src/plugins/projectexplorer/taskwindow.h +++ b/src/plugins/projectexplorer/taskwindow.h @@ -82,6 +82,8 @@ signals: void tasksCleared(); private: + void updateFilter() override; + void addCategory(Core::Id categoryId, const QString &displayName, bool visible); void addTask(const ProjectExplorer::Task &task); void removeTask(const ProjectExplorer::Task &task);