forked from qt-creator/qt-creator
TextEditor: Simplify BehaviorSettingsPage creation
Change-Id: I0e1d44e9cccbf83e11ef04f055e1e6bd0317c40e Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user