forked from qt-creator/qt-creator
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:
@@ -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)
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user