From 28cf277cc178a89c19dd9b2d15cbeb6a826b6171 Mon Sep 17 00:00:00 2001
From: dt <qtc-committer@nokia.com>
Date: Mon, 28 Mar 2011 19:58:13 +0200
Subject: [PATCH] RunControl: Show correct icon in application output

Add a virtual icon() method to runcontrol.
Actually currently the icon only varies between modes of running.

Task-Nr: QTCREATORBUG-1232
---
 src/plugins/analyzerbase/analyzerruncontrol.cpp       |  5 +++++
 src/plugins/analyzerbase/analyzerruncontrol.h         |  1 +
 src/plugins/debugger/debuggerrunner.cpp               |  5 +++++
 src/plugins/debugger/debuggerrunner.h                 |  1 +
 .../projectexplorer/localapplicationruncontrol.cpp    |  5 +++++
 .../projectexplorer/localapplicationruncontrol.h      |  1 +
 src/plugins/projectexplorer/outputwindow.cpp          | 11 ++++-------
 src/plugins/projectexplorer/outputwindow.h            |  1 -
 src/plugins/projectexplorer/runconfiguration.h        |  5 +++++
 .../qmlprojectmanager/qmlprojectruncontrol.cpp        |  5 +++++
 src/plugins/qmlprojectmanager/qmlprojectruncontrol.h  |  1 +
 .../qt4projectmanager/qt-maemo/maemoruncontrol.cpp    |  5 +++++
 .../qt4projectmanager/qt-maemo/maemoruncontrol.h      |  1 +
 .../qt4projectmanager/qt-s60/codaruncontrol.cpp       |  6 ++++++
 src/plugins/qt4projectmanager/qt-s60/codaruncontrol.h |  1 +
 .../qt-s60/s60emulatorrunconfiguration.cpp            |  7 +++++++
 .../qt-s60/s60emulatorrunconfiguration.h              |  1 +
 .../qt4projectmanager/qt-s60/trkruncontrol.cpp        |  5 +++++
 src/plugins/qt4projectmanager/qt-s60/trkruncontrol.h  |  1 +
 19 files changed, 60 insertions(+), 8 deletions(-)

diff --git a/src/plugins/analyzerbase/analyzerruncontrol.cpp b/src/plugins/analyzerbase/analyzerruncontrol.cpp
index e46aac0b617..55058f13ebf 100644
--- a/src/plugins/analyzerbase/analyzerruncontrol.cpp
+++ b/src/plugins/analyzerbase/analyzerruncontrol.cpp
@@ -169,6 +169,11 @@ QString AnalyzerRunControl::displayName() const
     return AnalyzerManager::instance()->currentTool()->displayName();
 }
 
+QIcon AnalyzerRunControl::icon() const
+{
+    return QIcon(QLatin1String(":/images/analyzer_start_small.png"));
+}
+
 void AnalyzerRunControl::receiveStandardOutput(const QString &text)
 {
     appendMessage(text, ProjectExplorer::StdOutFormat);
diff --git a/src/plugins/analyzerbase/analyzerruncontrol.h b/src/plugins/analyzerbase/analyzerruncontrol.h
index dbb498025f7..03333d06a58 100644
--- a/src/plugins/analyzerbase/analyzerruncontrol.h
+++ b/src/plugins/analyzerbase/analyzerruncontrol.h
@@ -91,6 +91,7 @@ public:
     StopResult stop();
     bool isRunning() const;
     QString displayName() const;
+    QIcon icon() const;
 
 private slots:
     void receiveStandardOutput(const QString &);
diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp
index daed9af1f9d..2e8f4135f41 100644
--- a/src/plugins/debugger/debuggerrunner.cpp
+++ b/src/plugins/debugger/debuggerrunner.cpp
@@ -227,6 +227,11 @@ QString DebuggerRunControl::displayName() const
     return d->m_engine->startParameters().displayName;
 }
 
