00001 
00023 #ifndef _TelepathyQt_connection_factory_h_HEADER_GUARD_
00024 #define _TelepathyQt_connection_factory_h_HEADER_GUARD_
00025 
00026 #ifndef IN_TP_QT_HEADER
00027 #error IN_TP_QT_HEADER
00028 #endif
00029 
00030 #include <TelepathyQt/Global>
00031 #include <TelepathyQt/SharedPtr>
00032 #include <TelepathyQt/Types>
00033 
00034 #include <TelepathyQt/Feature>
00035 #include <TelepathyQt/FixedFeatureFactory>
00036 
00037 
00038 #include <QtGlobal>
00039 
00040 #include <QString>
00041 
00042 class QDBusConnection;
00043 
00044 namespace Tp
00045 {
00046 
00047 class PendingReady;
00048 
00049 class TP_QT_EXPORT ConnectionFactory : public FixedFeatureFactory
00050 {
00051 public:
00052     static ConnectionFactoryPtr create(const QDBusConnection &bus,
00053             const Features &features = Features());
00054 
00055     virtual ~ConnectionFactory();
00056 
00057     PendingReady *proxy(const QString &busName, const QString &objectPath,
00058             const ChannelFactoryConstPtr &chanFactory,
00059             const ContactFactoryConstPtr &contactFactory) const;
00060 
00061 protected:
00062     ConnectionFactory(const QDBusConnection &bus, const Features &features);
00063 
00064     virtual ConnectionPtr construct(const QString &busName, const QString &objectPath,
00065             const ChannelFactoryConstPtr &chanFactory,
00066             const ContactFactoryConstPtr &contactFactory) const;
00067     virtual QString finalBusNameFrom(const QString &uniqueOrWellKnown) const;
00068     
00069     
00070 
00071 private:
00072     struct Private;
00073     Private *mPriv; 
00074 };
00075 
00076 } 
00077 
00078 #endif