From f8499fd45b932d2f7d94109e64e304ec2dd1125e Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date: Fri, 24 Feb 2012 09:43:52 +0100
Subject: [PATCH] Initial cleanup of the Todo-plugin.

- Compile with QT_NO_CAST_FROM_ASCII, fix
  single character strings
- Remove special character from constants.h,
  fix constant names
- Fix tr() errors.
- Clean include directives
- struct -> class (coding style)

Change-Id: Id6108a03312bdecc6df3015b5a12653c95390647
Reviewed-by: Eike Ziller <eike.ziller@nokia.com>
---
 src/plugins/todo/constants.h               | 12 +++----
 src/plugins/todo/cpptodoitemsscanner.cpp   |  3 +-
 src/plugins/todo/keyword.h                 |  1 -
 src/plugins/todo/keyworddialog.cpp         | 19 ++++++----
 src/plugins/todo/keyworddialog.h           |  4 +--
 src/plugins/todo/keyworddialog.ui          |  4 +--
 src/plugins/todo/lineparser.cpp            |  8 ++---
 src/plugins/todo/optionsdialog.cpp         |  2 ++
 src/plugins/todo/optionsdialog.h           |  6 ++--
 src/plugins/todo/optionspage.cpp           | 10 +++---
 src/plugins/todo/optionspage.h             |  3 +-
 src/plugins/todo/qmljstodoitemsscanner.cpp |  2 +-
 src/plugins/todo/settings.cpp              | 40 ++++++++++++++--------
 src/plugins/todo/settings.h                |  5 +--
 src/plugins/todo/todo.pro                  |  2 ++
 src/plugins/todo/todoitem.h                |  7 ++--
 src/plugins/todo/todoitemsmodel.cpp        |  4 ++-
 src/plugins/todo/todoitemsprovider.cpp     |  2 ++
 src/plugins/todo/todoitemsprovider.h       |  5 +--
 src/plugins/todo/todoitemsscanner.h        |  2 +-
 src/plugins/todo/todooutputpane.cpp        | 12 ++++---
 src/plugins/todo/todooutputpane.h          | 18 ++++++----
 src/plugins/todo/todoplugin.cpp            |  4 +++
 src/plugins/todo/todoplugin.h              | 11 +++---
 24 files changed, 115 insertions(+), 71 deletions(-)

diff --git a/src/plugins/todo/constants.h b/src/plugins/todo/constants.h
index 01ee0505fe9..983e1a750b9 100644
--- a/src/plugins/todo/constants.h
+++ b/src/plugins/todo/constants.h
@@ -58,7 +58,7 @@ const char ICON_TODO[] = ":/todoplugin/images/todo.png";
 const char ICON_WARNING[] = ":/projectexplorer/images/compile_warning.png";
 const char ICON_ERROR[] = ":/projectexplorer/images/compile_error.png";
 
-// Public domain, I’m the author
+// Public domain, I am the author
 const char ICON_CURRENT_FILE[] = ":/todoplugin/images/current-file.png";
 const char ICON_WHOLE_PROJECT[] = ":/todoplugin/images/whole-project.png";
 
@@ -77,14 +77,14 @@ enum OutputColumnIndex {
     OUTPUT_COLUMN_LAST
 };
 
-const char OUPTUT_COLUMN_TEXT_TITLE[] = QT_TRANSLATE_NOOP("TodoOutputPane", "Description");
-const char OUTPUT_COLUMN_FILE_TITLE[] = QT_TRANSLATE_NOOP("TodoOutputPane", "File");
-const char OUTPUT_COLUMN_LINE_TITLE[] = QT_TRANSLATE_NOOP("TodoOutputPane", "Line");
+const char OUTPUT_COLUMN_TEXT_TITLE[] = QT_TRANSLATE_NOOP("Todo::Internal::TodoItemsModel", "Description");
+const char OUTPUT_COLUMN_FILE_TITLE[] = QT_TRANSLATE_NOOP("Todo::Internal::TodoItemsModel", "File");
+const char OUTPUT_COLUMN_LINE_TITLE[] = QT_TRANSLATE_NOOP("Todo::Internal::TodoItemsModel", "Line");
 
