From feaa2b2c097603bee7eab50c2882dfa3b919f6fd Mon Sep 17 00:00:00 2001
From: Tobias Hunger <tobias.hunger@nokia.com>
Date: Fri, 18 Jun 2010 11:16:28 +0200
Subject: [PATCH] Add task handler that copies task data to the clipboard

 * Add task handler that enables copying task data into the clipboard

 * This is not yet used!
---
 .../projectexplorer/copytaskhandler.cpp       | 70 +++++++++++++++++++
 src/plugins/projectexplorer/copytaskhandler.h | 52 ++++++++++++++
 .../projectexplorer/projectexplorer.cpp       |  2 +
 .../projectexplorer/projectexplorer.pro       |  2 +
 4 files changed, 126 insertions(+)
 create mode 100644 src/plugins/projectexplorer/copytaskhandler.cpp
 create mode 100644 src/plugins/projectexplorer/copytaskhandler.h

diff --git a/src/plugins/projectexplorer/copytaskhandler.cpp b/src/plugins/projectexplorer/copytaskhandler.cpp
new file mode 100644
index 00000000000..8694050cd2f
--- /dev/null
+++ b/src/plugins/projectexplorer/copytaskhandler.cpp
@@ -0,0 +1,70 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#include "copytaskhandler.h"
+
+#include "task.h"
+
+#include <coreplugin/coreconstants.h>
+
+#include <QtGui/QAction>
+#include <QtGui/QApplication>
+#include <QtGui/QClipboard>
+
+using namespace ProjectExplorer::Internal;
+
+CopyTaskHandler::CopyTaskHandler() :
+    ITaskHandler(QLatin1String(Core::Constants::COPY))
+{ }
+
+void CopyTaskHandler::handle(const ProjectExplorer::Task &task)
+{
+    QString type;
+    switch (task.type) {
+    case Task::Error:
+        type = tr("error: ", "Task is of type error");
+        break;
+    case Task::Warning:
+        type = tr("warning: ", "Task is of type warning");
+        break;
+    default:
+        break;
+    }
+
+    QApplication::clipboard()->setText(task.file + ':' +
+                                       QString::number(task.line) + ": "
+                                       + type + task.description);
+}
+
+QAction *CopyTaskHandler::createAction(QObject *parent)
+{
+    QAction *copyAction = new QAction(tr("&Copy", "Name of the action triggering the copytaskhandler"), parent);
+    copyAction->setToolTip(tr("Copy task to clipboard"));
+    return copyAction;
+}
diff --git a/src/plugins/projectexplorer/copytaskhandler.h b/src/plugins/projectexplorer/copytaskhandler.h
new file mode 100644
index 00000000000..0d8de5c1991
--- /dev/null
+++ b/src/plugins/projectexplorer/copytaskhandler.h
@@ -0,0 +1,52 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+**
+**************************************************************************/
+
+#ifndef PROJECTEXPLORER_COPYTASKHANDLER_H
+#define PROJECTEXPLORER_COPYTASKHANDLER_H
+
+#include "projectexplorer_export.h"
+
+#include "itaskhandler.h"
+
+namespace ProjectExplorer {
+namespace Internal {
+
+class PROJECTEXPLORER_EXPORT CopyTaskHandler : public ITaskHandler
+{
+public:
+    CopyTaskHandler();
+
+    void handle(const Task &task);
+    QAction *createAction(QObject *parent = 0);
+};
+
+} // namespace Internal
+} // namespace ProjectExplorer
+
+#endif // PROJECTEXPLORER_COPYTASKHANDLER_H
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index f2bf78cd7af..c6a888af6ad 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -33,6 +33,7 @@
 #include "projectexplorersettings.h"
 #include "target.h"
 #include "targetsettingspanel.h"
+#include "copytaskhandler.h"
 #include "showineditortaskhandler.h"
 #include "applicationrunconfiguration.h"
 #include "allprojectsfilter.h"
@@ -280,6 +281,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
     addAutoReleasedObject(d->m_projectsMode);
     d->m_proWindow->layout()->addWidget(new Core::FindToolBarPlaceHolder(d->m_proWindow));
 
+    addAutoReleasedObject(new CopyTaskHandler);
     addAutoReleasedObject(new ShowInEditorTaskHandler);
 
     d->m_buildManager = new BuildManager(this);
diff --git a/src/plugins/projectexplorer/projectexplorer.pro b/src/plugins/projectexplorer/projectexplorer.pro
index 3964d145642..5ccab95084c 100644
--- a/src/plugins/projectexplorer/projectexplorer.pro
+++ b/src/plugins/projectexplorer/projectexplorer.pro
@@ -18,6 +18,7 @@ HEADERS += projectexplorer.h \
     targetsettingspanel.h \
     task.h \
     itaskhandler.h \
+    copytaskhandler.h \
     showineditortaskhandler.h \
     taskwindow.h \
     outputwindow.h \
@@ -97,6 +98,7 @@ SOURCES += projectexplorer.cpp \
     projectconfiguration.cpp \
     gnumakeparser.cpp \
     task.cpp \
+    copytaskhandler.cpp \
     showineditortaskhandler.cpp \
     taskwindow.cpp \
     outputwindow.cpp \
-- 
GitLab