00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _TelepathyQt4_cli_dbus_proxy_h_HEADER_GUARD_
00023 #define _TelepathyQt4_cli_dbus_proxy_h_HEADER_GUARD_
00024
00025 #ifndef IN_TELEPATHY_QT4_HEADER
00026 #error IN_TELEPATHY_QT4_HEADER
00027 #endif
00028
00029 #include <QObject>
00030
00031 class QDBusConnection;
00032 class QDBusError;
00033
00034 namespace Telepathy
00035 {
00036 namespace Client
00037 {
00038
00039 class DBusProxy : public QObject
00040 {
00041 Q_OBJECT
00042 Q_DISABLE_COPY(DBusProxy)
00043
00044 public:
00045 DBusProxy(const QDBusConnection &dbusConnection, const QString &busName,
00046 const QString &objectPath, QObject *parent = 0);
00047
00048 enum InterfaceSupportedChecking
00049 {
00050 CheckInterfaceSupported,
00051 BypassInterfaceCheck
00052 };
00053
00054 virtual ~DBusProxy();
00055
00056 QDBusConnection dbusConnection() const;
00057 QString busName() const;
00058 QString objectPath() const;
00059
00060 bool isValid() const;
00061 QString invalidationReason() const;
00062 QString invalidationMessage() const;
00063
00064 protected:
00065 void setBusName(const QString &busName);
00066 void invalidate(const QString &reason, const QString &message);
00067 void invalidate(const QDBusError &error);
00068
00069 Q_SIGNALS:
00070 void invalidated(Telepathy::Client::DBusProxy *proxy,
00071 const QString &errorName, const QString &errorMessage);
00072
00073 private Q_SLOTS:
00074 void emitInvalidated();
00075
00076 private:
00077 class Private;
00078 friend class Private;
00079 Private *mPriv;
00080 };
00081
00082 class StatelessDBusProxy : public DBusProxy
00083 {
00084 Q_OBJECT
00085
00086 public:
00087 StatelessDBusProxy(const QDBusConnection &dbusConnection,
00088 const QString &busName, const QString &objectPath,
00089 QObject *parent = 0);
00090
00091 virtual ~StatelessDBusProxy();
00092
00093 private:
00094 class Private;
00095 friend class Private;
00096 Private *mPriv;
00097 };
00098
00099 class StatefulDBusProxy : public DBusProxy
00100 {
00101 Q_OBJECT
00102
00103 public:
00104 StatefulDBusProxy(const QDBusConnection &dbusConnection,
00105 const QString &busName, const QString &objectPath,
00106 QObject *parent = 0);
00107
00108 virtual ~StatefulDBusProxy();
00109
00110 private Q_SLOTS:
00111 void onServiceOwnerChanged(const QString &name, const QString &oldOwner,
00112 const QString &newOwner);
00113
00114 private:
00115 class Private;
00116 friend class Private;
00117 Private *mPriv;
00118 };
00119
00120 }
00121 }
00122
00123 #endif