00001 #ifndef __Q_IBUS_BUS_H_
00002 #define __Q_IBUS_BUS_H_
00003
00004 #include <QFileSystemWatcher>
00005 #include <QDBusConnection>
00006 #include "qibusobject.h"
00007 #include "qibusserializable.h"
00008 #include "qibusenginedesc.h"
00009 #include "qibuscomponent.h"
00010 #include "qibusengine.h"
00011
00012 class QDBusConnection;
00013 class IBusProxy;
00014 class DBusProxy;
00015
00016 namespace IBus {
00017
00018 class Bus;
00019 typedef Pointer<Bus> BusPointer;
00020
00021 class Bus : public Object
00022 {
00023 Q_OBJECT;
00024
00025 protected:
00026
00027 public:
00028 Bus (void);
00029 ~Bus (void);
00030 bool isConnected (void);
00031 const QDBusConnection &getConnection (void);
00032
00033
00034 QString hello (void);
00035 void addMatch (const QString &rule);
00036 void removeMatch (const QString &rule);
00037 QString getId (void);
00038 QString getNameOwner (const QString &name);
00039 QStringList listNames (void);
00040 bool nameHasOwner (const QString &name);
00041 uint requestName (const QString &name, uint flag);
00042 uint releaseName (const QString &name);
00043
00044
00045 QString createInputContext (const QString &name);
00046 bool registerComponent (const ComponentPointer &component);
00047 bool registerObject (const QString &path, QObject *obj);
00048
00049 QList<EngineDescPointer> listEngines (void);
00050 QList<EngineDescPointer> listActiveEngines (void);
00051 bool exit (bool restart = false);
00052 SerializablePointer ping (const SerializablePointer &data);
00053
00054 private:
00055 bool open (void);
00056 void reset (void);
00057 QString getSocketPath (void);
00058 QString getAddress (void);
00059
00060 signals:
00064 void disconnected (void);
00065
00069 void connected (void);
00070
00071 private slots:
00072 void slotAddressChanged (const QString &path);
00073 void slotIBusDisconnected (void);
00074
00075 private:
00076 QFileSystemWatcher m_watcher;
00077 QDBusConnection *m_connection;
00078 DBusProxy *m_dbus;
00079 IBusProxy *m_ibus;
00080 };
00081
00082 };
00083
00084 #endif