From f82c4ea3c6321c2fa7c939a3ddf917cb3061b9e7 Mon Sep 17 00:00:00 2001
From: Tobias Hunger <tobias.hunger@nokia.com>
Date: Tue, 7 Jun 2011 17:53:46 +0200
Subject: [PATCH] Tasks: Only report warning tasks in build progress

Task-number: QTCREATORBUG-5020
Change-Id: Iead3d76509dd7b6d6c04d0ef64b7b3d2cad316d0
Reviewed-on: http://codereview.qt.nokia.com/369
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
---
 src/plugins/projectexplorer/buildprogress.cpp |  2 +-
 src/plugins/projectexplorer/taskwindow.cpp    | 22 +++++++++++++++++++
 src/plugins/projectexplorer/taskwindow.h      |  1 +
 3 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/src/plugins/projectexplorer/buildprogress.cpp b/src/plugins/projectexplorer/buildprogress.cpp
index ee4534544f2..651d6e3e97f 100644
--- a/src/plugins/projectexplorer/buildprogress.cpp
+++ b/src/plugins/projectexplorer/buildprogress.cpp
@@ -93,7 +93,7 @@ void BuildProgress::updateState()
     m_errorIcon->setEnabled(haveErrors);
     m_errorLabel->setEnabled(haveErrors);
     m_errorLabel->setText(QString("%1").arg(errors));
-    int warnings = m_taskWindow->taskCount()-errors;
+    int warnings = m_taskWindow->warningTaskCount();
     bool haveWarnings = (warnings > 0);
     m_warningIcon->setEnabled(haveWarnings);
     m_warningLabel->setEnabled(haveWarnings);
diff --git a/src/plugins/projectexplorer/taskwindow.cpp b/src/plugins/projectexplorer/taskwindow.cpp
index 2d7cf1b63bb..2888f076701 100644
--- a/src/plugins/projectexplorer/taskwindow.cpp
+++ b/src/plugins/projectexplorer/taskwindow.cpp
@@ -109,6 +109,7 @@ public:
 
     int taskCount();
     int errorTaskCount();
+    int warningTaskCount();
 
     bool hasFile(const QModelIndex &index) const;
 
@@ -124,6 +125,7 @@ private:
     const QIcon m_warningIcon;
     int m_taskCount;
     int m_errorTaskCount;
+    int m_warningTaskCount;
     int m_sizeOfLineNumber;
     QString m_lineMeasurementFont;
 };
@@ -292,6 +294,7 @@ TaskModel::TaskModel() :
     m_warningIcon(QLatin1String(":/projectexplorer/images/compile_warning.png")),
     m_taskCount(0),
     m_errorTaskCount(0),
+    m_warningTaskCount(0),
     m_sizeOfLineNumber(0)
 {
 }
@@ -306,6 +309,11 @@ int TaskModel::errorTaskCount()
     return m_errorTaskCount;
 }
 
+int TaskModel::warningTaskCount()
+{
+    return m_warningTaskCount;
+}
+
 bool TaskModel::hasFile(const QModelIndex &index) const
 {
     int row = index.row();
@@ -362,6 +370,8 @@ void TaskModel::addTask(const Task &task)
     ++m_taskCount;
     if (task.type == Task::Error)
         ++m_errorTaskCount;
+    if (task.type == Task::Warning)
+        ++m_warningTaskCount;
 }
 
 void TaskModel::removeTask(const Task &task)
@@ -373,6 +383,8 @@ void TaskModel::removeTask(const Task &task)
         --m_taskCount;
         if (task.type == Task::Error)
             --m_errorTaskCount;
+        if (task.type == Task::Warning)
+            --m_warningTaskCount;
         endRemoveRows();
     }
 }
@@ -387,12 +399,14 @@ void TaskModel::clearTasks(const QString &categoryId)
         m_tasksInCategory.clear();
         m_taskCount = 0;
         m_errorTaskCount = 0;
+        m_warningTaskCount = 0;
         endRemoveRows();
         m_maxSizeOfFileName = 0;
     } else {
         int index = 0;
         int start = 0;
         int subErrorTaskCount = 0;
+        int subWarningTaskCount = 0;
         while (index < m_tasks.size()) {
             while (index < m_tasks.size() && m_tasks.at(index).category != categoryId) {
                 ++start;
@@ -403,6 +417,8 @@ void TaskModel::clearTasks(const QString &categoryId)
             while (index < m_tasks.size() && m_tasks.at(index).category == categoryId) {
                 if (m_tasks.at(index).type == Task::Error)
                     ++subErrorTaskCount;
+                if (m_tasks.at(index).type == Task::Warning)
+                    ++subWarningTaskCount;
                 ++index;
             }
             // Index is now on the first non category
@@ -416,6 +432,7 @@ void TaskModel::clearTasks(const QString &categoryId)
 
             m_taskCount -= index - start;
             m_errorTaskCount -= subErrorTaskCount;
+            m_warningTaskCount -= subWarningTaskCount;
 
             endRemoveRows();
             index = start;
@@ -853,6 +870,11 @@ int TaskWindow::errorTaskCount() const
     return d->m_model->errorTaskCount();
 }
 
+int TaskWindow::warningTaskCount() const
+{
+    return d->m_model->warningTaskCount();
+}
+
 int TaskWindow::priorityInStatusBar() const
 {
     return 90;
diff --git a/src/plugins/projectexplorer/taskwindow.h b/src/plugins/projectexplorer/taskwindow.h
index d215eb2a0c9..80c04cef8d0 100644
--- a/src/plugins/projectexplorer/taskwindow.h
+++ b/src/plugins/projectexplorer/taskwindow.h
@@ -58,6 +58,7 @@ public:
     virtual ~TaskWindow();
 
     int taskCount() const;
+    int warningTaskCount() const;
     int errorTaskCount() const;
 
     // IOutputPane
-- 
GitLab