From 2e6e575f81fa198a9c4bb4dfe81bd14eb0f2249b Mon Sep 17 00:00:00 2001 From: Matt Vogt Date: Tue, 15 Oct 2013 11:46:35 +1000 Subject: [PATCH] [libcontacts] Only index non-empty address elements --- src/seasidecache.cpp | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/seasidecache.cpp b/src/seasidecache.cpp index 8b21504..84fbd6d 100644 --- a/src/seasidecache.cpp +++ b/src/seasidecache.cpp @@ -262,7 +262,13 @@ StringPair addressPair(const QContactEmailAddress &emailAddress) StringPair addressPair(const QContactOnlineAccount &account) { - return qMakePair(account.value(QContactOnlineAccount__FieldAccountPath), account.accountUri().toLower()); + StringPair address = qMakePair(account.value(QContactOnlineAccount__FieldAccountPath), account.accountUri().toLower()); + return !address.first.isNull() && !address.second.isNull() ? address : StringPair(); +} + +bool validAddressPair(const StringPair &address) +{ + return (!address.first.isNull() || !address.second.isNull()); } bool ignoreContactForNameGroups(const QContact &contact) @@ -1633,12 +1639,16 @@ bool SeasideCache::updateContactIndexing(const QContact &oldContact, const QCont if (queryDetailTypes.isEmpty() || queryDetailTypes.contains(detailType())) { // Addresses which are no longer in the contact should be de-indexed foreach (const QContactPhoneNumber &phoneNumber, oldContact.details()) { - oldAddresses.insert(addressPair(phoneNumber)); + const StringPair address(addressPair(phoneNumber)); + if (validAddressPair(address)) + oldAddresses.insert(address); } // Update our address indexes for any address details in this contact foreach (const QContactPhoneNumber &phoneNumber, contact.details()) { const StringPair address(addressPair(phoneNumber)); + if (!validAddressPair(address)) + continue; if (!oldAddresses.remove(address)) { // This address was not previously recorded @@ -1661,11 +1671,15 @@ bool SeasideCache::updateContactIndexing(const QContact &oldContact, const QCont if (queryDetailTypes.isEmpty() || queryDetailTypes.contains(detailType())) { foreach (const QContactEmailAddress &emailAddress, oldContact.details()) { - oldAddresses.insert(addressPair(emailAddress)); + const StringPair address(addressPair(emailAddress)); + if (validAddressPair(address)) + oldAddresses.insert(address); } foreach (const QContactEmailAddress &emailAddress, contact.details()) { const StringPair address(addressPair(emailAddress)); + if (!validAddressPair(address)) + continue; if (!oldAddresses.remove(address)) { modified = true; @@ -1686,11 +1700,15 @@ bool SeasideCache::updateContactIndexing(const QContact &oldContact, const QCont if (queryDetailTypes.isEmpty() || queryDetailTypes.contains(detailType())) { foreach (const QContactOnlineAccount &account, oldContact.details()) { - oldAddresses.insert(addressPair(account)); + const StringPair address(addressPair(account)); + if (validAddressPair(address)) + oldAddresses.insert(address); } foreach (const QContactOnlineAccount &account, contact.details()) { const StringPair address(addressPair(account)); + if (!validAddressPair(address)) + continue; if (!oldAddresses.remove(address)) { modified = true;