+QIcon DebuggerRunControl::icon() const
+{
+    return QIcon(ProjectExplorer::Constants::ICON_DEBUG_SMALL);
+}
+
 void DebuggerRunControl::setCustomEnvironment(Utils::Environment env)
 {
     QTC_ASSERT(d->m_engine, return);
diff --git a/src/plugins/debugger/debuggerrunner.h b/src/plugins/debugger/debuggerrunner.h
index 70991889ff7..fdc5371b745 100644
--- a/src/plugins/debugger/debuggerrunner.h
+++ b/src/plugins/debugger/debuggerrunner.h
@@ -96,6 +96,7 @@ public:
     StopResult stop(); // Called from SnapshotWindow.
     bool isRunning() const;
     QString displayName() const;
+    QIcon icon() const;
 
     void setCustomEnvironment(Utils::Environment env);
     void startFailed();
diff --git a/src/plugins/projectexplorer/localapplicationruncontrol.cpp b/src/plugins/projectexplorer/localapplicationruncontrol.cpp
index d932a19f7d2..e778e383194 100644
--- a/src/plugins/projectexplorer/localapplicationruncontrol.cpp
+++ b/src/plugins/projectexplorer/localapplicationruncontrol.cpp
@@ -122,6 +122,11 @@ bool LocalApplicationRunControl::isRunning() const
     return m_applicationLauncher.isRunning();
 }
 
+QIcon LocalApplicationRunControl::icon() const
+{
+    return QIcon(ProjectExplorer::Constants::ICON_RUN_SMALL);
+}
+
 void LocalApplicationRunControl::slotAppendMessage(const QString &err,
                                                    OutputFormat format)
 {
diff --git a/src/plugins/projectexplorer/localapplicationruncontrol.h b/src/plugins/projectexplorer/localapplicationruncontrol.h
index 061f4a317bf..a796fe999cb 100644
--- a/src/plugins/projectexplorer/localapplicationruncontrol.h
+++ b/src/plugins/projectexplorer/localapplicationruncontrol.h
@@ -63,6 +63,7 @@ public:
     virtual void start();
     virtual StopResult stop();
     virtual bool isRunning() const;
+    virtual QIcon icon() const;
 private slots:
     void processExited(int exitCode);
     void slotAppendMessage(const QString &err, ProjectExplorer::OutputFormat isError);
diff --git a/src/plugins/projectexplorer/outputwindow.cpp b/src/plugins/projectexplorer/outputwindow.cpp
index be044ae4f05..4d738e347c4 100644
--- a/src/plugins/projectexplorer/outputwindow.cpp
+++ b/src/plugins/projectexplorer/outputwindow.cpp
@@ -88,11 +88,8 @@ OutputPane::OutputPane() :
     m_reRunButton(new QToolButton),
     m_stopButton(new QToolButton)
 {
-    m_runIcon.addFile(Constants::ICON_RUN);
-    m_runIcon.addFile(Constants::ICON_RUN_SMALL);
-
     // Rerun
-    m_reRunButton->setIcon(m_runIcon);
+    m_reRunButton->setIcon(QIcon(ProjectExplorer::Constants::ICON_RUN_SMALL));
     m_reRunButton->setToolTip(tr("Re-run this run-configuration"));
     m_reRunButton->setAutoRaise(true);
     m_reRunButton->setEnabled(false);
@@ -396,7 +393,7 @@ void OutputPane::tabChanged(int i)
         RunControl *rc = m_runControlTabs.at(index).runControl;
         m_stopAction->setEnabled(rc->isRunning());
         m_reRunButton->setEnabled(!rc->isRunning());
-        m_reRunButton->setIcon(m_runIcon);
+        m_reRunButton->setIcon(rc->icon());
     }
 }
 
@@ -406,7 +403,7 @@ void OutputPane::runControlStarted()
     if (current && current == sender()) {
         m_reRunButton->setEnabled(false);
         m_stopAction->setEnabled(true);
-        m_reRunButton->setIcon(m_runIcon);
+        m_reRunButton->setIcon(current->icon());
     }
 }
 
@@ -427,7 +424,7 @@ void OutputPane::runControlFinished()
     if (current && current == sender()) {
         m_reRunButton->setEnabled(true);
         m_stopAction->setEnabled(false);
-        m_reRunButton->setIcon(m_runIcon);
+        m_reRunButton->setIcon(current->icon());
     }
     // Check for asynchronous close. Close the tab.
     if (m_runControlTabs.at(senderIndex).asyncClosing)
