From 4e7c07d97abab3a178ca7b1b612828b2ce1c91a5 Mon Sep 17 00:00:00 2001
From: con <qtc-committer@nokia.com>
Date: Fri, 8 Oct 2010 16:46:39 +0200
Subject: [PATCH] Add method for default text encoding to editor manager.

Moving the logic out of BaseTextDocument for use at other places.
---
 src/plugins/coreplugin/coreconstants.h                 |  2 ++
 src/plugins/coreplugin/editormanager/editormanager.cpp | 10 ++++++++++
 src/plugins/coreplugin/editormanager/editormanager.h   |  2 ++
 src/plugins/coreplugin/generalsettings.cpp             |  4 ++--
 src/plugins/texteditor/basetextdocument.cpp            |  7 +------
 5 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/src/plugins/coreplugin/coreconstants.h b/src/plugins/coreplugin/coreconstants.h
index c1fbb3e40f2..af2e8e44b4a 100644
--- a/src/plugins/coreplugin/coreconstants.h
+++ b/src/plugins/coreplugin/coreconstants.h
@@ -249,6 +249,8 @@ const char * const SETTINGS_CATEGORY_CORE_ICON = ":/core/images/category_core.pn
 const char * const SETTINGS_TR_CATEGORY_CORE = QT_TRANSLATE_NOOP("Core", "Environment");
 const char * const SETTINGS_ID_ENVIRONMENT = "A.General";
 
+const char * const SETTINGS_DEFAULTTEXTENCODING = "General/DefaultFileEncoding";
+
 const char * const ALL_FILES_FILTER      = QT_TRANSLATE_NOOP("Core", "All Files (*)");
 
 const int TARGET_ICON_SIZE = 32;
diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp
index 566d372f224..76912be7727 100644
--- a/src/plugins/coreplugin/editormanager/editormanager.cpp
+++ b/src/plugins/coreplugin/editormanager/editormanager.cpp
@@ -66,6 +66,7 @@
 #include <QtCore/QProcess>
 #include <QtCore/QSet>
 #include <QtCore/QSettings>
+#include <QtCore/QTextCodec>
 
 #include <QtGui/QAction>
 #include <QtGui/QShortcut>
@@ -1984,6 +1985,15 @@ IFile::ReloadSetting EditorManager::reloadSetting() const
     return m_d->m_reloadSetting;
 }
 
+QTextCodec *EditorManager::defaultTextEncoding() const
+{
+    QSettings *settings = Core::ICore::instance()->settings();
+    if (QTextCodec *candidate = QTextCodec::codecForName(
+            settings->value(QLatin1String(Constants::SETTINGS_DEFAULTTEXTENCODING)).toByteArray()))
+        return candidate;
+    return QTextCodec::codecForLocale();
+}
+
 Core::IEditor *EditorManager::duplicateEditor(Core::IEditor *editor)
 {
     if (!editor->duplicateSupported())
diff --git a/src/plugins/coreplugin/editormanager/editormanager.h b/src/plugins/coreplugin/editormanager/editormanager.h
index 65a5b1038c0..caab7f0f6cd 100644
--- a/src/plugins/coreplugin/editormanager/editormanager.h
+++ b/src/plugins/coreplugin/editormanager/editormanager.h
@@ -192,6 +192,8 @@ public:
     void setReloadSetting(IFile::ReloadSetting behavior);
     IFile::ReloadSetting reloadSetting() const;
 
+    QTextCodec *defaultTextEncoding() const;
+
     // Helper to display a message dialog when encountering a read-only
     // file, prompting the user about how to make it writeable.
     enum ReadOnlyAction { RO_Cancel, RO_OpenVCS, RO_MakeWriteable, RO_SaveAs };
diff --git a/src/plugins/coreplugin/generalsettings.cpp b/src/plugins/coreplugin/generalsettings.cpp
index 12a719a1e84..94b8e6cd309 100644
--- a/src/plugins/coreplugin/generalsettings.cpp
+++ b/src/plugins/coreplugin/generalsettings.cpp
@@ -130,7 +130,7 @@ QWidget *GeneralSettings::createPage(QWidget *parent)
 
     QTextCodec *defaultTextCodec = QTextCodec::codecForLocale();
     if (QTextCodec *candidate = QTextCodec::codecForName(
-            settings->value(QLatin1String("General/DefaultFileEncoding")).toByteArray()))
+            settings->value(QLatin1String(Constants::SETTINGS_DEFAULTTEXTENCODING)).toByteArray()))
         defaultTextCodec = candidate;
 
     QList<int> mibs = QTextCodec::availableMibs();
@@ -225,7 +225,7 @@ void GeneralSettings::apply()
 #endif
 
     QSettings* settings = Core::ICore::instance()->settings();
-    return settings->setValue(QLatin1String("General/DefaultFileEncoding"),
+    return settings->setValue(QLatin1String(Constants::SETTINGS_DEFAULTTEXTENCODING),
                               m_codecs.at(m_page->encodingBox->currentIndex())->name());
 
 }
diff --git a/src/plugins/texteditor/basetextdocument.cpp b/src/plugins/texteditor/basetextdocument.cpp
index 0b799c20dfb..e52a38899c0 100644
--- a/src/plugins/texteditor/basetextdocument.cpp
+++ b/src/plugins/texteditor/basetextdocument.cpp
@@ -132,12 +132,7 @@ BaseTextDocument::BaseTextDocument()
     m_lineTerminatorMode = NativeLineTerminator;
     m_fileIsReadOnly = false;
     m_isBinaryData = false;
-    m_codec = QTextCodec::codecForLocale();
-    QSettings *settings = Core::ICore::instance()->settings();
-    if (QTextCodec *candidate = QTextCodec::codecForName(
-            settings->value(QLatin1String("General/DefaultFileEncoding")).toByteArray()))
-        m_codec = candidate;
-
+    m_codec = Core::EditorManager::instance()->defaultTextEncoding();
     m_hasDecodingError = false;
 }
 
-- 
GitLab