forked from qt-creator/qt-creator
TextEditor: Use IOptionPage::setWidgetCreator() for behavior settings
Change-Id: I24629e64b48c08b1321f0ebf3fca21e17a1f69a1 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
#include "simplecodestylepreferences.h"
|
||||
#include "storagesettings.h"
|
||||
#include "tabsettings.h"
|
||||
#include "tabsettingswidget.h"
|
||||
#include "texteditorconstants.h"
|
||||
#include "texteditorsettings.h"
|
||||
#include "texteditortr.h"
|
||||
@@ -35,12 +36,12 @@
|
||||
|
||||
namespace TextEditor {
|
||||
|
||||
struct BehaviorSettingsPage::BehaviorSettingsPagePrivate : public QObject
|
||||
class BehaviorSettingsPagePrivate : public QObject
|
||||
{
|
||||
public:
|
||||
BehaviorSettingsPagePrivate();
|
||||
|
||||
const QString m_settingsPrefix{"text"};
|
||||
QPointer<QWidget> m_widget;
|
||||
TextEditor::BehaviorSettingsWidget *m_behaviorWidget = nullptr;
|
||||
|
||||
CodeStylePool *m_defaultCodeStylePool = nullptr;
|
||||
@@ -52,7 +53,7 @@ struct BehaviorSettingsPage::BehaviorSettingsPagePrivate : public QObject
|
||||
ExtraEncodingSettings m_extraEncodingSettings;
|
||||
};
|
||||
|
||||
BehaviorSettingsPage::BehaviorSettingsPagePrivate::BehaviorSettingsPagePrivate()
|
||||
BehaviorSettingsPagePrivate::BehaviorSettingsPagePrivate()
|
||||
{
|
||||
// global tab preferences for all other languages
|
||||
m_codeStyle = new SimpleCodeStylePreferences(this);
|
||||
@@ -71,6 +72,54 @@ BehaviorSettingsPage::BehaviorSettingsPagePrivate::BehaviorSettingsPagePrivate()
|
||||
m_extraEncodingSettings.fromSettings(m_settingsPrefix, s);
|
||||
}
|
||||
|
||||
class BehaviorSettingsWidgetImpl : public Core::IOptionsPageWidget
|
||||
{
|
||||
public:
|
||||
BehaviorSettingsWidgetImpl(BehaviorSettingsPagePrivate *d) : d(d)
|
||||
{
|
||||
d->m_behaviorWidget = new BehaviorSettingsWidget(this);
|
||||
|
||||
auto verticalSpacer = new QSpacerItem(20, 13, QSizePolicy::Minimum, QSizePolicy::Expanding);
|
||||
|
||||
auto gridLayout = new QGridLayout(this);
|
||||
if (Utils::HostOsInfo::isMacHost())
|
||||
gridLayout->setContentsMargins(-1, 0, -1, 0); // don't ask.
|
||||
gridLayout->addWidget(d->m_behaviorWidget, 0, 0, 1, 1);
|
||||
gridLayout->addItem(verticalSpacer, 1, 0, 1, 1);
|
||||
|
||||
d->m_pageCodeStyle = new SimpleCodeStylePreferences(this);
|
||||
d->m_pageCodeStyle->setDelegatingPool(d->m_codeStyle->delegatingPool());
|
||||
d->m_pageCodeStyle->setTabSettings(d->m_codeStyle->tabSettings());
|
||||
d->m_pageCodeStyle->setCurrentDelegate(d->m_codeStyle->currentDelegate());
|
||||
d->m_behaviorWidget->setCodeStyle(d->m_pageCodeStyle);
|
||||
|
||||
TabSettingsWidget *tabSettingsWidget = d->m_behaviorWidget->tabSettingsWidget();
|
||||
tabSettingsWidget->setCodingStyleWarningVisible(true);
|
||||
connect(tabSettingsWidget, &TabSettingsWidget::codingStyleLinkClicked,
|
||||
this, [] (TabSettingsWidget::CodingStyleLink link) {
|
||||
switch (link) {
|
||||
case TabSettingsWidget::CppLink:
|
||||
Core::ICore::showOptionsDialog(CppEditor::Constants::CPP_CODE_STYLE_SETTINGS_ID);
|
||||
break;
|
||||
case TabSettingsWidget::QtQuickLink:
|
||||
Core::ICore::showOptionsDialog(QmlJSTools::Constants::QML_JS_CODE_STYLE_SETTINGS_ID);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
d->m_behaviorWidget->setAssignedTypingSettings(d->m_typingSettings);
|
||||
d->m_behaviorWidget->setAssignedStorageSettings(d->m_storageSettings);
|
||||
d->m_behaviorWidget->setAssignedBehaviorSettings(d->m_behaviorSettings);
|
||||
d->m_behaviorWidget->setAssignedExtraEncodingSettings(d->m_extraEncodingSettings);
|
||||
d->m_behaviorWidget->setAssignedCodec(Core::EditorManager::defaultTextCodec());
|
||||
d->m_behaviorWidget->setAssignedLineEnding(Core::EditorManager::defaultLineEnding());
|
||||
}
|
||||
|
||||
void apply() final;
|
||||
|
||||
BehaviorSettingsPagePrivate *d;
|
||||
};
|
||||
|
||||
BehaviorSettingsPage::BehaviorSettingsPage()
|
||||
: d(new BehaviorSettingsPagePrivate)
|
||||
{
|
||||
@@ -81,6 +130,7 @@ BehaviorSettingsPage::BehaviorSettingsPage()
|
||||
setCategory(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY);
|
||||
setDisplayCategory(Tr::tr("Text Editor"));
|
||||
setCategoryIconPath(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY_ICON_PATH);
|
||||
setWidgetCreator([this] { return new BehaviorSettingsWidgetImpl(d); });
|
||||
}
|
||||
|
||||
BehaviorSettingsPage::~BehaviorSettingsPage()
|
||||
@@ -88,37 +138,7 @@ BehaviorSettingsPage::~BehaviorSettingsPage()
|
||||
delete d;
|
||||
}
|
||||
|
||||
QWidget *BehaviorSettingsPage::widget()
|
||||
{
|
||||
if (!d->m_widget) {
|
||||
d->m_widget = new QWidget;
|
||||
d->m_behaviorWidget = new BehaviorSettingsWidget(d->m_widget);
|
||||
|
||||
auto verticalSpacer = new QSpacerItem(20, 13, QSizePolicy::Minimum, QSizePolicy::Expanding);
|
||||
|
||||
auto gridLayout = new QGridLayout(d->m_widget);
|
||||
if (Utils::HostOsInfo::isMacHost())
|
||||
gridLayout->setContentsMargins(-1, 0, -1, 0); // don't ask.
|
||||
gridLayout->addWidget(d->m_behaviorWidget, 0, 0, 1, 1);
|
||||
gridLayout->addItem(verticalSpacer, 1, 0, 1, 1);
|
||||
|
||||
d->m_pageCodeStyle = new SimpleCodeStylePreferences(d->m_widget);
|
||||
d->m_pageCodeStyle->setDelegatingPool(d->m_codeStyle->delegatingPool());
|
||||
d->m_pageCodeStyle->setTabSettings(d->m_codeStyle->tabSettings());
|
||||
d->m_pageCodeStyle->setCurrentDelegate(d->m_codeStyle->currentDelegate());
|
||||
d->m_behaviorWidget->setCodeStyle(d->m_pageCodeStyle);
|
||||
|
||||
TabSettingsWidget *tabSettingsWidget = d->m_behaviorWidget->tabSettingsWidget();
|
||||
tabSettingsWidget->setCodingStyleWarningVisible(true);
|
||||
connect(tabSettingsWidget, &TabSettingsWidget::codingStyleLinkClicked,
|
||||
this, &BehaviorSettingsPage::openCodingStylePreferences);
|
||||
|
||||
settingsToUI();
|
||||
}
|
||||
return d->m_widget;
|
||||
}
|
||||
|
||||
void BehaviorSettingsPage::apply()
|
||||
void BehaviorSettingsWidgetImpl::apply()
|
||||
{
|
||||
if (!d->m_behaviorWidget) // page was never shown
|
||||
return;
|
||||
@@ -128,8 +148,10 @@ void BehaviorSettingsPage::apply()
|
||||
BehaviorSettings newBehaviorSettings;
|
||||
ExtraEncodingSettings newExtraEncodingSettings;
|
||||
|
||||
settingsFromUI(&newTypingSettings, &newStorageSettings,
|
||||
&newBehaviorSettings, &newExtraEncodingSettings);
|
||||
d->m_behaviorWidget->assignedTypingSettings(&newTypingSettings);
|
||||
d->m_behaviorWidget->assignedStorageSettings(&newStorageSettings);
|
||||
d->m_behaviorWidget->assignedBehaviorSettings(&newBehaviorSettings);
|
||||
d->m_behaviorWidget->assignedExtraEncodingSettings(&newExtraEncodingSettings);
|
||||
|
||||
QSettings *s = Core::ICore::settings();
|
||||
QTC_ASSERT(s, return);
|
||||
@@ -178,32 +200,6 @@ void BehaviorSettingsPage::apply()
|
||||
d->m_behaviorWidget->assignedLineEnding());
|
||||
}
|
||||
|
||||
void BehaviorSettingsPage::settingsFromUI(TypingSettings *typingSettings,
|
||||
StorageSettings *storageSettings,
|
||||
BehaviorSettings *behaviorSettings,
|
||||
ExtraEncodingSettings *extraEncodingSettings) const
|
||||
{
|
||||
d->m_behaviorWidget->assignedTypingSettings(typingSettings);
|
||||
d->m_behaviorWidget->assignedStorageSettings(storageSettings);
|
||||
d->m_behaviorWidget->assignedBehaviorSettings(behaviorSettings);
|
||||
d->m_behaviorWidget->assignedExtraEncodingSettings(extraEncodingSettings);
|
||||
}
|
||||
|
||||
void BehaviorSettingsPage::settingsToUI()
|
||||
{
|
||||
d->m_behaviorWidget->setAssignedTypingSettings(d->m_typingSettings);
|
||||
d->m_behaviorWidget->setAssignedStorageSettings(d->m_storageSettings);
|
||||
d->m_behaviorWidget->setAssignedBehaviorSettings(d->m_behaviorSettings);
|
||||
d->m_behaviorWidget->setAssignedExtraEncodingSettings(d->m_extraEncodingSettings);
|
||||
d->m_behaviorWidget->setAssignedCodec(Core::EditorManager::defaultTextCodec());
|
||||
d->m_behaviorWidget->setAssignedLineEnding(Core::EditorManager::defaultLineEnding());
|
||||
}
|
||||
|
||||
void BehaviorSettingsPage::finish()
|
||||
{
|
||||
delete d->m_widget;
|
||||
}
|
||||
|
||||
ICodeStylePreferences *BehaviorSettingsPage::codeStyle() const
|
||||
{
|
||||
return d->m_codeStyle;
|
||||
@@ -235,16 +231,4 @@ const ExtraEncodingSettings &BehaviorSettingsPage::extraEncodingSettings() const
|
||||
}
|
||||
|
||||
|
||||
void BehaviorSettingsPage::openCodingStylePreferences(TabSettingsWidget::CodingStyleLink link)
|
||||
{
|
||||
switch (link) {
|
||||
case TabSettingsWidget::CppLink:
|
||||
Core::ICore::showOptionsDialog(CppEditor::Constants::CPP_CODE_STYLE_SETTINGS_ID);
|
||||
break;
|
||||
case TabSettingsWidget::QtQuickLink:
|
||||
Core::ICore::showOptionsDialog(QmlJSTools::Constants::QML_JS_CODE_STYLE_SETTINGS_ID);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace TextEditor
|
||||
|
||||
@@ -5,8 +5,6 @@
|
||||
|
||||
#include "texteditor_global.h"
|
||||
|
||||
#include "tabsettingswidget.h"
|
||||
|
||||
#include <coreplugin/dialogs/ioptionspage.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
@@ -31,11 +29,6 @@ public:
|
||||
BehaviorSettingsPage();
|
||||
~BehaviorSettingsPage() override;
|
||||
|
||||
// IOptionsPage
|
||||
QWidget *widget() override;
|
||||
void apply() override;
|
||||
void finish() override;
|
||||
|
||||
ICodeStylePreferences *codeStyle() const;
|
||||
CodeStylePool *codeStylePool() const;
|
||||
const TypingSettings &typingSettings() const;
|
||||
@@ -44,17 +37,8 @@ public:
|
||||
const ExtraEncodingSettings &extraEncodingSettings() const;
|
||||
|
||||
private:
|
||||
void openCodingStylePreferences(TextEditor::TabSettingsWidget::CodingStyleLink link);
|
||||
|
||||
void settingsFromUI(TypingSettings *typingSettings,
|
||||
StorageSettings *storageSettings,
|
||||
BehaviorSettings *behaviorSettings,
|
||||
ExtraEncodingSettings *extraEncodingSettings) const;
|
||||
void settingsToUI();
|
||||
|
||||
QList<QTextCodec *> m_codecs;
|
||||
struct BehaviorSettingsPagePrivate;
|
||||
BehaviorSettingsPagePrivate *d;
|
||||
class BehaviorSettingsPagePrivate *d;
|
||||
};
|
||||
|
||||
} // namespace TextEditor
|
||||
|
||||
Reference in New Issue
Block a user