diff options
Diffstat (limited to 'src/plugins/qmljstools/qmljstoolssettings.cpp')
-rw-r--r-- | src/plugins/qmljstools/qmljstoolssettings.cpp | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/src/plugins/qmljstools/qmljstoolssettings.cpp b/src/plugins/qmljstools/qmljstoolssettings.cpp index efd867611b..b50c97039b 100644 --- a/src/plugins/qmljstools/qmljstoolssettings.cpp +++ b/src/plugins/qmljstools/qmljstoolssettings.cpp @@ -39,6 +39,7 @@ #include <texteditor/tabsettings.h> #include <texteditor/codestylepool.h> +#include <utils/settingsutils.h> #include <utils/qtcassert.h> #include <coreplugin/icore.h> @@ -108,8 +109,48 @@ QmlJSToolsSettings::QmlJSToolsSettings(QObject *parent) pool->loadCustomCodeStyles(); // load global settings (after built-in settings are added to the pool) - if (const QSettings *s = Core::ICore::instance()->settings()) { + if (QSettings *s = Core::ICore::instance()->settings()) { d->m_globalCodeStyle->fromSettings(QmlJSTools::Constants::QML_JS_SETTINGS_ID, s); + + // legacy handling start (Qt Creator Version < 2.4) + const bool legacyTransformed = + s->value(QLatin1String("QmlJSTabPreferences/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("QmlJSTabPreferences")); + + if (needTransform) { + const QString currentFallback = s->value(QLatin1String("QmlJSTabPreferences/CurrentFallback")).toString(); + TabSettings legacyTabSettings; + if (currentFallback == QLatin1String("QmlJSGlobal")) { + // no delegate, global overwritten + Utils::fromSettings(QLatin1String("QmlJSTabPreferences"), + QString(), s, &legacyTabSettings); + } else { + // delegating to global + legacyTabSettings = textEditorSettings->codeStyle()->currentTabSettings(); + } + + // create custom code style out of old settings + TextEditor::ICodeStylePreferences *oldCreator = pool->createCodeStyle( + QLatin1String("legacy"), legacyTabSettings, + QVariant(), tr("Old Creator")); + + // change the current delegate and save + d->m_globalCodeStyle->setCurrentDelegate(oldCreator); + d->m_globalCodeStyle->toSettings(QmlJSTools::Constants::QML_JS_SETTINGS_ID, s); + } + // mark old settings as transformed + s->setValue(QLatin1String("QmlJSTabPreferences/LegacyTransformed"), true); + } + // legacy handling stop } // mimetypes to be handled |