diff --git a/src/plugins/projectexplorer/outputwindow.h b/src/plugins/projectexplorer/outputwindow.h
index 76a439d7cfb..8b7216a294c 100644
--- a/src/plugins/projectexplorer/outputwindow.h
+++ b/src/plugins/projectexplorer/outputwindow.h
@@ -146,7 +146,6 @@ private:
     QAction *m_stopAction;
     QToolButton *m_reRunButton;
     QToolButton *m_stopButton;
-    QIcon m_runIcon;
 };
 
 
diff --git a/src/plugins/projectexplorer/runconfiguration.h b/src/plugins/projectexplorer/runconfiguration.h
index faf8a95aa98..50ac67a1548 100644
--- a/src/plugins/projectexplorer/runconfiguration.h
+++ b/src/plugins/projectexplorer/runconfiguration.h
@@ -42,6 +42,7 @@
 #include <QtCore/QMetaType>
 #include <QtCore/QWeakPointer>
 #include <QtGui/QWidget>
+#include <QtGui/QIcon>
 
 namespace ProjectExplorer {
 
@@ -252,6 +253,10 @@ public:
     virtual StopResult stop() = 0;
     virtual bool isRunning() const = 0;
     virtual QString displayName() const;
+    /// \returns the icon to be shown in the outputwindow
+    // TODO the icon differs currently only per "mode"
+    // so this is more flexibel then it needs to be
+    virtual QIcon icon() const = 0;
 
     bool sameRunConfiguration(const RunControl *other) const;
 
diff --git a/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp b/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp
index 01620f96e06..edee8661ab3 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp
+++ b/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp
@@ -113,6 +113,11 @@ bool QmlRunControl::isRunning() const
     return m_applicationLauncher.isRunning();
 }
 
+QIcon QmlRunControl::icon() const
+{
+    return QIcon(ProjectExplorer::Constants::ICON_RUN_SMALL);
+}
+
 void QmlRunControl::slotBringApplicationToForeground(qint64 pid)
 {
     bringApplicationToForeground(pid);
diff --git a/src/plugins/qmlprojectmanager/qmlprojectruncontrol.h b/src/plugins/qmlprojectmanager/qmlprojectruncontrol.h
index 5def7465962..df44e440339 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectruncontrol.h
+++ b/src/plugins/qmlprojectmanager/qmlprojectruncontrol.h
@@ -54,6 +54,7 @@ public:
     virtual void start();
     virtual StopResult stop();
     virtual bool isRunning() const;
+    virtual QIcon icon() const;
 
 private slots:
     void processExited(int exitCode);
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.cpp
index 432f76695c3..e5ffd635e77 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.cpp
@@ -140,6 +140,11 @@ bool MaemoRunControl::isRunning() const
     return m_running;
 }
 
+QIcon MaemoRunControl::icon() const
+{
+    return QIcon(ProjectExplorer::Constants::ICON_RUN_SMALL);
+}
+
 void MaemoRunControl::handleError(const QString &errString)
 {
     stop();
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.h b/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.h
index 5e92064fa33..5b81cb8ba26 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.h
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.h
@@ -55,6 +55,7 @@ public:
     virtual void start();
     virtual StopResult stop();
     virtual bool isRunning() const;
+    virtual QIcon icon() const;
 
 private slots:
     void startExecution();
diff --git a/src/plugins/qt4projectmanager/qt-s60/codaruncontrol.cpp b/src/plugins/qt4projectmanager/qt-s60/codaruncontrol.cpp
index ac5977d0d40..2bdf165c53e 100644
--- a/src/plugins/qt4projectmanager/qt-s60/codaruncontrol.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/codaruncontrol.cpp
@@ -47,6 +47,7 @@
 
 #include <coreplugin/icore.h>
 #include <utils/qtcassert.h>
+#include <projectexplorer/projectexplorerconstants.h>
 
 #include <symbianutils/symbiandevicemanager.h>
 
@@ -110,6 +111,11 @@ bool CodaRunControl::isRunning() const
     return m_state >= StateConnecting;
 }
 
