diff options
author | hjk <hjk@qt.io> | 2018-02-02 15:00:52 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2018-02-21 08:14:35 +0000 |
commit | 7945ba79232b1da00ec57840656092827df95d9e (patch) | |
tree | 472960971503ff2ef3647b120b6e20cc83cc2fbd /src/plugins/tasklist | |
parent | 63cc5491f577683791cc0959885b4019a1b99ef6 (diff) |
TaskList: Pimpl and avoid using the global object pool
Use the pattern that's currently being established.
Change-Id: Icfb1472cc394f0e371056d5cb23fd22d291dbdaa
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/plugins/tasklist')
-rw-r--r-- | src/plugins/tasklist/tasklistplugin.cpp | 35 | ||||
-rw-r--r-- | src/plugins/tasklist/tasklistplugin.h | 7 |
2 files changed, 25 insertions, 17 deletions
diff --git a/src/plugins/tasklist/tasklistplugin.cpp b/src/plugins/tasklist/tasklistplugin.cpp index d9c6f5fa66..4c1d707309 100644 --- a/src/plugins/tasklist/tasklistplugin.cpp +++ b/src/plugins/tasklist/tasklistplugin.cpp @@ -39,7 +39,6 @@ #include <QDir> #include <QMessageBox> #include <QStringList> -#include <QtPlugin> using namespace Core; using namespace ProjectExplorer; @@ -52,6 +51,14 @@ namespace Internal { static TaskListPlugin *m_instance; +class TaskListPluginPrivate +{ +public: + QList<TaskFile *> m_openFiles; + Core::IDocumentFactory m_fileFactory; + StopMonitoringHandler m_stopMonitoringHandler; +}; + static Task::TaskType typeFrom(const QString &typeName) { Task::TaskType type = Task::Unknown; @@ -158,7 +165,7 @@ static bool parseTaskFile(QString *errorString, const FileName &name) IDocument *TaskListPlugin::openTasks(const FileName &fileName) { - foreach (TaskFile *doc, m_openFiles) { + foreach (TaskFile *doc, d->m_openFiles) { if (doc->filePath() == fileName) return doc; } @@ -169,10 +176,10 @@ IDocument *TaskListPlugin::openTasks(const FileName &fileName) if (!file->load(&errorString, fileName)) { QMessageBox::critical(ICore::mainWindow(), tr("File Error"), errorString); delete file; - return 0; + return nullptr; } - m_openFiles.append(file); + d->m_openFiles.append(file); // Register with filemanager: DocumentManager::addDocument(file); @@ -185,23 +192,27 @@ TaskListPlugin::TaskListPlugin() m_instance = this; } +TaskListPlugin::~TaskListPlugin() +{ + delete d; + m_instance = nullptr; +} + bool TaskListPlugin::initialize(const QStringList &arguments, QString *errorMessage) { Q_UNUSED(arguments) Q_UNUSED(errorMessage) + d = new TaskListPluginPrivate; + //: Category under which tasklist tasks are listed in Issues view TaskHub::addCategory(Constants::TASKLISTTASK_ID, tr("My Tasks")); - m_fileFactory = new IDocumentFactory; - m_fileFactory->addMimeType(QLatin1String("text/x-tasklist")); - m_fileFactory->setOpener([this](const QString &fileName) { + d->m_fileFactory.addMimeType(QLatin1String("text/x-tasklist")); + d->m_fileFactory.setOpener([this](const QString &fileName) { return openTasks(FileName::fromString(fileName)); }); - addAutoReleasedObject(m_fileFactory); - addAutoReleasedObject(new StopMonitoringHandler); - connect(SessionManager::instance(), &SessionManager::sessionLoaded, this, &TaskListPlugin::loadDataFromSession); @@ -225,9 +236,9 @@ void TaskListPlugin::stopMonitoring() { SessionManager::setValue(QLatin1String(SESSION_FILE_KEY), QString()); - foreach (TaskFile *document, m_instance->m_openFiles) + foreach (TaskFile *document, m_instance->d->m_openFiles) document->deleteLater(); - m_instance->m_openFiles.clear(); + m_instance->d->m_openFiles.clear(); } void TaskListPlugin::clearTasks() diff --git a/src/plugins/tasklist/tasklistplugin.h b/src/plugins/tasklist/tasklistplugin.h index 8edf85f4a3..6c07a27e6b 100644 --- a/src/plugins/tasklist/tasklistplugin.h +++ b/src/plugins/tasklist/tasklistplugin.h @@ -33,8 +33,6 @@ namespace Utils { class FileName; } namespace TaskList { namespace Internal { -class TaskFile; - class TaskListPlugin : public ExtensionSystem::IPlugin { Q_OBJECT @@ -42,6 +40,7 @@ class TaskListPlugin : public ExtensionSystem::IPlugin public: TaskListPlugin(); + ~TaskListPlugin() final; bool initialize(const QStringList &arguments, QString *errorMessage); void extensionsInitialized() {} @@ -53,12 +52,10 @@ public: Core::IDocument *openTasks(const Utils::FileName &fileName); -public slots: void loadDataFromSession(); private: - Core::IDocumentFactory *m_fileFactory = nullptr; - QList<TaskFile *> m_openFiles; + class TaskListPluginPrivate *d = nullptr; }; } // namespace Internal |