Plasma
pluginloader.h
Go to the documentation of this file.
00001 /* 00002 * Copyright 2010 by Ryan Rix <ry@n.rix.si> 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 as 00006 * published by the Free Software Foundation; either version 2, or 00007 * (at your option) any later version. 00008 * 00009 * This program is distributed in the hope that it will be useful, 00010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 * GNU General Public License for more details 00013 * 00014 * You should have received a copy of the GNU Library General Public 00015 * License along with this program; if not, write to the 00016 * Free Software Foundation, Inc., 00017 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 00018 */ 00019 00020 #ifndef PLUGIN_LOADER_H 00021 #define PLUGIN_LOADER_H 00022 00023 #include <plasma/plasma.h> 00024 #include <kplugininfo.h> 00025 00026 namespace Plasma { 00027 00028 class Applet; 00029 class DataEngine; 00030 class Service; 00031 class AbstractRunner; 00032 00033 class PluginLoaderPrivate; 00034 00035 //TODO: 00036 // * add support for ContainmentActions plugins 00037 // * add KPluginInfo listing support for Containments (already loaded via the applet loading code) 00038 00048 class PLASMA_EXPORT PluginLoader 00049 { 00050 public: 00051 PluginLoader(); 00052 00053 virtual ~PluginLoader(); 00054 00064 Applet *loadApplet(const QString &name, uint appletId = 0, 00065 const QVariantList &args = QVariantList()); 00066 00073 DataEngine *loadDataEngine(const QString &name); 00074 00080 AbstractRunner *loadRunner(const QString &name); 00081 00091 Service *loadService(const QString &name, const QVariantList &args, QObject *parent = 0); 00092 00110 KPluginInfo::List listAppletInfo(const QString &category, const QString &parentApp = QString()); 00111 00122 KPluginInfo::List listDataEngineInfo(const QString &parentApp = QString()); 00123 00134 KPluginInfo::List listRunnerInfo(const QString &parentApp = QString()); 00135 00142 static void setPluginLoader(PluginLoader* loader); 00143 00147 static PluginLoader* pluginLoader(); 00148 00149 protected: 00163 virtual Applet *internalLoadApplet(const QString &name, uint appletId = 0, 00164 const QVariantList &args = QVariantList()); 00165 00176 virtual AbstractRunner *internalLoadRunner(const QString &name); 00177 00188 virtual DataEngine *internalLoadDataEngine(const QString &name); 00189 00203 virtual Service *internalLoadService(const QString &name, const QVariantList &args, QObject *parent = 0); 00204 00222 virtual KPluginInfo::List internalAppletInfo(const QString &category) const; 00223 00230 virtual KPluginInfo::List internalDataEngineInfo() const; 00231 00237 virtual KPluginInfo::List internalRunnerInfo() const; 00238 00244 virtual KPluginInfo::List internalServiceInfo() const; 00245 00261 KPluginInfo::List standardInternalAppletInfo(const QString &category) const; 00262 00272 KPluginInfo::List standardInternalDataEngineInfo() const; 00273 00283 KPluginInfo::List standardInternalRunnerInfo() const; 00284 00294 KPluginInfo::List standardInternalServiceInfo() const; 00295 00296 private: 00297 PluginLoaderPrivate * const d; 00298 }; 00299 00300 } 00301 00302 Q_DECLARE_METATYPE(Plasma::PluginLoader*) 00303 00304 #endif
KDE 4.6 API Reference