| Home · All Classes · All Namespaces · Modules · Functions · Files

client-registrar.h

    00001
    00023 #ifndef _TelepathyQt_client_registrar_h_HEADER_GUARD_
    00024 #define _TelepathyQt_client_registrar_h_HEADER_GUARD_
    00025
    00026 #ifndef IN_TP_QT_HEADER
    00027 #error IN_TP_QT_HEADER
    00028 #endif
    00029
    00030 #include <TelepathyQt/AccountFactory>
    00031 #include <TelepathyQt/ChannelFactory>
    00032 #include <TelepathyQt/ConnectionFactory>
    00033 #include <TelepathyQt/ContactFactory>
    00034 #include <TelepathyQt/Object>
    00035 #include <TelepathyQt/Types>
    00036
    00037 #include <QDBusConnection>
    00038 #include <QString>
    00039
    00040 namespace Tp
    00041 {
    00042
    00043 class TP_QT_EXPORT ClientRegistrar : public Object
    00044 {
    00045     Q_OBJECT
    00046     Q_DISABLE_COPY(ClientRegistrar)
    00047
    00048 public:
    00049     static ClientRegistrarPtr create(const QDBusConnection &bus);
    00050     static ClientRegistrarPtr create(
    00051             const AccountFactoryConstPtr &accountFactory =
    00052                 AccountFactory::create(QDBusConnection::sessionBus()),
    00053             const ConnectionFactoryConstPtr &connectionFactory =
    00054                 ConnectionFactory::create(QDBusConnection::sessionBus()),
    00055             const ChannelFactoryConstPtr &channelFactory =
    00056                 ChannelFactory::create(QDBusConnection::sessionBus()),
    00057             const ContactFactoryConstPtr &contactFactory =
    00058                 ContactFactory::create());
    00059     static ClientRegistrarPtr create(const QDBusConnection &bus,
    00060             const AccountFactoryConstPtr &accountFactory,
    00061             const ConnectionFactoryConstPtr &connectionFactory,
    00062             const ChannelFactoryConstPtr &channelFactory,
    00063             const ContactFactoryConstPtr &contactFactory);
    00064     static ClientRegistrarPtr create(const AccountManagerPtr &accountManager);
    00065
    00066     ~ClientRegistrar();
    00067
    00068     QDBusConnection dbusConnection() const;
    00069
    00070     AccountFactoryConstPtr accountFactory() const;
    00071     ConnectionFactoryConstPtr connectionFactory() const;
    00072     ChannelFactoryConstPtr channelFactory() const;
    00073     ContactFactoryConstPtr contactFactory() const;
    00074
    00075     QList<AbstractClientPtr> registeredClients() const;
    00076     bool registerClient(const AbstractClientPtr &client,
    00077             const QString &clientName, bool unique = false);
    00078     bool unregisterClient(const AbstractClientPtr &client);
    00079     void unregisterClients();
    00080
    00081 private:
    00082     ClientRegistrar(const QDBusConnection &bus,
    00083             const AccountFactoryConstPtr &accountFactory,
    00084             const ConnectionFactoryConstPtr &connectionFactory,
    00085             const ChannelFactoryConstPtr &channelFactory,
    00086             const ContactFactoryConstPtr &contactFactory);
    00087
    00088     struct Private;
    00089     friend struct Private;
    00090     Private *mPriv;
    00091
    00092     static QHash<QPair<QString, QString>, ClientRegistrar *> registrarForConnection;
    00093 };
    00094
    00095 } // Tp
    00096
    00097 #endif