telepathy-qt: dbus-tubes: Add room specs for DBus tube channels

Dario Freddi drf at kemper.freedesktop.org
Tue Jul 3 15:08:42 PDT 2012


Module: telepathy-qt
Branch: master
Commit: 85fc52b4f74a788dd03230382be32a564d988084
URL:    http://cgit.freedesktop.org/telepathy/telepathy-qt/commit/?id=85fc52b4f74a788dd03230382be32a564d988084

Author: Dario Freddi <dario.freddi at collabora.com>
Date:   Tue Nov  1 23:10:47 2011 +0100

dbus-tubes: Add room specs for DBus tube channels

---

 TelepathyQt/channel-class-spec.cpp |   46 ++++++++++++++++++++++++++++++++++
 TelepathyQt/channel-class-spec.h   |    4 +++
 TelepathyQt/channel-factory.cpp    |   48 ++++++++++++++++++++++++++++++++++++
 TelepathyQt/channel-factory.h      |   32 ++++++++++++++++++++++++
 4 files changed, 130 insertions(+), 0 deletions(-)

diff --git a/TelepathyQt/channel-class-spec.cpp b/TelepathyQt/channel-class-spec.cpp
index 0f72052..7b18f94 100644
--- a/TelepathyQt/channel-class-spec.cpp
+++ b/TelepathyQt/channel-class-spec.cpp
@@ -637,6 +637,52 @@ ChannelClassSpec ChannelClassSpec::incomingDBusTube(const QString &serviceName,
     }
 }
 
+ChannelClassSpec ChannelClassSpec::outgoingRoomDBusTube(const QString &serviceName,
+                                                        const QVariantMap &additionalProperties)
+{
+    static ChannelClassSpec spec;
+
+    if (!spec.mPriv.constData()) {
+        spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE,
+                HandleTypeRoom, true);
+    }
+
+    QVariantMap props = additionalProperties;
+    if (!serviceName.isEmpty()) {
+        props.insert(TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE + QLatin1String(".ServiceName"),
+                serviceName);
+    }
+
+    if (props.isEmpty()) {
+        return spec;
+    } else {
+        return ChannelClassSpec(spec, props);
+    }
+}
+
+ChannelClassSpec ChannelClassSpec::incomingRoomDBusTube(const QString &serviceName,
+                                                        const QVariantMap &additionalProperties)
+{
+    static ChannelClassSpec spec;
+
+    if (!spec.mPriv.constData()) {
+        spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE,
+                HandleTypeRoom, false);
+    }
+
+    QVariantMap props = additionalProperties;
+    if (!serviceName.isEmpty()) {
+        props.insert(TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE + QLatin1String(".ServiceName"),
+                serviceName);
+    }
+
+    if (props.isEmpty()) {
+        return spec;
+    } else {
+        return ChannelClassSpec(spec, props);
+    }
+}
+
 ChannelClassSpec ChannelClassSpec::contactSearch(const QVariantMap &additionalProperties)
 {
     static ChannelClassSpec spec;
diff --git a/TelepathyQt/channel-class-spec.h b/TelepathyQt/channel-class-spec.h
index e67cf27..3e7dce4 100644
--- a/TelepathyQt/channel-class-spec.h
+++ b/TelepathyQt/channel-class-spec.h
@@ -235,6 +235,10 @@ public:
             const QVariantMap &additionalProperties = QVariantMap());
     static ChannelClassSpec incomingDBusTube(const QString &serviceName = QString(),
             const QVariantMap &additionalProperties = QVariantMap());
+    static ChannelClassSpec outgoingRoomDBusTube(const QString &serviceName = QString(),
+            const QVariantMap &additionalProperties = QVariantMap());
+    static ChannelClassSpec incomingRoomDBusTube(const QString &serviceName = QString(),
+            const QVariantMap &additionalProperties = QVariantMap());
     static ChannelClassSpec contactSearch(const QVariantMap &additionalProperties = QVariantMap());
 
 private:
diff --git a/TelepathyQt/channel-factory.cpp b/TelepathyQt/channel-factory.cpp
index 049d89f..b4f9f6d 100644
--- a/TelepathyQt/channel-factory.cpp
+++ b/TelepathyQt/channel-factory.cpp
@@ -106,6 +106,8 @@ ChannelFactory::ChannelFactory(const QDBusConnection &bus)
     setSubclassForRoomLists<RoomListChannel>();
     setSubclassForIncomingDBusTubes<IncomingDBusTubeChannel>();
     setSubclassForOutgoingDBusTubes<OutgoingDBusTubeChannel>();
+    setSubclassForIncomingRoomDBusTubes<IncomingDBusTubeChannel>();
+    setSubclassForOutgoingRoomDBusTubes<OutgoingDBusTubeChannel>();
     setSubclassForIncomingFileTransfers<IncomingFileTransferChannel>();
     setSubclassForOutgoingFileTransfers<OutgoingFileTransferChannel>();
     setSubclassForIncomingStreamTubes<IncomingStreamTubeChannel>();
