TextEditor: Partially apply new settings page pattern

Internal handling is quite fragile in some cases, so take baby steps
here.

Change-Id: Ia25666b8c8d26b6e580d2189b191767b9681dc21
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2020-01-20 12:47:00 +01:00
parent d32f1cd2ea
commit 44f1db19f4
5 changed files with 26 additions and 44 deletions

View File

@@ -39,13 +39,14 @@ using namespace Internal;
struct HighlighterSettingsPage::HighlighterSettingsPagePrivate struct HighlighterSettingsPage::HighlighterSettingsPagePrivate
{ {
explicit HighlighterSettingsPagePrivate(Core::Id id); Q_DECLARE_TR_FUNCTIONS(TextEditor::Internal::HighlighterSettingsPage)
public:
HighlighterSettingsPagePrivate();
void ensureInitialized(); void ensureInitialized();
void migrateGenericHighlighterFiles(); void migrateGenericHighlighterFiles();
bool m_initialized = false; bool m_initialized = false;
const Core::Id m_id;
const QString m_displayName;
const QString m_settingsPrefix; const QString m_settingsPrefix;
HighlighterSettings m_settings; HighlighterSettings m_settings;
@@ -54,11 +55,8 @@ struct HighlighterSettingsPage::HighlighterSettingsPagePrivate
Ui::HighlighterSettingsPage *m_page = nullptr; Ui::HighlighterSettingsPage *m_page = nullptr;
}; };
HighlighterSettingsPage::HighlighterSettingsPagePrivate:: HighlighterSettingsPage::HighlighterSettingsPagePrivate::HighlighterSettingsPagePrivate()
HighlighterSettingsPagePrivate(Core::Id id) : m_settingsPrefix("Text")
: m_id(id)
, m_displayName(tr("Generic Highlighter"))
, m_settingsPrefix("Text")
{} {}
void HighlighterSettingsPage::HighlighterSettingsPagePrivate::migrateGenericHighlighterFiles() void HighlighterSettingsPage::HighlighterSettingsPagePrivate::migrateGenericHighlighterFiles()
@@ -83,12 +81,11 @@ void HighlighterSettingsPage::HighlighterSettingsPagePrivate::ensureInitialized(
migrateGenericHighlighterFiles(); migrateGenericHighlighterFiles();
} }
HighlighterSettingsPage::HighlighterSettingsPage(Core::Id id, QObject *parent) : HighlighterSettingsPage::HighlighterSettingsPage()
Core::IOptionsPage(parent), : m_d(new HighlighterSettingsPagePrivate)
m_d(new HighlighterSettingsPagePrivate(id))
{ {
setId(m_d->m_id); setId(Constants::TEXT_EDITOR_HIGHLIGHTER_SETTINGS);
setDisplayName(m_d->m_displayName); setDisplayName(HighlighterSettingsPagePrivate::tr("Generic Highlighter"));
setCategory(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY); setCategory(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY);
setDisplayCategory(QCoreApplication::translate("TextEditor", "Text Editor")); setDisplayCategory(QCoreApplication::translate("TextEditor", "Text Editor"));
setCategoryIconPath(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY_ICON_PATH); setCategoryIconPath(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY_ICON_PATH);
@@ -112,7 +109,7 @@ QWidget *HighlighterSettingsPage::widget()
[label = QPointer<QLabel>(m_d->m_page->updateStatus)]() { [label = QPointer<QLabel>(m_d->m_page->updateStatus)]() {
Highlighter::downloadDefinitions([label](){ Highlighter::downloadDefinitions([label](){
if (label) if (label)
label->setText(tr("Download finished")); label->setText(HighlighterSettingsPagePrivate::tr("Download finished"));
}); });
}); });
connect(m_d->m_page->reloadDefinitions, &QPushButton::pressed, []() { connect(m_d->m_page->reloadDefinitions, &QPushButton::pressed, []() {

View File

@@ -31,12 +31,10 @@ namespace TextEditor {
class HighlighterSettings; class HighlighterSettings;
class HighlighterSettingsPage : public Core::IOptionsPage class HighlighterSettingsPage final : public Core::IOptionsPage
{ {
Q_OBJECT
public: public:
HighlighterSettingsPage(Core::Id id, QObject *parent); HighlighterSettingsPage();
~HighlighterSettingsPage() override; ~HighlighterSettingsPage() override;
QWidget *widget() override; QWidget *widget() override;

View File

@@ -264,13 +264,12 @@ bool SnippetsTableModel::isValidTrigger(const QString &s)
// SnippetsSettingsPagePrivate // SnippetsSettingsPagePrivate
class SnippetsSettingsPagePrivate : public QObject class SnippetsSettingsPagePrivate : public QObject
{ {
Q_OBJECT Q_DECLARE_TR_FUNCTIONS(TextEditor::Internal::SnippetsSettingsPage)
public: public:
SnippetsSettingsPagePrivate(Core::Id id); SnippetsSettingsPagePrivate();
~SnippetsSettingsPagePrivate() override { delete m_model; } ~SnippetsSettingsPagePrivate() override { delete m_model; }
Core::Id id() const { return m_id; }
const QString &displayName() const { return m_displayName; }
void configureUi(QWidget *parent); void configureUi(QWidget *parent);
void apply(); void apply();
@@ -299,8 +298,6 @@ private:
bool settingsChanged() const; bool settingsChanged() const;
void writeSettings(); void writeSettings();
const Core::Id m_id;
const QString m_displayName;
const QString m_settingsPrefix; const QString m_settingsPrefix;
SnippetsTableModel *m_model; SnippetsTableModel *m_model;
bool m_snippetsCollectionChanged; bool m_snippetsCollectionChanged;
@@ -308,9 +305,7 @@ private:
Ui::SnippetsSettingsPage m_ui; Ui::SnippetsSettingsPage m_ui;
}; };
SnippetsSettingsPagePrivate::SnippetsSettingsPagePrivate(Core::Id id) : SnippetsSettingsPagePrivate::SnippetsSettingsPagePrivate() :
m_id(id),
m_displayName(tr("Snippets")),
m_settingsPrefix(QLatin1String("Text")), m_settingsPrefix(QLatin1String("Text")),
m_model(new SnippetsTableModel(nullptr)), m_model(new SnippetsTableModel(nullptr)),
m_snippetsCollectionChanged(false) m_snippetsCollectionChanged(false)
@@ -548,12 +543,11 @@ void SnippetsSettingsPagePrivate::decorateEditors(const TextEditor::FontSettings
} }
// SnippetsSettingsPage // SnippetsSettingsPage
SnippetsSettingsPage::SnippetsSettingsPage(Core::Id id, QObject *parent) : SnippetsSettingsPage::SnippetsSettingsPage()
Core::IOptionsPage(parent), : d(new SnippetsSettingsPagePrivate)
d(new SnippetsSettingsPagePrivate(id))
{ {
setId(d->id()); setId(Constants::TEXT_EDITOR_SNIPPETS_SETTINGS);
setDisplayName(d->displayName()); setDisplayName(SnippetsSettingsPagePrivate::tr("Snippets"));
setCategory(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY); setCategory(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY);
setDisplayCategory(QCoreApplication::translate("TextEditor", "Text Editor")); setDisplayCategory(QCoreApplication::translate("TextEditor", "Text Editor"));
setCategoryIconPath(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY_ICON_PATH); setCategoryIconPath(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY_ICON_PATH);

View File

@@ -32,12 +32,10 @@ namespace Internal {
class SnippetsSettingsPagePrivate; class SnippetsSettingsPagePrivate;
class SnippetsSettingsPage : public Core::IOptionsPage class SnippetsSettingsPage final : public Core::IOptionsPage
{ {
Q_OBJECT
public: public:
SnippetsSettingsPage(Core::Id id, QObject *parent); SnippetsSettingsPage();
~SnippetsSettingsPage() override; ~SnippetsSettingsPage() override;
QWidget *widget() override; QWidget *widget() override;

View File

@@ -66,8 +66,8 @@ public:
FontSettingsPage *m_fontSettingsPage; FontSettingsPage *m_fontSettingsPage;
BehaviorSettingsPage *m_behaviorSettingsPage; BehaviorSettingsPage *m_behaviorSettingsPage;
DisplaySettingsPage *m_displaySettingsPage; DisplaySettingsPage *m_displaySettingsPage;
HighlighterSettingsPage *m_highlighterSettingsPage; HighlighterSettingsPage m_highlighterSettingsPage;
SnippetsSettingsPage *m_snippetsSettingsPage; SnippetsSettingsPage m_snippetsSettingsPage;
CompletionSettingsPage m_completionSettingsPage; CompletionSettingsPage m_completionSettingsPage;
QMap<Core::Id, ICodeStylePreferencesFactory *> m_languageToFactory; QMap<Core::Id, ICodeStylePreferencesFactory *> m_languageToFactory;
@@ -363,11 +363,6 @@ TextEditorSettings::TextEditorSettings()
displaySettingsPageParameters.settingsPrefix = QLatin1String("text"); displaySettingsPageParameters.settingsPrefix = QLatin1String("text");
d->m_displaySettingsPage = new DisplaySettingsPage(displaySettingsPageParameters, this); d->m_displaySettingsPage = new DisplaySettingsPage(displaySettingsPageParameters, this);
d->m_highlighterSettingsPage =
new HighlighterSettingsPage(Constants::TEXT_EDITOR_HIGHLIGHTER_SETTINGS, this);
d->m_snippetsSettingsPage =
new SnippetsSettingsPage(Constants::TEXT_EDITOR_SNIPPETS_SETTINGS, this);
auto updateGeneralMessagesFontSettings = []() { auto updateGeneralMessagesFontSettings = []() {
Core::MessageManager::setFont(d->m_fontSettingsPage->fontSettings().font()); Core::MessageManager::setFont(d->m_fontSettingsPage->fontSettings().font());
}; };
@@ -453,7 +448,7 @@ const CompletionSettings &TextEditorSettings::completionSettings()
const HighlighterSettings &TextEditorSettings::highlighterSettings() const HighlighterSettings &TextEditorSettings::highlighterSettings()
{ {
return d->m_highlighterSettingsPage->highlighterSettings(); return d->m_highlighterSettingsPage.highlighterSettings();
} }
const ExtraEncodingSettings &TextEditorSettings::extraEncodingSettings() const ExtraEncodingSettings &TextEditorSettings::extraEncodingSettings()