00001
00023 #ifndef _TelepathyQt_base_connection_manager_h_HEADER_GUARD_
00024 #define _TelepathyQt_base_connection_manager_h_HEADER_GUARD_
00025
00026 #ifndef IN_TP_QT_HEADER
00027 #error IN_TP_QT_HEADER
00028 #endif
00029
00030 #include <TelepathyQt/DBusService>
00031 #include <TelepathyQt/Global>
00032 #include <TelepathyQt/Types>
00033
00034 #include <QDBusConnection>
00035
00036 class QString;
00037
00038 namespace Tp
00039 {
00040
00041 class TP_QT_EXPORT BaseConnectionManager : public DBusService
00042 {
00043 Q_OBJECT
00044 Q_DISABLE_COPY(BaseConnectionManager)
00045
00046 public:
00047 static BaseConnectionManagerPtr create(const QString &name)
00048 {
00049 return BaseConnectionManagerPtr(new BaseConnectionManager(
00050 QDBusConnection::sessionBus(), name));
00051 }
00052 template<typename BaseConnectionManagerSubclass>
00053 static SharedPtr<BaseConnectionManagerSubclass> create(const QString &name)
00054 {
00055 return SharedPtr<BaseConnectionManagerSubclass>(new BaseConnectionManagerSubclass(
00056 QDBusConnection::sessionBus(), name));
00057 }
00058 static BaseConnectionManagerPtr create(const QDBusConnection &dbusConnection,
00059 const QString &name)
00060 {
00061 return BaseConnectionManagerPtr(new BaseConnectionManager(dbusConnection, name));
00062 }
00063 template<typename BaseConnectionManagerSubclass>
00064 static SharedPtr<BaseConnectionManagerSubclass> create(const QDBusConnection &dbusConnection,
00065 const QString &name)
00066 {
00067 return SharedPtr<BaseConnectionManagerSubclass>(new BaseConnectionManagerSubclass(
00068 dbusConnection, name));
00069 }
00070
00071 virtual ~BaseConnectionManager();
00072
00073 QString name() const;
00074
00075 QVariantMap immutableProperties() const;
00076
00077 QList<BaseProtocolPtr> protocols() const;
00078 BaseProtocolPtr protocol(const QString &protocolName) const;
00079 bool hasProtocol(const QString &protocolName) const;
00080 bool addProtocol(const BaseProtocolPtr &protocol);
00081
00082 bool registerObject(DBusError *error = NULL);
00083
00084 QList<BaseConnectionPtr> connections() const;
00085
00086 Q_SIGNALS:
00087 void newConnection(const BaseConnectionPtr &connection);
00088
00089 protected:
00090 BaseConnectionManager(const QDBusConnection &dbusConnection, const QString &name);
00091
00092 virtual bool registerObject(const QString &busName, const QString &objectPath,
00093 DBusError *error);
00094
00095 private Q_SLOTS:
00096 TP_QT_NO_EXPORT void removeConnection();
00097
00098 private:
00099 TP_QT_NO_EXPORT void addConnection(const BaseConnectionPtr &connection);
00100
00101 class Adaptee;
00102 friend class Adaptee;
00103 class Private;
00104 friend class Private;
00105 Private *mPriv;
00106 };
00107
00108 }
00109
00110 #endif