diff --git a/src/plugins/classview/classviewmanager.cpp b/src/plugins/classview/classviewmanager.cpp
index b8cdeb18c853a25b2a8a65cc5a64d6f8d958de68..71d6fea0a8c5221d90344d66f24b77ad39ec1629 100644
--- a/src/plugins/classview/classviewmanager.cpp
+++ b/src/plugins/classview/classviewmanager.cpp
@@ -235,10 +235,10 @@ void Manager::initialize()
             SLOT(onProjectListChanged()), Qt::QueuedConnection);
 
     // connect to the progress manager for signals about Parsing tasks
-    connect(ProgressManager::instance(), SIGNAL(taskStarted(QString)),
-            SLOT(onTaskStarted(QString)), Qt::QueuedConnection);
-    connect(ProgressManager::instance(), SIGNAL(allTasksFinished(QString)),
-            SLOT(onAllTasksFinished(QString)), Qt::QueuedConnection);
+    connect(ProgressManager::instance(), SIGNAL(taskStarted(Core::Id)),
+            SLOT(onTaskStarted(Core::Id)), Qt::QueuedConnection);
+    connect(ProgressManager::instance(), SIGNAL(allTasksFinished(Core::Id)),
+            SLOT(onAllTasksFinished(Core::Id)), Qt::QueuedConnection);
 
     // when we signals that really document is updated - sent it to the parser
     connect(this, SIGNAL(requestDocumentUpdated(CPlusPlus::Document::Ptr)),
@@ -379,9 +379,9 @@ void Manager::onProjectListChanged()
    \sa CppTools::Constants::TASK_INDEX
 */
 
-void Manager::onTaskStarted(const QString &type)
+void Manager::onTaskStarted(Core::Id type)
 {
-    if (type != QLatin1String(CppTools::Constants::TASK_INDEX))
+    if (type != CppTools::Constants::TASK_INDEX)
         return;
 
     // disable tree updates to speed up
@@ -395,9 +395,9 @@ void Manager::onTaskStarted(const QString &type)
    \sa CppTools::Constants::TASK_INDEX
 */
 
-void Manager::onAllTasksFinished(const QString &type)
+void Manager::onAllTasksFinished(Core::Id type)
 {
-    if (type != QLatin1String(CppTools::Constants::TASK_INDEX))
+    if (type != CppTools::Constants::TASK_INDEX)
         return;
 
     // parsing is finished, enable tree updates
diff --git a/src/plugins/classview/classviewmanager.h b/src/plugins/classview/classviewmanager.h
index 4194dfa91374ad906f5dd4d160a7219a4cda90b1..b91dd80313d175c50a2cf2ccbdd203a73f931428 100644
--- a/src/plugins/classview/classviewmanager.h
+++ b/src/plugins/classview/classviewmanager.h
@@ -34,6 +34,7 @@
 #include <QSharedPointer>
 #include <QStandardItem>
 
+#include <coreplugin/id.h>
 #include <cplusplus/CppDocument.h>
 
 namespace ClassView {
@@ -85,19 +86,12 @@ public slots:
 
 protected slots:
     void onWidgetIsCreated();
-
     void onWidgetVisibilityIsChanged(bool visibility);
-
     void onStateChanged(bool state);
-
     void onProjectListChanged();
-
     void onDocumentUpdated(CPlusPlus::Document::Ptr doc);
-
-    void onTaskStarted(const QString &type);
-
-    void onAllTasksFinished(const QString &type);
-
+    void onTaskStarted(Core::Id type);
+    void onAllTasksFinished(Core::Id type);
     void onTreeDataUpdate(QSharedPointer<QStandardItem> result);
 
 protected:
diff --git a/src/plugins/clearcase/clearcaseplugin.cpp b/src/plugins/clearcase/clearcaseplugin.cpp
index 03b94792a0b744ecdb2953fa12a41c8f0461a768..0ad3228d7aa8eaf81e7eacbc9d5b72e239fc0f43 100644
--- a/src/plugins/clearcase/clearcaseplugin.cpp
+++ b/src/plugins/clearcase/clearcaseplugin.cpp
@@ -371,8 +371,8 @@ bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *er
 
     m_clearcasePluginInstance = this;
     connect(ICore::instance(), SIGNAL(coreAboutToClose()), this, SLOT(closing()));
-    connect(ProgressManager::instance(), SIGNAL(allTasksFinished(QString)),
-            this, SLOT(tasksFinished(QString)));
+    connect(ProgressManager::instance(), SIGNAL(allTasksFinished(Core::Id)),
+            this, SLOT(tasksFinished(Core::Id)));
 
     if (!MimeDatabase::addMimeTypes(QLatin1String(":/clearcase/ClearCase.mimetypes.xml"), errorMessage))
         return false;
@@ -1891,7 +1891,7 @@ void ClearCasePlugin::projectChanged(Project *project)
     m_stream.clear();
     m_intStream.clear();
     disconnect(ICore::mainWindow(), SIGNAL(windowActivated()), this, SLOT(syncSlot()));
-    ProgressManager::cancelTasks(QLatin1String(Constants::TASK_INDEX));
+    ProgressManager::cancelTasks(ClearCase::Constants::TASK_INDEX);
     if (project) {
         QString projDir = project->projectDirectory();
         QString topLevel = findTopLevel(projDir);
@@ -1908,16 +1908,16 @@ void ClearCasePlugin::projectChanged(Project *project)
         qDebug() << "stream: " << m_stream << "; intStream: " << m_intStream << "view: " << m_viewData.name;
 }
 
-void ClearCasePlugin::tasksFinished(const QString &type)
+void ClearCasePlugin::tasksFinished(Core::Id type)
 {
-    if (type == QLatin1String(Constants::TASK_INDEX))
+    if (type == ClearCase::Constants::TASK_INDEX)
         m_checkInAllAction->setEnabled(true);
 }
 
 void ClearCasePlugin::updateIndex()
 {
     QTC_ASSERT(currentState().hasTopLevel(), return);
-    ProgressManager::cancelTasks(QLatin1String(Constants::TASK_INDEX));
+    ProgressManager::cancelTasks(ClearCase::Constants::TASK_INDEX);
     Project *project = ProjectExplorerPlugin::currentProject();
     if (!project)
         return;
@@ -1926,8 +1926,7 @@ void ClearCasePlugin::updateIndex()
     QFuture<void> result = QtConcurrent::run(&sync,
                project->files(Project::ExcludeGeneratedFiles));
     if (!m_settings.disableIndexer)
-        ProgressManager::addTask(result, tr("CC Indexing"),
-                            QLatin1String(Constants::TASK_INDEX));
+        ProgressManager::addTask(result, tr("CC Indexing"), ClearCase::Constants::TASK_INDEX);
 }
 
 /*! retrieve a \a file (usually of the form path\to\filename.cpp@@\main\ver)
@@ -2069,7 +2068,7 @@ void ClearCasePlugin::syncSlot()
 void ClearCasePlugin::closing()
 {
     // prevent syncSlot from being called on shutdown
-    ProgressManager::cancelTasks(QLatin1String(Constants::TASK_INDEX));
+    ProgressManager::cancelTasks(ClearCase::Constants::TASK_INDEX);
     disconnect(ICore::mainWindow(), SIGNAL(windowActivated()), this, SLOT(syncSlot()));
 }
 
diff --git a/src/plugins/clearcase/clearcaseplugin.h b/src/plugins/clearcase/clearcaseplugin.h
index 6ce6674af3abc9b2086089721e39bc6d466f01fd..fb011182da2c8a0d196851123c625fead17d9caa 100644
--- a/src/plugins/clearcase/clearcaseplugin.h
+++ b/src/plugins/clearcase/clearcaseplugin.h
@@ -33,7 +33,9 @@
 
 #include "clearcasesettings.h"
 
+#include <coreplugin/id.h>
 #include <vcsbase/vcsbaseplugin.h>
+
 #include <QFile>
 #include <QPair>
 #include <QStringList>
@@ -191,7 +193,7 @@ private slots:
     void updateIndex();
     void updateView();
     void projectChanged(ProjectExplorer::Project *project);
-    void tasksFinished(const QString &type);
+    void tasksFinished(Core::Id type);
     void syncSlot();
     void closing();
     void updateStatusActions();
diff --git a/src/plugins/coreplugin/coreplugin.cpp b/src/plugins/coreplugin/coreplugin.cpp
index 1c1241b4cdcaabd3de7d833159318a67a30d1187..54845838985ddaed6c8fccd5a9108fa558c9d896 100644
--- a/src/plugins/coreplugin/coreplugin.cpp
+++ b/src/plugins/coreplugin/coreplugin.cpp
@@ -48,9 +48,10 @@
 using namespace Core;
 using namespace Core::Internal;
 
-CorePlugin::CorePlugin() :
-    m_mainWindow(new MainWindow), m_editMode(0), m_designMode(0)
+CorePlugin::CorePlugin() : m_editMode(0), m_designMode(0)
 {
+    qRegisterMetaType<Core::Id>();
+    m_mainWindow = new MainWindow;
 }
 
 CorePlugin::~CorePlugin()
diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp
index cb62e48e6271bf5a176062222cf8f47ff7476fb6..fd5e840803bd8644f5780a93e4fa36f1bd863f48 100644
--- a/src/plugins/coreplugin/mainwindow.cpp
+++ b/src/plugins/coreplugin/mainwindow.cpp
@@ -118,7 +118,7 @@ MainWindow::MainWindow() :
     m_actionManager(new ActionManager(this)),
     m_editorManager(0),
     m_externalToolManager(0),
-    m_progressManager(new ProgressManagerPrivate()),
+    m_progressManager(new ProgressManagerPrivate),
     m_variableManager(new VariableManager),
     m_vcsManager(new VcsManager),
     m_statusBarManager(0),
diff --git a/src/plugins/coreplugin/progressmanager/futureprogress.cpp b/src/plugins/coreplugin/progressmanager/futureprogress.cpp
index da6a6a1dcd392164c783603f175a372b1fd0d77a..84bc025e2f881e96f594fa91fc78f2b22eaa8693 100644
--- a/src/plugins/coreplugin/progressmanager/futureprogress.cpp
+++ b/src/plugins/coreplugin/progressmanager/futureprogress.cpp
@@ -66,7 +66,7 @@ public:
     QWidget *m_widget;
     QHBoxLayout *m_widgetLayout;
     QWidget *m_statusBarWidget;
-    QString m_type;
+    Id m_type;
     FutureProgress::KeepOnFinishType m_keep;
     bool m_waitingForUserInteraction;
     FutureProgress *m_q;
@@ -304,12 +304,12 @@ bool FutureProgress::hasError() const
     return d->m_progress->hasError();
 }
 
-void FutureProgress::setType(const QString &type)
+void FutureProgress::setType(Id type)
 {
     d->m_type = type;
 }
 
-QString FutureProgress::type() const
+Id FutureProgress::type() const
 {
     return d->m_type;
 }
diff --git a/src/plugins/coreplugin/progressmanager/futureprogress.h b/src/plugins/coreplugin/progressmanager/futureprogress.h
index 4cf58b203af730c87632347d1c51e66fac777da7..b4577d876f337551b4840f649e84d3d1eef8c66a 100644
--- a/src/plugins/coreplugin/progressmanager/futureprogress.h
+++ b/src/plugins/coreplugin/progressmanager/futureprogress.h
@@ -31,6 +31,7 @@
 #define FUTUREPROGRESS_H
 
 #include <coreplugin/core_global.h>
+#include <coreplugin/id.h>
 
 #include <QString>
 #include <QFuture>
@@ -60,8 +61,8 @@ public:
     void setTitle(const QString &title);
     QString title() const;
 
-    void setType(const QString &type);
-    QString type() const;
+    void setType(Id type);
+    Id type() const;
 
     void setKeepOnFinish(KeepOnFinishType keepType);
     bool keepOnFinish() const;
diff --git a/src/plugins/coreplugin/progressmanager/progressmanager.cpp b/src/plugins/coreplugin/progressmanager/progressmanager.cpp
index 70265d4d5fc3f1a50d59bb70057a88886ec05716..361f96a8753611aa5730f98bf66dcc25d762565e 100644
--- a/src/plugins/coreplugin/progressmanager/progressmanager.cpp
+++ b/src/plugins/coreplugin/progressmanager/progressmanager.cpp
@@ -245,7 +245,7 @@ using namespace Core::Internal;
 */
 
 /*!
-    \fn void Core::ProgressManager::cancelTasks(const QString &type)
+    \fn void Core::ProgressManager::cancelTasks(Core::Id type)
 
     Schedules a cancel for all running tasks of the given \a type.
     Please note that the cancel functionality depends on the
@@ -254,13 +254,13 @@ using namespace Core::Internal;
 */
 
 /*!
-    \fn void Core::ProgressManager::taskStarted(const QString &type)
+    \fn void Core::ProgressManager::taskStarted(Core::Id type)
 
     Sent whenever a task of a given \a type is started.
 */
 
 /*!
-    \fn void Core::ProgressManager::allTasksFinished(const QString &type)
+    \fn void Core::ProgressManager::allTasksFinished(Core::Id type)
 
     Sent when all tasks of a \a type have finished.
 */
@@ -347,10 +347,10 @@ void ProgressManagerPrivate::init()
     initInternal();
 }
 
-void ProgressManagerPrivate::doCancelTasks(const QString &type)
+void ProgressManagerPrivate::doCancelTasks(Id type)
 {
     bool found = false;
-    QMap<QFutureWatcher<void> *, QString>::iterator task = m_runningTasks.begin();
+    QMap<QFutureWatcher<void> *, Id>::iterator task = m_runningTasks.begin();
     while (task != m_runningTasks.end()) {
         if (task.value() != type) {
             ++task;
@@ -398,7 +398,7 @@ bool ProgressManagerPrivate::eventFilter(QObject *obj, QEvent *event)
 
 void ProgressManagerPrivate::cancelAllRunningTasks()
 {
-    QMap<QFutureWatcher<void> *, QString>::const_iterator task = m_runningTasks.constBegin();
+    QMap<QFutureWatcher<void> *, Id>::const_iterator task = m_runningTasks.constBegin();
     while (task != m_runningTasks.constEnd()) {
         disconnect(task.key(), SIGNAL(finished()), this, SLOT(taskFinished()));
         if (m_applicationTask == task.key())
@@ -412,7 +412,7 @@ void ProgressManagerPrivate::cancelAllRunningTasks()
 }
 
 FutureProgress *ProgressManagerPrivate::doAddTask(const QFuture<void> &future, const QString &title,
-                                                const QString &type, ProgressFlags flags)
+                                                Id type, ProgressFlags flags)
 {
     // watch
     QFutureWatcher<void> *watcher = new QFutureWatcher<void>();
@@ -473,7 +473,7 @@ void ProgressManagerPrivate::taskFinished()
     QFutureWatcher<void> *task = static_cast<QFutureWatcher<void> *>(taskObject);
     if (m_applicationTask == task)
         disconnectApplicationTask();
-    QString type = m_runningTasks.value(task);
+    Id type = m_runningTasks.value(task);
     m_runningTasks.remove(task);
     delete task;
     updateSummaryProgressBar();
@@ -506,7 +506,7 @@ void ProgressManagerPrivate::updateSummaryProgressBar()
     stopFadeOfSummaryProgress();
 
     m_summaryProgressBar->setFinished(false);
-    QMapIterator<QFutureWatcher<void> *, QString> it(m_runningTasks);
+    QMapIterator<QFutureWatcher<void> *, Id> it(m_runningTasks);
     static const int TASK_RANGE = 100;
     int value = 0;
     while (it.hasNext()) {
@@ -563,12 +563,12 @@ void ProgressManagerPrivate::slotRemoveTask()
 {
     FutureProgress *progress = qobject_cast<FutureProgress *>(sender());
     QTC_ASSERT(progress, return);
-    QString type = progress->type();
+    Id type = progress->type();
     removeTask(progress);
     removeOldTasks(type, true);
 }
 
-void ProgressManagerPrivate::removeOldTasks(const QString &type, bool keepOne)
+void ProgressManagerPrivate::removeOldTasks(const Id type, bool keepOne)
 {
     bool firstFound = !keepOne; // start with false if we want to keep one
     QList<FutureProgress *>::iterator i = m_taskList.end();
@@ -600,7 +600,7 @@ void ProgressManagerPrivate::removeOneOldTask()
     }
     // no ended process, look for a task type with multiple running tasks and remove the oldest one
     for (QList<FutureProgress *>::iterator i = m_taskList.begin(); i != m_taskList.end(); ++i) {
-        QString type = (*i)->type();
+        Id type = (*i)->type();
 
         int taskCount = 0;
         foreach (FutureProgress *p, m_taskList)
@@ -735,7 +735,7 @@ QObject *ProgressManager::instance()
     return m_instance;
 }
 
-FutureProgress *ProgressManager::addTask(const QFuture<void> &future, const QString &title, const QString &type, ProgressFlags flags)
+FutureProgress *ProgressManager::addTask(const QFuture<void> &future, const QString &title, Id type, ProgressFlags flags)
 {
     return m_instance->doAddTask(future, title, type, flags);
 }
@@ -745,7 +745,8 @@ void ProgressManager::setApplicationLabel(const QString &text)
     m_instance->doSetApplicationLabel(text);
 }
 
-void ProgressManager::cancelTasks(const QString &type)
+void ProgressManager::cancelTasks(const Id type)
 {
-    m_instance->doCancelTasks(type);
+    if (m_instance)
+        m_instance->doCancelTasks(type);
 }
diff --git a/src/plugins/coreplugin/progressmanager/progressmanager.h b/src/plugins/coreplugin/progressmanager/progressmanager.h
index 3df9d227a6e10f8646264e9bd14076a9d60cf17b..ed45d53870bec45c557e8ffda975b0b67de77dfe 100644
--- a/src/plugins/coreplugin/progressmanager/progressmanager.h
+++ b/src/plugins/coreplugin/progressmanager/progressmanager.h
@@ -31,6 +31,7 @@
 #define PROGRESSMANAGER_H
 
 #include <coreplugin/core_global.h>
+#include <coreplugin/id.h>
 
 #include <QObject>
 #include <QFuture>
@@ -53,20 +54,20 @@ public:
     static QObject *instance();
 
     static FutureProgress *addTask(const QFuture<void> &future, const QString &title,
-                                    const QString &type, ProgressFlags flags = 0);
+                                   Core::Id type, ProgressFlags flags = 0);
     static void setApplicationLabel(const QString &text);
 
 public slots:
-    static void cancelTasks(const QString &type);
+    static void cancelTasks(const Core::Id type);
 
 signals:
-    void taskStarted(const QString &type);
-    void allTasksFinished(const QString &type);
+    void taskStarted(Core::Id type);
+    void allTasksFinished(Core::Id type);
 
 protected:
-    virtual void doCancelTasks(const QString &type) = 0;
+    virtual void doCancelTasks(Core::Id type) = 0;
     virtual FutureProgress *doAddTask(const QFuture<void> &future, const QString &title,
-                                    const QString &type, ProgressFlags flags = 0) = 0;
+                                      Core::Id type, ProgressFlags flags = 0) = 0;
     virtual void doSetApplicationLabel(const QString &text) = 0;
 
 private:
diff --git a/src/plugins/coreplugin/progressmanager/progressmanager_p.h b/src/plugins/coreplugin/progressmanager/progressmanager_p.h
index 9a8df509c2fb58fa84c593476796f636f7233690..2445220be4fb7843621efc0d6074a529b99046d2 100644
--- a/src/plugins/coreplugin/progressmanager/progressmanager_p.h
+++ b/src/plugins/coreplugin/progressmanager/progressmanager_p.h
@@ -58,14 +58,14 @@ public:
     void init();
     void cleanup();
 
-    FutureProgress *doAddTask(const QFuture<void> &future, const QString &title, const QString &type,
+    FutureProgress *doAddTask(const QFuture<void> &future, const QString &title, Id type,
                             ProgressFlags flags);
 
     void doSetApplicationLabel(const QString &text);
     ProgressView *progressView();
 
 public slots:
-    void doCancelTasks(const QString &type);
+    void doCancelTasks(Core::Id type);
 
 protected:
     bool eventFilter(QObject *obj, QEvent *event);
@@ -94,14 +94,14 @@ private:
     bool hasError() const;
     bool isLastFading() const;
 
-    void removeOldTasks(const QString &type, bool keepOne = false);
+    void removeOldTasks(Id type, bool keepOne = false);
     void removeOneOldTask();
     void removeTask(FutureProgress *task);
     void deleteTask(FutureProgress *task);
 
     QPointer<ProgressView> m_progressView;
     QList<FutureProgress *> m_taskList;
-    QMap<QFutureWatcher<void> *, QString> m_runningTasks;
+    QMap<QFutureWatcher<void> *, Id> m_runningTasks;
     QFutureWatcher<void> *m_applicationTask;
     Core::StatusBarWidget *m_statusBarWidgetContainer;
     QWidget *m_statusBarWidget;
diff --git a/src/plugins/cppeditor/cppeditorplugin.cpp b/src/plugins/cppeditor/cppeditorplugin.cpp
index ec122015eace44b86730912f3f6a336996b9ec66..38857a3a208ec9ae21d865bd47e9bb27c5b4e464 100644
--- a/src/plugins/cppeditor/cppeditorplugin.cpp
+++ b/src/plugins/cppeditor/cppeditorplugin.cpp
@@ -281,10 +281,10 @@ bool CppEditorPlugin::initialize(const QStringList & /*arguments*/, QString *err
     cmd = ActionManager::command(TextEditor::Constants::UN_COMMENT_SELECTION);
     contextMenu->addAction(cmd);
 
-    connect(ProgressManager::instance(), SIGNAL(taskStarted(QString)),
-            this, SLOT(onTaskStarted(QString)));
-    connect(ProgressManager::instance(), SIGNAL(allTasksFinished(QString)),
-            this, SLOT(onAllTasksFinished(QString)));
+    connect(ProgressManager::instance(), SIGNAL(taskStarted(Core::Id)),
+            this, SLOT(onTaskStarted(Core::Id)));
+    connect(ProgressManager::instance(), SIGNAL(allTasksFinished(Core::Id)),
+            this, SLOT(onAllTasksFinished(Core::Id)));
 
     connect(EditorManager::instance(), SIGNAL(currentEditorChanged(Core::IEditor*)),
             SLOT(currentEditorChanged(Core::IEditor*)));
@@ -341,9 +341,9 @@ void CppEditorPlugin::findUsages()
         editor->findUsages();
 }
 
-void CppEditorPlugin::onTaskStarted(const QString &type)
+void CppEditorPlugin::onTaskStarted(Core::Id type)
 {
-    if (type == QLatin1String(CppTools::Constants::TASK_INDEX)) {
+    if (type == CppTools::Constants::TASK_INDEX) {
         m_renameSymbolUnderCursorAction->setEnabled(false);
         m_findUsagesAction->setEnabled(false);
         m_updateCodeModelAction->setEnabled(false);
@@ -351,9 +351,9 @@ void CppEditorPlugin::onTaskStarted(const QString &type)
     }
 }
 
-void CppEditorPlugin::onAllTasksFinished(const QString &type)
+void CppEditorPlugin::onAllTasksFinished(Core::Id type)
 {
-    if (type == QLatin1String(CppTools::Constants::TASK_INDEX)) {
+    if (type == CppTools::Constants::TASK_INDEX) {
         m_renameSymbolUnderCursorAction->setEnabled(true);
         m_findUsagesAction->setEnabled(true);
         m_updateCodeModelAction->setEnabled(true);
diff --git a/src/plugins/cppeditor/cppeditorplugin.h b/src/plugins/cppeditor/cppeditorplugin.h
index ca32a9c0d633b8a56569b8adb0419c7ce9098782..bf26c42fdd73ca03ab8871173a6fbb386532a4ab 100644
--- a/src/plugins/cppeditor/cppeditorplugin.h
+++ b/src/plugins/cppeditor/cppeditorplugin.h
@@ -85,8 +85,8 @@ public slots:
     void setSortedOutline(bool sorted);
 
 private slots:
-    void onTaskStarted(const QString &type);
-    void onAllTasksFinished(const QString &type);
+    void onTaskStarted(Core::Id type);
+    void onAllTasksFinished(Core::Id type);
     void currentEditorChanged(Core::IEditor *editor);
 
 #ifdef WITH_TESTS
diff --git a/src/plugins/cpptools/builtinindexingsupport.cpp b/src/plugins/cpptools/builtinindexingsupport.cpp
index f23dfeddbafed3f687ef9a47bd9ddf01113d160e..f9d7215edf57cfca5aa76f4ac9214b371f3eb801 100644
--- a/src/plugins/cpptools/builtinindexingsupport.cpp
+++ b/src/plugins/cpptools/builtinindexingsupport.cpp
@@ -193,7 +193,7 @@ QFuture<void> BuiltinIndexingSupport::refreshSourceFiles(const QStringList &sour
 
     if (mode == CppModelManagerInterface::ForcedProgressNotification || sourceFiles.count() > 1) {
         Core::ProgressManager::addTask(result, QCoreApplication::translate("CppTools::Internal::BuiltinIndexingSupport", "Parsing"),
-                                                QLatin1String(CppTools::Constants::TASK_INDEX));
+                                                CppTools::Constants::TASK_INDEX);
     }
 
     return result;
diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp
index 3916427731f2f37c25d7aa7255cc1f9d46df5e62..80c0be9cab99934daa6d52816742460259d538af 100644
--- a/src/plugins/cpptools/cppfindreferences.cpp
+++ b/src/plugins/cpptools/cppfindreferences.cpp
@@ -281,7 +281,7 @@ void CppFindReferences::findAll_helper(Find::SearchResult *search)
     createWatcher(result, search);
 
     FutureProgress *progress = ProgressManager::addTask(result, tr("Searching"),
-                                                              QLatin1String(CppTools::Constants::TASK_SEARCH));
+                                                              CppTools::Constants::TASK_SEARCH);
 
     connect(progress, SIGNAL(clicked()), search, SLOT(popup()));
 }
@@ -664,7 +664,7 @@ void CppFindReferences::findMacroUses(const Macro &macro, const QString &replace
     createWatcher(result, search);
 
     FutureProgress *progress = ProgressManager::addTask(result, tr("Searching"),
-                                                              QLatin1String(CppTools::Constants::TASK_SEARCH));
+                                                              CppTools::Constants::TASK_SEARCH);
     connect(progress, SIGNAL(clicked()), search, SLOT(popup()));
 }
 
diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp
index af6e1f6bf96ec27dfc374ec7b533c23404cf5b0a..59b4b047191c303d2833261e194d018acf2542b5 100644
--- a/src/plugins/cpptools/cppmodelmanager.cpp
+++ b/src/plugins/cpptools/cppmodelmanager.cpp
@@ -828,8 +828,7 @@ void CppModelManager::onAboutToLoadSession()
 
 void CppModelManager::onAboutToUnloadSession()
 {
-    if (Core::ProgressManager::instance())
-        Core::ProgressManager::cancelTasks(QLatin1String(CppTools::Constants::TASK_INDEX));
+    Core::ProgressManager::cancelTasks(CppTools::Constants::TASK_INDEX);
     do {
         QMutexLocker locker(&m_projectMutex);
         m_projectToProjectsInfo.clear();
diff --git a/src/plugins/cpptools/symbolsfindfilter.cpp b/src/plugins/cpptools/symbolsfindfilter.cpp
index 412d3b0c6b473bfbaa1acb48ad7facf72efa47d9..1afc91e4e7bb3338013118b0ab0299dfe4a0ef64 100644
--- a/src/plugins/cpptools/symbolsfindfilter.cpp
+++ b/src/plugins/cpptools/symbolsfindfilter.cpp
@@ -61,10 +61,10 @@ SymbolsFindFilter::SymbolsFindFilter(CppModelManager *manager)
       m_scope(SymbolSearcher::SearchProjectsOnly)
 {
     // for disabling while parser is running
-    connect(ProgressManager::instance(), SIGNAL(taskStarted(QString)),
-            this, SLOT(onTaskStarted(QString)));
-    connect(ProgressManager::instance(), SIGNAL(allTasksFinished(QString)),
-            this, SLOT(onAllTasksFinished(QString)));
+    connect(ProgressManager::instance(), SIGNAL(taskStarted(Core::Id)),
+            this, SLOT(onTaskStarted(Core::Id)));
+    connect(ProgressManager::instance(), SIGNAL(allTasksFinished(Core::Id)),
+            this, SLOT(onAllTasksFinished(Core::Id)));
 }
 
 QString SymbolsFindFilter::id() const
@@ -150,7 +150,7 @@ void SymbolsFindFilter::startSearch(Find::SearchResult *search)
             symbolSearcher, SLOT(deleteLater()));
     watcher->setFuture(QtConcurrent::run(&SymbolSearcher::runSearch, symbolSearcher));
     FutureProgress *progress = ProgressManager::addTask(watcher->future(), tr("Searching"),
-                                                        QLatin1String(Find::Constants::TASK_SEARCH));
+                                                        Find::Constants::TASK_SEARCH);
     connect(progress, SIGNAL(clicked()), search, SLOT(popup()));
 }
 
@@ -213,17 +213,17 @@ void SymbolsFindFilter::readSettings(QSettings *settings)
     emit symbolsToSearchChanged();
 }
 
-void SymbolsFindFilter::onTaskStarted(const QString &type)
+void SymbolsFindFilter::onTaskStarted(Id type)
 {
-    if (type == QLatin1String(CppTools::Constants::TASK_INDEX)) {
+    if (type == CppTools::Constants::TASK_INDEX) {
         m_enabled = false;
         emit enabledChanged(m_enabled);
     }
 }
 
-void SymbolsFindFilter::onAllTasksFinished(const QString &type)
+void SymbolsFindFilter::onAllTasksFinished(Core::Id type)
 {
-    if (type == QLatin1String(CppTools::Constants::TASK_INDEX)) {
+    if (type == CppTools::Constants::TASK_INDEX) {
         m_enabled = true;
         emit enabledChanged(m_enabled);
     }
diff --git a/src/plugins/cpptools/symbolsfindfilter.h b/src/plugins/cpptools/symbolsfindfilter.h
index 744323e62333f6497f4d071d2b322b9bdf80e104..2a45a3fc1985b5adc65f6f0201f0017106c795a9 100644
--- a/src/plugins/cpptools/symbolsfindfilter.h
+++ b/src/plugins/cpptools/symbolsfindfilter.h
@@ -82,8 +82,8 @@ private slots:
     void finish();
     void cancel();
     void setPaused(bool paused);
-    void onTaskStarted(const QString &type);
-    void onAllTasksFinished(const QString &type);
+    void onTaskStarted(Core::Id type);
+    void onAllTasksFinished(Core::Id type);
     void searchAgain();
 
 private:
diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp
index 9822f193ce626770b9272cdc9dc25556539100c7..0b7fa892a5289a697b7600b00fb073750fd2954e 100644
--- a/src/plugins/debugger/debuggerengine.cpp
+++ b/src/plugins/debugger/debuggerengine.cpp
@@ -489,7 +489,7 @@ void DebuggerEngine::startDebugger(DebuggerRunControl *runControl)
 
     d->m_progress.setProgressRange(0, 1000);
     FutureProgress *fp = ProgressManager::addTask(d->m_progress.future(),
-        tr("Launching"), _("Debugger.Launcher"));
+        tr("Launching"), "Debugger.Launcher");
     fp->setKeepOnFinish(FutureProgress::HideOnFinish);
     d->m_progress.reportStarted();
 
diff --git a/src/plugins/git/gerrit/gerritmodel.cpp b/src/plugins/git/gerrit/gerritmodel.cpp
index ba5a6dc4599724b741b0e142a381405435634fd4..4084cc8a04bbba78be3785af5bbde6cff9d3238d 100644
--- a/src/plugins/git/gerrit/gerritmodel.cpp
+++ b/src/plugins/git/gerrit/gerritmodel.cpp
@@ -323,7 +323,7 @@ QueryContext::~QueryContext()
 void QueryContext::start()
 {
     Core::FutureProgress *fp = Core::ProgressManager::addTask(m_progress.future(), tr("Gerrit"),
-                                           QLatin1String("gerrit-query"));
+                                           "gerrit-query");
     fp->setKeepOnFinish(Core::FutureProgress::HideOnFinish);
     m_progress.reportStarted();
     startQuery(m_queries.front()); // Order: synchronous call to  error handling if something goes wrong.
diff --git a/src/plugins/git/gerrit/gerritplugin.cpp b/src/plugins/git/gerrit/gerritplugin.cpp
index 3a10a28b7d535a0b2b3e93488da3e942611dc5bd..81f5f880a033c9c949cdf11fbb08079610078a69 100644
--- a/src/plugins/git/gerrit/gerritplugin.cpp
+++ b/src/plugins/git/gerrit/gerritplugin.cpp
@@ -168,7 +168,7 @@ void FetchContext::start()
 {
     m_progress.setProgressRange(0, 2);
     FutureProgress *fp = ProgressManager::addTask(m_progress.future(), tr("Gerrit Fetch"),
-                                           QLatin1String("gerrit-fetch"));
+                                           "gerrit-fetch");
     fp->setKeepOnFinish(FutureProgress::HideOnFinish);
     m_progress.reportStarted();
     // Order: initialize future before starting the process in case error handling is invoked.
diff --git a/src/plugins/help/searchwidget.cpp b/src/plugins/help/searchwidget.cpp
index 256426e99978f71a93253328ca078a2d53b8fac8..d616c054c50d1bfd28e9e8b3f2772785065177ea 100644
--- a/src/plugins/help/searchwidget.cpp
+++ b/src/plugins/help/searchwidget.cpp
@@ -194,8 +194,7 @@ void SearchWidget::indexingStarted()
 {
     Q_ASSERT(!m_progress);
     m_progress = new QFutureInterface<void>();
-    Core::ProgressManager::addTask(m_progress->future(),
-        tr("Indexing"), QLatin1String("Help.Indexer"));
+    Core::ProgressManager::addTask(m_progress->future(), tr("Indexing"), "Help.Indexer");
     m_progress->setProgressRange(0, 2);
     m_progress->setProgressValueAndText(1, tr("Indexing Documentation..."));
     m_progress->reportStarted();
diff --git a/src/plugins/locator/locatorplugin.cpp b/src/plugins/locator/locatorplugin.cpp
index 7c7d73206d8a90d7bb72678528b695d89206af06..9513b31779814891f409ba90f03f088babf51bea 100644
--- a/src/plugins/locator/locatorplugin.cpp
+++ b/src/plugins/locator/locatorplugin.cpp
@@ -261,7 +261,7 @@ void LocatorPlugin::refresh(QList<ILocatorFilter *> filters)
         filters = m_filters;
     QFuture<void> task = QtConcurrent::run(&ILocatorFilter::refresh, filters);
     FutureProgress *progress =
-        ProgressManager::addTask(task, tr("Indexing"), QLatin1String(Locator::Constants::TASK_INDEX));
+        ProgressManager::addTask(task, tr("Indexing"), Locator::Constants::TASK_INDEX);
     connect(progress, SIGNAL(finished()), this, SLOT(saveSettings()));
 }
 
diff --git a/src/plugins/projectexplorer/buildmanager.cpp b/src/plugins/projectexplorer/buildmanager.cpp
index b09d327ec05d0043802e00f7530ceaafd26d2363..2680222a4182e657dfd10b72eb205ab73fe54197 100644
--- a/src/plugins/projectexplorer/buildmanager.cpp
+++ b/src/plugins/projectexplorer/buildmanager.cpp
@@ -300,8 +300,7 @@ void BuildManager::startBuildQueue(const QStringList &preambleMessage)
         TaskHub::clearTasks(Constants::TASK_CATEGORY_DEPLOYMENT);
         ProgressManager::setApplicationLabel(QString());
         d->m_futureProgress = ProgressManager::addTask(d->m_progressFutureInterface->future(),
-              QString(),
-              QLatin1String(Constants::TASK_BUILD),
+              QString(), "ProjectExplorer.Task.Build",
               ProgressManager::KeepOnFinish | ProgressManager::ShowInApplicationIcon);
         connect(d->m_futureProgress.data(), SIGNAL(clicked()), this, SLOT(showBuildResults()));
         d->m_futureProgress.data()->setWidget(new Internal::BuildProgress(d->m_taskWindow));
diff --git a/src/plugins/projectexplorer/projectexplorerconstants.h b/src/plugins/projectexplorer/projectexplorerconstants.h
index 5cfd9f004aab220f963adb54f4a042cdf3a65c24..4275912b14266fd546386d0cca513dcb2314f731 100644
--- a/src/plugins/projectexplorer/projectexplorerconstants.h
+++ b/src/plugins/projectexplorer/projectexplorerconstants.h
@@ -162,8 +162,6 @@ const char ICON_STOP[]            = ":/projectexplorer/images/stop.png";
 const char ICON_STOP_SMALL[]      = ":/projectexplorer/images/stop_small.png";
 const char ICON_WINDOW[]          = ":/projectexplorer/images/window.png";
 
-const char TASK_BUILD[]           = "ProjectExplorer.Task.Build";
-
 // Mime types
 const char C_SOURCE_MIMETYPE[]    = "text/x-csrc";
 const char C_HEADER_MIMETYPE[]    = "text/x-chdr";
diff --git a/src/plugins/projectexplorer/session.cpp b/src/plugins/projectexplorer/session.cpp
index 5effd5c93e65469246d2cfba50e2cb06ea6afb6e..87bb986a9ac04a8afb81390fbb696e1bbba8278e 100644
--- a/src/plugins/projectexplorer/session.cpp
+++ b/src/plugins/projectexplorer/session.cpp
@@ -857,7 +857,7 @@ bool SessionManager::loadSession(const QString &session)
         m_virginSession = false;
 
         ProgressManager::addTask(m_future.future(), tr("Session"),
-           QLatin1String("ProjectExplorer.SessionFile.Load"));
+           "ProjectExplorer.SessionFile.Load");
 
         m_future.setProgressRange(0, 1);
         m_future.setProgressValue(0);
diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp
index 6dcc0884659e55f011251a743c1cae7fcb1480b3..b6970b353777448370a743e0b17fbb983f13dd16 100644
--- a/src/plugins/qbsprojectmanager/qbsproject.cpp
+++ b/src/plugins/qbsprojectmanager/qbsproject.cpp
@@ -467,8 +467,8 @@ void QbsProject::prepareForParsing()
     m_currentProgressBase = 0;
     m_qbsUpdateFutureInterface = new QFutureInterface<void>();
     m_qbsUpdateFutureInterface->setProgressRange(0, 0);
-    ProgressManager::addTask(m_qbsUpdateFutureInterface->future(), tr("Evaluating"),
-                                            QLatin1String(Constants::QBS_EVALUATE));
+    ProgressManager::addTask(m_qbsUpdateFutureInterface->future(),
+        tr("Evaluating"), "Qbs.QbsEvaluate");
     m_qbsUpdateFutureInterface->reportStarted();
 }
 
diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanagerconstants.h b/src/plugins/qbsprojectmanager/qbsprojectmanagerconstants.h
index 97237fb72622de9b043cd32b933ea0e6cf4914f7..2566214522e35fe23ac8a9b4504dd62f2c64fffb 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectmanagerconstants.h
+++ b/src/plugins/qbsprojectmanager/qbsprojectmanagerconstants.h
@@ -41,9 +41,6 @@ const char PROJECT_ID[] = "Qbs.QbsProject";
 // MIME types:
 const char MIME_TYPE[] = "application/x-qt.qbs+qml";
 
-// Progress reports:
-const char QBS_EVALUATE[] = "Qbs.QbsEvaluate";
-
 // Actions:
 const char ACTION_REPARSE_QBS[] = "Qbs.Reparse";
 const char ACTION_REPARSE_QBS_CONTEXT[] = "Qbs.ReparseCtx";
diff --git a/src/plugins/qmljseditor/qmljsfindreferences.cpp b/src/plugins/qmljseditor/qmljsfindreferences.cpp
index c87caeca2450fe5fd351f750e847c536fa32d501..11e22d50285982fb19de78d0eac8ac30730d8c90 100644
--- a/src/plugins/qmljseditor/qmljsfindreferences.cpp
+++ b/src/plugins/qmljseditor/qmljsfindreferences.cpp
@@ -942,7 +942,7 @@ void FindReferences::displayResults(int first, int last)
 
         FutureProgress *progress = ProgressManager::addTask(
                     m_watcher.future(), tr("Searching"),
-                    QLatin1String(QmlJSEditor::Constants::TASK_SEARCH));
+                    QmlJSEditor::Constants::TASK_SEARCH);
         connect(progress, SIGNAL(clicked()), m_currentSearch, SLOT(popup()));
 
         ++first;
diff --git a/src/plugins/qmljstools/qmljsmodelmanager.cpp b/src/plugins/qmljstools/qmljsmodelmanager.cpp
index 1f3f0b50f0dec460350992ebd5db536a55395e73..5566dff68f1d7c131a87d12a5dc06f2a6be58c9e 100644
--- a/src/plugins/qmljstools/qmljsmodelmanager.cpp
+++ b/src/plugins/qmljstools/qmljsmodelmanager.cpp
@@ -380,8 +380,7 @@ QFuture<void> ModelManager::refreshSourceFiles(const QStringList &sourceFiles,
     m_synchronizer.addFuture(result);
 
     if (sourceFiles.count() > 1) {
-        ProgressManager::addTask(result, tr("Indexing"),
-                        QLatin1String(Constants::TASK_INDEX));
+        ProgressManager::addTask(result, tr("Indexing"), Constants::TASK_INDEX);
     }
 
     return result;
diff --git a/src/plugins/qmljstools/qmljstoolsplugin.cpp b/src/plugins/qmljstools/qmljstoolsplugin.cpp
index 9321fd86c7734a3e95d4a35896450fcb1fe31061..fa8eff614a363e531a279fa0729850be36d73bc4 100644
--- a/src/plugins/qmljstools/qmljstoolsplugin.cpp
+++ b/src/plugins/qmljstools/qmljstoolsplugin.cpp
@@ -112,10 +112,10 @@ bool QmlJSToolsPlugin::initialize(const QStringList &arguments, QString *error)
     mqmljstools->addAction(cmd);
 
     // watch task progress
-    connect(ProgressManager::instance(), SIGNAL(taskStarted(QString)),
-            this, SLOT(onTaskStarted(QString)));
-    connect(ProgressManager::instance(), SIGNAL(allTasksFinished(QString)),
-            this, SLOT(onAllTasksFinished(QString)));
+    connect(ProgressManager::instance(), SIGNAL(taskStarted(Core::Id)),
+            this, SLOT(onTaskStarted(Core::Id)));
+    connect(ProgressManager::instance(), SIGNAL(allTasksFinished(Core::Id)),
+            this, SLOT(onAllTasksFinished(Core::Id)));
 
     return true;
 }
@@ -130,15 +130,15 @@ ExtensionSystem::IPlugin::ShutdownFlag QmlJSToolsPlugin::aboutToShutdown()
     return SynchronousShutdown;
 }
 
-void QmlJSToolsPlugin::onTaskStarted(const QString &type)
+void QmlJSToolsPlugin::onTaskStarted(Core::Id type)
 {
-    if (type == QLatin1String(QmlJSTools::Constants::TASK_INDEX))
+    if (type == QmlJSTools::Constants::TASK_INDEX)
         m_resetCodeModelAction->setEnabled(false);
 }
 
-void QmlJSToolsPlugin::onAllTasksFinished(const QString &type)
+void QmlJSToolsPlugin::onAllTasksFinished(Core::Id type)
 {
-    if (type == QLatin1String(QmlJSTools::Constants::TASK_INDEX))
+    if (type == QmlJSTools::Constants::TASK_INDEX)
         m_resetCodeModelAction->setEnabled(true);
 }
 
diff --git a/src/plugins/qmljstools/qmljstoolsplugin.h b/src/plugins/qmljstools/qmljstoolsplugin.h
index e36e08d6fe0b1e34522d8d04c9fbad880934a1a4..6aa5ea1c70c463f09b177d54e702ac058a557bf8 100644
--- a/src/plugins/qmljstools/qmljstoolsplugin.h
+++ b/src/plugins/qmljstools/qmljstoolsplugin.h
@@ -30,6 +30,7 @@
 #ifndef QMLJSTOOLS_H
 #define QMLJSTOOLS_H
 
+#include <coreplugin/id.h>
 #include <extensionsystem/iplugin.h>
 
 QT_BEGIN_NAMESPACE
@@ -64,8 +65,8 @@ public:
     ModelManager *modelManager() { return m_modelManager; }
 
 private slots:
-    void onTaskStarted(const QString &type);
-    void onAllTasksFinished(const QString &type);
+    void onTaskStarted(Core::Id type);
+    void onAllTasksFinished(Core::Id type);
 
 #ifdef WITH_TESTS
     void test_basic();
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index f58ec16a2d475f2bd4562abbfa2cc013e6fe56c1..e9ed882ce48c253d25e73eb3588bbc6f41a2edbd 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -859,7 +859,7 @@ void Qt4Project::asyncUpdate()
 
     m_asyncUpdateFutureInterface->setProgressRange(0, 0);
     Core::ProgressManager::addTask(m_asyncUpdateFutureInterface->future(), tr("Evaluating"),
-                             QLatin1String(Constants::PROFILE_EVALUATE));
+                             Constants::PROFILE_EVALUATE);
     if (debug)
         qDebug()<<"  adding task";
 
diff --git a/src/plugins/qtsupport/baseqtversion.cpp b/src/plugins/qtsupport/baseqtversion.cpp
index 7fa99b6b60ba5d5a58214ce716963017bf794336..17bf62f091d41d6df148f280b485b6ae3f4545cc 100644
--- a/src/plugins/qtsupport/baseqtversion.cpp
+++ b/src/plugins/qtsupport/baseqtversion.cpp
@@ -1517,7 +1517,7 @@ void BaseQtVersion::buildDebuggingHelper(ToolChain *tc, int tools)
 
     QFuture<void> task = QtConcurrent::run(&QtSupport::DebuggingHelperBuildTask::run, buildTask);
     const QString taskName = QCoreApplication::translate("BaseQtVersion", "Building helpers");
-    ProgressManager::addTask(task, taskName, QLatin1String("Qt::BuildHelpers"));
+    ProgressManager::addTask(task, taskName, "Qt::BuildHelpers");
 }
 
 FileName BaseQtVersion::qtCorePath(const QHash<QString,QString> &versionInfo, const QString &versionString)
diff --git a/src/plugins/qtsupport/qmldumptool.cpp b/src/plugins/qtsupport/qmldumptool.cpp
index a929051bdb544a7b3c6e49b176b38d0348cd32d1..5edc01b33a2193c02bd87542764c227870f76960 100644
--- a/src/plugins/qtsupport/qmldumptool.cpp
+++ b/src/plugins/qtsupport/qmldumptool.cpp
@@ -327,7 +327,7 @@ void QmlDumpTool::pathAndEnvironment(Project *project, BaseQtVersion *version,
             buildTask->updateProjectWhenDone(project, preferDebug);
             QFuture<void> task = QtConcurrent::run(&QmlDumpBuildTask::run, buildTask);
             const QString taskName = QmlDumpBuildTask::tr("Building helper");
-            Core::ProgressManager::addTask(task, taskName, QLatin1String("Qt4ProjectManager::BuildHelpers"));
+            Core::ProgressManager::addTask(task, taskName, "Qt4ProjectManager::BuildHelpers");
         }
         return;
     }
