[SCM] ktp-contact-applet packaging branch, master, updated. debian/15.12.1-1-966-gde83ac5

Maximiliano Curia maxy at moszumanska.debian.org
Sat May 28 00:11:28 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-desktop-applets.git;a=commitdiff;h=a79340f

The following commit has been merged in the master branch:
commit a79340f1c458007041dc87e082e6920aa8ba9e70
Author: Francesco Nwokeka <francesco.nwokeka at gmail.com>
Date:   Fri Aug 19 18:54:49 2011 +0200

    Connected contact signals to QML
    
    the plasmoid reflects contact avatar and presence settings now
---
 src/contactWrapper.cpp                  | 17 +++++++++++++++++
 src/contactWrapper.h                    |  5 +++++
 src/declarative/contents/ui/Contact.qml |  6 ++++--
 src/declarative/contents/ui/main.qml    |  2 +-
 src/telepathyContact.cpp                |  4 +++-
 5 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/src/contactWrapper.cpp b/src/contactWrapper.cpp
index f629d3a..1c725ef 100644
--- a/src/contactWrapper.cpp
+++ b/src/contactWrapper.cpp
@@ -69,12 +69,29 @@ QString ContactWrapper::presenceStatus() const
     }
 }
 
+void ContactWrapper::setupConnects()
+{
+    connect(m_contact.data(), SIGNAL(avatarDataChanged(Tp::AvatarData)), this, SIGNAL(avatarChanged()));
+    connect(m_contact.data(), SIGNAL(presenceChanged(Tp::Presence)), this, SIGNAL(presenceChanged()));
+}
+
 void ContactWrapper::setContact(const Tp::ContactPtr& newContact)
 {
     qDebug() << "setting new contact to: " << newContact->id();
+
+    // disconnect signals
+    undoConnects();
     m_contact = newContact;
 
+    // establish new signals
+    setupConnects();
+
     // tell QML we have a new contact
     emit(newContactSet());
 }
 
+void ContactWrapper::undoConnects()
+{
+    disconnect(m_contact.data(), 0, 0, 0);
+}
+
diff --git a/src/contactWrapper.h b/src/contactWrapper.h
index aeafa25..1847891 100644
--- a/src/contactWrapper.h
+++ b/src/contactWrapper.h
@@ -53,9 +53,14 @@ public:
     void setContact(const Tp::ContactPtr &newContact);
 
 signals:
+    void avatarChanged();
     void newContactSet();
+    void presenceChanged();
 
 private:
+    void setupConnects();
+    void undoConnects();
+
     Tp::ContactPtr m_contact;
 };
 
diff --git a/src/declarative/contents/ui/Contact.qml b/src/declarative/contents/ui/Contact.qml
index f291c8c..a2badb5 100644
--- a/src/declarative/contents/ui/Contact.qml
+++ b/src/declarative/contents/ui/Contact.qml
@@ -40,10 +40,12 @@ Item {
 
     function update()
     {
-        wrapper.status = TelepathyContact.presenceStatus;
+        if ( wrapper.status != TelepathyContact.presenceStatus) {
+            wrapper.status = TelepathyContact.presenceStatus;
+            avatar.setAvatarPresenceStatus(wrapper.status);
+        }
 
         // update avatar
         avatar.update();
-        avatar.setAvatarPresenceStatus(wrapper.status);
     }
 }
diff --git a/src/declarative/contents/ui/main.qml b/src/declarative/contents/ui/main.qml
index da2b63e..943e550 100644
--- a/src/declarative/contents/ui/main.qml
+++ b/src/declarative/contents/ui/main.qml
@@ -31,7 +31,7 @@ Item {
         anchors.centerIn: parent;
     }
 
-    function onNewContactSet()
+    function updateContact()
     {
         contact.update();
     }
diff --git a/src/telepathyContact.cpp b/src/telepathyContact.cpp
index b60c3e9..d605ca2 100644
--- a/src/telepathyContact.cpp
+++ b/src/telepathyContact.cpp
@@ -69,7 +69,9 @@ void TelepathyContact::init()
         m_qmlObject = dynamic_cast<QObject*>(m_declarative->rootObject());
 
         // connect the qml object to recieve signals from C++ end
-        connect(m_contact, SIGNAL(newContactSet()), m_qmlObject, SLOT(onNewContactSet()));
+        connect(m_contact, SIGNAL(newContactSet()), m_qmlObject, SLOT(updateContact()));
+        connect(m_contact, SIGNAL(avatarChanged()), m_qmlObject, SLOT(updateContact()));
+        connect(m_contact, SIGNAL(presenceChanged()), m_qmlObject, SLOT(updateContact()));
     }
 }
 

-- 
ktp-contact-applet packaging



More information about the pkg-kde-commits mailing list