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

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 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>
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.

References KPIM::PluginLoader< T, T_config >::createForName().

Referenced by KPIM::PluginLoader< T, T_config >::createForName().


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.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Fri Oct 1 15:18:56 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003