From a28f48366cd502fda8f029e5e502fc16c2d0ce25 Mon Sep 17 00:00:00 2001
From: Tobias Hunger <tobias.hunger@digia.com>
Date: Fri, 5 Oct 2012 12:27:27 +0200
Subject: [PATCH] Tasks: Allow for removal of tasks from task list

Change-Id: I97c241baf323621a3fde5f60523df8c9dd9e4e97
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
---
 .../projectexplorer/projectexplorer.cpp       |  2 +
 .../projectexplorer/projectexplorer.pro       |  2 +
 .../projectexplorer/projectexplorer.qbs       |  2 +
 .../projectexplorer/removetaskhandler.cpp     | 56 +++++++++++++++++++
 .../projectexplorer/removetaskhandler.h       | 54 ++++++++++++++++++
 5 files changed, 116 insertions(+)
 create mode 100644 src/plugins/projectexplorer/removetaskhandler.cpp
 create mode 100644 src/plugins/projectexplorer/removetaskhandler.h

diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index 9b0f5db2d2b..50caa284ebf 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -35,6 +35,7 @@
 #include "gcctoolchainfactories.h"
 #include "project.h"
 #include "projectexplorersettings.h"
+#include "removetaskhandler.h"
 #include "kitmanager.h"
 #include "kitoptionspage.h"
 #include "target.h"
@@ -393,6 +394,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
     addAutoReleasedObject(new CopyTaskHandler);
     addAutoReleasedObject(new ShowInEditorTaskHandler);
     addAutoReleasedObject(new VcsAnnotateTaskHandler);
+    addAutoReleasedObject(new RemoveTaskHandler);
     addAutoReleasedObject(new CoreListener);
 
     d->m_outputPane = new AppOutputPane;
diff --git a/src/plugins/projectexplorer/projectexplorer.pro b/src/plugins/projectexplorer/projectexplorer.pro
index a4bd7003df3..26185070f4a 100644
--- a/src/plugins/projectexplorer/projectexplorer.pro
+++ b/src/plugins/projectexplorer/projectexplorer.pro
@@ -15,6 +15,7 @@ HEADERS += projectexplorer.h \
     gcctoolchain.h \
     projectexplorer_export.h \
     projectwindow.h \
+    removetaskhandler.h \
     kit.h \
     kitchooser.h \
     kitconfigwidget.h \
@@ -134,6 +135,7 @@ SOURCES += projectexplorer.cpp \
     clangparser.cpp \
     gcctoolchain.cpp \
     projectwindow.cpp \
+    removetaskhandler.cpp \
     kit.cpp \
     kitchooser.cpp \
     kitinformation.cpp \
diff --git a/src/plugins/projectexplorer/projectexplorer.qbs b/src/plugins/projectexplorer/projectexplorer.qbs
index c008f7be1b3..88c31b89aca 100644
--- a/src/plugins/projectexplorer/projectexplorer.qbs
+++ b/src/plugins/projectexplorer/projectexplorer.qbs
@@ -178,6 +178,8 @@ QtcPlugin {
         "projectwizardpage.cpp",
         "projectwizardpage.h",
         "projectwizardpage.ui",
+        "removetaskhandler.cpp",
+        "removetaskhandler.h",
         "runconfiguration.cpp",
         "runconfiguration.h",
         "runconfigurationmodel.cpp",
diff --git a/src/plugins/projectexplorer/removetaskhandler.cpp b/src/plugins/projectexplorer/removetaskhandler.cpp
new file mode 100644
index 00000000000..a0cff835942
--- /dev/null
+++ b/src/plugins/projectexplorer/removetaskhandler.cpp
@@ -0,0 +1,56 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2012 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: http://www.qt-project.org/
+**
+**
+** GNU Lesser General Public License Usage
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** Other Usage
+**
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**************************************************************************/
+
+#include "removetaskhandler.h"
+
+#include "projectexplorer.h"
+#include "task.h"
+#include "taskhub.h"
+
+#include <coreplugin/coreconstants.h>
+
+#include <QDir>
+#include <QAction>
+#include <QApplication>
+#include <QClipboard>
+
+using namespace ProjectExplorer::Internal;
+
+void RemoveTaskHandler::handle(const ProjectExplorer::Task &task)
+{
+    ProjectExplorerPlugin::instance()->taskHub()->removeTask(task);
+}
+
+QAction *RemoveTaskHandler::createAction(QObject *parent) const
+{
+    QAction *removeAction = new QAction(tr("Remove", "Name of the action triggering the removetaskhandler"), parent);
+    removeAction->setToolTip(tr("Remove task from the task list"));
+    return removeAction;
+}
diff --git a/src/plugins/projectexplorer/removetaskhandler.h b/src/plugins/projectexplorer/removetaskhandler.h
new file mode 100644
index 00000000000..e13258e9bfa
--- /dev/null
+++ b/src/plugins/projectexplorer/removetaskhandler.h
@@ -0,0 +1,54 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2012 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: http://www.qt-project.org/
+**
+**
+** GNU Lesser General Public License Usage
+**
+** 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.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** Other Usage
+**
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**************************************************************************/
+
+#ifndef PROJECTEXPLORER_REMOVETASKHANDLER_H
+#define PROJECTEXPLORER_REMOVETASKHANDLER_H
+
+#include "itaskhandler.h"
+
+namespace ProjectExplorer {
+namespace Internal {
+
+class RemoveTaskHandler : public ITaskHandler
+{
+    Q_OBJECT
+
+public:
+    RemoveTaskHandler() {}
+
+    bool canHandle(const Task &) const { return true; }
+    void handle(const Task &task);
+    QAction *createAction(QObject *parent) const;
+};
+
+} // namespace Internal
+} // namespace ProjectExplorer
+
+#endif // PROJECTEXPLORER_REMOVETASKHANDLER_H
-- 
GitLab