From 6cf0247bd6e85a57c243a98b3115535b8b5c6b4b Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date: Mon, 4 Jan 2010 16:50:23 +0100
Subject: [PATCH] Fix warnings about QFileInfo being instantiated on empty
 string.

Do not insert currentDocument variable for empty files.
Polish VariableManager, QLatin1String(), const-correctness.

Reviewed-by: Daniel Molkentin <daniel.molkentin@nokia.com>
---
 src/plugins/coreplugin/variablemanager.cpp | 75 ++++++++++++----------
 src/plugins/coreplugin/variablemanager.h   |  8 +--
 2 files changed, 46 insertions(+), 37 deletions(-)

diff --git a/src/plugins/coreplugin/variablemanager.cpp b/src/plugins/coreplugin/variablemanager.cpp
index f21a280cf59..73492b2a66e 100644
--- a/src/plugins/coreplugin/variablemanager.cpp
+++ b/src/plugins/coreplugin/variablemanager.cpp
@@ -54,65 +54,74 @@ void VariableManager::insert(const QString &variable, const QString &value)
 void VariableManager::insertFileInfo(const QString &tag, const QFileInfo &file)
 {
     insert(tag, file.filePath());
-    insert(tag+":absoluteFilePath", file.absoluteFilePath());
-    insert(tag+":absolutePath", file.absolutePath());
-    insert(tag+":baseName", file.baseName());
-    insert(tag+":canonicalPath", file.canonicalPath());
-    insert(tag+":canonicalFilePath", file.canonicalFilePath());
-    insert(tag+":completeBaseName", file.completeBaseName());
-    insert(tag+":completeSuffix", file.completeSuffix());
-    insert(tag+":fileName", file.fileName());
-    insert(tag+":filePath", file.filePath());
-    insert(tag+":path", file.path());
-    insert(tag+":suffix", file.suffix());
+    insert(tag  + QLatin1String(":absoluteFilePath"), file.absoluteFilePath());
+    insert(tag + QLatin1String(":absolutePath"), file.absolutePath());
+    insert(tag + QLatin1String(":baseName"), file.baseName());
+    insert(tag + QLatin1String(":canonicalPath"), file.canonicalPath());
+    insert(tag + QLatin1String(":canonicalFilePath"), file.canonicalFilePath());
+    insert(tag + QLatin1String(":completeBaseName"), file.completeBaseName());
+    insert(tag + QLatin1String(":completeSuffix"), file.completeSuffix());
+    insert(tag + QLatin1String(":fileName"), file.fileName());
+    insert(tag + QLatin1String(":filePath"), file.filePath());
+    insert(tag + QLatin1String(":path"), file.path());
+    insert(tag + QLatin1String(":suffix"), file.suffix());
 }
 
 void VariableManager::removeFileInfo(const QString &tag)
 {
-    remove(tag);
-    remove(tag+":absoluteFilePath");
-    remove(tag+":absolutePath");
-    remove(tag+":baseName");
-    remove(tag+":canonicalPath");
-    remove(tag+":canonicalFilePath");
-    remove(tag+":completeBaseName");
-    remove(tag+":completeSuffix");
-    remove(tag+":fileName");
-    remove(tag+":filePath");
-    remove(tag+":path");
-    remove(tag+":suffix");
+    if (remove(tag)) {
+        remove(tag + QLatin1String(":absoluteFilePath"));
+        remove(tag + QLatin1String(":absolutePath"));
+        remove(tag + QLatin1String(":baseName"));
+        remove(tag + QLatin1String(":canonicalPath"));
+        remove(tag + QLatin1String(":canonicalFilePath"));
+        remove(tag + QLatin1String(":completeBaseName"));
+        remove(tag + QLatin1String(":completeSuffix"));
+        remove(tag + QLatin1String(":fileName"));
+        remove(tag + QLatin1String(":filePath"));
+        remove(tag + QLatin1String(":path"));
+        remove(tag + QLatin1String(":suffix"));
+    }
 }
 
 void VariableManager::updateCurrentDocument(Core::IEditor *editor)
 {
-    removeFileInfo("CURRENT_DOCUMENT");
-    if (editor==NULL || editor->file()==NULL)
-        return;
-    insertFileInfo("CURRENT_DOCUMENT", editor->file()->fileName());
+    const QString currentDocumentTag = QLatin1String("CURRENT_DOCUMENT");
+    removeFileInfo(currentDocumentTag);
+    if (editor) {
+        if (const Core::IFile *file = editor->file()) {
+            const QString fileName = file->fileName();
+            if (!fileName.isEmpty())
+                insertFileInfo(currentDocumentTag, fileName);
+        }
+    }
 }
 
-QString VariableManager::value(const QString &variable)
+QString VariableManager::value(const QString &variable) const
 {
     return m_map.value(variable);
 }
 
-QString VariableManager::value(const QString &variable, const QString &defaultValue)
+QString VariableManager::value(const QString &variable, const QString &defaultValue) const
 {
     return m_map.value(variable, defaultValue);
 }
 
-void VariableManager::remove(const QString &variable)
+bool VariableManager::remove(const QString &variable)
 {
-    m_map.remove(variable);
+    return m_map.remove(variable) > 0;
 }
 
-QString VariableManager::resolve(const QString &stringWithVariables)
+QString VariableManager::resolve(const QString &stringWithVariables) const
 {
     QString result = stringWithVariables;
     QMapIterator<QString, QString> i(m_map);
     while (i.hasNext()) {
         i.next();
-        result.replace(QString("${%1}").arg(i.key()), i.value());
+        QString key = QLatin1String("${");
+        key += i.key();
+        key += QLatin1Char('}');
+        result.replace(key, i.value());
     }
     return result;
 }
diff --git a/src/plugins/coreplugin/variablemanager.h b/src/plugins/coreplugin/variablemanager.h
index 1bd73712cbf..436bea54681 100644
--- a/src/plugins/coreplugin/variablemanager.h
+++ b/src/plugins/coreplugin/variablemanager.h
@@ -56,10 +56,10 @@ public:
     void insert(const QString &variable, const QString &value);
     void insertFileInfo(const QString &tag, const QFileInfo &file);
     void removeFileInfo(const QString &tag);
-    QString value(const QString &variable);
-    QString value(const QString &variable, const QString &defaultValue);
-    void remove(const QString &variable);
-    QString resolve(const QString &stringWithVariables);
+    QString value(const QString &variable) const;
+    QString value(const QString &variable, const QString &defaultValue) const;
+    bool remove(const QString &variable);
+    QString resolve(const QString &stringWithVariables) const;
 
 private slots:
     void updateCurrentDocument(Core::IEditor *editor);
-- 
GitLab