@@ -430,6 +432,52 @@ void ChannelFactory::setConstructorForIncomingDBusTubes(const ConstructorConstPt
     setConstructorFor(ChannelClassSpec::incomingDBusTube(QString(), additionalProps), ctor);
 }
 
+Features ChannelFactory::featuresForOutgoingRoomDBusTubes(const QVariantMap &additionalProps) const
+{
+    return featuresFor(ChannelClassSpec::outgoingRoomDBusTube(QString(), additionalProps));
+}
+
+void ChannelFactory::addFeaturesForOutgoingRoomDBusTubes(const Features &features,
+        const QVariantMap &additionalProps)
+{
+    addFeaturesFor(ChannelClassSpec::outgoingRoomDBusTube(QString(), additionalProps), features);
+}
+
+ChannelFactory::ConstructorConstPtr ChannelFactory::constructorForOutgoingRoomDBusTubes(
+        const QVariantMap &additionalProps) const
+{
+    return constructorFor(ChannelClassSpec::outgoingRoomDBusTube(QString(), additionalProps));
+}
+
+void ChannelFactory::setConstructorForOutgoingRoomDBusTubes(const ConstructorConstPtr &ctor,
+        const QVariantMap &additionalProps)
+{
+    setConstructorFor(ChannelClassSpec::outgoingRoomDBusTube(QString(), additionalProps), ctor);
+}
+
+Features ChannelFactory::featuresForIncomingRoomDBusTubes(const QVariantMap &additionalProps) const
+{
+    return featuresFor(ChannelClassSpec::incomingRoomDBusTube(QString(), additionalProps));
+}
+
+void ChannelFactory::addFeaturesForIncomingRoomDBusTubes(const Features &features,
+        const QVariantMap &additionalProps)
+{
+    addFeaturesFor(ChannelClassSpec::incomingRoomDBusTube(QString(), additionalProps), features);
+}
+
+ChannelFactory::ConstructorConstPtr ChannelFactory::constructorForIncomingRoomDBusTubes(
+        const QVariantMap &additionalProps) const
+{
+    return constructorFor(ChannelClassSpec::incomingRoomDBusTube(QString(), additionalProps));
+}
+
+void ChannelFactory::setConstructorForIncomingRoomDBusTubes(const ConstructorConstPtr &ctor,
+        const QVariantMap &additionalProps)
+{
+    setConstructorFor(ChannelClassSpec::incomingRoomDBusTube(QString(), additionalProps), ctor);
+}
+
 Features ChannelFactory::featuresForContactSearches(const QVariantMap &additionalProps) const
 {
     return featuresFor(ChannelClassSpec::contactSearch(additionalProps));
diff --git a/TelepathyQt/channel-factory.h b/TelepathyQt/channel-factory.h
index 7f4da56..e3b4cfb 100644
--- a/TelepathyQt/channel-factory.h
+++ b/TelepathyQt/channel-factory.h
@@ -270,6 +270,38 @@ public:
     void setConstructorForIncomingDBusTubes(const ConstructorConstPtr &ctor,
             const QVariantMap &additionalProps = QVariantMap());
 
+    Features featuresForOutgoingRoomDBusTubes(const QVariantMap &additionalProps = QVariantMap()) const;
+    void addFeaturesForOutgoingRoomDBusTubes(const Features &features,
+            const QVariantMap &additionalProps = QVariantMap());
+
+    ConstructorConstPtr constructorForOutgoingRoomDBusTubes(
+            const QVariantMap &additionalProps = QVariantMap()) const;
+
+    template<typename Subclass>
+    void setSubclassForOutgoingRoomDBusTubes(const QVariantMap &additionalProps = QVariantMap())
+    {
+        setConstructorForOutgoingRoomDBusTubes(SubclassCtor<Subclass>::create(), additionalProps);
+    }
+
+    void setConstructorForOutgoingRoomDBusTubes(const ConstructorConstPtr &ctor,
+            const QVariantMap &additionalProps = QVariantMap());
+
+    Features featuresForIncomingRoomDBusTubes(const QVariantMap &additionalProps = QVariantMap()) const;
+    void addFeaturesForIncomingRoomDBusTubes(const Features &features,
+            const QVariantMap &additionalProps = QVariantMap());
+
+    ConstructorConstPtr constructorForIncomingRoomDBusTubes(
+            const QVariantMap &additionalProps = QVariantMap()) const;
+
+    template<typename Subclass>
+    void setSubclassForIncomingRoomDBusTubes(const QVariantMap &additionalProps = QVariantMap())
+    {
+        setConstructorForIncomingRoomDBusTubes(SubclassCtor<Subclass>::create(), additionalProps);
+    }
+
+    void setConstructorForIncomingRoomDBusTubes(const ConstructorConstPtr &ctor,
+            const QVariantMap &additionalProps = QVariantMap());
+
     Features featuresForContactSearches(const QVariantMap &additionalProps = QVariantMap()) const;
     void addFeaturesForContactSearches(const Features &features,
             const QVariantMap &additionalProps = QVariantMap());



More information about the telepathy-commits mailing list