Plasma
tasksengine.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "tasksengine.h"
00020
00021
00022 #include "tasksource.h"
00023
00024 TasksEngine::TasksEngine(QObject *parent, const QVariantList &args) :
00025 Plasma::DataEngine(parent, args)
00026 {
00027 Q_UNUSED(args);
00028 }
00029
00030 TasksEngine::~TasksEngine()
00031 {
00032 }
00033
00034 Plasma::Service *TasksEngine::serviceForSource(const QString &name)
00035 {
00036 TaskSource *source = dynamic_cast<TaskSource*>(containerForSource(name));
00037
00038 if (!source) {
00039 return Plasma::DataEngine::serviceForSource(name);
00040 }
00041
00042 if (!source->isTask()) {
00043 return Plasma::DataEngine::serviceForSource(name);
00044 }
00045
00046 Plasma::Service *service = source->createService();
00047 service->setParent(this);
00048 return service;
00049 }
00050
00051 const QString TasksEngine::getStartupName(StartupPtr startup)
00052 {
00053 return startup->id().id();
00054 }
00055
00056 const QString TasksEngine::getTaskName(TaskPtr task)
00057 {
00058 return QString::number(task->window());
00059 }
00060
00061 void TasksEngine::init()
00062 {
00063 foreach (const TaskPtr &task, TaskManager::TaskManager::self()->tasks()) {
00064 Q_ASSERT(task);
00065 addTask(task);
00066 }
00067 connect(TaskManager::TaskManager::self(), SIGNAL(startupAdded(StartupPtr)), this, SLOT(startupAdded(StartupPtr)));
00068 connect(TaskManager::TaskManager::self(), SIGNAL(startupRemoved(StartupPtr)), this, SLOT(startupRemoved(StartupPtr)));
00069 connect(TaskManager::TaskManager::self(), SIGNAL(taskAdded(TaskPtr)), this, SLOT(taskAdded(TaskPtr)));
00070 connect(TaskManager::TaskManager::self(), SIGNAL(taskRemoved(TaskPtr)), this, SLOT(taskRemoved(TaskPtr)));
00071 }
00072
00073 void TasksEngine::startupAdded(StartupPtr startup)
00074 {
00075 Q_ASSERT(startup);
00076 addStartup(startup);
00077 }
00078
00079 void TasksEngine::startupRemoved(StartupPtr startup)
00080 {
00081 Q_ASSERT(startup);
00082 removeSource(getStartupName(startup));
00083 }
00084
00085 void TasksEngine::taskAdded(TaskPtr task)
00086 {
00087 Q_ASSERT(task);
00088 addTask(task);
00089 }
00090
00091 void TasksEngine::taskRemoved(TaskPtr task)
00092 {
00093 Q_ASSERT(task);
00094 removeSource(getTaskName(task));
00095 }
00096
00097 void TasksEngine::addStartup(StartupPtr startup)
00098 {
00099 TaskSource *taskSource = new TaskSource(startup, this);
00100 connect(startup.constData(), SIGNAL(changed(::TaskManager::TaskChanges)), taskSource, SLOT(updateStartup(::TaskManager::TaskChanges)));
00101 addSource(taskSource);
00102 }
00103
00104 void TasksEngine::addTask(TaskPtr task)
00105 {
00106 TaskSource *taskSource = new TaskSource(task, this);
00107 connect(task.constData(), SIGNAL(changed(::TaskManager::TaskChanges)), taskSource, SLOT(updateTask(::TaskManager::TaskChanges)));
00108 connect(TaskManager::TaskManager::self(), SIGNAL(desktopChanged(int)), taskSource, SLOT(updateDesktop(int)));
00109 addSource(taskSource);
00110 }
00111
00112 K_EXPORT_PLASMA_DATAENGINE(tasks, TasksEngine)
00113
00114 #include "tasksengine.moc"