-const int OUTPUT_TOOLBAR_SPACER_WIDHT = 25;
+const int OUTPUT_TOOLBAR_SPACER_WIDTH = 25;
 
 const int OUTPUT_PANE_UPDATE_INTERVAL = 2000;
-const char OUTPUT_PANE_TITLE[] = QT_TRANSLATE_NOOP("TodoOutputPane", "To-Do Entries");
+const char OUTPUT_PANE_TITLE[] = QT_TRANSLATE_NOOP("Todo::Internal::TodoOutputPane", "To-Do Entries");
 
 } // namespace Constants
 } // namespace Todo
diff --git a/src/plugins/todo/cpptodoitemsscanner.cpp b/src/plugins/todo/cpptodoitemsscanner.cpp
index 04aefdbe19d..5f4ca1b7d95 100644
--- a/src/plugins/todo/cpptodoitemsscanner.cpp
+++ b/src/plugins/todo/cpptodoitemsscanner.cpp
@@ -98,7 +98,8 @@ void CppTodoItemsScanner::processDocument(CPlusPlus::Document::Ptr doc)
 
         // Process every line of the comment
         // TODO: Do not create QStringList, just iterate through a string tracking line endings.
-        QStringList commentLines = QString::fromUtf8(source).split("\n", QString::SkipEmptyParts);
+        const QStringList commentLines =
+            QString::fromUtf8(source).split(QLatin1Char('\n'), QString::SkipEmptyParts);
         unsigned lineNumber = 0;
         translationUnit->getPosition(token.begin(), &lineNumber);
         for (int j = 0; j < commentLines.count(); ++j) {
diff --git a/src/plugins/todo/keyword.h b/src/plugins/todo/keyword.h
index d8f0bdf437d..48533de756f 100644
--- a/src/plugins/todo/keyword.h
+++ b/src/plugins/todo/keyword.h
@@ -34,7 +34,6 @@
 #ifndef KEYWORD_H
 #define KEYWORD_H
 
-#include <QIcon>
 #include <QColor>
 #include <QString>
 #include <QList>
diff --git a/src/plugins/todo/keyworddialog.cpp b/src/plugins/todo/keyworddialog.cpp
index c40bb18bf65..898ccdd403e 100644
--- a/src/plugins/todo/keyworddialog.cpp
+++ b/src/plugins/todo/keyworddialog.cpp
@@ -32,6 +32,7 @@
 **************************************************************************/
 
 #include "keyworddialog.h"
+#include "keyword.h"
 #include "ui_keyworddialog.h"
 #include "constants.h"
 
@@ -74,16 +75,22 @@ void KeywordDialog::setupListWidget(const QString &selectedIcon)
 {
     ui->listWidget->setViewMode(QListWidget::IconMode);
 
-    QListWidgetItem *item = new QListWidgetItem(QIcon(Constants::ICON_INFO), "information");
-    item->setData(Qt::UserRole, Constants::ICON_INFO);
+    const QString infoIconName = QLatin1String(Constants::ICON_INFO);
+    QListWidgetItem *item = new QListWidgetItem(QIcon(infoIconName),
+                                                QLatin1String("information"));
+    item->setData(Qt::UserRole, infoIconName);
     ui->listWidget->addItem(item);
 
-    item = new QListWidgetItem(QIcon(Constants::ICON_WARNING), "warning");
-    item->setData(Qt::UserRole, Constants::ICON_WARNING);
+    const QString warningIconName = QLatin1String(Constants::ICON_WARNING);
+    item = new QListWidgetItem(QIcon(warningIconName),
+                               QLatin1String("warning"));
+    item->setData(Qt::UserRole, warningIconName);
     ui->listWidget->addItem(item);
 
-    item = new QListWidgetItem(QIcon(Constants::ICON_ERROR), "error");
-    item->setData(Qt::UserRole, Constants::ICON_ERROR);
+    const QString errorIconName = QLatin1String(Constants::ICON_ERROR);
+    item = new QListWidgetItem(QIcon(errorIconName),
+                               QLatin1String("error"));
+    item->setData(Qt::UserRole, errorIconName);
     ui->listWidget->addItem(item);
 
     for (int i = 0; i < ui->listWidget->count(); ++i) {
diff --git a/src/plugins/todo/keyworddialog.h b/src/plugins/todo/keyworddialog.h
index 191ae336187..d4226751e28 100644
--- a/src/plugins/todo/keyworddialog.h
+++ b/src/plugins/todo/keyworddialog.h
@@ -34,8 +34,6 @@
 #ifndef ADDKEYWORDDIALOG_H
 #define ADDKEYWORDDIALOG_H
 
-#include "keyword.h"
-
 #include <QDialog>
 
 namespace Todo {
@@ -45,6 +43,8 @@ namespace Ui {
     class AddKeywordDialog;
 }
 
+class Keyword;
+
 class KeywordDialog : public QDialog
 {
     Q_OBJECT
diff --git a/src/plugins/todo/keyworddialog.ui b/src/plugins/todo/keyworddialog.ui
index 31029151c60..8d73589f128 100644
--- a/src/plugins/todo/keyworddialog.ui
+++ b/src/plugins/todo/keyworddialog.ui
@@ -37,10 +37,10 @@
           <item>
            <widget class="QLineEdit" name="colorEdit">
             <property name="inputMask">
-             <string>\#HHHHHH; </string>
+             <string notr="true">\#HHHHHH; </string>
             </property>
             <property name="text">
-             <string>#000000</string>
+             <string notr="true">#000000</string>
             </property>
            </widget>
           </item>
diff --git a/src/plugins/todo/lineparser.cpp b/src/plugins/todo/lineparser.cpp
index 1345f529e5b..84dad945b34 100644
--- a/src/plugins/todo/lineparser.cpp
+++ b/src/plugins/todo/lineparser.cpp
@@ -66,7 +66,8 @@ LineParser::KeywordEntryCandidates LineParser::findKeywordEntryCandidates(const
     for (int i = 0; i < m_keywords.count(); ++i) {
         int searchFrom = -1;
         forever {
-            int index = line.lastIndexOf(m_keywords.at(i).name + ":", searchFrom);
+            const int index = line.lastIndexOf(m_keywords.at(i).name
+                                               + QLatin1Char(':'), searchFrom);
 
             if (index == -1)
                 break; // 'forever' loop exit condition
@@ -133,9 +134,8 @@ QList<TodoItem> LineParser::todoItemsFromKeywordEntries(const QList<KeywordEntry
 
     foreach (const KeywordEntry &entry, entries) {
         TodoItem item;
-        item.text = QString("%1: %2")
-            .arg(m_keywords.at(entry.keywordIndex).name)
-            .arg(entry.text);
+        item.text =  m_keywords.at(entry.keywordIndex).name
+                     + QLatin1String(": ") + entry.text;
         item.color = m_keywords.at(entry.keywordIndex).color;
         item.iconResource = m_keywords.at(entry.keywordIndex).iconResource;
         todoItems << item;
diff --git a/src/plugins/todo/optionsdialog.cpp b/src/plugins/todo/optionsdialog.cpp
index e81ec86f1ea..e6432967eb4 100644
--- a/src/plugins/todo/optionsdialog.cpp
+++ b/src/plugins/todo/optionsdialog.cpp
@@ -34,6 +34,8 @@
 #include "optionsdialog.h"
 #include "ui_optionsdialog.h"
 #include "keyworddialog.h"
+#include "keyword.h"
+#include "settings.h"
 #include "constants.h"
 
 namespace Todo {
diff --git a/src/plugins/todo/optionsdialog.h b/src/plugins/todo/optionsdialog.h
index a353bcd5e05..5a876e8e626 100644
--- a/src/plugins/todo/optionsdialog.h
+++ b/src/plugins/todo/optionsdialog.h
@@ -34,9 +34,6 @@
 #ifndef OPTIONSDIALOG_H
 #define OPTIONSDIALOG_H
 
-#include "keyword.h"
-#include "settings.h"
-
 #include <QWidget>
 
 namespace Todo {
@@ -46,6 +43,9 @@ namespace Ui {
     class OptionsDialog;
 }
 
+class Settings;
+class Keyword;
+
 class OptionsDialog : public QWidget
 {
     Q_OBJECT
diff --git a/src/plugins/todo/optionspage.cpp b/src/plugins/todo/optionspage.cpp
index d8fe1ac9345..f05f45ec199 100644
--- a/src/plugins/todo/optionspage.cpp
+++ b/src/plugins/todo/optionspage.cpp
@@ -33,10 +33,12 @@
 
 #include "optionspage.h"
 #include "constants.h"
+#include "optionsdialog.h"
 
 #include <coreplugin/icore.h>
 
 #include <QList>
+#include <QIcon>
 #include <QMessageBox>
 
 Todo::Internal::OptionsDialog *some = 0;
@@ -62,7 +64,7 @@ void OptionsPage::setSettings(const Settings &settings)
 
 QString OptionsPage::id() const
 {
-    return "TodoSettings";
+    return QLatin1String("TodoSettings");
 }
 
 QString OptionsPage::trName() const
@@ -72,7 +74,7 @@ QString OptionsPage::trName() const
 
 QString OptionsPage::category() const
 {
-    return "To-Do";
+    return QLatin1String("To-Do");
 }
 
 QString OptionsPage::trCategory() const
@@ -92,7 +94,7 @@ QString OptionsPage::displayCategory() const
 
 QIcon OptionsPage::categoryIcon() const
 {
-    return QIcon(Constants::ICON_TODO);
+    return QIcon(QLatin1String(Constants::ICON_TODO));
 }
 
 
@@ -119,7 +121,7 @@ void OptionsPage::finish()
 
 bool OptionsPage::matches(const QString &searchKeyWord) const
 {
-    return searchKeyWord == QString("todo");
+    return searchKeyWord == QLatin1String("todo");
 }
 
 } // namespace Internal
diff --git a/src/plugins/todo/optionspage.h b/src/plugins/todo/optionspage.h
index 094fae75b8e..bdf25fb54f3 100644
--- a/src/plugins/todo/optionspage.h
+++ b/src/plugins/todo/optionspage.h
@@ -34,7 +34,6 @@
 #ifndef SETTINGSPAGE_H
 #define SETTINGSPAGE_H
 
-#include "optionsdialog.h"
 #include "settings.h"
 
 #include <coreplugin/dialogs/ioptionspage.h>
@@ -42,6 +41,8 @@
 namespace Todo {
 namespace Internal {
 
+class OptionsDialog;
+
 class OptionsPage : public Core::IOptionsPage
 {
     Q_OBJECT
diff --git a/src/plugins/todo/qmljstodoitemsscanner.cpp b/src/plugins/todo/qmljstodoitemsscanner.cpp
index c07ceee2fc6..37323acfb18 100644
--- a/src/plugins/todo/qmljstodoitemsscanner.cpp
+++ b/src/plugins/todo/qmljstodoitemsscanner.cpp
@@ -86,7 +86,7 @@ void QmlJsTodoItemsScanner::processDocument(QmlJS::Document::Ptr doc)
 
         // Process every line
         // TODO: Do not create QStringList, just iterate through a string tracking line endings.
-        QStringList commentLines = source.split("\n", QString::SkipEmptyParts);
+        QStringList commentLines = source.split(QLatin1Char('\n'), QString::SkipEmptyParts);
         quint32 startLine = sourceLocation.startLine;
         for (int j = 0; j < commentLines.count(); ++j) {
             const QString &commentLine = commentLines.at(j);
diff --git a/src/plugins/todo/settings.cpp b/src/plugins/todo/settings.cpp
index 4481680b1bd..c20cd22475c 100644
--- a/src/plugins/todo/settings.cpp
+++ b/src/plugins/todo/settings.cpp
@@ -34,20 +34,27 @@
 #include "settings.h"
 #include "constants.h"
 
+#include <QSettings>
+
 namespace Todo {
 namespace Internal {
 
 void Settings::save(QSettings *settings) const
 {
-    settings->beginGroup(Constants::SETTINGS_GROUP);
-    settings->setValue(Constants::SCANNING_SCOPE, scanningScope);
-
-    settings->beginWriteArray(Constants::KEYWORDS_LIST);
-    for (int i = 0; i < keywords.size(); ++i) {
-        settings->setArrayIndex(i);
-        settings->setValue("name", keywords.at(i).name);
-        settings->setValue("color", keywords.at(i).color);
-        settings->setValue("iconResource", keywords.at(i).iconResource);
+    settings->beginGroup(QLatin1String(Constants::SETTINGS_GROUP));
+    settings->setValue(QLatin1String(Constants::SCANNING_SCOPE), scanningScope);
+
+    settings->beginWriteArray(QLatin1String(Constants::KEYWORDS_LIST));
+    if (const int size = keywords.size()) {
+        const QString nameKey = QLatin1String("name");
+        const QString colorKey = QLatin1String("color");
+        const QString iconResourceKey = QLatin1String("iconResource");
+        for (int i = 0; i < size; ++i) {
+            settings->setArrayIndex(i);
+            settings->setValue(nameKey, keywords.at(i).name);
+            settings->setValue(colorKey, keywords.at(i).color);
+            settings->setValue(iconResourceKey, keywords.at(i).iconResource);
+        }
     }
     settings->endArray();
 
@@ -59,20 +66,23 @@ void Settings::load(QSettings *settings)
 {
     setDefault();
 
-    settings->beginGroup(Constants::SETTINGS_GROUP);
+    settings->beginGroup(QLatin1String(Constants::SETTINGS_GROUP));
 
-    scanningScope = static_cast<ScanningScope>(settings->value(Constants::SCANNING_SCOPE,
+    scanningScope = static_cast<ScanningScope>(settings->value(QLatin1String(Constants::SCANNING_SCOPE),
         scanningScope).toInt());
 
     KeywordList newKeywords;
-    int size = settings->beginReadArray(Constants::KEYWORDS_LIST);
+    const int size = settings->beginReadArray(QLatin1String(Constants::KEYWORDS_LIST));
     if (size > 0) {
+        const QString nameKey = QLatin1String("name");
+        const QString colorKey = QLatin1String("color");
+        const QString iconResourceKey = QLatin1String("iconResource");
         for (int i = 0; i < size; ++i) {
             settings->setArrayIndex(i);
             Keyword keyword;
-            keyword.name = settings->value("name").toString();
-            keyword.color = settings->value("color").value<QColor>();
-            keyword.iconResource = settings->value("iconResource").toString();
+            keyword.name = settings->value(nameKey).toString();
+            keyword.color = settings->value(colorKey).value<QColor>();
+            keyword.iconResource = settings->value(iconResourceKey).toString();
             newKeywords << keyword;
         }
         keywords = newKeywords;
diff --git a/src/plugins/todo/settings.h b/src/plugins/todo/settings.h
index 74b12eaabe2..80ce333d23d 100644
--- a/src/plugins/todo/settings.h
+++ b/src/plugins/todo/settings.h
@@ -36,7 +36,7 @@
 
 #include "keyword.h"
 
-#include <QSettings>
+QT_FORWARD_DECLARE_CLASS(QSettings)
 
 namespace Todo {
 namespace Internal {
@@ -46,7 +46,8 @@ enum ScanningScope {
     ScanningScopeProject
 };
 
-struct Settings {
+class Settings {
+public:
     KeywordList keywords;
     ScanningScope scanningScope;
     void save(QSettings *settings) const;
diff --git a/src/plugins/todo/todo.pro b/src/plugins/todo/todo.pro
index 97e6f95b648..b9a659a42c0 100644
--- a/src/plugins/todo/todo.pro
+++ b/src/plugins/todo/todo.pro
@@ -4,6 +4,8 @@ TARGET = Todo
 include(../../qtcreatorplugin.pri)
 include(todo_dependencies.pri)
 
+DEFINES += QT_NO_CAST_FROM_ASCII
+
 HEADERS += todoplugin.h \
     keyword.h \
     constants.h \
diff --git a/src/plugins/todo/todoitem.h b/src/plugins/todo/todoitem.h
index 7065e4d8678..25117359eeb 100644
--- a/src/plugins/todo/todoitem.h
+++ b/src/plugins/todo/todoitem.h
@@ -38,13 +38,16 @@
 
 #include <QMetaType>
 #include <QString>
-#include <QIcon>
+#include <QColor>
 
 namespace Todo {
 namespace Internal {
 
-struct TodoItem
+class TodoItem
 {
+public:
+    TodoItem() : line(-1) {}
+
     QString text;
     QString file;
     int line;
diff --git a/src/plugins/todo/todoitemsmodel.cpp b/src/plugins/todo/todoitemsmodel.cpp
index 5227513488f..1a8497f1bb3 100644
--- a/src/plugins/todo/todoitemsmodel.cpp
+++ b/src/plugins/todo/todoitemsmodel.cpp
@@ -34,6 +34,8 @@
 #include "todoitemsmodel.h"
 #include "constants.h"
 
+#include <QIcon>
+
 namespace Todo {
 namespace Internal {
 
@@ -117,7 +119,7 @@ QVariant TodoItemsModel::headerData(int section, Qt::Orientation orientation, in
 
     switch (section) {
         case Constants::OUTPUT_COLUMN_TEXT:
-            return tr(Constants::OUPTUT_COLUMN_TEXT_TITLE);
+            return tr(Constants::OUTPUT_COLUMN_TEXT_TITLE);
 
         case Constants::OUTPUT_COLUMN_FILE:
             return tr(Constants::OUTPUT_COLUMN_FILE_TITLE);
diff --git a/src/plugins/todo/todoitemsprovider.cpp b/src/plugins/todo/todoitemsprovider.cpp
index 54c279936c9..99476eeb15d 100644
--- a/src/plugins/todo/todoitemsprovider.cpp
+++ b/src/plugins/todo/todoitemsprovider.cpp
@@ -35,6 +35,8 @@
 #include "constants.h"
 #include "cpptodoitemsscanner.h"
 #include "qmljstodoitemsscanner.h"
+#include "todoitemsmodel.h"
+#include "todoitemsscanner.h"
 
 #include <projectexplorer/projectexplorer.h>
 #include <coreplugin/editormanager/editormanager.h>
diff --git a/src/plugins/todo/todoitemsprovider.h b/src/plugins/todo/todoitemsprovider.h
index 149f2828fc8..88ee1af4996 100644
--- a/src/plugins/todo/todoitemsprovider.h
+++ b/src/plugins/todo/todoitemsprovider.h
@@ -36,8 +36,6 @@
 
 #include "todoitem.h"
 #include "settings.h"
-#include "todoitemsmodel.h"
-#include "todoitemsscanner.h"
 
 #include <projectexplorer/project.h>
 #include <coreplugin/editormanager/ieditor.h>
@@ -48,6 +46,9 @@
 namespace Todo {
 namespace Internal {
 
+class TodoItemsModel;
+class TodoItemsScanner;
+
 class TodoItemsProvider : public QObject
 {
     Q_OBJECT
diff --git a/src/plugins/todo/todoitemsscanner.h b/src/plugins/todo/todoitemsscanner.h
index 460632f185f..cc6fd49d605 100644
--- a/src/plugins/todo/todoitemsscanner.h
+++ b/src/plugins/todo/todoitemsscanner.h
@@ -35,7 +35,7 @@
 #define TODOITEMSSCANNER_H
 
 #include "todoitem.h"
-#include "settings.h"
+#include "keyword.h"
 
 #include <QObject>
 
diff --git a/src/plugins/todo/todooutputpane.cpp b/src/plugins/todo/todooutputpane.cpp
index ae9413d7780..5c7baa073d4 100755
--- a/src/plugins/todo/todooutputpane.cpp
+++ b/src/plugins/todo/todooutputpane.cpp
@@ -33,9 +33,13 @@
 
 #include "todooutputpane.h"
 #include "constants.h"
+#include "todoitemsmodel.h"
 
 #include <QIcon>
 #include <QHeaderView>
+#include <QTreeView>
+#include <QToolButton>
+#include <QButtonGroup>
 
 namespace Todo {
 namespace Internal {
@@ -147,7 +151,7 @@ void TodoOutputPane::scopeButtonClicked(QAbstractButton* button)
         emit scanningScopeChanged(ScanningScopeProject);
 }
 
-void TodoOutputPane::todoTreeViewClicked(QModelIndex index)
+void TodoOutputPane::todoTreeViewClicked(const QModelIndex &index)
 {
     // Create a to-do item and notify that it was clicked on
 
@@ -190,12 +194,12 @@ void TodoOutputPane::freeTreeView()
 void TodoOutputPane::createScopeButtons()
 {
     m_currentFileButton = new QToolButton();
-    m_currentFileButton->setIcon(QIcon(QString(Constants::ICON_CURRENT_FILE)));
+    m_currentFileButton->setIcon(QIcon(QLatin1String(Constants::ICON_CURRENT_FILE)));
     m_currentFileButton->setCheckable(true);
     m_currentFileButton->setToolTip(tr("Scan in the current opened file"));
 
     m_wholeProjectButton = new QToolButton();
-    m_wholeProjectButton->setIcon(QIcon(QString(Constants::ICON_WHOLE_PROJECT)));
+    m_wholeProjectButton->setIcon(QIcon(QLatin1String(Constants::ICON_WHOLE_PROJECT)));
     m_wholeProjectButton->setCheckable(true);
     m_wholeProjectButton->setToolTip(tr("Scan in the whole project"));
 
@@ -205,7 +209,7 @@ void TodoOutputPane::createScopeButtons()
     connect(m_scopeButtons, SIGNAL(buttonClicked(QAbstractButton*)), SLOT(scopeButtonClicked(QAbstractButton*)));
 
     m_spacer = new QWidget;
-    m_spacer->setMinimumWidth(Constants::OUTPUT_TOOLBAR_SPACER_WIDHT);
+    m_spacer->setMinimumWidth(Constants::OUTPUT_TOOLBAR_SPACER_WIDTH);
 }
 
 void TodoOutputPane::freeScopeButtons()
diff --git a/src/plugins/todo/todooutputpane.h b/src/plugins/todo/todooutputpane.h
index 3b2afc8d6fb..2dea1204be0 100755
--- a/src/plugins/todo/todooutputpane.h
+++ b/src/plugins/todo/todooutputpane.h
@@ -34,20 +34,24 @@
 #ifndef TODOOUTPUTPANE_H
 #define TODOOUTPUTPANE_H
 
-#include "keyword.h"
-#include "todoitem.h"
 #include "settings.h"
-#include "todoitemsmodel.h"
 
 #include <coreplugin/ioutputpane.h>
 
-#include <QTreeView>
-#include <QToolButton>
-#include <QButtonGroup>
+QT_BEGIN_NAMESPACE
+class QTreeView;
+class QToolButton;
+class QButtonGroup;
+class QModelIndex;
+class QAbstractButton;
+QT_END_NAMESPACE
 
 namespace Todo {
 namespace Internal {
 
+class TodoItem;
+class TodoItemsModel;
+
 class TodoOutputPane : public Core::IOutputPane
 {
     Q_OBJECT
@@ -79,7 +83,7 @@ signals:
 
 private slots:
     void scopeButtonClicked(QAbstractButton *button);
-    void todoTreeViewClicked(QModelIndex index);
+    void todoTreeViewClicked(const QModelIndex &index);
 
 private:
     QTreeView *m_todoTreeView;
diff --git a/src/plugins/todo/todoplugin.cpp b/src/plugins/todo/todoplugin.cpp
index 0bd2a3008d7..6d3187e9c33 100755
--- a/src/plugins/todo/todoplugin.cpp
+++ b/src/plugins/todo/todoplugin.cpp
@@ -33,6 +33,10 @@
 
 #include "todoplugin.h"
 #include "constants.h"
+#include "optionspage.h"
+#include "keyword.h"
+#include "todooutputpane.h"
+#include "todoitemsprovider.h"
 
 #include <coreplugin/icore.h>
 #include <coreplugin/editormanager/editormanager.h>
diff --git a/src/plugins/todo/todoplugin.h b/src/plugins/todo/todoplugin.h
index 685b303d031..efac7a23233 100755
--- a/src/plugins/todo/todoplugin.h
+++ b/src/plugins/todo/todoplugin.h
@@ -34,19 +34,18 @@
 #ifndef TODOPLUGIN_H
 #define TODOPLUGIN_H
 
-#include "optionspage.h"
-#include "keyword.h"
-#include "todooutputpane.h"
 #include "settings.h"
-#include "todoitemsprovider.h"
 
 #include <extensionsystem/iplugin.h>
 
-#include <QStringList>
-
 namespace Todo {
 namespace Internal {
 
+class TodoOutputPane;
+class OptionsPage;
+class TodoItemsProvider;
+class TodoItem;
+
 class TodoPlugin : public ExtensionSystem::IPlugin
 {
     Q_OBJECT
-- 
GitLab