From 13c8f9eaaae4adf7d4dc92cc6cb1f0d5cd3995b0 Mon Sep 17 00:00:00 2001 From: Christian Kamm <christian.d.kamm@nokia.com> Date: Wed, 10 Aug 2011 08:21:10 +0200 Subject: [PATCH] BuildManager: Only pop up build issues if there are relevant issues. Previously it also poped up and showed a build failure if there were any error-type tasks in 'My Tasks', 'Analyser' or 'QML'. Change-Id: Ie86be0afe1f0b7571b2cb764b7c53f282183b513 Reviewed-on: http://codereview.qt.nokia.com/2807 Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com> --- src/plugins/projectexplorer/buildmanager.cpp | 11 +++++-- src/plugins/projectexplorer/taskwindow.cpp | 31 ++++++++++++++++---- src/plugins/projectexplorer/taskwindow.h | 6 ++-- 3 files changed, 36 insertions(+), 12 deletions(-) diff --git a/src/plugins/projectexplorer/buildmanager.cpp b/src/plugins/projectexplorer/buildmanager.cpp index 13f54b1c63..ba258e13bb 100644 --- a/src/plugins/projectexplorer/buildmanager.cpp +++ b/src/plugins/projectexplorer/buildmanager.cpp @@ -228,7 +228,9 @@ void BuildManager::cancel() void BuildManager::updateTaskCount() { Core::ProgressManager *progressManager = Core::ICore::instance()->progressManager(); - const int errors = d->m_taskWindow->errorTaskCount(); + const int errors = + d->m_taskWindow->errorTaskCount(Constants::TASK_CATEGORY_BUILDSYSTEM) + + d->m_taskWindow->errorTaskCount(Constants::TASK_CATEGORY_COMPILE); if (errors > 0) { progressManager->setApplicationLabel(QString::number(errors)); } else { @@ -287,7 +289,10 @@ void BuildManager::toggleTaskWindow() bool BuildManager::tasksAvailable() const { - return d->m_taskWindow->taskCount() > 0; + const int count = + d->m_taskWindow->taskCount(Constants::TASK_CATEGORY_BUILDSYSTEM) + + d->m_taskWindow->taskCount(Constants::TASK_CATEGORY_COMPILE); + return count > 0; } void BuildManager::startBuildQueue() @@ -327,7 +332,7 @@ void BuildManager::startBuildQueue() void BuildManager::showBuildResults() { - if (d->m_taskWindow->taskCount() != 0) + if (tasksAvailable()) toggleTaskWindow(); else toggleOutputWindow(); diff --git a/src/plugins/projectexplorer/taskwindow.cpp b/src/plugins/projectexplorer/taskwindow.cpp index bf95954547..c7255ee56c 100644 --- a/src/plugins/projectexplorer/taskwindow.cpp +++ b/src/plugins/projectexplorer/taskwindow.cpp @@ -876,19 +876,38 @@ void TaskWindow::filterCategoryTriggered(QAction *action) setCategoryVisibility(categoryId, action->isChecked()); } -int TaskWindow::taskCount() const +int TaskWindow::taskCount(const QString &category) const { - return d->m_model->taskCount(); + if (category.isEmpty()) + return d->m_model->taskCount(); + + return d->m_model->tasks(category).size(); } -int TaskWindow::errorTaskCount() const +int TaskWindow::errorTaskCount(const QString &category) const { - return d->m_model->errorTaskCount(); + if (category.isEmpty()) + return d->m_model->errorTaskCount(); + + int count = 0; + foreach (const Task &task, d->m_model->tasks(category)) { + if (task.type == Task::Error) + ++count; + } + return count; } -int TaskWindow::warningTaskCount() const +int TaskWindow::warningTaskCount(const QString &category) const { - return d->m_model->warningTaskCount(); + if (category.isEmpty()) + return d->m_model->warningTaskCount(); + + int count = 0; + foreach (const Task &task, d->m_model->tasks(category)) { + if (task.type == Task::Warning) + ++count; + } + return count; } int TaskWindow::priorityInStatusBar() const diff --git a/src/plugins/projectexplorer/taskwindow.h b/src/plugins/projectexplorer/taskwindow.h index bc1f75eb42..b5f515af2b 100644 --- a/src/plugins/projectexplorer/taskwindow.h +++ b/src/plugins/projectexplorer/taskwindow.h @@ -57,9 +57,9 @@ public: TaskWindow(ProjectExplorer::TaskHub *taskHub); virtual ~TaskWindow(); - int taskCount() const; - int warningTaskCount() const; - int errorTaskCount() const; + int taskCount(const QString &category = QString()) const; + int warningTaskCount(const QString &category = QString()) const; + int errorTaskCount(const QString &category = QString()) const; // IOutputPane QWidget *outputWidget(QWidget *); -- GitLab