From 1ab065add3f8812af1b007e300eaeab8aaf60362 Mon Sep 17 00:00:00 2001 From: Tobias Hunger <tobias.hunger@digia.com> Date: Fri, 2 Aug 2013 12:33:17 +0200 Subject: [PATCH] Macros: Clean up singleton APIs Task-number: QTCREATORBUG-9763 Change-Id: I76c4d60279f738272b0cf5fda651ce266f798c2c Reviewed-by: Tobias Hunger <tobias.hunger@digia.com> --- src/plugins/macros/macrolocatorfilter.cpp | 2 +- src/plugins/macros/macromanager.cpp | 10 +++++----- src/plugins/macros/macromanager.h | 17 ++++++++++------- src/plugins/macros/macrooptionswidget.cpp | 4 ++-- src/plugins/macros/macrosplugin.cpp | 1 + 5 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/plugins/macros/macrolocatorfilter.cpp b/src/plugins/macros/macrolocatorfilter.cpp index 2d4d72386fb..03df032dc6d 100644 --- a/src/plugins/macros/macrolocatorfilter.cpp +++ b/src/plugins/macros/macrolocatorfilter.cpp @@ -57,7 +57,7 @@ QList<Locator::FilterEntry> MacroLocatorFilter::matchesFor(QFutureInterface<Loca Q_UNUSED(future) QList<Locator::FilterEntry> result; - const QMap<QString, Macro*> ¯os = MacroManager::instance()->macros(); + const QMap<QString, Macro*> ¯os = MacroManager::macros(); QMapIterator<QString, Macro*> it(macros); while (it.hasNext()) { diff --git a/src/plugins/macros/macromanager.cpp b/src/plugins/macros/macromanager.cpp index 002a12427d8..cafcc25791f 100644 --- a/src/plugins/macros/macromanager.cpp +++ b/src/plugins/macros/macromanager.cpp @@ -253,10 +253,10 @@ MacroManager::MacroManager(QObject *parent) : QObject(parent), d(new MacroManagerPrivate(this)) { + m_instance = this; registerMacroHandler(d->actionHandler); registerMacroHandler(d->findHandler); registerMacroHandler(d->textEditorHandler); - m_instance = this; } MacroManager::~MacroManager() @@ -360,14 +360,14 @@ void MacroManager::deleteMacro(const QString &name) } } -const QMap<QString,Macro*> &MacroManager::macros() const +const QMap<QString,Macro*> &MacroManager::macros() { - return d->macros; + return m_instance->d->macros; } void MacroManager::registerMacroHandler(IMacroHandler *handler) { - d->handlers.prepend(handler); + m_instance->d->handlers.prepend(handler); } MacroManager *MacroManager::instance() @@ -392,7 +392,7 @@ void Macros::MacroManager::saveLastMacro() d->showSaveDialog(); } -QString Macros::MacroManager::macrosDirectory() const +QString Macros::MacroManager::macrosDirectory() { const QString &path = Core::ICore::userResourcePath() + QLatin1String("/macros"); diff --git a/src/plugins/macros/macromanager.h b/src/plugins/macros/macromanager.h index 045d140bc53..ad2d33d3d4b 100644 --- a/src/plugins/macros/macromanager.h +++ b/src/plugins/macros/macromanager.h @@ -45,23 +45,21 @@ class Macro; class IMacroHandler; namespace Internal { - class MacroOptionsWidget; +class MacroOptionsWidget; +class MacrosPlugin; } class MACROS_EXPORT MacroManager : public QObject { Q_OBJECT public: - explicit MacroManager(QObject *parent = 0); - ~MacroManager(); - static MacroManager *instance(); - const QMap<QString, Macro *> ¯os() const; + static const QMap<QString, Macro *> ¯os(); - void registerMacroHandler(IMacroHandler *handler); + static void registerMacroHandler(IMacroHandler *handler); - QString macrosDirectory() const; + static QString macrosDirectory(); public slots: void startMacro(); @@ -77,10 +75,15 @@ protected: void changeMacro(const QString &name, const QString &description); private: + explicit MacroManager(QObject *parent = 0); + ~MacroManager(); + static MacroManager *m_instance; class MacroManagerPrivate; MacroManagerPrivate* d; + + friend class Internal::MacrosPlugin; }; } // namespace Macros diff --git a/src/plugins/macros/macrooptionswidget.cpp b/src/plugins/macros/macrooptionswidget.cpp index fede998dfaf..dfe386d3064 100644 --- a/src/plugins/macros/macrooptionswidget.cpp +++ b/src/plugins/macros/macrooptionswidget.cpp @@ -97,9 +97,9 @@ void MacroOptionsWidget::initialize() void MacroOptionsWidget::createTable() { - QDir dir(MacroManager::instance()->macrosDirectory()); + QDir dir(MacroManager::macrosDirectory()); const Core::Id base = Core::Id(Constants::PREFIX_MACRO); - QMapIterator<QString, Macro *> it(MacroManager::instance()->macros()); + QMapIterator<QString, Macro *> it(MacroManager::macros()); while (it.hasNext()) { it.next(); QFileInfo fileInfo(it.value()->fileName()); diff --git a/src/plugins/macros/macrosplugin.cpp b/src/plugins/macros/macrosplugin.cpp index b31aa2f5594..fe34ddf4d00 100644 --- a/src/plugins/macros/macrosplugin.cpp +++ b/src/plugins/macros/macrosplugin.cpp @@ -59,6 +59,7 @@ MacrosPlugin::MacrosPlugin() MacrosPlugin::~MacrosPlugin() { + delete m_macroManager; } bool MacrosPlugin::initialize(const QStringList &arguments, QString *errorMessage) -- GitLab