diff --git a/src/plugins/qtsupport/qtoptionspage.cpp b/src/plugins/qtsupport/qtoptionspage.cpp
index 4a497bf23a564c09d542bbbea7c7a1e0db3f9157..525fdb98645d3e780a0099623cc664a3bb4ecdf6 100644
--- a/src/plugins/qtsupport/qtoptionspage.cpp
+++ b/src/plugins/qtsupport/qtoptionspage.cpp
@@ -458,7 +458,7 @@ void QtOptionsPageWidget::buildDebuggingHelper(DebuggingHelperBuildTask::Tools t
     QFuture<void> task = QtConcurrent::run(&DebuggingHelperBuildTask::run, buildTask);
     const QString taskName = tr("Building helpers");
 
-    Core::ProgressManager::addTask(task, taskName, QLatin1String("Qt4ProjectManager::BuildHelpers"));
+    Core::ProgressManager::addTask(task, taskName, "Qt4ProjectManager::BuildHelpers");
 }
 void QtOptionsPageWidget::buildGdbHelper()
 {
diff --git a/src/plugins/texteditor/basefilefind.cpp b/src/plugins/texteditor/basefilefind.cpp
index 0543d88d5ccbe47e7946c14665030cab0cdcbf75..98320aa3d68c5bfad98574e340974a5b58ad85b9 100644
--- a/src/plugins/texteditor/basefilefind.cpp
+++ b/src/plugins/texteditor/basefilefind.cpp
@@ -181,8 +181,9 @@ void BaseFileFind::runSearch(Find::SearchResult *search)
             textDocumentFlagsForFindFlags(parameters.flags),
             ITextEditor::openedTextDocumentContents()));
     }
