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