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

channel-factory.h

00001 
00023 #ifndef _TelepathyQt4_channel_factory_h_HEADER_GUARD_
00024 #define _TelepathyQt4_channel_factory_h_HEADER_GUARD_
00025 
00026 #ifndef IN_TELEPATHY_QT4_HEADER
00027 #error IN_TELEPATHY_QT4_HEADER
00028 #endif
00029 
00030 #include <TelepathyQt4/DBusProxyFactory>
00031 #include <TelepathyQt4/SharedPtr>
00032 #include <TelepathyQt4/Types>
00033 
00034 // For Q_DISABLE_COPY
00035 #include <QtGlobal>
00036 #include <QString>
00037 #include <QVariantMap>
00038 
00039 class QDBusConnection;
00040 
00041 namespace Tp
00042 {
00043 
00044 class ChannelClassSpec;
00045 
00046 class TELEPATHY_QT4_EXPORT ChannelFactory : public DBusProxyFactory
00047 {
00048     Q_DISABLE_COPY(ChannelFactory)
00049 
00050 public:
00051     struct TELEPATHY_QT4_EXPORT Constructor : public RefCounted
00052     {
00053         virtual ~Constructor() {}
00054 
00055         virtual ChannelPtr construct(const ConnectionPtr &conn, const QString &objectPath,
00056                 const QVariantMap &immutableProperties) const = 0;
00057     };
00058     typedef SharedPtr<Constructor> ConstructorPtr;
00059     typedef SharedPtr<const Constructor> ConstructorConstPtr;
00060 
00061     static ChannelFactoryPtr create(const QDBusConnection &bus);
00062 
00063     virtual ~ChannelFactory();
00064 
00065     Features featuresForTextChats(const QVariantMap &additionalProps = QVariantMap()) const;
00066     void addFeaturesForTextChats(const Features &features,
00067             const QVariantMap &additionalProps = QVariantMap());
00068 
00069     ConstructorConstPtr constructorForTextChats(
00070             const QVariantMap &additionalProps = QVariantMap()) const;
00071 
00072     template<typename Subclass>
00073     void setSubclassForTextChats(const QVariantMap &additionalProps = QVariantMap())
00074     {
00075         setConstructorForTextChats(SubclassCtor<Subclass>::create(), additionalProps);
00076     }
00077 
00078     void setConstructorForTextChats(const ConstructorConstPtr &ctor,
00079             const QVariantMap &additionalProps = QVariantMap());
00080 
00081     Features featuresForTextChatrooms(const QVariantMap &additionalProps = QVariantMap()) const;
00082     void addFeaturesForTextChatrooms(const Features &features,
00083             const QVariantMap &additionalProps = QVariantMap());
00084 
00085     ConstructorConstPtr constructorForTextChatrooms(
00086             const QVariantMap &additionalProps = QVariantMap()) const;
00087 
00088     template<typename Subclass>
00089     void setSubclassForTextChatrooms(const QVariantMap &additionalProps = QVariantMap())
00090     {
00091         setConstructorForTextChatrooms(SubclassCtor<Subclass>::create(), additionalProps);
00092     }
00093 
00094     void setConstructorForTextChatrooms(const ConstructorConstPtr &ctor,
00095             const QVariantMap &additionalProps = QVariantMap());
00096 
00097     Features featuresForStreamedMediaCalls(const QVariantMap &additionalProps = QVariantMap()) const;
00098     void addFeaturesForStreamedMediaCalls(const Features &features,
00099             const QVariantMap &additionalProps = QVariantMap());
00100 
00101     ConstructorConstPtr constructorForStreamedMediaCalls(
00102             const QVariantMap &additionalProps = QVariantMap()) const;
00103 
00104     template<typename Subclass>
00105     void setSubclassForStreamedMediaCalls(const QVariantMap &additionalProps = QVariantMap())
00106     {
00107         setConstructorForStreamedMediaCalls(SubclassCtor<Subclass>::create(), additionalProps);
00108     }
00109 
00110     void setConstructorForStreamedMediaCalls(const ConstructorConstPtr &ctor,
00111             const QVariantMap &additionalProps = QVariantMap());
00112 
00113     Features featuresForRoomLists(const QVariantMap &additionalProps = QVariantMap()) const;
00114     void addFeaturesForRoomLists(const Features &features,
00115             const QVariantMap &additionalProps = QVariantMap());
00116 
00117     ConstructorConstPtr constructorForRoomLists(
00118             const QVariantMap &additionalProps = QVariantMap()) const;
00119 
00120     template<typename Subclass>
00121     void setSubclassForRoomLists(const QVariantMap &additionalProps = QVariantMap())
00122     {
00123         setConstructorForRoomLists(SubclassCtor<Subclass>::create(), additionalProps);
00124     }
00125 
00126     void setConstructorForRoomLists(const ConstructorConstPtr &ctor,
00127             const QVariantMap &additionalProps = QVariantMap());
00128 
00129     Features featuresForOutgoingFileTransfers(const QVariantMap &additionalProps = QVariantMap()) const;
00130     void addFeaturesForOutgoingFileTransfers(const Features &features,
00131             const QVariantMap &additionalProps = QVariantMap());
00132 
00133     ConstructorConstPtr constructorForOutgoingFileTransfers(
00134             const QVariantMap &additionalProps = QVariantMap()) const;
00135 
00136     template<typename Subclass>
00137     void setSubclassForOutgoingFileTransfers(const QVariantMap &additionalProps = QVariantMap())
00138     {
00139         setConstructorForOutgoingFileTransfers(SubclassCtor<Subclass>::create(), additionalProps);
00140     }
00141 
00142     void setConstructorForOutgoingFileTransfers(const ConstructorConstPtr &ctor,
00143             const QVariantMap &additionalProps = QVariantMap());
00144 
00145     Features featuresForIncomingFileTransfers(const QVariantMap &additionalProps = QVariantMap()) const;
00146     void addFeaturesForIncomingFileTransfers(const Features &features,
00147             const QVariantMap &additionalProps = QVariantMap());
00148 
00149     ConstructorConstPtr constructorForIncomingFileTransfers(
00150             const QVariantMap &additionalProps = QVariantMap()) const;
00151 
00152     template<typename Subclass>
00153     void setSubclassForIncomingFileTransfers(const QVariantMap &additionalProps = QVariantMap())
00154     {
00155         setConstructorForIncomingFileTransfers(SubclassCtor<Subclass>::create(), additionalProps);
00156     }
00157 
00158     void setConstructorForIncomingFileTransfers(const ConstructorConstPtr &ctor,
00159             const QVariantMap &additionalProps = QVariantMap());
00160 
00161     Features featuresForOutgoingStreamTubes(const QVariantMap &additionalProps = QVariantMap()) const;
00162     void addFeaturesForOutgoingStreamTubes(const Features &features,
00163             const QVariantMap &additionalProps = QVariantMap());
00164 
00165     ConstructorConstPtr constructorForOutgoingStreamTubes(
00166             const QVariantMap &additionalProps = QVariantMap()) const;
00167 
00168     template<typename Subclass>
00169     void setSubclassForOutgoingStreamTubes(const QVariantMap &additionalProps = QVariantMap())
00170     {
00171         setConstructorForOutgoingStreamTubes(SubclassCtor<Subclass>::create(), additionalProps);
00172     }
00173 
00174     void setConstructorForOutgoingStreamTubes(const ConstructorConstPtr &ctor,
00175             const QVariantMap &additionalProps = QVariantMap());
00176 
00177     Features featuresForIncomingStreamTubes(const QVariantMap &additionalProps = QVariantMap()) const;
00178     void addFeaturesForIncomingStreamTubes(const Features &features,
00179             const QVariantMap &additionalProps = QVariantMap());
00180 
00181     ConstructorConstPtr constructorForIncomingStreamTubes(
00182             const QVariantMap &additionalProps = QVariantMap()) const;
00183 
00184     template<typename Subclass>
00185     void setSubclassForIncomingStreamTubes(const QVariantMap &additionalProps = QVariantMap())
00186     {
00187         setConstructorForIncomingStreamTubes(SubclassCtor<Subclass>::create(), additionalProps);
00188     }
00189 
00190     void setConstructorForIncomingStreamTubes(const ConstructorConstPtr &ctor,
00191             const QVariantMap &additionalProps = QVariantMap());
00192 
00193     Features featuresForContactSearches(const QVariantMap &additionalProps = QVariantMap()) const;
00194     void addFeaturesForContactSearches(const Features &features,
00195             const QVariantMap &additionalProps = QVariantMap());
00196 
00197     ConstructorConstPtr constructorForContactSearches(
00198             const QVariantMap &additionalProps = QVariantMap()) const;
00199 
00200     template<typename Subclass>
00201     void setSubclassForContactSearches(const QVariantMap &additionalProps = QVariantMap())
00202     {
00203         setConstructorForContactSearches(SubclassCtor<Subclass>::create(), additionalProps);
00204     }
00205 
00206     void setConstructorForContactSearches(const ConstructorConstPtr &ctor,
00207             const QVariantMap &additionalProps = QVariantMap());
00208 
00209     Features commonFeatures() const;
00210     void addCommonFeatures(const Features &features);
00211 
00212     ConstructorConstPtr fallbackConstructor() const;
00213 
00214     template <typename Subclass>
00215     void setFallbackSubclass()
00216     {
00217         setFallbackConstructor(SubclassCtor<Subclass>::create());
00218     }
00219 
00220     void setFallbackConstructor(const ConstructorConstPtr &ctor);
00221 
00222     Features featuresFor(const ChannelClassSpec &channelClass) const;
00223     void addFeaturesFor(const ChannelClassSpec &channelClass, const Features &features);
00224 
00225     template <typename Subclass>
00226     void setSubclassFor(const ChannelClassSpec &channelClass)
00227     {
00228         setConstructorFor(channelClass, SubclassCtor<Subclass>::create());
00229     }
00230 
00231     ConstructorConstPtr constructorFor(const ChannelClassSpec &channelClass) const;
00232     void setConstructorFor(const ChannelClassSpec &channelClass, const ConstructorConstPtr &ctor);
00233 
00234     PendingReady *proxy(const ConnectionPtr &connection, const QString &channelPath,
00235             const QVariantMap &immutableProperties) const;
00236 
00237 protected:
00238     ChannelFactory(const QDBusConnection &bus);
00239 
00240     template <typename Subclass>
00241     struct SubclassCtor : public Constructor
00242     {
00243         static ConstructorPtr create()
00244         {
00245             return ConstructorPtr(new SubclassCtor<Subclass>());
00246         }
00247 
00248         virtual ~SubclassCtor() {}
00249 
00250         ChannelPtr construct(const ConnectionPtr &conn, const QString &objectPath,
00251                 const QVariantMap &immutableProperties) const
00252         {
00253             return Subclass::create(conn, objectPath, immutableProperties);
00254         }
00255     };
00256 
00257     virtual QString finalBusNameFrom(const QString &uniqueOrWellKnown) const;
00258     // Nothing we'd like to prepare()
00259     virtual Features featuresFor(const DBusProxyPtr &proxy) const;
00260 
00261 private:
00262     struct Private;
00263     Private *mPriv;
00264 };
00265 
00266 } // Tp
00267 
00268 #endif


Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation
Telepathy-Qt4 0.5.12