telepathy-qt: Add BaseConnection RequestsInterface
David Edmundson
davidedmundson at kemper.freedesktop.org
Wed Sep 3 02:28:45 PDT 2014
Module: telepathy-qt
Branch: master
Commit: c00a4737402dd86630f117d9d5c65a12e1e55582
URL: http://cgit.freedesktop.org/telepathy/telepathy-qt/commit/?id=c00a4737402dd86630f117d9d5c65a12e1e55582
Author: Alexandr Akulich <akulichalexander at gmail.com>
Date: Tue Aug 19 22:55:23 2014 +0600
Add BaseConnection RequestsInterface
---
TelepathyQt/base-connection.cpp | 54 +++++++++++++++++++++------------------
TelepathyQt/base-connection.h | 3 +++
2 files changed, 32 insertions(+), 25 deletions(-)
diff --git a/TelepathyQt/base-connection.cpp b/TelepathyQt/base-connection.cpp
index 260cf36..93ea0dd 100644
--- a/TelepathyQt/base-connection.cpp
+++ b/TelepathyQt/base-connection.cpp
@@ -47,6 +47,7 @@ struct TP_QT_NO_EXPORT BaseConnection::Private {
protocolName(protocolName),
parameters(parameters),
status(Tp::ConnectionStatusDisconnected),
+ requestsIface(Tp::BaseConnectionRequestsInterface::create(connection)),
selfHandle(0),
adaptee(new BaseConnection::Adaptee(dbusConnection, parent)) {
}
@@ -57,6 +58,9 @@ struct TP_QT_NO_EXPORT BaseConnection::Private {
QVariantMap parameters;
uint status;
QHash<QString, AbstractConnectionInterfacePtr> interfaces;
+
+ BaseConnectionRequestsInterfacePtr requestsIface;
+
QSet<BaseChannelPtr> channels;
CreateChannelCallback createChannelCB;
RequestHandlesCallback requestHandlesCB;
@@ -196,6 +200,7 @@ BaseConnection::BaseConnection(const QDBusConnection &dbusConnection,
: DBusService(dbusConnection),
mPriv(new Private(this, dbusConnection, cmName, protocolName, parameters))
{
+ plugInterface(mPriv->requestsIface);
}
/**
@@ -337,15 +342,10 @@ Tp::BaseChannelPtr BaseConnection::createChannel(const QString &channelType,
mPriv->channels.insert(channel);
- BaseConnectionRequestsInterfacePtr reqIface =
- BaseConnectionRequestsInterfacePtr::dynamicCast(interface(TP_QT_IFACE_CONNECTION_INTERFACE_REQUESTS));
-
- if (!reqIface.isNull())
- //emit after return
- QMetaObject::invokeMethod(reqIface.data(), "newChannels",
- Qt::QueuedConnection,
- Q_ARG(Tp::ChannelDetailsList, ChannelDetailsList() << channel->details()));
-
+ //emit after return
+ QMetaObject::invokeMethod(mPriv->requestsIface.data(), "newChannels",
+ Qt::QueuedConnection,
+ Q_ARG(Tp::ChannelDetailsList, ChannelDetailsList() << channel->details()));
//emit after return
QMetaObject::invokeMethod(mPriv->adaptee, "newChannel",
@@ -377,6 +377,21 @@ UIntList BaseConnection::requestHandles(uint handleType, const QStringList &iden
return mPriv->requestHandlesCB(handleType, identifiers, error);
}
+RequestableChannelClassList BaseConnection::requestableChannelClasses() const
+{
+ return mPriv->requestsIface->requestableChannelClasses;
+}
+
+void BaseConnection::setRequestableChannelClasses(const RequestableChannelClassList &requestableChannelClasses)
+{
+ if (mPriv->status == ConnectionStatusConnected) {
+ warning() << "BaseConnection::setRequestableChannelClasses() is called in connected state. Ignored.";
+ return;
+ }
+
+ mPriv->requestsIface->requestableChannelClasses = requestableChannelClasses;
+}
+
Tp::ChannelInfoList BaseConnection::channelsInfo()
{
qDebug() << "BaseConnection::channelsInfo:";
@@ -427,15 +442,10 @@ void BaseConnection::addChannel(BaseChannelPtr channel)
mPriv->channels.insert(channel);
- BaseConnectionRequestsInterfacePtr reqIface =
- BaseConnectionRequestsInterfacePtr::dynamicCast(interface(TP_QT_IFACE_CONNECTION_INTERFACE_REQUESTS));
-
- if (!reqIface.isNull()) {
- //emit after return
- QMetaObject::invokeMethod(reqIface.data(), "newChannels",
- Qt::QueuedConnection,
- Q_ARG(Tp::ChannelDetailsList, ChannelDetailsList() << channel->details()));
- }
+ //emit after return
+ QMetaObject::invokeMethod(mPriv->requestsIface.data(), "newChannels",
+ Qt::QueuedConnection,
+ Q_ARG(Tp::ChannelDetailsList, ChannelDetailsList() << channel->details()));
//emit after return
QMetaObject::invokeMethod(mPriv->adaptee, "newChannel",
@@ -458,13 +468,7 @@ void BaseConnection::removeChannel()
Q_ASSERT(channel);
Q_ASSERT(mPriv->channels.contains(channel));
- BaseConnectionRequestsInterfacePtr reqIface =
- BaseConnectionRequestsInterfacePtr::dynamicCast(interface(TP_QT_IFACE_CONNECTION_INTERFACE_REQUESTS));
-
- if (!reqIface.isNull()) {
- reqIface->channelClosed(QDBusObjectPath(channel->objectPath()));
- }
-
+ mPriv->requestsIface->channelClosed(QDBusObjectPath(channel->objectPath()));
mPriv->channels.remove(channel);
}
diff --git a/TelepathyQt/base-connection.h b/TelepathyQt/base-connection.h
index 8a638f9..3b3e956 100644
--- a/TelepathyQt/base-connection.h
+++ b/TelepathyQt/base-connection.h
@@ -89,6 +89,9 @@ public:
void setRequestHandlesCallback(const RequestHandlesCallback &cb);
UIntList requestHandles(uint handleType, const QStringList &identifiers, DBusError* error);
+ Tp::RequestableChannelClassList requestableChannelClasses() const;
+ void setRequestableChannelClasses(const Tp::RequestableChannelClassList &requestableChannelClasses);
+
//typedef Callback3<uint, const QString&, const QString&, DBusError*> SetPresenceCallback;
//void setSetPresenceCallback(const SetPresenceCallback &cb);
More information about the telepathy-commits
mailing list