diff options
author | hjk <hjk@qt.io> | 2018-02-06 15:59:05 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2018-02-07 07:59:05 +0000 |
commit | 91c19c2734246dbf528a6076a57b72d924bf0484 (patch) | |
tree | 26881f338de3e7f1ffe8229d08915f694b6fe13f /src/plugins/texteditor | |
parent | 0c3aed25497267b655794dfb4b3f8b72dfb01d13 (diff) |
TextEditor: Simplify SnippetProvider handling
The group identifier is as good as the actual object, so use that
on the generator and the consumer side.
Change-Id: I6ccd54a2362631af0b50583f12563b8e41a5dd78
Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/texteditor')
5 files changed, 13 insertions, 38 deletions
diff --git a/src/plugins/texteditor/codestyleeditor.cpp b/src/plugins/texteditor/codestyleeditor.cpp index 2c9e03a3dab..599af2974a0 100644 --- a/src/plugins/texteditor/codestyleeditor.cpp +++ b/src/plugins/texteditor/codestyleeditor.cpp @@ -54,9 +54,8 @@ CodeStyleEditor::CodeStyleEditor(ICodeStylePreferencesFactory *factory, DisplaySettings displaySettings = m_preview->displaySettings(); displaySettings.m_visualizeWhitespace = true; m_preview->setDisplaySettings(displaySettings); - SnippetProvider *provider = factory->snippetProvider(); - if (provider) - provider->decorateEditor(m_preview); + QString groupId = factory->snippetProviderGroupId(); + SnippetProvider::decorateEditor(m_preview, groupId); QLabel *label = new QLabel( tr("Edit preview contents to see how the current settings " "are applied to custom code snippets. Changes in the preview " diff --git a/src/plugins/texteditor/icodestylepreferencesfactory.h b/src/plugins/texteditor/icodestylepreferencesfactory.h index f9d534376fb..46fa219a675 100644 --- a/src/plugins/texteditor/icodestylepreferencesfactory.h +++ b/src/plugins/texteditor/icodestylepreferencesfactory.h @@ -47,7 +47,7 @@ public: virtual ICodeStylePreferences *createCodeStyle() const = 0; virtual QWidget *createEditor(ICodeStylePreferences *preferences, QWidget *parent) const = 0; virtual TextEditor::Indenter *createIndenter() const = 0; - virtual SnippetProvider *snippetProvider() const = 0; + virtual QString snippetProviderGroupId() const = 0; virtual QString previewText() const = 0; }; diff --git a/src/plugins/texteditor/snippets/snippetprovider.cpp b/src/plugins/texteditor/snippets/snippetprovider.cpp index e8a71058c42..0d5caa52297 100644 --- a/src/plugins/texteditor/snippets/snippetprovider.cpp +++ b/src/plugins/texteditor/snippets/snippetprovider.cpp @@ -38,14 +38,6 @@ const QList<SnippetProvider> &SnippetProvider::snippetProviders() return g_snippetProviders; } -SnippetProvider *SnippetProvider::snippetProviderForGroupId(const QString &groupId) -{ - auto end = std::end(g_snippetProviders); - auto it = std::find_if(std::begin(g_snippetProviders), end, - Utils::equal(&SnippetProvider::groupId, groupId)); - return (it == end) ? nullptr : &*it; -} - /*! \group Snippets \title Snippets for Editors @@ -105,24 +97,16 @@ QString SnippetProvider::displayName() const } /*! - EditorDecorator is a hook which allows you to apply customizations such as highlighting or - indentation to the snippet editor. -*/ -SnippetProvider::EditorDecorator SnippetProvider::editorDecorator() const -{ - return m_editorDecorator; -} - -/*! Applies customizations such as highlighting or indentation to the snippet editor. */ -void SnippetProvider::decorateEditor(TextEditorWidget *editor) const +void SnippetProvider::decorateEditor(TextEditorWidget *editor, const QString &groupId) { - editorDecorator()(editor); + for (const SnippetProvider &provider : g_snippetProviders) { + if (provider.m_groupId == groupId && provider.m_editorDecorator) + provider.m_editorDecorator(editor); + } } -static void doNotDecorate(TextEditorWidget *) { } - /*! Registers a snippet group with \a groupId, \a displayName and \a editorDecorator. */ @@ -132,6 +116,6 @@ void SnippetProvider::registerGroup(const QString &groupId, const QString &displ SnippetProvider provider; provider.m_groupId = groupId; provider.m_displayName = displayName; - provider.m_editorDecorator = editorDecorator ? editorDecorator : EditorDecorator(doNotDecorate); + provider.m_editorDecorator = editorDecorator; g_snippetProviders.append(provider); } diff --git a/src/plugins/texteditor/snippets/snippetprovider.h b/src/plugins/texteditor/snippets/snippetprovider.h index d33a3bcdd0f..6fd64e1ecdb 100644 --- a/src/plugins/texteditor/snippets/snippetprovider.h +++ b/src/plugins/texteditor/snippets/snippetprovider.h @@ -43,16 +43,13 @@ public: using EditorDecorator = std::function<void(TextEditorWidget *)>; static const QList<SnippetProvider> &snippetProviders(); - static SnippetProvider *snippetProviderForGroupId(const QString &groupId); - static void registerGroup(const QString &groupId, const QString &displayName, EditorDecorator editorDecorator = EditorDecorator()); QString groupId() const; QString displayName() const; - EditorDecorator editorDecorator() const; - void decorateEditor(TextEditorWidget *editor) const; + static void decorateEditor(TextEditorWidget *editor, const QString &groupId); private: QString m_groupId; diff --git a/src/plugins/texteditor/snippets/snippetssettingspage.cpp b/src/plugins/texteditor/snippets/snippetssettingspage.cpp index cc0b43a2275..b8151c4b172 100644 --- a/src/plugins/texteditor/snippets/snippetssettingspage.cpp +++ b/src/plugins/texteditor/snippets/snippetssettingspage.cpp @@ -328,11 +328,10 @@ void SnippetsSettingsPagePrivate::configureUi(QWidget *w) { m_ui.setupUi(w); - const QList<SnippetProvider> &providers = SnippetProvider::snippetProviders(); - for (const SnippetProvider &provider : providers) { + for (const SnippetProvider &provider : SnippetProvider::snippetProviders()) { m_ui.groupCombo->addItem(provider.displayName(), provider.groupId()); SnippetEditorWidget *snippetEditor = new SnippetEditorWidget(w); - provider.decorateEditor(snippetEditor); + SnippetProvider::decorateEditor(snippetEditor, provider.groupId()); m_ui.snippetsEditorStack->insertWidget(m_ui.groupCombo->count() - 1, snippetEditor); connect(snippetEditor, &SnippetEditorWidget::snippetContentChanged, this, &SnippetsSettingsPagePrivate::setSnippetContent); @@ -536,16 +535,12 @@ void SnippetsSettingsPagePrivate::setSnippetContent() void SnippetsSettingsPagePrivate::decorateEditors(const TextEditor::FontSettings &fontSettings) { - const QList<SnippetProvider> &providers = SnippetProvider::snippetProviders(); for (int i = 0; i < m_ui.groupCombo->count(); ++i) { SnippetEditorWidget *snippetEditor = editorAt(i); snippetEditor->textDocument()->setFontSettings(fontSettings); const QString &id = m_ui.groupCombo->itemData(i).toString(); // This list should be quite short... Re-iterating over it is ok. - foreach (const SnippetProvider &provider, providers) { - if (provider.groupId() == id) - provider.decorateEditor(snippetEditor); - } + SnippetProvider::decorateEditor(snippetEditor, id); } } |