[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