diff --git a/src/plugins/projectexplorer/editorconfiguration.cpp b/src/plugins/projectexplorer/editorconfiguration.cpp index 22db020cf01..8ba2075a233 100644 --- a/src/plugins/projectexplorer/editorconfiguration.cpp +++ b/src/plugins/projectexplorer/editorconfiguration.cpp @@ -33,6 +33,10 @@ using namespace ProjectExplorer; +namespace { +const char * const CODEC("EditorConfiguration.Codec"); +} + EditorConfiguration::EditorConfiguration() : m_defaultTextCodec(QTextCodec::codecForLocale()) { @@ -45,6 +49,23 @@ QTextCodec *EditorConfiguration::defaultTextCodec() const void EditorConfiguration::setDefaultTextCodec(QTextCodec *codec) { + if (!codec) + return; m_defaultTextCodec = codec; } +QVariantMap EditorConfiguration::toMap() const +{ + QVariantMap map; + map.insert(QLatin1String(CODEC), m_defaultTextCodec->name()); + return map; +} + +bool EditorConfiguration::fromMap(const QVariantMap &map) +{ + QTextCodec *codec = QTextCodec::codecForName(map.value(QLatin1String(CODEC)).toString().toLocal8Bit()); + if (!codec) + return false; + m_defaultTextCodec = codec; + return true; +} diff --git a/src/plugins/projectexplorer/editorconfiguration.h b/src/plugins/projectexplorer/editorconfiguration.h index 15769699836..eea1fcafd6e 100644 --- a/src/plugins/projectexplorer/editorconfiguration.h +++ b/src/plugins/projectexplorer/editorconfiguration.h @@ -32,7 +32,7 @@ #include "projectexplorer_export.h" -#include +#include QT_BEGIN_NAMESPACE class QTextCodec; @@ -44,9 +44,13 @@ class PROJECTEXPLORER_EXPORT EditorConfiguration { public: EditorConfiguration(); + QTextCodec *defaultTextCodec() const; void setDefaultTextCodec(QTextCodec *codec); + QVariantMap toMap() const; + bool fromMap(const QVariantMap &map); + private: QTextCodec *m_defaultTextCodec; }; diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index 6110d7aa60a..ddc5c713423 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -50,6 +50,7 @@ using namespace ProjectExplorer::Internal; namespace { const char * const PROJECT_FILE_POSTFIX(".user"); +const char * const EDITOR_SETTINGS_KEY("ProjectExplorer.Project.EditorSettings"); } // namespace // ------------------------------------------------------------------------- @@ -211,7 +212,7 @@ void Project::saveSettingsImpl(PersistentSettingsWriter &writer) writer.setPrefix(QString::null); writer.saveValue("activeRunConfiguration", activeId); - writer.saveValue("defaultFileEncoding", m_editorConfiguration->defaultTextCodec()->name()); + writer.saveValue(QLatin1String(EDITOR_SETTINGS_KEY), m_editorConfiguration->toMap()); } bool Project::restoreSettingsImpl(PersistentSettingsReader &reader) @@ -386,13 +387,11 @@ bool Project::restoreSettingsImpl(PersistentSettingsReader &reader) } reader.setPrefix(QString::null); - QTextCodec *codec = QTextCodec::codecForName(reader.restoreValue("defaultFileEncoding").toByteArray()); - if (codec) - m_editorConfiguration->setDefaultTextCodec(codec); - if (!m_activeRunConfiguration && !m_runConfigurations.isEmpty()) setActiveRunConfiguration(m_runConfigurations.at(0)); - return true; + + QVariantMap tmp = reader.restoreValue(QLatin1String(EDITOR_SETTINGS_KEY)).toMap(); + return m_editorConfiguration->fromMap(tmp); } BuildConfiguration *Project::activeBuildConfiguration() const