TextEditor: Simplify BehaviorSettingsPage creation

Change-Id: I0e1d44e9cccbf83e11ef04f055e1e6bd0317c40e
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2020-01-21 15:44:41 +01:00
parent 8da309f6a5
commit efbc582e23
3 changed files with 47 additions and 71 deletions

View File

@@ -47,20 +47,17 @@
#include <QPointer>
#include <QSettings>
#include <QTextCodec>
using namespace TextEditor;
namespace TextEditor {
struct BehaviorSettingsPage::BehaviorSettingsPagePrivate
struct BehaviorSettingsPage::BehaviorSettingsPagePrivate : public QObject
{
explicit BehaviorSettingsPagePrivate(const BehaviorSettingsPageParameters &p);
BehaviorSettingsPagePrivate();
const BehaviorSettingsPageParameters m_parameters;
const QString m_settingsPrefix{"text"};
QPointer<QWidget> m_widget;
Internal::Ui::BehaviorSettingsPage *m_page = nullptr;
void init();
CodeStylePool *m_defaultCodeStylePool = nullptr;
SimpleCodeStylePreferences *m_codeStyle = nullptr;
SimpleCodeStylePreferences *m_pageCodeStyle = nullptr;
@@ -70,43 +67,35 @@ struct BehaviorSettingsPage::BehaviorSettingsPagePrivate
ExtraEncodingSettings m_extraEncodingSettings;
};
BehaviorSettingsPage::BehaviorSettingsPagePrivate::BehaviorSettingsPagePrivate
(const BehaviorSettingsPageParameters &p)
: m_parameters(p)
BehaviorSettingsPage::BehaviorSettingsPagePrivate::BehaviorSettingsPagePrivate()
{
}
// global tab preferences for all other languages
m_codeStyle = new SimpleCodeStylePreferences(this);
m_codeStyle->setDisplayName(tr("Global", "Settings"));
m_codeStyle->setId(Constants::GLOBAL_SETTINGS_ID);
// default pool for all other languages
m_defaultCodeStylePool = new CodeStylePool(nullptr, this); // Any language
m_defaultCodeStylePool->addCodeStyle(m_codeStyle);
void BehaviorSettingsPage::BehaviorSettingsPagePrivate::init()
{
const QSettings *s = Core::ICore::settings();
m_codeStyle->fromSettings(m_parameters.settingsPrefix, s);
m_typingSettings.fromSettings(m_parameters.settingsPrefix, s);
m_storageSettings.fromSettings(m_parameters.settingsPrefix, s);
m_behaviorSettings.fromSettings(m_parameters.settingsPrefix, s);
m_extraEncodingSettings.fromSettings(m_parameters.settingsPrefix, s);
m_codeStyle->fromSettings(m_settingsPrefix, s);
m_typingSettings.fromSettings(m_settingsPrefix, s);
m_storageSettings.fromSettings(m_settingsPrefix, s);
m_behaviorSettings.fromSettings(m_settingsPrefix, s);
m_extraEncodingSettings.fromSettings(m_settingsPrefix, s);
}
BehaviorSettingsPage::BehaviorSettingsPage(const BehaviorSettingsPageParameters &p,
QObject *parent)
: Core::IOptionsPage(parent),
d(new BehaviorSettingsPagePrivate(p))
BehaviorSettingsPage::BehaviorSettingsPage()
: d(new BehaviorSettingsPagePrivate)
{
// Add the GUI used to configure the tab, storage and interaction settings
setId(Constants::TEXT_EDITOR_BEHAVIOR_SETTINGS);
setDisplayName(tr("Behavior"));
setCategory(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY);
setDisplayCategory(QCoreApplication::translate("TextEditor", "Text Editor"));
setCategoryIconPath(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY_ICON_PATH);
// global tab preferences for all other languages
d->m_codeStyle = new SimpleCodeStylePreferences(this);
d->m_codeStyle->setDisplayName(tr("Global", "Settings"));
d->m_codeStyle->setId(Constants::GLOBAL_SETTINGS_ID);
// default pool for all other languages
d->m_defaultCodeStylePool = new CodeStylePool(nullptr, this); // Any language
d->m_defaultCodeStylePool->addCodeStyle(d->m_codeStyle);
d->init();
setId(p.id);
setDisplayName(p.displayName);
}
BehaviorSettingsPage::~BehaviorSettingsPage()
@@ -156,19 +145,19 @@ void BehaviorSettingsPage::apply()
if (d->m_codeStyle->tabSettings() != d->m_pageCodeStyle->tabSettings()) {
d->m_codeStyle->setTabSettings(d->m_pageCodeStyle->tabSettings());
if (s)
d->m_codeStyle->toSettings(d->m_parameters.settingsPrefix, s);
d->m_codeStyle->toSettings(d->m_settingsPrefix, s);
}
if (d->m_codeStyle->currentDelegate() != d->m_pageCodeStyle->currentDelegate()) {
d->m_codeStyle->setCurrentDelegate(d->m_pageCodeStyle->currentDelegate());
if (s)
d->m_codeStyle->toSettings(d->m_parameters.settingsPrefix, s);
d->m_codeStyle->toSettings(d->m_settingsPrefix, s);
}
if (newTypingSettings != d->m_typingSettings) {
d->m_typingSettings = newTypingSettings;
if (s)
d->m_typingSettings.toSettings(d->m_parameters.settingsPrefix, s);
d->m_typingSettings.toSettings(d->m_settingsPrefix, s);
emit typingSettingsChanged(newTypingSettings);
}
@@ -176,7 +165,7 @@ void BehaviorSettingsPage::apply()
if (newStorageSettings != d->m_storageSettings) {
d->m_storageSettings = newStorageSettings;
if (s)
d->m_storageSettings.toSettings(d->m_parameters.settingsPrefix, s);
d->m_storageSettings.toSettings(d->m_settingsPrefix, s);
emit storageSettingsChanged(newStorageSettings);
}
@@ -184,7 +173,7 @@ void BehaviorSettingsPage::apply()
if (newBehaviorSettings != d->m_behaviorSettings) {
d->m_behaviorSettings = newBehaviorSettings;
if (s)
d->m_behaviorSettings.toSettings(d->m_parameters.settingsPrefix, s);
d->m_behaviorSettings.toSettings(d->m_settingsPrefix, s);
emit behaviorSettingsChanged(newBehaviorSettings);
}
@@ -192,7 +181,7 @@ void BehaviorSettingsPage::apply()
if (newExtraEncodingSettings != d->m_extraEncodingSettings) {
d->m_extraEncodingSettings = newExtraEncodingSettings;
if (s)
d->m_extraEncodingSettings.toSettings(d->m_parameters.settingsPrefix, s);
d->m_extraEncodingSettings.toSettings(d->m_settingsPrefix, s);
emit extraEncodingSettingsChanged(newExtraEncodingSettings);
}
@@ -277,3 +266,5 @@ void BehaviorSettingsPage::openCodingStylePreferences(TabSettingsWidget::CodingS
break;
}
}
} // namespace TextEditor

