• Skip to content
  • Skip to link menu
KDE 4.2 API Reference
  • KDE API Reference
  • API Reference
  • Sitemap
  • Contact Us
 

Plasma

tasksengine.cpp

Go to the documentation of this file.
00001 /*
00002  * Copyright 2007 Robert Knight <robertknight@gmail.com>
00003  *
00004  *   This program is free software; you can redistribute it and/or modify
00005  *   it under the terms of the GNU Library General Public License version 2 as
00006  *   published by the Free Software Foundation
00007  *
00008  *   This program is distributed in the hope that it will be useful,
00009  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
00010  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00011  *   GNU General Public License for more details
00012  *
00013  *   You should have received a copy of the GNU Library General Public
00014  *   License along with this program; if not, write to the
00015  *   Free Software Foundation, Inc.,
00016  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
00017  */
00018 
00019 #include "tasksengine.h"
00020 
00021 // own
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     // if source does not exist, return null service
00038     if (!source) {
00039         return Plasma::DataEngine::serviceForSource(name);
00040     }
00041     // if source represents a startup task, return null service
00042     if (!source->isTask()) {
00043         return Plasma::DataEngine::serviceForSource(name);
00044     }
00045     // if source represent a proper task, return task service
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"

Plasma

Skip menu "Plasma"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members

API Reference

Skip menu "API Reference"
  • KWin
  •   KWin Libraries
  • Libraries
  •   libkworkspace
  •   libsolidcontrol
  •   libtaskmanager
  • Plasma
  •   Animators
  •   Applets
  •   Engines
  • Solid Modules
Generated for API Reference by doxygen 1.5.7
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal