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

Plasma

tasksengine.cpp

Go to the documentation of this file.
00001 /*
00002  *   Copyright (C) 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 #include <plasma/datacontainer.h>
00022 
00023 #include <KDebug>
00024 #include <KLocale>
00025 
00026 using namespace Plasma;
00027 
00028 TasksEngine::TasksEngine(QObject* parent, const QVariantList& args)
00029     : Plasma::DataEngine(parent, args)
00030 {
00031     Q_UNUSED(args);
00032 }
00033 
00034 void TasksEngine::init()
00035 {
00036     foreach(const TaskPtr &task , TaskManager::TaskManager::self()->tasks().values() ) {
00037         connect(task.constData(), SIGNAL(changed()), this, SLOT(taskChanged()));
00038         setDataForTask(task);
00039     }
00040 
00041     connect(TaskManager::TaskManager::self(), SIGNAL(taskAdded(TaskPtr)),
00042             this, SLOT(taskAdded(TaskPtr)));
00043     connect(TaskManager::TaskManager::self(), SIGNAL(taskRemoved(TaskPtr)),
00044             this, SLOT(taskRemoved(TaskPtr)));
00045     connect(TaskManager::TaskManager::self(), SIGNAL(startupAdded(StartupPtr)),
00046             this, SLOT(startupAdded(StartupPtr)));
00047     connect(TaskManager::TaskManager::self(), SIGNAL(startupRemoved(StartupPtr)),
00048             this, SLOT(startupRemoved(StartupPtr)));
00049 }
00050 
00051 void TasksEngine::startupAdded(StartupPtr startup)
00052 {
00053     connect(startup.constData(), SIGNAL(changed()), this, SLOT(startupChanged()));
00054     setDataForStartup(startup);
00055 }
00056 
00057 void TasksEngine::startupRemoved(StartupPtr startup)
00058 {
00059     removeSource(startup->id().id());
00060 }
00061 
00062 void TasksEngine::startupChanged()
00063 {
00064     TaskManager::Startup* startup = qobject_cast<TaskManager::Startup*>(sender());
00065 
00066     Q_ASSERT(startup);
00067 
00068     setDataForStartup(StartupPtr(startup));
00069 }
00070 
00071 void TasksEngine::setDataForStartup(StartupPtr startup)
00072 {
00073     Q_ASSERT(startup);
00074 
00075     QString name(startup->id().id());
00076 
00077     const QMetaObject* metaObject = startup->metaObject();
00078 
00079     for (int i = 0 ; i < metaObject->propertyCount() ; i++) {
00080         QMetaProperty property = metaObject->property(i);
00081 
00082         setData(name, property.name(), property.read(startup.constData()));
00083     }
00084     setData(name, "TaskOrStartup", "startup");
00085 }
00086 
00087 void TasksEngine::taskAdded(TaskPtr task)
00088 {
00089     connect(task.constData(), SIGNAL(changed()), this, SLOT(taskChanged()));
00090     setDataForTask(task);
00091 }
00092 
00093 void TasksEngine::taskRemoved(TaskPtr task)
00094 {
00095     removeSource( QString::number(task->window()) );
00096 }
00097 
00098 void TasksEngine::taskChanged()
00099 {
00100     TaskManager::Task* task = qobject_cast<TaskManager::Task*>(sender());
00101 
00102     Q_ASSERT(task);
00103 
00104     setDataForTask(TaskPtr(task));
00105 }
00106 
00107 void TasksEngine::setDataForTask(TaskPtr task)
00108 {
00109     Q_ASSERT( task );
00110 
00111     QString name = QString::number(task->window());
00112 
00113     const QMetaObject* metaObject = task->metaObject();
00114 
00115     for ( int i = 0 ; i < metaObject->propertyCount() ; i++ ) {
00116         QMetaProperty property = metaObject->property(i);
00117 
00118         setData(name,property.name(),property.read(task.constData()));
00119     }
00120     setData(name, "WId", static_cast<qulonglong>(task->window()));
00121     setData(name, "TaskOrStartup", "task");
00122 }
00123 
00124 #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
  •   libplasma
  •   libsolidcontrol
  •   libtaskmanager
  • Plasma
  •   Animators
  •   Applets
  •   Engines
  • Solid Modules
Generated for API Reference by doxygen 1.5.4
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