telepathy-qt: dbus-tubes: Enabling high level DBus tubes in ChannelFactory
Dario Freddi
drf at kemper.freedesktop.org
Tue Jul 3 15:08:33 PDT 2012
Module: telepathy-qt
Branch: master
Commit: dd282ce93dd59ea01281ef860365f21ad95c9acf
URL: http://cgit.freedesktop.org/telepathy/telepathy-qt/commit/?id=dd282ce93dd59ea01281ef860365f21ad95c9acf
Author: Dario Freddi <dario.freddi at collabora.co.uk>
Date: Fri May 28 18:30:40 2010 +0200
dbus-tubes: Enabling high level DBus tubes in ChannelFactory
---
TelepathyQt/channel-class-spec.cpp | 44 +++++++++++++++++++++++++++++++
TelepathyQt/channel-class-spec.h | 5 +++-
TelepathyQt/channel-factory.cpp | 50 ++++++++++++++++++++++++++++++++++++
TelepathyQt/channel-factory.h | 32 +++++++++++++++++++++++
4 files changed, 130 insertions(+), 1 deletions(-)
diff --git a/TelepathyQt/channel-class-spec.cpp b/TelepathyQt/channel-class-spec.cpp
index 48c2bfc..0f72052 100644
--- a/TelepathyQt/channel-class-spec.cpp
+++ b/TelepathyQt/channel-class-spec.cpp
@@ -593,6 +593,50 @@ ChannelClassSpec ChannelClassSpec::incomingRoomStreamTube(const QString &service
}
}
+ChannelClassSpec ChannelClassSpec::outgoingDBusTube(const QString &serviceName,
+ const QVariantMap &additionalProperties)
+{
+ static ChannelClassSpec spec;
+
+ if (!spec.isValid()) {
+ spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE,
+ HandleTypeContact, true);
+ }
+
+ if (!serviceName.isEmpty()) {
+ spec.setProperty(TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE + QLatin1String(".ServiceName"),
+ serviceName);
+ }
+
+ if (additionalProperties.isEmpty()) {
+ return spec;
+ } else {
+ return ChannelClassSpec(spec, additionalProperties);
+ }
+}
+
+ChannelClassSpec ChannelClassSpec::incomingDBusTube(const QString &serviceName,
+ const QVariantMap &additionalProperties)
+{
+ static ChannelClassSpec spec;
+
+ if (!spec.isValid()) {
+ spec = ChannelClassSpec(TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE,
+ HandleTypeContact, false);
+ }
+
+ if (!serviceName.isEmpty()) {
+ spec.setProperty(TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE + QLatin1String(".ServiceName"),
+ serviceName);
+ }
+
+ if (additionalProperties.isEmpty()) {
+ return spec;
+ } else {
+ return ChannelClassSpec(spec, additionalProperties);
+ }
+}
+
ChannelClassSpec ChannelClassSpec::contactSearch(const QVariantMap &additionalProperties)
{
static ChannelClassSpec spec;
diff --git a/TelepathyQt/channel-class-spec.h b/TelepathyQt/channel-class-spec.h
index b15e853..e67cf27 100644
--- a/TelepathyQt/channel-class-spec.h
+++ b/TelepathyQt/channel-class-spec.h
@@ -231,7 +231,10 @@ public:
const QVariantMap &additionalProperties = QVariantMap());
static ChannelClassSpec incomingRoomStreamTube(const QString &service = QString(),
const QVariantMap &additionalProperties = QVariantMap());
- // TODO: add dbus tubes when they're implemented
+ static ChannelClassSpec outgoingDBusTube(const QString &serviceName = QString(),
+ const QVariantMap &additionalProperties = QVariantMap());
+ static ChannelClassSpec incomingDBusTube(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 204667e..049d89f 100644
--- a/TelepathyQt/channel-factory.cpp
+++ b/TelepathyQt/channel-factory.cpp
@@ -36,8 +36,10 @@
#include <TelepathyQt/Constants>
#include <TelepathyQt/ContactSearchChannel>
#include <TelepathyQt/FileTransferChannel>
+#include <TelepathyQt/IncomingDBusTubeChannel>
#include <TelepathyQt/IncomingFileTransferChannel>
#include <TelepathyQt/IncomingStreamTubeChannel>
+#include <TelepathyQt/OutgoingDBusTubeChannel>
#include <TelepathyQt/OutgoingFileTransferChannel>
#include <TelepathyQt/OutgoingStreamTubeChannel>
#include <TelepathyQt/RoomListChannel>
@@ -102,6 +104,8 @@ ChannelFactory::ChannelFactory(const QDBusConnection &bus)
setSubclassForCalls<CallChannel>();
setSubclassForStreamedMediaCalls<StreamedMediaChannel>();
setSubclassForRoomLists<RoomListChannel>();
+ setSubclassForIncomingDBusTubes<IncomingDBusTubeChannel>();
+ setSubclassForOutgoingDBusTubes<OutgoingDBusTubeChannel>();
setSubclassForIncomingFileTransfers<IncomingFileTransferChannel>();
setSubclassForOutgoingFileTransfers<OutgoingFileTransferChannel>();
setSubclassForIncomingStreamTubes<IncomingStreamTubeChannel>();
@@ -380,6 +384,52 @@ void ChannelFactory::setConstructorForIncomingRoomStreamTubes(const ConstructorC
setConstructorFor(ChannelClassSpec::incomingRoomStreamTube(QString(), additionalProps), ctor);
}
+Features ChannelFactory::featuresForOutgoingDBusTubes(const QVariantMap &additionalProps) const
+{
+ return featuresFor(ChannelClassSpec::outgoingDBusTube(QString(), additionalProps));
+}
+
+void ChannelFactory::addFeaturesForOutgoingDBusTubes(const Features &features,
+ const QVariantMap &additionalProps)
+{
+ addFeaturesFor(ChannelClassSpec::outgoingDBusTube(QString(), additionalProps), features);
+}
+
+ChannelFactory::ConstructorConstPtr ChannelFactory::constructorForOutgoingDBusTubes(
+ const QVariantMap &additionalProps) const
+{
+ return constructorFor(ChannelClassSpec::outgoingDBusTube(QString(), additionalProps));
+}
+
+void ChannelFactory::setConstructorForOutgoingDBusTubes(const ConstructorConstPtr &ctor,
+ const QVariantMap &additionalProps)
+{
+ setConstructorFor(ChannelClassSpec::outgoingDBusTube(QString(), additionalProps), ctor);
+}
+
+Features ChannelFactory::featuresForIncomingDBusTubes(const QVariantMap &additionalProps) const
+{
+ return featuresFor(ChannelClassSpec::incomingDBusTube(QString(), additionalProps));
+}
+
+void ChannelFactory::addFeaturesForIncomingDBusTubes(const Features &features,
+ const QVariantMap &additionalProps)
+{
+ addFeaturesFor(ChannelClassSpec::incomingDBusTube(QString(), additionalProps), features);
+}
+
+ChannelFactory::ConstructorConstPtr ChannelFactory::constructorForIncomingDBusTubes(
+ const QVariantMap &additionalProps) const
+{
+ return constructorFor(ChannelClassSpec::incomingDBusTube(QString(), additionalProps));
+}
+
+void ChannelFactory::setConstructorForIncomingDBusTubes(const ConstructorConstPtr &ctor,
+ const QVariantMap &additionalProps)
+{
+ setConstructorFor(ChannelClassSpec::incomingDBusTube(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 6789076..7f4da56 100644
--- a/TelepathyQt/channel-factory.h
+++ b/TelepathyQt/channel-factory.h
@@ -238,6 +238,38 @@ public:
void setConstructorForIncomingRoomStreamTubes(const ConstructorConstPtr &ctor,
const QVariantMap &additionalProps = QVariantMap());
+ Features featuresForOutgoingDBusTubes(const QVariantMap &additionalProps = QVariantMap()) const;
+ void addFeaturesForOutgoingDBusTubes(const Features &features,
+ const QVariantMap &additionalProps = QVariantMap());
+
+ ConstructorConstPtr constructorForOutgoingDBusTubes(
+ const QVariantMap &additionalProps = QVariantMap()) const;
+
+ template<typename Subclass>
+ void setSubclassForOutgoingDBusTubes(const QVariantMap &additionalProps = QVariantMap())
+ {
+ setConstructorForOutgoingDBusTubes(SubclassCtor<Subclass>::create(), additionalProps);
+ }
+
+ void setConstructorForOutgoingDBusTubes(const ConstructorConstPtr &ctor,
+ const QVariantMap &additionalProps = QVariantMap());
+
+ Features featuresForIncomingDBusTubes(const QVariantMap &additionalProps = QVariantMap()) const;
+ void addFeaturesForIncomingDBusTubes(const Features &features,
+ const QVariantMap &additionalProps = QVariantMap());
+
+ ConstructorConstPtr constructorForIncomingDBusTubes(
+ const QVariantMap &additionalProps = QVariantMap()) const;
+
+ template<typename Subclass>
+ void setSubclassForIncomingDBusTubes(const QVariantMap &additionalProps = QVariantMap())
+ {
+ setConstructorForIncomingDBusTubes(SubclassCtor<Subclass>::create(), additionalProps);
+ }
+
+ void setConstructorForIncomingDBusTubes(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