+QIcon CodaRunControl::icon() const
+{
+    return QIcon(ProjectExplorer::Constants::ICON_DEBUG_SMALL);
+}
+
 bool CodaRunControl::setupLauncher()
 {
     QTC_ASSERT(!m_codaDevice, return false);
diff --git a/src/plugins/qt4projectmanager/qt-s60/codaruncontrol.h b/src/plugins/qt4projectmanager/qt-s60/codaruncontrol.h
index 72a667062e4..382b0f9f64b 100644
--- a/src/plugins/qt4projectmanager/qt-s60/codaruncontrol.h
+++ b/src/plugins/qt4projectmanager/qt-s60/codaruncontrol.h
@@ -63,6 +63,7 @@ public:
     virtual ~CodaRunControl();
 
     virtual bool isRunning() const;
+    virtual QIcon icon() const;
 
     static QMessageBox *createCodaWaitingMessageBox(QWidget *parent = 0);
 
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp
index 343c23e9dd4..1bbde9567e4 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp
@@ -40,6 +40,8 @@
 #include "qt4projectmanagerconstants.h"
 #include "qtoutputformatter.h"
 
+#include <projectexplorer/projectexplorerconstants.h>
+
 #include <utils/qtcassert.h>
 #include <utils/detailswidget.h>
 
@@ -369,6 +371,11 @@ bool S60EmulatorRunControl::isRunning() const
     return m_applicationLauncher.isRunning();
 }
 
+QIcon S60EmulatorRunControl::icon() const
+{
+    return QIcon(ProjectExplorer::Constants::ICON_RUN_SMALL);
+}
+
 void S60EmulatorRunControl::slotError(const QString & err)
 {
     appendMessage(err, ErrorMessageFormat);
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.h b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.h
index 38162aba356..b7bf4427ea6 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.h
+++ b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.h
@@ -146,6 +146,7 @@ public:
     void start();
     virtual StopResult stop();
     bool isRunning() const;
+    QIcon icon() const;
 
 private slots:
     void processExited(int exitCode);
diff --git a/src/plugins/qt4projectmanager/qt-s60/trkruncontrol.cpp b/src/plugins/qt4projectmanager/qt-s60/trkruncontrol.cpp
index c60478385cd..8985565b8bf 100644
--- a/src/plugins/qt4projectmanager/qt-s60/trkruncontrol.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/trkruncontrol.cpp
@@ -45,6 +45,7 @@
 #include <symbianutils/bluetoothlistener_gui.h>
 #include <symbianutils/launcher.h>
 #include <symbianutils/symbiandevicemanager.h>
+#include <projectexplorer/projectexplorerconstants.h>
 
 #include <utils/qtcassert.h>
 
@@ -97,7 +98,11 @@ bool TrkRunControl::isRunning() const
     return m_launcher && (m_launcher->state() == trk::Launcher::Connecting
                           || m_launcher->state() == trk::Launcher::Connected
                           || m_launcher->state() == trk::Launcher::WaitingForTrk);
+}
 
+QIcon TrkRunControl::icon() const
+{
+    return QIcon(ProjectExplorer::Constants::ICON_DEBUG_SMALL);
 }
 
 bool TrkRunControl::setupLauncher()
diff --git a/src/plugins/qt4projectmanager/qt-s60/trkruncontrol.h b/src/plugins/qt4projectmanager/qt-s60/trkruncontrol.h
index 8bb4c58d8a8..d1ad5b2032d 100644
--- a/src/plugins/qt4projectmanager/qt-s60/trkruncontrol.h
+++ b/src/plugins/qt4projectmanager/qt-s60/trkruncontrol.h
@@ -60,6 +60,7 @@ public:
     TrkRunControl(ProjectExplorer::RunConfiguration *runConfiguration, const QString &mode);
     ~TrkRunControl();
     virtual bool isRunning() const;
+    virtual QIcon icon() const;
 
     static QMessageBox *createTrkWaitingMessageBox(const QString &port, QWidget *parent = 0);
 
-- 
GitLab