diff --git a/src/plugins/qmljseditor/qmljseditingsettingspage.cpp b/src/plugins/qmljseditor/qmljseditingsettingspage.cpp index 6c960ba60a8..779f1ad394e 100644 --- a/src/plugins/qmljseditor/qmljseditingsettingspage.cpp +++ b/src/plugins/qmljseditor/qmljseditingsettingspage.cpp @@ -27,6 +27,7 @@ #include "qmljseditorconstants.h" #include +#include #include #include @@ -38,7 +39,7 @@ const char AUTO_FORMAT_ONLY_CURRENT_PROJECT[] = "QmlJSEditor.AutoFormatOnlyCurre const char QML_CONTEXTPANE_KEY[] = "QmlJSEditor.ContextPaneEnabled"; const char QML_CONTEXTPANEPIN_KEY[] = "QmlJSEditor.ContextPanePinned"; const char FOLD_AUX_DATA[] = "QmlJSEditor.FoldAuxData"; -const char OPEN_UIQML_FILES_IN_QDS[] = "QmlJSEditor.openUiQmlFilesInQDS"; +const char UIQML_OPEN_MODE[] = "QmlJSEditor.openUiQmlMode"; using namespace QmlJSEditor; using namespace QmlJSEditor::Internal; @@ -49,7 +50,7 @@ QmlJsEditingSettings::QmlJsEditingSettings() m_autoFormatOnSave(false), m_autoFormatOnlyCurrentProject(false), m_foldAuxData(false), - m_openUiQmlFilesInQDS(false) + m_uiQmlOpenMode("") {} void QmlJsEditingSettings::set() @@ -67,7 +68,7 @@ void QmlJsEditingSettings::fromSettings(QSettings *settings) m_autoFormatOnlyCurrentProject = settings->value(AUTO_FORMAT_ONLY_CURRENT_PROJECT, QVariant(false)).toBool(); m_foldAuxData = settings->value(FOLD_AUX_DATA, QVariant(true)).toBool(); - m_openUiQmlFilesInQDS = settings->value(OPEN_UIQML_FILES_IN_QDS, QVariant(false)).toBool(); + m_uiQmlOpenMode = settings->value(UIQML_OPEN_MODE, "").toString(); settings->endGroup(); } @@ -79,7 +80,7 @@ void QmlJsEditingSettings::toSettings(QSettings *settings) const settings->setValue(AUTO_FORMAT_ON_SAVE, m_autoFormatOnSave); settings->setValue(AUTO_FORMAT_ONLY_CURRENT_PROJECT, m_autoFormatOnlyCurrentProject); settings->setValue(FOLD_AUX_DATA, m_foldAuxData); - settings->setValue(OPEN_UIQML_FILES_IN_QDS, m_openUiQmlFilesInQDS); + settings->setValue(UIQML_OPEN_MODE, m_uiQmlOpenMode); settings->endGroup(); } @@ -90,7 +91,7 @@ bool QmlJsEditingSettings::equals(const QmlJsEditingSettings &other) const && m_autoFormatOnSave == other.m_autoFormatOnSave && m_autoFormatOnlyCurrentProject == other.m_autoFormatOnlyCurrentProject && m_foldAuxData == other.m_foldAuxData - && m_openUiQmlFilesInQDS == other.m_openUiQmlFilesInQDS; + && m_uiQmlOpenMode == other.m_uiQmlOpenMode; } bool QmlJsEditingSettings::enableContextPane() const @@ -143,14 +144,14 @@ void QmlJsEditingSettings::setFoldAuxData(const bool foldAuxData) m_foldAuxData = foldAuxData; } -void QmlJsEditingSettings::setOpenUiQmlFilesInQDS(const bool openUiQmlFilesInQDS) +const QString QmlJsEditingSettings::uiQmlOpenMode() const { - m_openUiQmlFilesInQDS = openUiQmlFilesInQDS; + return m_uiQmlOpenMode; } -bool QmlJsEditingSettings::openUiQmlFilesInQDS() const +void QmlJsEditingSettings::setUiQmlOpenMode(const QString &mode) { - return m_openUiQmlFilesInQDS; + m_uiQmlOpenMode = mode; } class QmlJsEditingSettingsPageWidget final : public Core::IOptionsPageWidget @@ -168,7 +169,13 @@ public: m_ui.autoFormatOnSave->setChecked(s.autoFormatOnSave()); m_ui.autoFormatOnlyCurrentProject->setChecked(s.autoFormatOnlyCurrentProject()); m_ui.foldAuxDataCheckBox->setChecked(s.foldAuxData()); - m_ui.openUiQmlFilesInQDS->setChecked(s.openUiQmlFilesInQDS()); + m_ui.uiQmlOpenComboBox->addItem(tr("Always ask"), ""); + m_ui.uiQmlOpenComboBox->addItem(tr("Qt Design Studio"), Core::Constants::MODE_DESIGN); + m_ui.uiQmlOpenComboBox->addItem(tr("Qt Creator"), Core::Constants::MODE_EDIT); + int comboIndex = m_ui.uiQmlOpenComboBox->findData(s.uiQmlOpenMode()); + if (comboIndex < 0) + comboIndex = 0; + m_ui.uiQmlOpenComboBox->setCurrentIndex(comboIndex); } void apply() final @@ -179,7 +186,7 @@ public: s.setAutoFormatOnSave(m_ui.autoFormatOnSave->isChecked()); s.setAutoFormatOnlyCurrentProject(m_ui.autoFormatOnlyCurrentProject->isChecked()); s.setFoldAuxData(m_ui.foldAuxDataCheckBox->isChecked()); - s.setOpenUiQmlFilesInQDS(m_ui.openUiQmlFilesInQDS->isChecked()); + s.setUiQmlOpenMode(m_ui.uiQmlOpenComboBox->currentData().toString()); s.set(); } diff --git a/src/plugins/qmljseditor/qmljseditingsettingspage.h b/src/plugins/qmljseditor/qmljseditingsettingspage.h index 8a5957b0199..bc152f22de2 100644 --- a/src/plugins/qmljseditor/qmljseditingsettingspage.h +++ b/src/plugins/qmljseditor/qmljseditingsettingspage.h @@ -64,8 +64,8 @@ public: bool foldAuxData() const; void setFoldAuxData(const bool foldAuxData); - bool openUiQmlFilesInQDS() const; - void setOpenUiQmlFilesInQDS(const bool foldAuxData); + const QString uiQmlOpenMode() const; + void setUiQmlOpenMode(const QString &mode); friend bool operator==(const QmlJsEditingSettings &s1, const QmlJsEditingSettings &s2) { return s1.equals(s2); } @@ -78,7 +78,7 @@ private: bool m_autoFormatOnSave; bool m_autoFormatOnlyCurrentProject; bool m_foldAuxData; - bool m_openUiQmlFilesInQDS; + QString m_uiQmlOpenMode; }; namespace Internal { diff --git a/src/plugins/qmljseditor/qmljseditingsettingspage.ui b/src/plugins/qmljseditor/qmljseditingsettingspage.ui index ddd4ee98ba1..4a82cbf4bce 100644 --- a/src/plugins/qmljseditor/qmljseditingsettingspage.ui +++ b/src/plugins/qmljseditor/qmljseditingsettingspage.ui @@ -93,12 +93,26 @@ - - - Open .ui.qml files in Qt Design Studio - - - + + + + + Open .ui.qml files with: + + + + + + + + 1 + 0 + + + + + +