[SCM] ktp-common-internals packaging branch, master, updated. debian/15.12.1-2-1839-gf0635e9
Maximiliano Curia
maxy at moszumanska.debian.org
Mon May 9 09:08:43 UTC 2016
Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-common-internals.git;a=commitdiff;h=8c4e998
The following commit has been merged in the master branch:
commit 8c4e998183fb1296dc5e87fec00ab89f5359779f
Author: Aleix Pol <aleixpol at kde.org>
Date: Thu Feb 26 18:06:01 2015 +0100
Use the contact id to compare contacts rather than the contact pointer
Contact pointers disappear easily and that doesn't map well to how the
pinned model works, especially considering that it might be use before and
after setting everything up.
---
KTp/Declarative/pinned-contacts-model.cpp | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/KTp/Declarative/pinned-contacts-model.cpp b/KTp/Declarative/pinned-contacts-model.cpp
index 2deefa9..93b921a 100644
--- a/KTp/Declarative/pinned-contacts-model.cpp
+++ b/KTp/Declarative/pinned-contacts-model.cpp
@@ -94,8 +94,8 @@ void PinnedContactsModel::setState(const QStringList &pins)
QModelIndex PinnedContactsModel::indexForContact(const KTp::ContactPtr &contact) const
{
- for (int i=0; i<d->m_pins.size();i++) {
- if (d->m_pins[i]->contact() == contact) {
+ for (int i=0; i<d->m_pins.size() && contact; i++) {
+ if (d->m_pins[i]->contactId() == contact->id()) {
return index(i);
}
}
@@ -193,6 +193,11 @@ void PinnedContactsModel::removeContactPin(const KTp::PersistentContactPtr &pin)
void PinnedContactsModel::appendContactPin(const KTp::PersistentContactPtr &pin)
{
+ auto samePin = [pin](const KTp::PersistentContactPtr &p) -> bool { return p->contactId() == pin->contactId(); };
+ if (std::find_if(d->m_pins.constBegin(), d->m_pins.constEnd(), samePin) != d->m_pins.constEnd()) {
+ return;
+ }
+
int s = d->m_pins.size();
beginInsertRows(QModelIndex(), s, s);
d->m_pins += pin;
@@ -254,9 +259,10 @@ void PinnedContactsModel::conversationsStateChanged(const QModelIndex &parent, i
for (int i = start; i <= end; i++) {
QModelIndex idx = d->conversations->index(i, 0, parent);
Conversation* conv = idx.data(ConversationsModel::ConversationRole).value<Conversation*>();
- KTp::ContactPtr contact = conv->targetContact();
+ QString contactId = conv->targetContact()->id();
+
Q_FOREACH(const KTp::PersistentContactPtr &p, d->m_pins) {
- if (p->contact() == contact) {
+ if (p->contactId() == contactId) {
QModelIndex contactIdx = indexForContact(p->contact());
//We need to delay the dataChanged until the next event loop, when endRowsRemoved has been called
QMetaObject::invokeMethod(this, "dataChanged", Qt::QueuedConnection, Q_ARG(QModelIndex, contactIdx), Q_ARG(QModelIndex, contactIdx));
--
ktp-common-internals packaging
More information about the pkg-kde-commits
mailing list