aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/texteditor
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2018-02-06 15:59:05 +0100
committerhjk <hjk@qt.io>2018-02-07 07:59:05 +0000
commit91c19c2734246dbf528a6076a57b72d924bf0484 (patch)
tree26881f338de3e7f1ffe8229d08915f694b6fe13f /src/plugins/texteditor
parent0c3aed25497267b655794dfb4b3f8b72dfb01d13 (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')
-rw-r--r--src/plugins/texteditor/codestyleeditor.cpp5
-rw-r--r--src/plugins/texteditor/icodestylepreferencesfactory.h2
-rw-r--r--src/plugins/texteditor/snippets/snippetprovider.cpp28
-rw-r--r--src/plugins/texteditor/snippets/snippetprovider.h5
-rw-r--r--src/plugins/texteditor/snippets/snippetssettingspage.cpp11
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);
}
}