From 1320da6784f1bfdb6c52abc7a0ffd516cf0fbf0d Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Fri, 27 Aug 2010 16:26:16 +0200 Subject: Improve TaskList plugin * Automatically reload task lists. * Add task handler to stop the reloading * Add some really simple API for other plugins to use. --- src/plugins/tasklist/taskfilefactory.cpp | 44 +++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 6 deletions(-) (limited to 'src/plugins/tasklist/taskfilefactory.cpp') diff --git a/src/plugins/tasklist/taskfilefactory.cpp b/src/plugins/tasklist/taskfilefactory.cpp index 8665afd8b0..fc43880071 100644 --- a/src/plugins/tasklist/taskfilefactory.cpp +++ b/src/plugins/tasklist/taskfilefactory.cpp @@ -29,13 +29,20 @@ #include "taskfilefactory.h" -#include "tasklistmanager.h" +#include "taskfile.h" + +#include +#include +#include using namespace TaskList::Internal; -TaskFileFactory::TaskFileFactory(TaskListManager *manager) : - Core::IFileFactory(0), - m_manager(manager), +// -------------------------------------------------------------------------- +// TaskFileFactory +// -------------------------------------------------------------------------- + +TaskFileFactory::TaskFileFactory(QObject * parent) : + Core::IFileFactory(parent), m_mimeTypes(QStringList() << QLatin1String("text/x-tasklist")) { } @@ -59,7 +66,32 @@ QString TaskFileFactory::displayName() const Core::IFile *TaskFileFactory::open(const QString &fileName) { - Core::IFile *file = 0; - m_manager->setTaskFile(fileName); + ProjectExplorer::Project * context = + ProjectExplorer::ProjectExplorerPlugin::instance()->currentProject(); + return open(context, fileName); +} + +Core::IFile *TaskFileFactory::open(ProjectExplorer::Project *context, const QString &fileName) +{ + TaskFile *file = new TaskFile(this); + file->setContext(context); + + if (!file->open(fileName)) { + delete file; + return 0; + } + + m_openFiles.append(file); + + // Register with filemanager: + Core::ICore::instance()->fileManager()->addFile(file); + return file; } + +void TaskFileFactory::closeAllFiles() +{ + foreach(Core::IFile *file, m_openFiles) + file->deleteLater(); + m_openFiles.clear(); +} -- cgit v1.2.1