00001 #ifndef __Q_IBUS_FACTORY_ADAPTOR_H_
00002 #define __Q_IBUS_FACTORY_ADAPTOR_H_
00003
00004 #include <QLinkedList>
00005 #include <QDBusConnection>
00006 #include <QDBusObjectPath>
00007 #include "qibusobject.h"
00008
00009 class IBusFactoryAdaptor;
00010
00011 namespace IBus {
00012
00013 class Engine;
00014 typedef Pointer<Engine> EnginePointer;
00015
00016 class EngineFactory : public Object
00017 {
00018 Q_OBJECT;
00019
00020 private :
00021 Q_INVOKABLE EngineFactory (const QDBusConnection &conn, uint id = 0);
00022 ~EngineFactory ();
00023
00024 public:
00025 void addMetaObject (const QString &name, const QMetaObject *metaObject);
00026 static EngineFactory *getEngineFactory (const QDBusConnection &conn);
00027
00028 protected:
00029 virtual QString createEngine (const QString &name);
00030
00031 private Q_SLOTS:
00032 Q_INVOKABLE QDBusObjectPath CreateEngine (const QString &name);
00033 Q_INVOKABLE void Destroy ();
00034
00035 private :
00036
00037 uint m_id;
00038 QDBusConnection m_conn;
00039 QMap<QString, const QMetaObject *> m_engineMap;
00040 QLinkedList<EnginePointer> m_engineLList;
00041 IBusFactoryAdaptor *m_factoryAdaptor;
00042
00043 static EngineFactory *m_factory;
00044 };
00045
00046 };
00047
00048 #endif