summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cpptoolssettings.cpp
diff options
context:
space:
mode:
authorJarek Kobus <jaroslaw.kobus@nokia.com>2011-11-24 11:48:00 +0100
committerJarek Kobus <jaroslaw.kobus@nokia.com>2011-11-25 09:54:47 +0100
commit3d57758d61cab890217ef75611076397cdf0061e (patch)
tree63dfb0b1d16e92e7c2bae319372604d7757f121e /src/plugins/cpptools/cpptoolssettings.cpp
parent7ff81c435af06179fd64147a72f55e884e299cef (diff)
downloadqt-creator-3d57758d61cab890217ef75611076397cdf0061e.tar.gz
Transform always old code style settings
Before, we didn't transform the code style settings if they were defaults (so no entries were written for them in the settings). In case someone changed global tab settings and didn't touch code style settings in 2.3, the code style settings were not transformed. Now, we transform them too so that legacy code style settings in 2.4 (named: "Old Creator") contains old global tab settings. We also take care of not creating legacy settings in case neither textTabPreferences nor CppTabPreferences nor CppCodeStyleSettings were saved (when creator 2.3 used only defaults or when it's a first run of creator 2.4 without old settings). Handle legacy transformation for qml too. Make a code bit more readable. Task-number: QTCREATORBUG-6614 Change-Id: I37b8dd4d1170f397b7d304c59575d9ae37884564 Reviewed-by: Leandro Melo <leandro.melo@nokia.com> Reviewed-by: Christian Kamm <christian.d.kamm@nokia.com>
Diffstat (limited to 'src/plugins/cpptools/cpptoolssettings.cpp')
-rw-r--r--src/plugins/cpptools/cpptoolssettings.cpp98
1 files changed, 45 insertions, 53 deletions
diff --git a/src/plugins/cpptools/cpptoolssettings.cpp b/src/plugins/cpptools/cpptoolssettings.cpp
index 85134f035b..47d144ede5 100644
--- a/src/plugins/cpptools/cpptoolssettings.cpp
+++ b/src/plugins/cpptools/cpptoolssettings.cpp
@@ -53,25 +53,6 @@ using TextEditor::TabSettings;
namespace CppTools {
namespace Internal {
-class LegacySettings
-{
-public:
- LegacySettings()
- : m_legacyTransformed(false)
- { }
- void fromMap(const QString &prefix, const QVariantMap &map)
- {
- m_fallbackId = map.value(prefix + QLatin1String("CurrentFallback")).toString();
- m_legacyTransformed = map.value(prefix + QLatin1String("LegacyTransformed"), false).toBool();
- }
- void toMap(const QString &prefix, QVariantMap *map) const
- {
- map->insert(prefix + QLatin1String("LegacyTransformed"), true);
- }
- QString m_fallbackId;
- bool m_legacyTransformed;
-};
-
class CppToolsSettingsPrivate
{
public:
@@ -176,40 +157,51 @@ CppToolsSettings::CppToolsSettings(QObject *parent)
if (QSettings *s = Core::ICore::instance()->settings()) {
d->m_globalCodeStyle->fromSettings(CppTools::Constants::CPP_SETTINGS_ID, s);
- // legacy handling start (Qt Creator <= 2.3)
- Internal::LegacySettings legacySettings;
-
- TabSettings legacyTabSettings;
- Utils::fromSettings(QLatin1String("TabPreferences"),
- QLatin1String("Cpp"), s, &legacySettings);
- if (legacySettings.m_fallbackId == QLatin1String("CppGlobal")) {
- Utils::fromSettings(QLatin1String("TabPreferences"),
- QLatin1String("Cpp"), s, &legacyTabSettings);
- } else {
- legacyTabSettings = textEditorSettings->codeStyle()->currentTabSettings();
- }
-
- CppCodeStyleSettings legacyCodeStyleSettings;
- Utils::fromSettings(QLatin1String("CodeStyleSettings"),
- QLatin1String("Cpp"), s, &legacySettings);
- if (!legacySettings.m_legacyTransformed
- && legacySettings.m_fallbackId == QLatin1String("CppGlobal")) {
- Utils::fromSettings(QLatin1String("CodeStyleSettings"),
- QLatin1String("Cpp"), s, &legacyCodeStyleSettings);
- // create custom code style out of old settings
- QVariant v;
- v.setValue(legacyCodeStyleSettings);
- TextEditor::ICodeStylePreferences *oldCreator = pool->createCodeStyle(
- QLatin1String("legacy"), legacyTabSettings,
- v, tr("Old Creator"));
- // change the current delegate and save
- d->m_globalCodeStyle->setCurrentDelegate(oldCreator);
- d->m_globalCodeStyle->toSettings(CppTools::Constants::CPP_SETTINGS_ID, s);
-
- // mark old settings as transformed,
- // we create only once "Old Creator" custom settings
- Utils::toSettings(QLatin1String("CodeStyleSettings"),
- QLatin1String("Cpp"), s, &legacySettings);
+ // legacy handling start (Qt Creator Version < 2.4)
+ const bool legacyTransformed =
+ s->value(QLatin1String("CppCodeStyleSettings/LegacyTransformed"), false).toBool();
+
+ if (!legacyTransformed) {
+ // creator 2.4 didn't mark yet the transformation (first run of creator 2.4)
+
+ // we need to transform the settings only if at least one from
+ // below settings was already written - otherwise we use
+ // defaults like it would be the first run of creator 2.4 without stored settings
+ const QStringList groups = s->childGroups();
+ const bool needTransform = groups.contains(QLatin1String("textTabPreferences")) ||
+ groups.contains(QLatin1String("CppTabPreferences")) ||
+ groups.contains(QLatin1String("CppCodeStyleSettings"));
+ if (needTransform) {
+ CppCodeStyleSettings legacyCodeStyleSettings;
+ if (groups.contains(QLatin1String("CppCodeStyleSettings"))) {
+ Utils::fromSettings(QLatin1String("CppCodeStyleSettings"),
+ QString(), s, &legacyCodeStyleSettings);
+ }
+
+ const QString currentFallback = s->value(QLatin1String("CppTabPreferences/CurrentFallback")).toString();
+ TabSettings legacyTabSettings;
+ if (currentFallback == QLatin1String("CppGlobal")) {
+ // no delegate, global overwritten
+ Utils::fromSettings(QLatin1String("CppTabPreferences"),
+ QString(), s, &legacyTabSettings);
+ } else {
+ // delegating to global
+ legacyTabSettings = textEditorSettings->codeStyle()->currentTabSettings();
+ }
+
+ // create custom code style out of old settings
+ QVariant v;
+ v.setValue(legacyCodeStyleSettings);
+ TextEditor::ICodeStylePreferences *oldCreator = pool->createCodeStyle(
+ QLatin1String("legacy"), legacyTabSettings,
+ v, tr("Old Creator"));
+
+ // change the current delegate and save
+ d->m_globalCodeStyle->setCurrentDelegate(oldCreator);
+ d->m_globalCodeStyle->toSettings(CppTools::Constants::CPP_SETTINGS_ID, s);
+ }
+ // mark old settings as transformed
+ s->setValue(QLatin1String("CppCodeStyleSettings/LegacyTransformed"), true);
}
// legacy handling stop
}