[telepathy-qt4/master] Account: Added ChannelDispatcher support.

Andre Moreira Magalhaes (andrunko) andre.magalhaes at collabora.co.uk
Thu Jun 11 08:18:30 PDT 2009


---
 TelepathyQt4/account.cpp |  101 ++++++++++++++++++++++++++++++++++++++++++++++
 TelepathyQt4/account.h   |   34 +++++++++++++++
 2 files changed, 135 insertions(+), 0 deletions(-)

diff --git a/TelepathyQt4/account.cpp b/TelepathyQt4/account.cpp
index 00cda30..9d6ff59 100644
--- a/TelepathyQt4/account.cpp
+++ b/TelepathyQt4/account.cpp
@@ -29,10 +29,12 @@
 
 #include <TelepathyQt4/AccountManager>
 #include <TelepathyQt4/ConnectionManager>
+#include <TelepathyQt4/PendingChannelRequest>
 #include <TelepathyQt4/PendingFailure>
 #include <TelepathyQt4/PendingReady>
 #include <TelepathyQt4/PendingStringList>
 #include <TelepathyQt4/PendingVoidMethodCall>
+#include <TelepathyQt4/ReferencedHandles>
 #include <TelepathyQt4/Constants>
 #include <TelepathyQt4/Debug>
 
@@ -695,6 +697,105 @@ PendingOperation *Account::remove()
     return new PendingVoidMethodCall(this, baseInterface()->Remove());
 }
 