View File

@@ -41,20 +41,12 @@ class ExtraEncodingSettings;
class ICodeStylePreferences;
class CodeStylePool;
class BehaviorSettingsPageParameters
{
public:
Core::Id id;
QString displayName;
QString settingsPrefix;
};
class BehaviorSettingsPage : public Core::IOptionsPage
{
Q_OBJECT
public:
BehaviorSettingsPage(const BehaviorSettingsPageParameters &p, QObject *parent);
BehaviorSettingsPage();
~BehaviorSettingsPage() override;
// IOptionsPage

View File

@@ -64,7 +64,7 @@ class TextEditorSettingsPrivate
{
public:
FontSettingsPage *m_fontSettingsPage;
BehaviorSettingsPage *m_behaviorSettingsPage;
BehaviorSettingsPage m_behaviorSettingsPage;
DisplaySettingsPage m_displaySettingsPage;
HighlighterSettingsPage m_highlighterSettingsPage;
SnippetsSettingsPage m_snippetsSettingsPage;
@@ -350,13 +350,6 @@ TextEditorSettings::TextEditorSettings()
Constants::TEXT_EDITOR_FONT_SETTINGS,
this);
// Add the GUI used to configure the tab, storage and interaction settings
BehaviorSettingsPageParameters behaviorSettingsPageParameters;
behaviorSettingsPageParameters.id = Constants::TEXT_EDITOR_BEHAVIOR_SETTINGS;
behaviorSettingsPageParameters.displayName = tr("Behavior");
behaviorSettingsPageParameters.settingsPrefix = QLatin1String("text");
d->m_behaviorSettingsPage = new BehaviorSettingsPage(behaviorSettingsPageParameters, this);
auto updateGeneralMessagesFontSettings = []() {
Core::MessageManager::setFont(d->m_fontSettingsPage->fontSettings().font());
};
@@ -365,20 +358,20 @@ TextEditorSettings::TextEditorSettings()
connect(d->m_fontSettingsPage, &FontSettingsPage::changed,
this, updateGeneralMessagesFontSettings);
updateGeneralMessagesFontSettings();
connect(d->m_behaviorSettingsPage, &BehaviorSettingsPage::typingSettingsChanged,
connect(&d->m_behaviorSettingsPage, &BehaviorSettingsPage::typingSettingsChanged,
this, &TextEditorSettings::typingSettingsChanged);
connect(d->m_behaviorSettingsPage, &BehaviorSettingsPage::storageSettingsChanged,
connect(&d->m_behaviorSettingsPage, &BehaviorSettingsPage::storageSettingsChanged,
this, &TextEditorSettings::storageSettingsChanged);
auto updateGeneralMessagesBehaviorSettings = []() {
bool wheelZoom = d->m_behaviorSettingsPage->behaviorSettings().m_scrollWheelZooming;
bool wheelZoom = d->m_behaviorSettingsPage.behaviorSettings().m_scrollWheelZooming;
Core::MessageManager::setWheelZoomEnabled(wheelZoom);
};
connect(d->m_behaviorSettingsPage, &BehaviorSettingsPage::behaviorSettingsChanged,
connect(&d->m_behaviorSettingsPage, &BehaviorSettingsPage::behaviorSettingsChanged,
this, &TextEditorSettings::behaviorSettingsChanged);
connect(d->m_behaviorSettingsPage, &BehaviorSettingsPage::behaviorSettingsChanged,
connect(&d->m_behaviorSettingsPage, &BehaviorSettingsPage::behaviorSettingsChanged,
this, updateGeneralMessagesBehaviorSettings);
updateGeneralMessagesBehaviorSettings();
connect(d->m_behaviorSettingsPage, &BehaviorSettingsPage::extraEncodingSettingsChanged,
connect(&d->m_behaviorSettingsPage, &BehaviorSettingsPage::extraEncodingSettingsChanged,
this, &TextEditorSettings::extraEncodingSettingsChanged);
connect(&d->m_displaySettingsPage, &DisplaySettingsPage::marginSettingsChanged,
this, &TextEditorSettings::marginSettingsChanged);
@@ -388,7 +381,7 @@ TextEditorSettings::TextEditorSettings()
auto updateCamelCaseNavigation = [] {
Utils::FancyLineEdit::setCamelCaseNavigationEnabled(behaviorSettings().m_camelCaseNavigation);
};
connect(d->m_behaviorSettingsPage, &BehaviorSettingsPage::behaviorSettingsChanged,
connect(&d->m_behaviorSettingsPage, &BehaviorSettingsPage::behaviorSettingsChanged,
this, updateCamelCaseNavigation);
updateCamelCaseNavigation();
}
@@ -412,17 +405,17 @@ const FontSettings &TextEditorSettings::fontSettings()
const TypingSettings &TextEditorSettings::typingSettings()
{
return d->m_behaviorSettingsPage->typingSettings();
return d->m_behaviorSettingsPage.typingSettings();
}
const StorageSettings &TextEditorSettings::storageSettings()
{
return d->m_behaviorSettingsPage->storageSettings();
return d->m_behaviorSettingsPage.storageSettings();
}
const BehaviorSettings &TextEditorSettings::behaviorSettings()
{
return d->m_behaviorSettingsPage->behaviorSettings();
return d->m_behaviorSettingsPage.behaviorSettings();
}
const MarginSettings &TextEditorSettings::marginSettings()
@@ -447,7 +440,7 @@ const HighlighterSettings &TextEditorSettings::highlighterSettings()
const ExtraEncodingSettings &TextEditorSettings::extraEncodingSettings()
{
return d->m_behaviorSettingsPage->extraEncodingSettings();
return d->m_behaviorSettingsPage.extraEncodingSettings();
}
const CommentsSettings &TextEditorSettings::commentsSettings()
@@ -477,7 +470,7 @@ ICodeStylePreferencesFactory *TextEditorSettings::codeStyleFactory(Core::Id lang
ICodeStylePreferences *TextEditorSettings::codeStyle()
{
return d->m_behaviorSettingsPage->codeStyle();
return d->m_behaviorSettingsPage.codeStyle();
}
ICodeStylePreferences *TextEditorSettings::codeStyle(Core::Id languageId)
@@ -502,7 +495,7 @@ void TextEditorSettings::unregisterCodeStyle(Core::Id languageId)
CodeStylePool *TextEditorSettings::codeStylePool()
{
return d->m_behaviorSettingsPage->codeStylePool();
return d->m_behaviorSettingsPage.codeStylePool();
}
CodeStylePool *TextEditorSettings::codeStylePool(Core::Id languageId)