-    FutureProgress *progress = ProgressManager::addTask(watcher->future(), tr("Search"),
-        QLatin1String(Constants::TASK_SEARCH)); progress->setWidget(label);
+    FutureProgress *progress =
+        ProgressManager::addTask(watcher->future(), tr("Search"), Constants::TASK_SEARCH);
+    progress->setWidget(label);
     progress->setStatusBarWidget(statusLabel);
     connect(progress, SIGNAL(clicked()), search, SLOT(popup()));
 }
diff --git a/src/plugins/texteditor/basetextdocument.cpp b/src/plugins/texteditor/basetextdocument.cpp
index d8c0f10046736100064d5bc39ee7655a58f24e2d..732ab6a3ee3ff0e26c648152b95f086e86022bc0 100644
--- a/src/plugins/texteditor/basetextdocument.cpp
+++ b/src/plugins/texteditor/basetextdocument.cpp
@@ -367,8 +367,7 @@ bool BaseTextDocument::open(QString *errorString, const QString &fileName, const
         } else {
             QFutureInterface<void> interface;
             interface.setProgressRange(0, chunks);
-            ProgressManager::addTask(interface.future(),
-                tr("Opening file"), QLatin1String(Constants::TASK_OPEN_FILE));
+            ProgressManager::addTask(interface.future(), tr("Opening file"), Constants::TASK_OPEN_FILE);
             interface.reportStarted();
             d->m_document->setUndoRedoEnabled(false);
             QTextCursor c(d->m_document);
diff --git a/src/plugins/texteditor/generichighlighter/manager.cpp b/src/plugins/texteditor/generichighlighter/manager.cpp
index a05c36c444dad07d91a195a50421396d197632b6..2253c6d318df2ac4ee4339a03f386af23b8ee7dd 100644
--- a/src/plugins/texteditor/generichighlighter/manager.cpp
+++ b/src/plugins/texteditor/generichighlighter/manager.cpp
@@ -310,8 +310,7 @@ void Manager::registerMimeTypes()
         connect(&m_registeringWatcher, SIGNAL(finished()), processor, SLOT(deleteLater()));
         m_registeringWatcher.setFuture(future);
 
-        ProgressManager::addTask(future, tr("Registering definitions"),
-                                                            QLatin1String(Constants::TASK_REGISTER_DEFINITIONS));
+        ProgressManager::addTask(future, tr("Registering definitions"), "TextEditor.Task.Register");
     } else {
         m_hasQueuedRegistration = true;
         m_registeringWatcher.cancel();
@@ -444,8 +443,7 @@ void Manager::downloadDefinitions(const QList<QUrl> &urls, const QString &savePa
     m_isDownloadingDefinitionsSpec = true;
     QFuture<void> future = QtConcurrent::map(m_downloaders, DownloaderStarter());
     m_downloadWatcher.setFuture(future);
-    ProgressManager::addTask(future, tr("Downloading definitions"),
-                                                        QLatin1String(Constants::TASK_DOWNLOAD_DEFINITIONS));
+    ProgressManager::addTask(future, tr("Downloading definitions"), "TextEditor.Task.Download");
 }
 
 void Manager::downloadDefinitionsFinished()
diff --git a/src/plugins/texteditor/texteditorconstants.h b/src/plugins/texteditor/texteditorconstants.h
index e65b158d79468fde4dffef0c238d33d82a155176..99370a26a5de1cf9730d3c33a18ca35052d05da9 100644
--- a/src/plugins/texteditor/texteditorconstants.h
+++ b/src/plugins/texteditor/texteditorconstants.h
@@ -159,8 +159,6 @@ const char GOTO_PREVIOUS_WORD_CAMEL_CASE_WITH_SELECTION[] = "TextEditor.GotoPrev
 const char GOTO_NEXT_WORD_CAMEL_CASE_WITH_SELECTION[] = "TextEditor.GotoNextWordCamelCaseWithSelection";
 const char C_TEXTEDITOR_MIMETYPE_TEXT[] = "text/plain";
 const char INFO_SYNTAX_DEFINITION[] = "TextEditor.InfoSyntaxDefinition";
-const char TASK_DOWNLOAD_DEFINITIONS[] = "TextEditor.Task.Download";
-const char TASK_REGISTER_DEFINITIONS[] = "TextEditor.Task.Register";
 const char TASK_OPEN_FILE[]        = "TextEditor.Task.OpenFile";
 const char CIRCULAR_PASTE[]        = "TextEditor.CircularPaste";
 const char SWITCH_UTF8BOM[]        = "TextEditor.SwitchUtf8bom";
diff --git a/src/plugins/updateinfo/updateinfoplugin.cpp b/src/plugins/updateinfo/updateinfoplugin.cpp
index c9bc69bae1bf51b89fc2f61d629a4c86d0af9e23..f0c7051543a79db9433bcd27b3c90084af643fee 100644
--- a/src/plugins/updateinfo/updateinfoplugin.cpp
+++ b/src/plugins/updateinfo/updateinfoplugin.cpp
@@ -184,7 +184,7 @@ void UpdateInfoPlugin::reactOnUpdaterOutput()
     } else {
         //added the current almost finished task to the progressmanager
         d->updateInfoProgress = ProgressManager::addTask(
-                d->lastCheckUpdateInfoTask, tr("Update"), QLatin1String("Update.GetInfo"), ProgressManager::KeepOnFinish);
+                d->lastCheckUpdateInfoTask, tr("Update"), "Update.GetInfo", ProgressManager::KeepOnFinish);
 
         d->updateInfoProgress->setKeepOnFinish(FutureProgress::KeepOnFinish);
 
