QmlJsEditor: Use now-standard pattern for settings page setup

Change-Id: I6de2ef5df605a103c99c5304590d8b8b2cf3ee3e
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2020-01-28 16:11:51 +01:00
parent c9d10c0d04
commit 4ef57eeaed
2 changed files with 29 additions and 68 deletions

View File

@@ -123,28 +123,36 @@ void QmlJsEditingSettings::setAutoFormatOnlyCurrentProject(const bool autoFormat
m_autoFormatOnlyCurrentProject = autoFormatOnlyCurrentProject;
}
QmlJsEditingSettignsPageWidget::QmlJsEditingSettignsPageWidget()
class QmlJsEditingSettingsPageWidget final : public Core::IOptionsPageWidget
{
m_ui.setupUi(this);
}
Q_DECLARE_TR_FUNCTIONS(QmlDesigner::Internal::QmlJsEditingSettingsPage)
QmlJsEditingSettings QmlJsEditingSettignsPageWidget::settings() const
{
public:
QmlJsEditingSettingsPageWidget()
{
m_ui.setupUi(this);
auto s = QmlJsEditingSettings::get();
m_ui.textEditHelperCheckBox->setChecked(s.enableContextPane());
m_ui.textEditHelperCheckBoxPin->setChecked(s.pinContextPane());
m_ui.autoFormatOnSave->setChecked(s.autoFormatOnSave());
m_ui.autoFormatOnlyCurrentProject->setChecked(s.autoFormatOnlyCurrentProject());
}
void apply() final
{
QmlJsEditingSettings s;
s.setEnableContextPane(m_ui.textEditHelperCheckBox->isChecked());
s.setPinContextPane(m_ui.textEditHelperCheckBoxPin->isChecked());
s.setAutoFormatOnSave(m_ui.autoFormatOnSave->isChecked());
s.setAutoFormatOnlyCurrentProject(m_ui.autoFormatOnlyCurrentProject->isChecked());
return s;
}
s.set();
}
private:
Ui::QmlJsEditingSettingsPage m_ui;
};
void QmlJsEditingSettignsPageWidget::setSettings(const QmlJsEditingSettings &s)
{
m_ui.textEditHelperCheckBox->setChecked(s.enableContextPane());
m_ui.textEditHelperCheckBoxPin->setChecked(s.pinContextPane());
m_ui.autoFormatOnSave->setChecked(s.autoFormatOnSave());
m_ui.autoFormatOnlyCurrentProject->setChecked(s.autoFormatOnlyCurrentProject());
}
QmlJsEditingSettings QmlJsEditingSettings::get()
{
@@ -156,27 +164,8 @@ QmlJsEditingSettings QmlJsEditingSettings::get()
QmlJsEditingSettingsPage::QmlJsEditingSettingsPage()
{
setId("C.QmlJsEditing");
setDisplayName(tr("QML/JS Editing"));
setDisplayName(QmlJsEditingSettingsPageWidget::tr("QML/JS Editing"));
setCategory(Constants::SETTINGS_CATEGORY_QML);
setWidgetCreator([] { return new QmlJsEditingSettingsPageWidget; });
}
QWidget *QmlJsEditingSettingsPage::widget()
{
if (!m_widget) {
m_widget = new QmlJsEditingSettignsPageWidget;
m_widget->setSettings(QmlJsEditingSettings::get());
}
return m_widget;
}
void QmlJsEditingSettingsPage::apply()
{
if (!m_widget) // page was never shown
return;
m_widget->settings().set();
}
void QmlJsEditingSettingsPage::finish()
{
delete m_widget;
}

View File

@@ -73,40 +73,12 @@ namespace QmlJSEditor {
{ return !s1.equals(s2); }
class QmlJsEditingSettings;
namespace Internal {
class QmlJsEditingSettignsPageWidget : public QWidget
{
Q_OBJECT
public:
QmlJsEditingSettignsPageWidget();
QmlJsEditingSettings settings() const;
void setSettings(const QmlJsEditingSettings &);
static QmlJsEditingSettings get();
private:
Ui::QmlJsEditingSettingsPage m_ui;
};
class QmlJsEditingSettingsPage : public Core::IOptionsPage
{
Q_OBJECT
public:
QmlJsEditingSettingsPage();
QWidget *widget() override;
void apply() override;
void finish() override;
private:
QPointer<QmlJsEditingSettignsPageWidget> m_widget;
};
} // namespace Internal