telepathy-qt: BaseConnection: Added selfID-related stuff.

Alexandr Akulich kaffeine at kemper.freedesktop.org
Wed May 6 01:10:28 PDT 2015


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

Author: Alexandr Akulich <akulichalexander at gmail.com>
Date:   Tue Apr 21 12:59:27 2015 +0500

BaseConnection: Added selfID-related stuff.

Added selfID(), setSelfID(), setSelfContact() methods.
Implemented selfContactChanged() signal.

The selfID property added in 0.27.2.

---

 TelepathyQt/base-connection-internal.h |    4 +++
 TelepathyQt/base-connection.cpp        |   51 ++++++++++++++++++++++++++++----
 TelepathyQt/base-connection.h          |    5 ++++
 3 files changed, 54 insertions(+), 6 deletions(-)

diff --git a/TelepathyQt/base-connection-internal.h b/TelepathyQt/base-connection-internal.h
index 7b395e8..8e4c02c 100644
--- a/TelepathyQt/base-connection-internal.h
+++ b/TelepathyQt/base-connection-internal.h
@@ -35,6 +35,7 @@ class TP_QT_NO_EXPORT BaseConnection::Adaptee : public QObject
     Q_OBJECT
     Q_PROPERTY(QStringList interfaces READ interfaces)
     Q_PROPERTY(uint selfHandle READ selfHandle)
+    Q_PROPERTY(QString selfID READ selfID)
     Q_PROPERTY(uint status READ status)
     Q_PROPERTY(bool hasImmortalHandles READ hasImmortalHandles)
 
@@ -44,6 +45,7 @@ public:
 
     QStringList interfaces() const;
     uint selfHandle() const;
+    QString selfID() const;
     uint status() const;
     bool hasImmortalHandles() const;
 
@@ -80,6 +82,8 @@ private Q_SLOTS:
 Q_SIGNALS:
     void selfHandleChanged(uint selfHandle);
     void newChannel(const QDBusObjectPath &objectPath, const QString &channelType, uint handleType, uint handle, bool suppressHandler);
+
+    void selfContactChanged(uint selfHandle, const QString &selfID);
     void connectionError(const QString &error, const QVariantMap &details);
     void statusChanged(uint status, uint reason);
 
diff --git a/TelepathyQt/base-connection.cpp b/TelepathyQt/base-connection.cpp
index 9455215..373b4d6 100644
--- a/TelepathyQt/base-connection.cpp
+++ b/TelepathyQt/base-connection.cpp
@@ -59,6 +59,7 @@ struct TP_QT_NO_EXPORT BaseConnection::Private {
     QHash<QString, AbstractConnectionInterfacePtr> interfaces;
     QSet<BaseChannelPtr> channels;
     uint selfHandle;
+    QString selfID;
     uint status;
     CreateChannelCallback createChannelCB;
     ConnectCallback connectCB;
@@ -90,7 +91,12 @@ QStringList BaseConnection::Adaptee::interfaces() const
 
 uint BaseConnection::Adaptee::selfHandle() const
 {
-    return mConnection->mPriv->selfHandle;
+    return mConnection->selfHandle();
+}
+
+QString BaseConnection::Adaptee::selfID() const
+{
+    return mConnection->selfID();
 }
 
 uint BaseConnection::Adaptee::status() const
@@ -140,9 +146,9 @@ void BaseConnection::Adaptee::getProtocol(const Service::ConnectionAdaptor::GetP
     context->setFinished(mConnection->protocolName());
 }
 
-void BaseConnection::Adaptee::getSelfHandle(const Tp::Service::ConnectionAdaptor::GetSelfHandleContextPtr &context)
+void BaseConnection::Adaptee::getSelfHandle(const Service::ConnectionAdaptor::GetSelfHandleContextPtr &context)
 {
-    context->setFinished(mConnection->mPriv->selfHandle);
+    context->setFinished(mConnection->selfHandle());
 }
 
 void BaseConnection::Adaptee::getStatus(const Tp::Service::ConnectionAdaptor::GetStatusContextPtr &context)
@@ -303,10 +309,43 @@ uint BaseConnection::selfHandle() const
 
 void BaseConnection::setSelfHandle(uint selfHandle)
 {
-    bool changed = (selfHandle != mPriv->selfHandle);
+    if (selfHandle == mPriv->selfHandle) {
+        return;
+    }
+
     mPriv->selfHandle = selfHandle;
-    if (changed)
-        QMetaObject::invokeMethod(mPriv->adaptee, "selfHandleChanged", Q_ARG(uint, selfHandle));
+    QMetaObject::invokeMethod(mPriv->adaptee, "selfHandleChanged", Q_ARG(uint, mPriv->selfHandle)); //Can simply use emit in Qt5
+    QMetaObject::invokeMethod(mPriv->adaptee, "selfContactChanged", Q_ARG(uint, mPriv->selfHandle), Q_ARG(QString, mPriv->selfID)); //Can simply use emit in Qt5
+}
+
+QString BaseConnection::selfID() const
+{
+    return mPriv->selfID;
+}
+
+void BaseConnection::setSelfID(const QString &selfID)
+{
+    if (selfID == mPriv->selfID) {
+        return;
+    }
+
+    mPriv->selfID = selfID;
+    QMetaObject::invokeMethod(mPriv->adaptee, "selfContactChanged", Q_ARG(uint, mPriv->selfHandle), Q_ARG(QString, mPriv->selfID)); //Can simply use emit in Qt5
+}
+
+void BaseConnection::setSelfContact(uint selfHandle, const QString &selfID)
+{
+    if ((selfHandle == mPriv->selfHandle) && (selfID == mPriv->selfID)) {
+        return;
+    }
+
+    if (selfHandle != mPriv->selfHandle) {
+        QMetaObject::invokeMethod(mPriv->adaptee, "selfHandleChanged", Q_ARG(uint, mPriv->selfHandle)); //Can simply use emit in Qt5
+        mPriv->selfHandle = selfHandle;
+    }
+
+    mPriv->selfID = selfID;
+    QMetaObject::invokeMethod(mPriv->adaptee, "selfContactChanged", Q_ARG(uint, mPriv->selfHandle), Q_ARG(QString, mPriv->selfID)); //Can simply use emit in Qt5
 }
 
 uint BaseConnection::status() const
diff --git a/TelepathyQt/base-connection.h b/TelepathyQt/base-connection.h
index b3958c4..ee3cfb1 100644
--- a/TelepathyQt/base-connection.h
+++ b/TelepathyQt/base-connection.h
@@ -73,6 +73,11 @@ public:
     uint selfHandle() const;
     void setSelfHandle(uint selfHandle);
 
+    QString selfID() const;
+    void setSelfID(const QString &selfID);
+
+    void setSelfContact(uint selfHandle, const QString &selfID);
+
     uint status() const;
     void setStatus(uint newStatus, uint reason);
 



More information about the telepathy-commits mailing list