QmlDesigner: Standardize settings page

Plus a bit code cosmetics.

Change-Id: I56207def707ee3da1de9f46e50fa0ca900011b7c
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2020-02-04 09:13:10 +01:00
parent f2946cdd19
commit d54df35deb
3 changed files with 49 additions and 80 deletions

View File

@@ -74,6 +74,7 @@
#include <QProcessEnvironment> #include <QProcessEnvironment>
#include <QScreen> #include <QScreen>
#include <QWindow> #include <QWindow>
#include <QApplication>
static Q_LOGGING_CATEGORY(qmldesignerLog, "qtc.qmldesigner", QtWarningMsg) static Q_LOGGING_CATEGORY(qmldesignerLog, "qtc.qmldesigner", QtWarningMsg)

View File

@@ -28,6 +28,7 @@
#include "qmldesignerplugin.h" #include "qmldesignerplugin.h"
#include "designersettings.h" #include "designersettings.h"
#include "puppetcreator.h" #include "puppetcreator.h"
#include "ui_settingspage.h"
#include <app/app_version.h> #include <app/app_version.h>
@@ -42,20 +43,32 @@
#include <QTextStream> #include <QTextStream>
#include <QMessageBox> #include <QMessageBox>
using namespace QmlDesigner; namespace QmlDesigner {
using namespace QmlDesigner::Internal; namespace Internal {
namespace { static QStringList puppetModes()
QStringList puppetModes() {
{ static QStringList puppetModeList{"", "all", "editormode", "rendermode", "previewmode"};
static QStringList puppetModeList{QLatin1String(""), QLatin1String("all"), return puppetModeList;
QLatin1String("editormode"), QLatin1String("rendermode"), QLatin1String("previewmode")};
return puppetModeList;
}
} }
SettingsPageWidget::SettingsPageWidget(QWidget *parent) : class SettingsPageWidget final : public Core::IOptionsPageWidget
QWidget(parent) {
Q_DECLARE_TR_FUNCTIONS(QmlDesigner::Internal::SettingsPage)
public:
explicit SettingsPageWidget();
void apply() final;
DesignerSettings settings() const;
void setSettings(const DesignerSettings &settings);
private:
Ui::SettingsPage m_ui;
};
SettingsPageWidget::SettingsPageWidget()
{ {
m_ui.setupUi(this); m_ui.setupUi(this);
@@ -89,6 +102,8 @@ SettingsPageWidget::SettingsPageWidget(QWidget *parent) :
m_ui.forwardPuppetOutputComboBox->addItems(puppetModes()); m_ui.forwardPuppetOutputComboBox->addItems(puppetModes());
m_ui.debugPuppetComboBox->addItems(puppetModes()); m_ui.debugPuppetComboBox->addItems(puppetModes());
setSettings(QmlDesignerPlugin::instance()->settings());
} }
DesignerSettings SettingsPageWidget::settings() const DesignerSettings SettingsPageWidget::settings() const
@@ -240,42 +255,23 @@ void SettingsPageWidget::setSettings(const DesignerSettings &settings)
} }
} }
SettingsPage::SettingsPage() : void SettingsPageWidget::apply()
m_widget(nullptr)
{ {
setId("B.QmlDesigner");
setDisplayName(SettingsPageWidget::tr("Qt Quick Designer"));
setCategory(QmlJSEditor::Constants::SETTINGS_CATEGORY_QML);
}
QWidget *SettingsPage::widget()
{
if (!m_widget) {
m_widget = new SettingsPageWidget;
m_widget->setSettings(QmlDesignerPlugin::instance()->settings());
}
return m_widget;
}
void SettingsPage::apply()
{
if (!m_widget) // page was never shown
return;
DesignerSettings currentSettings(QmlDesignerPlugin::instance()->settings()); DesignerSettings currentSettings(QmlDesignerPlugin::instance()->settings());
DesignerSettings newSettings(m_widget->settings()); DesignerSettings newSettings = settings();
QList<QByteArray> restartNecessaryKeys; const auto restartNecessaryKeys = {
restartNecessaryKeys << DesignerSettingsKey::PUPPET_DEFAULT_DIRECTORY DesignerSettingsKey::PUPPET_DEFAULT_DIRECTORY,
<< DesignerSettingsKey::PUPPET_TOPLEVEL_BUILD_DIRECTORY DesignerSettingsKey::PUPPET_TOPLEVEL_BUILD_DIRECTORY,
<< DesignerSettingsKey::ENABLE_MODEL_EXCEPTION_OUTPUT DesignerSettingsKey::ENABLE_MODEL_EXCEPTION_OUTPUT,
<< DesignerSettingsKey::PUPPET_KILL_TIMEOUT DesignerSettingsKey::PUPPET_KILL_TIMEOUT,
<< DesignerSettingsKey::FORWARD_PUPPET_OUTPUT DesignerSettingsKey::FORWARD_PUPPET_OUTPUT,
<< DesignerSettingsKey::DEBUG_PUPPET DesignerSettingsKey::DEBUG_PUPPET,
<< DesignerSettingsKey::ENABLE_MODEL_EXCEPTION_OUTPUT DesignerSettingsKey::ENABLE_MODEL_EXCEPTION_OUTPUT,
<< DesignerSettingsKey::ENABLE_TIMELINEVIEW; DesignerSettingsKey::ENABLE_TIMELINEVIEW
};
foreach (const QByteArray &key, restartNecessaryKeys) { for (const QByteArray &key : restartNecessaryKeys) {
if (currentSettings.value(key) != newSettings.value(key)) { if (currentSettings.value(key) != newSettings.value(key)) {
QMessageBox::information(Core::ICore::mainWindow(), tr("Restart Required"), QMessageBox::information(Core::ICore::mainWindow(), tr("Restart Required"),
tr("The made changes will take effect after a " tr("The made changes will take effect after a "
@@ -288,7 +284,13 @@ void SettingsPage::apply()
QmlDesignerPlugin::instance()->setSettings(newSettings); QmlDesignerPlugin::instance()->setSettings(newSettings);
} }
void SettingsPage::finish() SettingsPage::SettingsPage()
{ {
delete m_widget; setId("B.QmlDesigner");
setDisplayName(SettingsPageWidget::tr("Qt Quick Designer"));
setCategory(QmlJSEditor::Constants::SETTINGS_CATEGORY_QML);
setWidgetCreator([] { return new SettingsPageWidget; });
} }
} // Internal
} // QmlDesigner

View File

@@ -25,49 +25,15 @@
#pragma once #pragma once
#include "ui_settingspage.h"
#include <coreplugin/dialogs/ioptionspage.h> #include <coreplugin/dialogs/ioptionspage.h>
#include <QPointer>
#include <QWidget>
QT_BEGIN_NAMESPACE
class QSettings;
QT_END_NAMESPACE
namespace QmlDesigner { namespace QmlDesigner {
class DesignerSettings;
namespace Internal { namespace Internal {
class SettingsPageWidget : public QWidget class SettingsPage final : public Core::IOptionsPage
{
Q_DECLARE_TR_FUNCTIONS(QmlDesigner::Internal::SettingsPage)
public:
explicit SettingsPageWidget(QWidget *parent = nullptr);
DesignerSettings settings() const;
void setSettings(const DesignerSettings &settings);
private:
Ui::SettingsPage m_ui;
};
class SettingsPage : public Core::IOptionsPage
{ {
public: public:
SettingsPage(); SettingsPage();
QWidget *widget() override;
void apply() override;
void finish() override;
private:
QPointer<SettingsPageWidget> m_widget;
}; };
} // namespace Internal } // namespace Internal