libkdepim Library API Documentation

KPIM::PluginLoader< T, T_config > Class Template Reference

A generic plugin loader for when KPart::Plugin is overkill. More...

#include <pluginloader.h>

List of all members.

Public Member Functions

virtual void scan ()
virtual T * createForName (const QString &type) const

Static Public Member Functions

static PluginLoader< T, T_config > * instance ()


Detailed Description

template<typename T, typename T_config>
class KPIM::PluginLoader< T, T_config >

A generic plugin loader for when KPart::Plugin is overkill.

Author:
Marc Mutz <mutz@kde.org> based on KABC's FormatFactory
This is a generic plugin loader / factory for small plugins that don't want to be QObjects.

Usage

A PluginLoader takes two template arguments, T and T_config:

T
The type of object to return
T_config::mainfunc
The suffix of the factory function to call in the library to obtain a new object of type T. The string passed to KLibrary::symbol() is libName_mainfunc.
T_config::path
The search pattern for .desktop files containing the plugin descriptions. This is the string passed as the filter argument to KStandardDirs::findAllResources.

The last two parameters being strings, they are passed via an encapsulating class, of which mainfunc and path</path> are public static members:

 struct MyObjectPluginLoaderConfig {
   static const char * const mainfunc;
   static const char * const path;
 };
 const char * const MyObjectPluginLoaderConfig::mainfunc = "myapp_create_myobject";
 const char * const MyObjectPluginLoaderConfig::path = "myapp/plugins/ *.desktop";
 

You would then use a typedef to create a less unwieldy name for your plugin loader:

 typedef KPIM::PluginLoader< MyObject, MyObjectPluginLoaderConfig > MyObjectPluginLoader;
 

All of this is what the KPIM_DEFINE_PLUGIN_LOADER(pluginloadername,type,mainfunc,path) macro achieves.

Definition at line 79 of file pluginloader.h.


Member Function Documentation

template<typename T, typename T_config>
static PluginLoader<T,T_config>* KPIM::PluginLoader< T, T_config >::instance  )  [inline, static]
 

Returns the single instance of this loader.

Definition at line 90 of file pluginloader.h.

template<typename T, typename T_config>
virtual void KPIM::PluginLoader< T, T_config >::scan  )  [inline, virtual]
 

Rescans the plugin directory to find any newly installed plugins.

Definition at line 101 of file pluginloader.h.

template<typename T, typename T_config>
virtual T* KPIM::PluginLoader< T, T_config >::createForName const QString type  )  const [inline, virtual]
 

Returns a pointer to a plugin object (of type T) or a null pointer if the type wasn't found.

You can extend this method for when you want to handle builtin types

Definition at line 108 of file pluginloader.h.


The documentation for this class was generated from the following file:
KDE Logo
This file is part of the documentation for libkdepim Library Version 3.3.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Thu Aug 23 18:19:57 2007 by doxygen 1.4.2 written by Dimitri van Heesch, © 1997-2003