diff options
author | Tim Jenssen <tim.jenssen@theqtcompany.com> | 2016-01-13 14:48:40 +0100 |
---|---|---|
committer | Thomas Hartmann <Thomas.Hartmann@theqtcompany.com> | 2016-01-21 09:48:45 +0000 |
commit | ff3ccba7c10c15ea2a92781b27686e13a262fa54 (patch) | |
tree | 9fe553deac802c55572a5ac02621562acc1b6181 | |
parent | 85290a9313bb7a116d971d2dcbcfc352c866496e (diff) | |
download | qt-creator-ff3ccba7c10c15ea2a92781b27686e13a262fa54.tar.gz |
QmlDesigner: improve settings for easy adding new values
- move settings keys constants to the settings file
- transform settings to a QHash
Change-Id: I1d41476421ce569cea3a4bd1c956d3bc0c6643f4
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@theqtcompany.com>
15 files changed, 172 insertions, 177 deletions
diff --git a/src/plugins/qmldesigner/components/componentcore/crumblebar.cpp b/src/plugins/qmldesigner/components/componentcore/crumblebar.cpp index 7a9bdbf53f..05cb2b7585 100644 --- a/src/plugins/qmldesigner/components/componentcore/crumblebar.cpp +++ b/src/plugins/qmldesigner/components/componentcore/crumblebar.cpp @@ -139,7 +139,7 @@ void CrumbleBar::showSaveDialog() { DesignerSettings settings = QmlDesignerPlugin::instance()->settings(); - if (settings.alwaysSaveInCrumbleBar) { + if (settings.value(DesignerSettingsKey::ALWAYS_SAFE_IN_CRUMBLEBAR).toBool()) { Core::DocumentManager::saveModifiedDocumentSilently(currentDesignDocument()->editor()->document()); } else { bool alwaysSave; @@ -151,7 +151,7 @@ void CrumbleBar::showSaveDialog() tr("Always save when leaving subcomponent"), &alwaysSave); - settings.alwaysSaveInCrumbleBar = alwaysSave; + settings.insert(DesignerSettingsKey::ALWAYS_SAFE_IN_CRUMBLEBAR, alwaysSave); QmlDesignerPlugin::instance()->setSettings(settings); } } diff --git a/src/plugins/qmldesigner/components/debugview/debugview.cpp b/src/plugins/qmldesigner/components/debugview/debugview.cpp index 310f4a9678..5efb24c3b2 100644 --- a/src/plugins/qmldesigner/components/debugview/debugview.cpp +++ b/src/plugins/qmldesigner/components/debugview/debugview.cpp @@ -40,12 +40,14 @@ const QString lineBreak = QStringLiteral("<br>"); bool isDebugViewEnabled() { - return (QmlDesigner::QmlDesignerPlugin::instance()->settings().enableDebugView); + return QmlDesigner::QmlDesignerPlugin::instance()->settings().value( + QmlDesigner::DesignerSettingsKey::ENABLE_DEBUGVIEW).toBool(); } bool isDebugViewShown() { - return (QmlDesigner::QmlDesignerPlugin::instance()->settings().showDebugView); + return QmlDesigner::QmlDesignerPlugin::instance()->settings().value( + QmlDesigner::DesignerSettingsKey::SHOW_DEBUGVIEW).toBool(); } } diff --git a/src/plugins/qmldesigner/components/debugview/debugviewwidget.cpp b/src/plugins/qmldesigner/components/debugview/debugviewwidget.cpp index 3e28b24b4b..fa67c6ca76 100644 --- a/src/plugins/qmldesigner/components/debugview/debugviewwidget.cpp +++ b/src/plugins/qmldesigner/components/debugview/debugviewwidget.cpp @@ -89,7 +89,7 @@ void DebugViewWidget::setDebugViewEnabled(bool b) void DebugViewWidget::enabledCheckBoxToggled(bool b) { DesignerSettings settings = QmlDesignerPlugin::instance()->settings(); - settings.warningsInDesigner = b; + settings.insert(DesignerSettingsKey::WARNING_FOR_FEATURES_IN_DESIGNER, b); QmlDesignerPlugin::instance()->setSettings(settings); } diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp index 48b940275f..048ef76340 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp @@ -92,13 +92,13 @@ FormEditorItem* FormEditorScene::itemForQmlItemNode(const QmlItemNode &qmlItemNo double FormEditorScene::canvasWidth() const { DesignerSettings settings = QmlDesignerPlugin::instance()->settings(); - return settings.canvasWidth; + return settings.value(DesignerSettingsKey::CANVASWIDTH).toDouble(); } double FormEditorScene::canvasHeight() const { DesignerSettings settings = QmlDesignerPlugin::instance()->settings(); - return settings.canvasHeight; + return settings.value(DesignerSettingsKey::CANVASHEIGHT).toDouble(); } QList<FormEditorItem*> FormEditorScene::itemsForQmlItemNodes(const QList<QmlItemNode> &nodeList) const diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp index d8e3b03192..8ca2afd850 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp @@ -282,13 +282,13 @@ ToolBox *FormEditorWidget::toolBox() const double FormEditorWidget::spacing() const { DesignerSettings settings = QmlDesignerPlugin::instance()->settings(); - return settings.itemSpacing; + return settings.value(DesignerSettingsKey::ITEMSPACING).toDouble(); } double FormEditorWidget::containerPadding() const { DesignerSettings settings = QmlDesignerPlugin::instance()->settings(); - return settings.containerPadding; + return settings.value(DesignerSettingsKey::CONTAINERPADDING).toDouble(); } diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.cpp index 39f3c5a1cd..1d7c288ab6 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.cpp @@ -105,7 +105,8 @@ QColor PropertyEditorContextObject::colorFromString(const QString &colorString) QString PropertyEditorContextObject::translateFunction() { - if (QmlDesignerPlugin::instance()->settings().useQsTrFunction) + if (QmlDesignerPlugin::instance()->settings().value( + DesignerSettingsKey::USE_QSTR_FUNCTION).toBool()) return QStringLiteral("qsTr"); return QStringLiteral("qsTrId"); } diff --git a/src/plugins/qmldesigner/designercore/filemanager/qmlwarningdialog.cpp b/src/plugins/qmldesigner/designercore/filemanager/qmlwarningdialog.cpp index d0e7952cd2..6991e61ed7 100644 --- a/src/plugins/qmldesigner/designercore/filemanager/qmlwarningdialog.cpp +++ b/src/plugins/qmldesigner/designercore/filemanager/qmlwarningdialog.cpp @@ -75,13 +75,13 @@ void QmlWarningDialog::okButtonPressed() bool QmlWarningDialog::warningsEnabled() const { DesignerSettings settings = QmlDesignerPlugin::instance()->settings(); - return settings.warningsInDesigner; + return settings.value(DesignerSettingsKey::WARNING_FOR_FEATURES_IN_DESIGNER).toBool(); } void QmlWarningDialog::checkBoxToggled(bool b) { DesignerSettings settings = QmlDesignerPlugin::instance()->settings(); - settings.warningsInDesigner = b; + settings.insert(DesignerSettingsKey::WARNING_FOR_FEATURES_IN_DESIGNER, b); QmlDesignerPlugin::instance()->setSettings(settings); } diff --git a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp index 54e45dbf3b..9878c93375 100644 --- a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp +++ b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp @@ -103,9 +103,8 @@ QDateTime PuppetCreator::puppetSourceLastModified() const bool PuppetCreator::useOnlyFallbackPuppet() const { - DesignerSettings settings = QmlDesignerPlugin::instance()->settings(); - return settings.useOnlyFallbackPuppet - || !qgetenv("USE_ONLY_FALLBACK_PUPPET").isEmpty() || m_kit == 0 || !m_kit->isValid(); + return m_designerSettings.value(DesignerSettingsKey::USE_ONLY_FALLBACK_PUPPET + ).toBool() || m_kit == 0 || !m_kit->isValid(); } PuppetCreator::PuppetCreator(ProjectExplorer::Kit *kit, const QString &qtCreatorVersion, const Model *model) @@ -277,9 +276,11 @@ QString PuppetCreator::defaultPuppetToplevelBuildDirectory() QString PuppetCreator::qmlPuppetToplevelBuildDirectory() const { - if (m_designerSettings.puppetToplevelBuildDirectory.isEmpty()) + QString puppetToplevelBuildDirectory = m_designerSettings.value( + DesignerSettingsKey::PUPPET_TOPLEVEL_BUILD_DIRECTORY).toString(); + if (puppetToplevelBuildDirectory.isEmpty()) return defaultPuppetToplevelBuildDirectory(); - return QmlDesignerPlugin::instance()->settings().puppetToplevelBuildDirectory; + return puppetToplevelBuildDirectory; } QString PuppetCreator::qmlPuppetDirectory(PuppetType puppetType) const @@ -301,9 +302,11 @@ QString PuppetCreator::defaultPuppetFallbackDirectory() QString PuppetCreator::qmlPuppetFallbackDirectory() const { - if (m_designerSettings.puppetFallbackDirectory.isEmpty()) + QString puppetFallbackDirectory = m_designerSettings.value( + DesignerSettingsKey::PUPPET_FALLBACK_DIRECTORY).toString(); + if (puppetFallbackDirectory.isEmpty()) return defaultPuppetFallbackDirectory(); - return QmlDesignerPlugin::instance()->settings().puppetFallbackDirectory; + return puppetFallbackDirectory; } QString PuppetCreator::qml2PuppetPath(PuppetType puppetType) const @@ -325,7 +328,8 @@ QProcessEnvironment PuppetCreator::processEnvironment() const environment.set(QLatin1String("QML_USE_MOCKUPS"), QLatin1String("true")); environment.set(QLatin1String("QML_PUPPET_MODE"), QLatin1String("true")); - const QString controlsStyle = QmlDesignerPlugin::instance()->settings().controlsStyle; + const QString controlsStyle = m_designerSettings.value(DesignerSettingsKey:: + CONTROLS_STYLE).toString(); if (!controlsStyle.isEmpty()) environment.set(QLatin1String("QT_QUICK_CONTROLS_STYLE"), controlsStyle); diff --git a/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp index 32dc83b554..daf46f7faa 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp @@ -434,7 +434,8 @@ QVariant QmlObjectNode::instanceValue(const ModelNode &modelNode, const Property QString QmlObjectNode::generateTranslatableText(const QString &text) { - if (QmlDesignerPlugin::instance()->settings().useQsTrFunction) + if (QmlDesignerPlugin::instance()->settings().value( + DesignerSettingsKey::USE_QSTR_FUNCTION).toBool()) return QString(QStringLiteral("qsTr(\"%1\")")).arg(text); else return QString(QStringLiteral("qsTrId(\"%1\")")).arg(text); diff --git a/src/plugins/qmldesigner/designercore/model/viewmanager.cpp b/src/plugins/qmldesigner/designercore/model/viewmanager.cpp index 6f64b56a3e..053eb434c2 100644 --- a/src/plugins/qmldesigner/designercore/model/viewmanager.cpp +++ b/src/plugins/qmldesigner/designercore/model/viewmanager.cpp @@ -190,7 +190,8 @@ void ViewManager::detachComponentView() void ViewManager::attachViewsExceptRewriterAndComponetView() { - if (QmlDesignerPlugin::instance()->settings().enableDebugView) + if (QmlDesignerPlugin::instance()->settings().value( + DesignerSettingsKey::ENABLE_DEBUGVIEW).toBool()) currentModel()->attachView(&d->debugView); attachNodeInstanceView(); diff --git a/src/plugins/qmldesigner/designersettings.cpp b/src/plugins/qmldesigner/designersettings.cpp index 13d259b87b..dff3bd4f27 100644 --- a/src/plugins/qmldesigner/designersettings.cpp +++ b/src/plugins/qmldesigner/designersettings.cpp @@ -24,97 +24,69 @@ ****************************************************************************/ #include "designersettings.h" -#include "qmldesignerconstants.h" #include <QSettings> -using namespace QmlDesigner; +namespace QmlDesigner { + +namespace DesignerSettingsGroupKey { + const char QML_SETTINGS_GROUP[] = "QML"; + const char QML_DESIGNER_SETTINGS_GROUP[] = "Designer"; +} DesignerSettings::DesignerSettings() - : itemSpacing(0), - containerPadding(0), - canvasWidth(10000), - canvasHeight(10000), - warningsInDesigner(true), - designerWarningsInEditor(false), - showDebugView(false), - enableDebugView(false), - alwaysSaveInCrumbleBar(false), - useOnlyFallbackPuppet(true) -{} +{ +} + +void DesignerSettings::restoreValue(QSettings *settings, const QByteArray &key, const QVariant &defaultValue) +{ + insert(key, settings->value(QString::fromLatin1(key), defaultValue)); +} void DesignerSettings::fromSettings(QSettings *settings) { - settings->beginGroup(QLatin1String(QmlDesigner::Constants::QML_SETTINGS_GROUP)); - settings->beginGroup(QLatin1String(QmlDesigner::Constants::QML_DESIGNER_SETTINGS_GROUP)); - itemSpacing = settings->value( - QLatin1String(QmlDesigner::Constants::QML_ITEMSPACING_KEY), QVariant(6)).toInt(); - containerPadding = settings->value( - QLatin1String(QmlDesigner::Constants::QML_CONTAINERPADDING_KEY), QVariant(8)).toInt(); - canvasWidth = settings->value(QLatin1String(QmlDesigner::Constants::QML_CANVASWIDTH_KEY), QVariant(10000)).toInt(); - canvasHeight = settings->value(QLatin1String(QmlDesigner::Constants::QML_CANVASHEIGHT_KEY), QVariant(10000)).toInt(); - warningsInDesigner = settings->value( - QLatin1String(QmlDesigner::Constants::QML_WARNIN_FOR_FEATURES_IN_DESIGNER_KEY), QVariant(true)).toBool(); - designerWarningsInEditor = settings->value( - QLatin1String(QmlDesigner::Constants::QML_WARNIN_FOR_DESIGNER_FEATURES_IN_EDITOR_KEY), QVariant(false)).toBool(); - showDebugView = settings->value( - QLatin1String(QmlDesigner::Constants::QML_SHOW_DEBUGVIEW), QVariant(false)).toBool(); - enableDebugView = settings->value( - QLatin1String(QmlDesigner::Constants::QML_ENABLE_DEBUGVIEW), QVariant(false)).toBool(); - alwaysSaveInCrumbleBar = settings->value( - QLatin1String(QmlDesigner::Constants::QML_ALWAYS_SAFE_IN_CRUMBLEBAR), QVariant(false)).toBool(); - useOnlyFallbackPuppet = settings->value( - QLatin1String(QmlDesigner::Constants::QML_USE_ONLY_FALLBACK_PUPPET), QVariant(true)).toBool(); - useQsTrFunction = settings->value( - QLatin1String(QmlDesigner::Constants::QML_USE_QSTR_FUNCTION), QVariant(true)).toBool(); - puppetFallbackDirectory = settings->value( - QLatin1String(QmlDesigner::Constants::QML_PUPPET_FALLBACK_DIRECTORY)).toString(); - puppetToplevelBuildDirectory = settings->value( - QLatin1String(QmlDesigner::Constants::QML_PUPPET_TOPLEVEL_BUILD_DIRECTORY)).toString(); - controlsStyle = settings->value( - QLatin1String(QmlDesigner::Constants::QML_CONTROLS_STYLE)).toString(); + settings->beginGroup(QLatin1String(DesignerSettingsGroupKey::QML_SETTINGS_GROUP)); + settings->beginGroup(QLatin1String(DesignerSettingsGroupKey::QML_DESIGNER_SETTINGS_GROUP)); + restoreValue(settings, DesignerSettingsKey::ITEMSPACING, 6); + restoreValue(settings, DesignerSettingsKey::CONTAINERPADDING, 8); + restoreValue(settings, DesignerSettingsKey::CANVASWIDTH, 10000); + restoreValue(settings, DesignerSettingsKey::CANVASHEIGHT, 10000); + restoreValue(settings, DesignerSettingsKey::WARNING_FOR_FEATURES_IN_DESIGNER, true); + restoreValue(settings, DesignerSettingsKey::WARNING_FOR_DESIGNER_FEATURES_IN_EDITOR, false); + restoreValue(settings, DesignerSettingsKey::SHOW_DEBUGVIEW, false); + restoreValue(settings, DesignerSettingsKey::ENABLE_DEBUGVIEW, false); + restoreValue(settings, DesignerSettingsKey::ALWAYS_SAFE_IN_CRUMBLEBAR, false); + restoreValue(settings, DesignerSettingsKey::USE_ONLY_FALLBACK_PUPPET, true); + restoreValue(settings, DesignerSettingsKey::USE_QSTR_FUNCTION, true); + restoreValue(settings, DesignerSettingsKey::PUPPET_FALLBACK_DIRECTORY); + restoreValue(settings, DesignerSettingsKey::PUPPET_TOPLEVEL_BUILD_DIRECTORY); + restoreValue(settings, DesignerSettingsKey::CONTROLS_STYLE); settings->endGroup(); settings->endGroup(); } +void DesignerSettings::storeValue(QSettings *settings, const QByteArray &key, const QVariant &value) const +{ + if (key.isEmpty()) + return; + settings->setValue(QString::fromLatin1(key), value); +} + void DesignerSettings::toSettings(QSettings *settings) const { - settings->beginGroup(QLatin1String(QmlDesigner::Constants::QML_SETTINGS_GROUP)); - settings->beginGroup(QLatin1String(QmlDesigner::Constants::QML_DESIGNER_SETTINGS_GROUP)); - settings->setValue(QLatin1String(QmlDesigner::Constants::QML_ITEMSPACING_KEY), itemSpacing); - settings->setValue(QLatin1String(QmlDesigner::Constants::QML_CONTAINERPADDING_KEY), containerPadding); - settings->setValue(QLatin1String(QmlDesigner::Constants::QML_CANVASWIDTH_KEY), canvasWidth); - settings->setValue(QLatin1String(QmlDesigner::Constants::QML_CANVASHEIGHT_KEY), canvasHeight); - settings->setValue(QLatin1String(QmlDesigner::Constants::QML_WARNIN_FOR_FEATURES_IN_DESIGNER_KEY), warningsInDesigner); - settings->setValue(QLatin1String(QmlDesigner::Constants::QML_WARNIN_FOR_DESIGNER_FEATURES_IN_EDITOR_KEY), designerWarningsInEditor); - settings->setValue(QLatin1String(QmlDesigner::Constants::QML_SHOW_DEBUGVIEW), showDebugView); - settings->setValue(QLatin1String(QmlDesigner::Constants::QML_ENABLE_DEBUGVIEW), enableDebugView); - settings->setValue(QLatin1String(QmlDesigner::Constants::QML_ALWAYS_SAFE_IN_CRUMBLEBAR), alwaysSaveInCrumbleBar); - settings->setValue(QLatin1String(QmlDesigner::Constants::QML_USE_ONLY_FALLBACK_PUPPET), useOnlyFallbackPuppet); - settings->setValue(QLatin1String(QmlDesigner::Constants::QML_USE_QSTR_FUNCTION), useQsTrFunction); - settings->setValue(QLatin1String(QmlDesigner::Constants::QML_PUPPET_FALLBACK_DIRECTORY), puppetFallbackDirectory); - settings->setValue(QLatin1String(QmlDesigner::Constants::QML_PUPPET_TOPLEVEL_BUILD_DIRECTORY), puppetToplevelBuildDirectory); - settings->setValue(QLatin1String(QmlDesigner::Constants::QML_CONTROLS_STYLE), controlsStyle); + settings->beginGroup(QLatin1String(DesignerSettingsGroupKey::QML_SETTINGS_GROUP)); + settings->beginGroup(QLatin1String(DesignerSettingsGroupKey::QML_DESIGNER_SETTINGS_GROUP)); + + QHash<QByteArray, QVariant>::const_iterator i = constBegin(); + while (i != constEnd()) { + storeValue(settings, i.key(), i.value()); + ++i; + } settings->endGroup(); settings->endGroup(); } -bool DesignerSettings::equals(const DesignerSettings &other) const -{ - return containerPadding == other.containerPadding - && canvasWidth == other.canvasWidth - && canvasHeight == other.canvasHeight - && warningsInDesigner == other.warningsInDesigner - && designerWarningsInEditor == other.designerWarningsInEditor - && showDebugView == other.showDebugView - && enableDebugView == other.enableDebugView - && alwaysSaveInCrumbleBar == other.alwaysSaveInCrumbleBar - && useOnlyFallbackPuppet == other.useOnlyFallbackPuppet - && useQsTrFunction == other.useQsTrFunction - && puppetFallbackDirectory == other.puppetFallbackDirectory - && puppetToplevelBuildDirectory == other.puppetToplevelBuildDirectory - && controlsStyle == other.controlsStyle; -} +} // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/designersettings.h b/src/plugins/qmldesigner/designersettings.h index dacf628666..1e64f550c7 100644 --- a/src/plugins/qmldesigner/designersettings.h +++ b/src/plugins/qmldesigner/designersettings.h @@ -27,7 +27,9 @@ #define DESIGNERSETTINGS_H #include <QtGlobal> -#include <QString> +#include <QHash> +#include <QVariant> +#include <QByteArray> QT_BEGIN_NAMESPACE class QSettings; @@ -35,35 +37,36 @@ QT_END_NAMESPACE namespace QmlDesigner { -class DesignerSettings { +namespace DesignerSettingsKey { +const char ITEMSPACING[] = "ItemSpacing"; +const char CONTAINERPADDING[] = "ContainerPadding"; +const char CANVASWIDTH[] = "CanvasWidth"; +const char CANVASHEIGHT[] = "CanvasHeight"; +const char WARNING_FOR_FEATURES_IN_DESIGNER[] = "WarnAboutQtQuickFeaturesInDesigner"; +const char WARNING_FOR_DESIGNER_FEATURES_IN_EDITOR[] = "WarnAboutQtQuickDesignerFeaturesInCodeEditor"; +const char SHOW_DEBUGVIEW[] = "ShowQtQuickDesignerDebugView"; +const char ENABLE_DEBUGVIEW[] = "EnableQtQuickDesignerDebugView"; +const char ALWAYS_SAFE_IN_CRUMBLEBAR[] = "AlwaysSafeInCrumbleBar"; +const char USE_ONLY_FALLBACK_PUPPET[] = "UseOnlyFallbackPuppet"; +const char PUPPET_TOPLEVEL_BUILD_DIRECTORY[] = "PuppetToplevelBuildDirectory"; +const char PUPPET_FALLBACK_DIRECTORY[] = "PuppetFallbackDirectory"; +const char CONTROLS_STYLE[] = "ControlsStyle"; +const char USE_QSTR_FUNCTION[] = "UseQsTrFunction"; +} + +class DesignerSettings : public QHash<QByteArray, QVariant> +{ public: DesignerSettings(); void fromSettings(QSettings *); void toSettings(QSettings *) const; - - bool equals(const DesignerSettings &other) const; - int itemSpacing; - int containerPadding; - int canvasWidth; - int canvasHeight; - bool warningsInDesigner; - bool designerWarningsInEditor; - bool showDebugView; - bool enableDebugView; - bool alwaysSaveInCrumbleBar; - bool useOnlyFallbackPuppet; - bool useQsTrFunction; - QString puppetFallbackDirectory; - QString puppetToplevelBuildDirectory; - QString controlsStyle; +private: + void restoreValue(QSettings *settings, const QByteArray &key, + const QVariant &defaultValue = QVariant()); + void storeValue(QSettings *settings, const QByteArray &key, const QVariant &value) const; }; -inline bool operator==(const DesignerSettings &s1, const DesignerSettings &s2) -{ return s1.equals(s2); } -inline bool operator!=(const DesignerSettings &s1, const DesignerSettings &s2) -{ return !s1.equals(s2); } - } // namespace QmlDesigner #endif // DESIGNERSETTINGS_H diff --git a/src/plugins/qmldesigner/qmldesignerconstants.h b/src/plugins/qmldesigner/qmldesignerconstants.h index d2b5666e42..0deb1dcaf9 100644 --- a/src/plugins/qmldesigner/qmldesignerconstants.h +++ b/src/plugins/qmldesigner/qmldesignerconstants.h @@ -47,24 +47,6 @@ const char TOGGLE_LEFT_SIDEBAR[] = "QmlDesigner.ToggleLeftSideBar"; const char TOGGLE_RIGHT_SIDEBAR[] = "QmlDesigner.ToggleRightSideBar"; const char GO_INTO_COMPONENT[] = "QmlDesigner.GoIntoComponent"; -// This setting is also accessed by the QMlJsEditor. -const char QML_SETTINGS_GROUP[] = "QML"; -const char QML_DESIGNER_SETTINGS_GROUP[] = "Designer"; -const char QML_ITEMSPACING_KEY[] = "ItemSpacing"; -const char QML_CONTAINERPADDING_KEY[] = "ContainerPadding"; -const char QML_CANVASWIDTH_KEY[] = "CanvasWidth"; -const char QML_CANVASHEIGHT_KEY[] = "CanvasHeight"; -const char QML_WARNIN_FOR_FEATURES_IN_DESIGNER_KEY[] = "WarnAboutQtQuickFeaturesInDesigner"; -const char QML_WARNIN_FOR_DESIGNER_FEATURES_IN_EDITOR_KEY[] = "WarnAboutQtQuickDesignerFeaturesInCodeEditor"; -const char QML_SHOW_DEBUGVIEW[] = "ShowQtQuickDesignerDebugView"; -const char QML_ENABLE_DEBUGVIEW[] = "EnableQtQuickDesignerDebugView"; -const char QML_ALWAYS_SAFE_IN_CRUMBLEBAR[] = "AlwaysSafeInCrumbleBar"; -const char QML_USE_ONLY_FALLBACK_PUPPET[] = "UseOnlyFallbackPuppet"; -const char QML_PUPPET_TOPLEVEL_BUILD_DIRECTORY[] = "PuppetToplevelBuildDirectory"; -const char QML_PUPPET_FALLBACK_DIRECTORY[] = "PuppetFallbackDirectory"; -const char QML_CONTROLS_STYLE[] = "ControlsStyle"; -const char QML_USE_QSTR_FUNCTION[] = "UseQsTrFunction"; - const char QML_DESIGNER_SUBFOLDER[] = "/designer/"; namespace Internal { diff --git a/src/plugins/qmldesigner/settingspage.cpp b/src/plugins/qmldesigner/settingspage.cpp index d0df988c28..2a0dd5f65c 100644 --- a/src/plugins/qmldesigner/settingspage.cpp +++ b/src/plugins/qmldesigner/settingspage.cpp @@ -57,57 +57,82 @@ SettingsPageWidget::SettingsPageWidget(QWidget *parent) : DesignerSettings SettingsPageWidget::settings() const { - DesignerSettings designerSettings; - designerSettings.itemSpacing = m_ui.spinItemSpacing->value(); - designerSettings.containerPadding = m_ui.spinSnapMargin->value(); - designerSettings.canvasWidth = m_ui.spinCanvasWidth->value(); - designerSettings.canvasHeight = m_ui.spinCanvasHeight->value(); - designerSettings.warningsInDesigner = m_ui.designerWarningsCheckBox->isChecked(); - designerSettings.designerWarningsInEditor = m_ui.designerWarningsInEditorCheckBox->isChecked(); - designerSettings.showDebugView = m_ui.designerShowDebuggerCheckBox->isChecked(); - designerSettings.enableDebugView = m_ui.designerEnableDebuggerCheckBox->isChecked(); - designerSettings.useOnlyFallbackPuppet = m_ui.useDefaultPuppetRadioButton->isChecked(); - designerSettings.useQsTrFunction = m_ui.useQsTrFunctionRadioButton->isChecked(); - designerSettings.controlsStyle = m_ui.styleLineEdit->text(); + DesignerSettings settings = QmlDesignerPlugin::instance()->settings(); + settings.insert(DesignerSettingsKey::ITEMSPACING, m_ui.spinItemSpacing->value()); + settings.insert(DesignerSettingsKey::CONTAINERPADDING, m_ui.spinSnapMargin->value()); + settings.insert(DesignerSettingsKey::CANVASWIDTH, m_ui.spinCanvasWidth->value()); + settings.insert(DesignerSettingsKey::CANVASHEIGHT, m_ui.spinCanvasHeight->value()); + settings.insert(DesignerSettingsKey::WARNING_FOR_FEATURES_IN_DESIGNER, + m_ui.designerWarningsCheckBox->isChecked()); + settings.insert(DesignerSettingsKey::WARNING_FOR_DESIGNER_FEATURES_IN_EDITOR, + m_ui.designerWarningsInEditorCheckBox->isChecked()); + settings.insert(DesignerSettingsKey::SHOW_DEBUGVIEW, + m_ui.designerShowDebuggerCheckBox->isChecked()); + settings.insert(DesignerSettingsKey::ENABLE_DEBUGVIEW, + m_ui.designerEnableDebuggerCheckBox->isChecked()); + settings.insert(DesignerSettingsKey::USE_ONLY_FALLBACK_PUPPET, + m_ui.useDefaultPuppetRadioButton->isChecked()); + settings.insert(DesignerSettingsKey::USE_QSTR_FUNCTION, + m_ui.useQsTrFunctionRadioButton->isChecked()); + settings.insert(DesignerSettingsKey::CONTROLS_STYLE, m_ui.styleLineEdit->text()); if (!m_ui.fallbackPuppetPathLineEdit->path().isEmpty() && m_ui.fallbackPuppetPathLineEdit->path() != PuppetCreator::defaultPuppetFallbackDirectory()) { - designerSettings.puppetFallbackDirectory = m_ui.fallbackPuppetPathLineEdit->path(); + settings.insert(DesignerSettingsKey::PUPPET_FALLBACK_DIRECTORY, + m_ui.fallbackPuppetPathLineEdit->path()); } if (!m_ui.puppetBuildPathLineEdit->path().isEmpty() && m_ui.puppetBuildPathLineEdit->path() != PuppetCreator::defaultPuppetToplevelBuildDirectory()) { - designerSettings.puppetToplevelBuildDirectory = m_ui.puppetBuildPathLineEdit->path(); + settings.insert(DesignerSettingsKey::PUPPET_TOPLEVEL_BUILD_DIRECTORY, + m_ui.puppetBuildPathLineEdit->path()); } - return designerSettings; + return settings; } -void SettingsPageWidget::setSettings(const DesignerSettings &designerSettings) +void SettingsPageWidget::setSettings(const DesignerSettings &settings) { - m_ui.spinItemSpacing->setValue(designerSettings.itemSpacing); - m_ui.spinSnapMargin->setValue(designerSettings.containerPadding); - m_ui.spinCanvasWidth->setValue(designerSettings.canvasWidth); - m_ui.spinCanvasHeight->setValue(designerSettings.canvasHeight); - m_ui.designerWarningsCheckBox->setChecked(designerSettings.warningsInDesigner); - m_ui.designerWarningsInEditorCheckBox->setChecked(designerSettings.designerWarningsInEditor); - m_ui.designerShowDebuggerCheckBox->setChecked(designerSettings.showDebugView); - m_ui.designerEnableDebuggerCheckBox->setChecked(designerSettings.enableDebugView); - m_ui.useDefaultPuppetRadioButton->setChecked(designerSettings.useOnlyFallbackPuppet); - m_ui.useQtRelatedPuppetRadioButton->setChecked(!designerSettings.useOnlyFallbackPuppet); - m_ui.useQsTrFunctionRadioButton->setChecked(designerSettings.useQsTrFunction); - m_ui.useQsTrIdFunctionRadioButton->setChecked(!designerSettings.useQsTrFunction); - m_ui.styleLineEdit->setText(designerSettings.controlsStyle); - - if (designerSettings.puppetFallbackDirectory.isEmpty()) + m_ui.spinItemSpacing->setValue(settings.value( + DesignerSettingsKey::ITEMSPACING).toInt()); + m_ui.spinSnapMargin->setValue(settings.value( + DesignerSettingsKey::CONTAINERPADDING).toInt()); + m_ui.spinCanvasWidth->setValue(settings.value( + DesignerSettingsKey::CANVASWIDTH).toInt()); + m_ui.spinCanvasHeight->setValue(settings.value( + DesignerSettingsKey::CANVASHEIGHT).toInt()); + m_ui.designerWarningsCheckBox->setChecked(settings.value( + DesignerSettingsKey::WARNING_FOR_FEATURES_IN_DESIGNER).toBool()); + m_ui.designerWarningsInEditorCheckBox->setChecked(settings.value( + DesignerSettingsKey::WARNING_FOR_DESIGNER_FEATURES_IN_EDITOR).toBool()); + m_ui.designerShowDebuggerCheckBox->setChecked(settings.value( + DesignerSettingsKey::SHOW_DEBUGVIEW).toBool()); + m_ui.designerEnableDebuggerCheckBox->setChecked(settings.value( + DesignerSettingsKey::ENABLE_DEBUGVIEW).toBool()); + m_ui.useDefaultPuppetRadioButton->setChecked(settings.value( + DesignerSettingsKey::USE_ONLY_FALLBACK_PUPPET).toBool()); + m_ui.useQtRelatedPuppetRadioButton->setChecked(!settings.value( + DesignerSettingsKey::USE_ONLY_FALLBACK_PUPPET).toBool()); + m_ui.useQsTrFunctionRadioButton->setChecked(settings.value( + DesignerSettingsKey::USE_QSTR_FUNCTION).toBool()); + m_ui.useQsTrIdFunctionRadioButton->setChecked(!settings.value( + DesignerSettingsKey::USE_QSTR_FUNCTION).toBool()); + m_ui.styleLineEdit->setText(settings.value( + DesignerSettingsKey::CONTROLS_STYLE).toString()); + + QString puppetFallbackDirectory = settings.value( + DesignerSettingsKey::PUPPET_FALLBACK_DIRECTORY).toString(); + if (puppetFallbackDirectory.isEmpty()) resetFallbackPuppetPath(); else - m_ui.fallbackPuppetPathLineEdit->setPath(designerSettings.puppetFallbackDirectory); + m_ui.fallbackPuppetPathLineEdit->setPath(puppetFallbackDirectory); - if (designerSettings.puppetToplevelBuildDirectory.isEmpty()) + QString puppetToplevelBuildDirectory = settings.value( + DesignerSettingsKey::PUPPET_TOPLEVEL_BUILD_DIRECTORY).toString(); + if (puppetToplevelBuildDirectory.isEmpty()) resetQmlPuppetBuildPath(); else - m_ui.puppetBuildPathLineEdit->setPath(designerSettings.puppetToplevelBuildDirectory); + m_ui.puppetBuildPathLineEdit->setPath(puppetToplevelBuildDirectory); } void SettingsPageWidget::resetFallbackPuppetPath() @@ -156,16 +181,20 @@ void SettingsPage::apply() if (!m_widget) // page was never shown return; - DesignerSettings currentDesignerSettings(QmlDesignerPlugin::instance()->settings()); - DesignerSettings newDesignerSettings(m_widget->settings()); + DesignerSettings currentSettings(QmlDesignerPlugin::instance()->settings()); + DesignerSettings newSettings(m_widget->settings()); + + if (currentSettings.value(DesignerSettingsKey::PUPPET_FALLBACK_DIRECTORY) != + newSettings.value(DesignerSettingsKey::PUPPET_FALLBACK_DIRECTORY) || + currentSettings.value(DesignerSettingsKey::PUPPET_TOPLEVEL_BUILD_DIRECTORY) != + newSettings.value(DesignerSettingsKey::PUPPET_TOPLEVEL_BUILD_DIRECTORY)) { - if (currentDesignerSettings.puppetFallbackDirectory != newDesignerSettings.puppetFallbackDirectory || - currentDesignerSettings.puppetToplevelBuildDirectory != newDesignerSettings.puppetToplevelBuildDirectory) { QMessageBox::information(Core::ICore::mainWindow(), tr("Restart Required"), - tr("The QML emulation layer path changes will take effect after a restart of the QML Emulation layer or Qt Creator.")); + tr("The QML emulation layer path changes will take effect after a " + "restart of the QML Emulation layer or Qt Creator.")); } - QmlDesignerPlugin::instance()->setSettings(newDesignerSettings); + QmlDesignerPlugin::instance()->setSettings(newSettings); } void SettingsPage::finish() diff --git a/src/plugins/qmldesigner/settingspage.h b/src/plugins/qmldesigner/settingspage.h index 81cb866f56..179ecf9b39 100644 --- a/src/plugins/qmldesigner/settingspage.h +++ b/src/plugins/qmldesigner/settingspage.h @@ -51,7 +51,7 @@ public: explicit SettingsPageWidget(QWidget *parent = 0); DesignerSettings settings() const; - void setSettings(const DesignerSettings &designerSettings); + void setSettings(const DesignerSettings &settings); public slots: void debugViewEnabledToggled(bool b); |