aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/texteditor/snippets
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2018-02-06 14:26:17 +0100
committerhjk <hjk@qt.io>2018-02-07 07:50:14 +0000
commitc685dd1d830312c6410516cb44558ea7408c9a2a (patch)
tree6173122ae5af2594a0ec6c299879144aa1603551 /src/plugins/texteditor/snippets
parent58a168db8250abb741dd1a47bc53444a33072fab (diff)
TextEditor: De-qobjectify SnippetProvider
It's really not much more than a struct with three items. And there's no need to have them in the global object pool. Change-Id: Ie4f46ba2ecb1b90ef22479a0e81d03d9301c2e7a Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/texteditor/snippets')
-rw-r--r--src/plugins/texteditor/snippets/snippetprovider.cpp31
-rw-r--r--src/plugins/texteditor/snippets/snippetprovider.h12
-rw-r--r--src/plugins/texteditor/snippets/snippetscollection.cpp4
-rw-r--r--src/plugins/texteditor/snippets/snippetssettingspage.cpp16
4 files changed, 26 insertions, 37 deletions
diff --git a/src/plugins/texteditor/snippets/snippetprovider.cpp b/src/plugins/texteditor/snippets/snippetprovider.cpp
index 13e95152323..e8a71058c42 100644
--- a/src/plugins/texteditor/snippets/snippetprovider.cpp
+++ b/src/plugins/texteditor/snippets/snippetprovider.cpp
@@ -31,27 +31,19 @@
using namespace TextEditor;
-static QList<SnippetProvider *> g_snippetProviders;
+static QList<SnippetProvider> g_snippetProviders;
-const QList<SnippetProvider *> SnippetProvider::snippetProviders()
+const QList<SnippetProvider> &SnippetProvider::snippetProviders()
{
return g_snippetProviders;
}
SnippetProvider *SnippetProvider::snippetProviderForGroupId(const QString &groupId)
{
- return Utils::findOrDefault(g_snippetProviders,
- Utils::equal(&SnippetProvider::groupId, groupId));
-}
-
-SnippetProvider::SnippetProvider()
-{
- g_snippetProviders.append(this);
-}
-
-SnippetProvider::~SnippetProvider()
-{
- g_snippetProviders.removeOne(this);
+ 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;
}
/*!
@@ -137,10 +129,9 @@ static void doNotDecorate(TextEditorWidget *) { }
void SnippetProvider::registerGroup(const QString &groupId, const QString &displayName,
EditorDecorator editorDecorator)
{
- auto provider = new SnippetProvider;
- provider->m_groupId = groupId;
- provider->m_displayName = displayName;
- provider->m_editorDecorator = editorDecorator ? editorDecorator : EditorDecorator(doNotDecorate);
- Internal::TextEditorPlugin::instance()->addAutoReleasedObject(provider);
+ SnippetProvider provider;
+ provider.m_groupId = groupId;
+ provider.m_displayName = displayName;
+ provider.m_editorDecorator = editorDecorator ? editorDecorator : EditorDecorator(doNotDecorate);
+ g_snippetProviders.append(provider);
}
-
diff --git a/src/plugins/texteditor/snippets/snippetprovider.h b/src/plugins/texteditor/snippets/snippetprovider.h
index 5c343df1823..d33a3bcdd0f 100644
--- a/src/plugins/texteditor/snippets/snippetprovider.h
+++ b/src/plugins/texteditor/snippets/snippetprovider.h
@@ -27,7 +27,7 @@
#include <texteditor/texteditor_global.h>
-#include <QObject>
+#include <QString>
#include <functional>
@@ -35,13 +35,14 @@ namespace TextEditor {
class TextEditorWidget;
-class TEXTEDITOR_EXPORT SnippetProvider : public QObject
+class TEXTEDITOR_EXPORT SnippetProvider
{
- Q_OBJECT
public:
+ SnippetProvider() = default;
+
using EditorDecorator = std::function<void(TextEditorWidget *)>;
- static const QList<SnippetProvider *> snippetProviders();
+ static const QList<SnippetProvider> &snippetProviders();
static SnippetProvider *snippetProviderForGroupId(const QString &groupId);
static void registerGroup(const QString &groupId, const QString &displayName,
@@ -54,9 +55,6 @@ public:
void decorateEditor(TextEditorWidget *editor) const;
private:
- SnippetProvider();
- ~SnippetProvider() override;
-
QString m_groupId;
QString m_displayName;
EditorDecorator m_editorDecorator;
diff --git a/src/plugins/texteditor/snippets/snippetscollection.cpp b/src/plugins/texteditor/snippets/snippetscollection.cpp
index 20c9615d5a6..5756a01f668 100644
--- a/src/plugins/texteditor/snippets/snippetscollection.cpp
+++ b/src/plugins/texteditor/snippets/snippetscollection.cpp
@@ -409,9 +409,9 @@ int SnippetsCollection::groupIndex(const QString &groupId) const
void SnippetsCollection::identifyGroups()
{
- for (SnippetProvider *provider : SnippetProvider::snippetProviders()) {
+ for (const SnippetProvider &provider : SnippetProvider::snippetProviders()) {
const int groupIndex = m_groupIndexById.size();
- m_groupIndexById.insert(provider->groupId(), groupIndex);
+ m_groupIndexById.insert(provider.groupId(), groupIndex);
m_snippets.resize(groupIndex + 1);
m_activeSnippetsEnd.resize(groupIndex + 1);
m_activeSnippetsEnd[groupIndex] = m_snippets[groupIndex].end();
diff --git a/src/plugins/texteditor/snippets/snippetssettingspage.cpp b/src/plugins/texteditor/snippets/snippetssettingspage.cpp
index 96a81d27f0e..cc0b43a2275 100644
--- a/src/plugins/texteditor/snippets/snippetssettingspage.cpp
+++ b/src/plugins/texteditor/snippets/snippetssettingspage.cpp
@@ -328,11 +328,11 @@ void SnippetsSettingsPagePrivate::configureUi(QWidget *w)
{
m_ui.setupUi(w);
- const QList<SnippetProvider *> &providers = SnippetProvider::snippetProviders();
- for (SnippetProvider *provider : providers) {
- m_ui.groupCombo->addItem(provider->displayName(), provider->groupId());
+ const QList<SnippetProvider> &providers = SnippetProvider::snippetProviders();
+ for (const SnippetProvider &provider : providers) {
+ m_ui.groupCombo->addItem(provider.displayName(), provider.groupId());
SnippetEditorWidget *snippetEditor = new SnippetEditorWidget(w);
- provider->decorateEditor(snippetEditor);
+ provider.decorateEditor(snippetEditor);
m_ui.snippetsEditorStack->insertWidget(m_ui.groupCombo->count() - 1, snippetEditor);
connect(snippetEditor, &SnippetEditorWidget::snippetContentChanged,
this, &SnippetsSettingsPagePrivate::setSnippetContent);
@@ -536,15 +536,15 @@ void SnippetsSettingsPagePrivate::setSnippetContent()
void SnippetsSettingsPagePrivate::decorateEditors(const TextEditor::FontSettings &fontSettings)
{
- const QList<SnippetProvider *> &providers = SnippetProvider::snippetProviders();
+ 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);
+ foreach (const SnippetProvider &provider, providers) {
+ if (provider.groupId() == id)
+ provider.decorateEditor(snippetEditor);
}
}
}