diff --git a/src/plugins/valgrind/valgrindengine.cpp b/src/plugins/valgrind/valgrindengine.cpp
index f9c0aab00128bf55bde9894daf32fca0e5c9536d..5717f0e3940c16cb21f7efe366d58791df2b5da4 100644
--- a/src/plugins/valgrind/valgrindengine.cpp
+++ b/src/plugins/valgrind/valgrindengine.cpp
@@ -86,7 +86,7 @@ bool ValgrindRunControl::startEngine()
     emit starting(this);
 
     FutureProgress *fp = ProgressManager::addTask(m_progress->future(),
-                                                        progressTitle(), QLatin1String("valgrind"));
+                                                        progressTitle(), "valgrind");
     fp->setKeepOnFinish(FutureProgress::HideOnFinish);
     m_progress->setProgressRange(0, progressMaximum);
     m_progress->reportStarted();
diff --git a/src/plugins/vcsbase/cleandialog.cpp b/src/plugins/vcsbase/cleandialog.cpp
index 300588d684e7862d8b56195920789a754df42e00..20a4dd7b140e5a1863cd4426cf30641165268c99 100644
--- a/src/plugins/vcsbase/cleandialog.cpp
+++ b/src/plugins/vcsbase/cleandialog.cpp
@@ -268,7 +268,7 @@ bool CleanDialog::promptToDelete()
     QFuture<void> task = QtConcurrent::run(cleanTask, &Internal::CleanFilesTask::run);
     const QString taskName = tr("Cleaning %1").
                              arg(QDir::toNativeSeparators(d->m_workingDirectory));
-    Core::ProgressManager::addTask(task, taskName, QLatin1String("VcsBase.cleanRepository"));
+    Core::ProgressManager::addTask(task, taskName, "VcsBase.cleanRepository");
     return true;
 }
 
diff --git a/src/plugins/vcsbase/command.cpp b/src/plugins/vcsbase/command.cpp
index 9c7d3a152589b5a735d03f025eac5b6a036d6e23..8aa3d1fdf6df1395ce50c06279b970f8bb1ac660 100644
--- a/src/plugins/vcsbase/command.cpp
+++ b/src/plugins/vcsbase/command.cpp
@@ -213,7 +213,8 @@ void Command::execute()
         binary = binary.replace(0, 1, binary[0].toUpper()); // Upper the first letter
     const QString taskName = binary + QLatin1Char(' ') + d->m_jobs.front().arguments.at(0);
 
-    Core::ProgressManager::addTask(task, taskName, binary + QLatin1String(".action"));
+    Core::ProgressManager::addTask(task, taskName,
+        Core::Id::fromString(binary + QLatin1String(".action")));
 }
 
 void Command::terminate()