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; 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; QmlJsEditingSettings s;
s.setEnableContextPane(m_ui.textEditHelperCheckBox->isChecked()); s.setEnableContextPane(m_ui.textEditHelperCheckBox->isChecked());
s.setPinContextPane(m_ui.textEditHelperCheckBoxPin->isChecked()); s.setPinContextPane(m_ui.textEditHelperCheckBoxPin->isChecked());
s.setAutoFormatOnSave(m_ui.autoFormatOnSave->isChecked()); s.setAutoFormatOnSave(m_ui.autoFormatOnSave->isChecked());
s.setAutoFormatOnlyCurrentProject(m_ui.autoFormatOnlyCurrentProject->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() QmlJsEditingSettings QmlJsEditingSettings::get()
{ {
@@ -156,27 +164,8 @@ QmlJsEditingSettings QmlJsEditingSettings::get()
QmlJsEditingSettingsPage::QmlJsEditingSettingsPage() QmlJsEditingSettingsPage::QmlJsEditingSettingsPage()
{ {
setId("C.QmlJsEditing"); setId("C.QmlJsEditing");
setDisplayName(tr("QML/JS Editing")); setDisplayName(QmlJsEditingSettingsPageWidget::tr("QML/JS Editing"));
setCategory(Constants::SETTINGS_CATEGORY_QML); 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); } { return !s1.equals(s2); }
class QmlJsEditingSettings;
namespace Internal { 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 class QmlJsEditingSettingsPage : public Core::IOptionsPage
{ {
Q_OBJECT
public: public:
QmlJsEditingSettingsPage(); QmlJsEditingSettingsPage();
QWidget *widget() override;
void apply() override;
void finish() override;
private:
QPointer<QmlJsEditingSettignsPageWidget> m_widget;
}; };
} // namespace Internal } // namespace Internal