[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:37 UTC 2016


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

The following commit has been merged in the master branch:
commit 205e229a54668e6fae08d76fb5c101339c8d6605
Author: Francesco Nwokeka <francesco.nwokeka at gmail.com>
Date:   Wed Aug 31 14:36:01 2011 +0200

    FIX on reboot plasmoid now reconnects to specified contactPtr
    
    when offline and killing plasma-desktop, the plasmoid used to forget about it's pointer to the specified contact
---
 src/contactWrapper.cpp   | 30 ++++++++++++++++++++++++++++++
 src/contactWrapper.h     |  5 +++++
 src/telepathyContact.cpp |  8 +++++++-
 3 files changed, 42 insertions(+), 1 deletion(-)

diff --git a/src/contactWrapper.cpp b/src/contactWrapper.cpp
index 82d9835..abb45c2 100644
--- a/src/contactWrapper.cpp
+++ b/src/contactWrapper.cpp
@@ -24,6 +24,7 @@
 
 #include <TelepathyQt4/AvatarData>
 #include <TelepathyQt4/ContactCapabilities>
+#include <TelepathyQt4/ContactManager>
 #include <TelepathyQt4/PendingChannelRequest>
 #include <TelepathyQt4/Presence>
 
@@ -137,6 +138,29 @@ bool ContactWrapper::isAccountOnline() const
     }
 }
 
+void ContactWrapper::onConnectionChanged(const Tp::ConnectionPtr& newConn)
+{
+    // connection needs to be valid
+    if (newConn) {
+        connect(newConn->contactManager().data(), SIGNAL(stateChanged(Tp::ContactListState)), this, SLOT(onContactManagerStateChanged(Tp::ContactListState)));
+    }
+}
+
+void ContactWrapper::onContactManagerStateChanged(Tp::ContactListState newState)
+{
+    if (newState == Tp::ContactListStateSuccess) {
+        QList<Tp::ContactPtr> contactList = m_account->connection()->contactManager()->allKnownContacts().toList();
+        bool match = false;
+
+        for (int i = 0; i < contactList.count() && !match; ++i) {
+            if (contactList.at(i)->id() == m_tempContactId) {
+                match = true;
+                setContact(contactList.at(i));
+            }
+        }
+    }
+}
+
 QString ContactWrapper::presenceStatus() const
 {
     if (m_contact) {
@@ -149,6 +173,7 @@ QString ContactWrapper::presenceStatus() const
 void ContactWrapper::setupAccountConnects()
 {
     // keep track of presence (online/offline is all we need)
+    connect(m_account.data(), SIGNAL(connectionChanged(Tp::ConnectionPtr)), this, SLOT(onConnectionChanged(Tp::ConnectionPtr)));
     connect(m_account.data(), SIGNAL(currentPresenceChanged(Tp::Presence)), this, SIGNAL(accountPresenceChanged()));
 }
 
@@ -225,6 +250,11 @@ void ContactWrapper::setTempAvatar(const QString& path)
     emit(avatarChanged());
 }
 
+void ContactWrapper::setTempContactId(const QString& tempId)
+{
+    m_tempContactId = tempId;
+}
+
 void ContactWrapper::undoAccountConnects()
 {
     if (m_account) {
diff --git a/src/contactWrapper.h b/src/contactWrapper.h
index 52db4f4..c94cf70 100644
--- a/src/contactWrapper.h
+++ b/src/contactWrapper.h
@@ -83,6 +83,8 @@ public:
      */
     void setTempAvatar(const QString &path);
 
+    void setTempContactId(const QString &tempId);
+
 public slots:
     void sendMail();
     void startAudioCall();
@@ -98,6 +100,8 @@ signals:
 
 private slots:
     void genericOperationFinished(Tp::PendingOperation *op);
+    void onConnectionChanged(const Tp::ConnectionPtr &newConn);
+    void onContactManagerStateChanged(Tp::ContactListState state);
 
 private:
     void setupAccountConnects();
@@ -108,6 +112,7 @@ private:
     Tp::AccountPtr m_account;
     Tp::ContactPtr m_contact;
     QString m_tempAvatar;           /** this is the path to the cached avatar for when kde-telepathy is offline */
+    QString m_tempContactId;
 };
 
 #endif  // CONTACT_WRAPER_H
diff --git a/src/telepathyContact.cpp b/src/telepathyContact.cpp
index c89b327..4d7fc49 100644
--- a/src/telepathyContact.cpp
+++ b/src/telepathyContact.cpp
@@ -96,6 +96,7 @@ void TelepathyContact::loadConfig()
 
         // check on account. Shouldn't ever be invalid
         if (!account->isValidAccount()) {
+            /// TODO add error popup box?
             return;
         }
 
@@ -107,12 +108,14 @@ void TelepathyContact::loadConfig()
                 if (contactList.at(i)->id() == contactId) {
                     contact = contactList.at(i);
                     match = true;
-                    setContact(contact, account);
+                    m_contact->setContact(contact);
+                    m_contact->setAccount(account);
                 }
             }
         } else {
             // just load cached avatar image
             m_contact->setTempAvatar(tempAvatar);
+            m_contact->setTempContactId(contactId);
 
             // just set account. When this will go online it will automatically load the contact pointer
             // shown in the plasmoid
@@ -134,6 +137,9 @@ void TelepathyContact::saveConfig()
     group.writeEntry("relatedAccount", m_contact->accountId());
     group.sync();
 
+    // update contactWrapper temp id
+    m_contact->setTempContactId(m_contact->contact()->id());
+
     // tell plasmoid to save config
     configNeedsSaving();
 }

-- 
ktp-contact-applet packaging



More information about the pkg-kde-commits mailing list