+PendingChannelRequest *Account::ensureTextChat(
+        const QString &contactIdentifier,
+        QDateTime userActionTime,
+        const QString &preferredHandler)
+{
+    QVariantMap request;
+    request.insert(QLatin1String(TELEPATHY_INTERFACE_CHANNEL ".ChannelType"),
+                   TELEPATHY_INTERFACE_CHANNEL_TYPE_TEXT);
+    request.insert(QLatin1String(TELEPATHY_INTERFACE_CHANNEL ".TargetHandleType"),
+                   Tp::HandleTypeContact);
+    request.insert(QLatin1String(TELEPATHY_INTERFACE_CHANNEL ".TargetID"),
+                   contactIdentifier);
+    return new PendingChannelRequest(dbusConnection(), objectPath(),
+            request, userActionTime, preferredHandler, false, this);
+}
+
+PendingChannelRequest *Account::ensureTextChat(
+        const ContactPtr &contact,
+        QDateTime userActionTime,
+        const QString &preferredHandler)
+{
+    QVariantMap request;
+    request.insert(QLatin1String(TELEPATHY_INTERFACE_CHANNEL ".ChannelType"),
+                   TELEPATHY_INTERFACE_CHANNEL_TYPE_TEXT);
+    request.insert(QLatin1String(TELEPATHY_INTERFACE_CHANNEL ".TargetHandleType"),
+                   Tp::HandleTypeContact);
+    request.insert(QLatin1String(TELEPATHY_INTERFACE_CHANNEL ".TargetHandle"),
+                   contact ? contact->handle().at(0) : 0);
+    return new PendingChannelRequest(dbusConnection(), objectPath(),
+            request, userActionTime, preferredHandler, false, this);
+}
+
+PendingChannelRequest *Account::ensureTextChatroom(
+        const QString &roomName,
+        QDateTime userActionTime,
+        const QString &preferredHandler)
+{
+    QVariantMap request;
+    request.insert(QLatin1String(TELEPATHY_INTERFACE_CHANNEL ".ChannelType"),
+                   TELEPATHY_INTERFACE_CHANNEL_TYPE_TEXT);
+    request.insert(QLatin1String(TELEPATHY_INTERFACE_CHANNEL ".TargetHandleType"),
+                   Tp::HandleTypeRoom);
+    request.insert(QLatin1String(TELEPATHY_INTERFACE_CHANNEL ".TargetID"),
+                   roomName);
+    return new PendingChannelRequest(dbusConnection(), objectPath(),
+            request, userActionTime, preferredHandler, false, this);
+}
+
+PendingChannelRequest *Account::ensureMediaCall(
+        const QString &contactIdentifier,
+        QDateTime userActionTime,
+        const QString &preferredHandler)
+{
+    QVariantMap request;
+    request.insert(QLatin1String(TELEPATHY_INTERFACE_CHANNEL ".ChannelType"),
+                   TELEPATHY_INTERFACE_CHANNEL_TYPE_STREAMED_MEDIA);
+    request.insert(QLatin1String(TELEPATHY_INTERFACE_CHANNEL ".TargetHandleType"),
+                   Tp::HandleTypeContact);
+    request.insert(QLatin1String(TELEPATHY_INTERFACE_CHANNEL ".TargetID"),
+                   contactIdentifier);
+    return new PendingChannelRequest(dbusConnection(), objectPath(),
+            request, userActionTime, preferredHandler, false, this);
+}
+
+PendingChannelRequest *Account::ensureMediaCall(
+        const ContactPtr &contact,
+        QDateTime userActionTime,
+        const QString &preferredHandler)
+{
+    QVariantMap request;
+    request.insert(QLatin1String(TELEPATHY_INTERFACE_CHANNEL ".ChannelType"),
+                   TELEPATHY_INTERFACE_CHANNEL_TYPE_STREAMED_MEDIA);
+    request.insert(QLatin1String(TELEPATHY_INTERFACE_CHANNEL ".TargetHandleType"),
+                   Tp::HandleTypeContact);
+    request.insert(QLatin1String(TELEPATHY_INTERFACE_CHANNEL ".TargetHandle"),
+                   contact ? contact->handle().at(0) : 0);
+    return new PendingChannelRequest(dbusConnection(), objectPath(),
+            request, userActionTime, preferredHandler, false, this);
+}
+
+// advanced
+PendingChannelRequest *Account::createChannel(
+        const QVariantMap &request,
+        QDateTime userActionTime,
+        const QString &preferredHandler)
+{
+    return new PendingChannelRequest(dbusConnection(), objectPath(),
+            request, userActionTime, preferredHandler, true, this);
+}
+
+PendingChannelRequest *Account::ensureChannel(
+        const QVariantMap &request,
+        QDateTime userActionTime,
+        const QString &preferredHandler)
+{
+    return new PendingChannelRequest(dbusConnection(), objectPath(),
+            request, userActionTime, preferredHandler, false, this);
+}
+
 QStringList Account::interfaces() const
 {
     return mPriv->interfaces;
diff --git a/TelepathyQt4/account.h b/TelepathyQt4/account.h
index dbbf27e..c19b115 100644
--- a/TelepathyQt4/account.h
+++ b/TelepathyQt4/account.h
@@ -48,6 +48,7 @@ namespace Tp
 
 class Account;
 class Connection;
+class PendingChannelRequest;
 class PendingConnection;
 class PendingOperation;
 class PendingReady;
@@ -135,6 +136,39 @@ public:
 
     PendingOperation *remove();
 
+    PendingChannelRequest *ensureTextChat(
+            const QString &contactIdentifier,
+            QDateTime userActionTime = QDateTime::currentDateTime(),
+            const QString &preferredHandler = QString());
+    PendingChannelRequest *ensureTextChat(
+            const ContactPtr &contact,
+            QDateTime userActionTime = QDateTime::currentDateTime(),
+            const QString &preferredHandler = QString());
+
+    PendingChannelRequest *ensureTextChatroom(
+            const QString &roomName,
+            QDateTime userActionTime = QDateTime::currentDateTime(),
+            const QString &preferredHandler = QString());
+
+    PendingChannelRequest *ensureMediaCall(
+            const QString &contactIdentifier,
+            QDateTime userActionTime = QDateTime::currentDateTime(),
+            const QString &preferredHandler = QString());
+    PendingChannelRequest *ensureMediaCall(
+            const ContactPtr &contact,
+            QDateTime userActionTime = QDateTime::currentDateTime(),
+            const QString &preferredHandler = QString());
+
+    // advanced
+    PendingChannelRequest *createChannel(
+            const QVariantMap &requestedProperties,
+            QDateTime userActionTime = QDateTime::currentDateTime(),
+            const QString &preferredHandler = QString());
+    PendingChannelRequest *ensureChannel(
+            const QVariantMap &requestedProperties,
+            QDateTime userActionTime = QDateTime::currentDateTime(),
+            const QString &preferredHandler = QString());
+
     QStringList interfaces() const;
 
     template <class Interface>
-- 
1.5.6.5




More information about the telepathy-commits mailing list