Diffstat (limited to 'libopie2/opiepim/ui/oholidaypluginif.h') (more/less context) (ignore whitespace changes)
-rw-r--r-- | libopie2/opiepim/ui/oholidaypluginif.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/libopie2/opiepim/ui/oholidaypluginif.h b/libopie2/opiepim/ui/oholidaypluginif.h new file mode 100644 index 0000000..6d36f08 --- a/dev/null +++ b/libopie2/opiepim/ui/oholidaypluginif.h @@ -0,0 +1,64 @@ +#ifndef _O_HOLIDAY_PLUGIN_IF_H +#define _O_HOLIDAY_PLUGIN_IF_H + +#include <opie2/odebug.h> + +#include <qpe/qcom.h> + +#ifndef QT_NO_COMPONENT +//"b981b4e9-6d5d-4ee0-a193-f8d0e443809b" +#define IID_HOLIDAY_PLUGIN QUuid(0xb981b4e9, 0x6d5d, 0x4ee0 0xa1, 0x93,0xf8, 0xd0, 0xe4, 0x43, 0x80, 0x9b) +#endif + +namespace Opie { +namespace Datebook { + +class HolidayPlugin; + +class HolidayPluginIf:public QUnknownInterface +{ +public: + HolidayPluginIf():QUnknownInterface(){} + virtual ~HolidayPluginIf(){} + + virtual HolidayPlugin*plugin()=0; +}; + +template<class T>HolidayPluginWrapper:public HolidayPluginIf +{ +public: + HolidayPluginWrapper():HolidayPluginIf(),_plugin(0){} + virtual ~HolidayPluginWrapper(){if (_plugin) delete _plugin;} + + QRESULT queryInterface( const QUuid& uuid, QUnknownInterface** iface ) { + odebug << "HolidayPluginWrapper::queryInterface()" << oendl; + *iface = 0; + if (uuid==IID_HOLIDAY_PLUGIN||uuid==IID_QUnknown) { + *iface = this; + } else { + return QS_FALSE; + } + if (*iface) *iface->addRef(); + return QS_OK; + } + + // from qcom + Q_REFCOUNT + + virtual T*plugin() { + if (!_plugin) {_plugin = new T();} + return _plugin; + } +protected: + T*_plugin; +}; + +#define EXPORT_HOLIDAY_PLUGIN( Plugin ) \ + Q_EXPORT_INTERFACE() { \ + Q_CREATE_INSTANCE( Opie::Datebook::HolidayPluginWrapper<Plugin> ) \ + } + +} +} +#endif + |