Plasma
appsengine.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 "appsengine.h"
00020 #include "appsource.h"
00021
00022 AppsEngine::AppsEngine(QObject *parent, const QVariantList &args) :
00023 Plasma::DataEngine(parent, args)
00024 {
00025 Q_UNUSED(args);
00026 }
00027
00028 AppsEngine::~AppsEngine()
00029 {
00030 }
00031
00032 Plasma::Service *AppsEngine::serviceForSource(const QString &name)
00033 {
00034 AppSource *source = dynamic_cast<AppSource*>(containerForSource(name));
00035
00036 if (!source) {
00037 return Plasma::DataEngine::serviceForSource(name);
00038 }
00039
00040 if (!source->isApp()) {
00041 return Plasma::DataEngine::serviceForSource(name);
00042 }
00043
00044 Plasma::Service *service = source->createService();
00045 service->setParent(this);
00046 return service;
00047 }
00048
00049 void AppsEngine::init()
00050 {
00051 addGroup(KServiceGroup::root());
00052
00053 }
00054
00055 void AppsEngine::addGroup(KServiceGroup::Ptr group)
00056 {
00057 if (!(group && group->isValid())) {
00058 return;
00059 }
00060 AppSource *appSource = new AppSource(group, this);
00061
00062 addSource(appSource);
00063
00064 foreach (const KServiceGroup::Ptr subGroup, group->groupEntries(KServiceGroup::NoOptions)) {
00065 addGroup(subGroup);
00066 }
00067 foreach (const KService::Ptr app, group->serviceEntries(KServiceGroup::NoOptions)) {
00068 addApp(app);
00069 }
00070 }
00071
00072 void AppsEngine::addApp(KService::Ptr app)
00073 {
00074 AppSource *appSource = new AppSource(app, this);
00075
00076 addSource(appSource);
00077 }
00078
00079 K_EXPORT_PLASMA_DATAENGINE(apps, AppsEngine)
00080
00081 #include "appsengine.moc"