From 9deb603a8f93a77498cfcce5f43b93c74c8afffb Mon Sep 17 00:00:00 2001 From: Chris Adams Date: Thu, 21 Feb 2019 12:04:51 +1000 Subject: [PATCH] [libcontacts] Replace name group with display label group. Contributes to JB#44742 --- src/seasidecache.cpp | 212 ++++++++++++--------------------------- src/seasidecache.h | 41 ++++---- src/seasidenamegrouper.h | 52 ---------- src/src.pro | 4 +- 4 files changed, 82 insertions(+), 227 deletions(-) delete mode 100644 src/seasidenamegrouper.h diff --git a/src/seasidecache.cpp b/src/seasidecache.cpp index 4bbc912..f111e1c 100644 --- a/src/seasidecache.cpp +++ b/src/seasidecache.cpp @@ -33,6 +33,7 @@ #include "synchronizelists.h" +#include #include #include #include @@ -87,18 +88,6 @@ const QString isNotRelationshipType = QString::fromLatin1("IsNot"); const QString syncTargetLocal = QLatin1String("local"); const QString syncTargetWasLocal = QLatin1String("was_local"); -int getContactNameGroupCount() -{ - return mLocale.exemplarCharactersIndex().count(); -} - -QStringList getAllContactNameGroups() -{ - QStringList groups(mLocale.exemplarCharactersIndex()); - groups.append(QString::fromLatin1("#")); - return groups; -} - // Find the script that all letters in the name belong to, else yield Unknown QChar::Script nameScript(const QString &name) { @@ -389,7 +378,7 @@ bool validAddressPair(const StringPair &address) return (!address.first.isEmpty() || !address.second.isEmpty()); } -bool ignoreContactForNameGroups(const QContact &contact) +bool ignoreContactForDisplayLabelGroups(const QContact &contact) { static const QString aggregate(QString::fromLatin1("aggregate")); @@ -507,8 +496,8 @@ int bestPhoneNumberMatchLength(const QContact &contact, const QString &match) } SeasideCache *SeasideCache::instancePtr = 0; -int SeasideCache::contactNameGroupCount = getContactNameGroupCount(); -QStringList SeasideCache::allContactNameGroups = getAllContactNameGroups(); +int SeasideCache::contactDisplayLabelGroupCount = 0; +QStringList SeasideCache::allContactDisplayLabelGroups = QStringList(); QTranslator *SeasideCache::engEnTranslator = 0; QTranslator *SeasideCache::translator = 0; @@ -592,6 +581,9 @@ SeasideCache::SeasideCache() // need to find it from the manager's engine object typedef QtContactsSqliteExtensions::ContactManagerEngine EngineType; EngineType *cme = dynamic_cast(QContactManagerData::managerData(mgr)->m_engine); + connect(cme, SIGNAL(displayLabelGroupsChanged(QStringList)), + this, SLOT(displayLabelGroupsChanged(QStringList))); + displayLabelGroupsChanged(cme->displayLabelGroups()); connect(mgr, SIGNAL(dataChanged()), this, SLOT(updateContacts())); connect(mgr, SIGNAL(contactsAdded(QList)), @@ -698,19 +690,19 @@ void SeasideCache::unregisterUser(QObject *user) checkForExpiry(); } -void SeasideCache::registerNameGroupChangeListener(SeasideNameGroupChangeListener *listener) +void SeasideCache::registerDisplayLabelGroupChangeListener(SeasideDisplayLabelGroupChangeListener *listener) { // Ensure the cache has been instantiated instance(); - instancePtr->m_nameGroupChangeListeners.append(listener); + instancePtr->m_displayLabelGroupChangeListeners.append(listener); } -void SeasideCache::unregisterNameGroupChangeListener(SeasideNameGroupChangeListener *listener) +void SeasideCache::unregisterDisplayLabelGroupChangeListener(SeasideDisplayLabelGroupChangeListener *listener) { if (!instancePtr) return; - instancePtr->m_nameGroupChangeListeners.removeAll(listener); + instancePtr->m_displayLabelGroupChangeListeners.removeAll(listener); } void SeasideCache::registerChangeListener(ChangeListener *listener) @@ -772,88 +764,26 @@ void SeasideCache::unregisterResolveListener(ResolveListener *listener) } } -void SeasideCache::setNameGrouper(SeasideNameGrouper *grouper) -{ - // Ensure the cache has been instantiated - instance(); - - instancePtr->m_nameGrouper.reset(grouper); - - allContactNameGroups = instancePtr->m_nameGrouper->allNameGroups(); - contactNameGroupCount = allContactNameGroups.count(); - if (!allContactNameGroups.contains(QLatin1String("#"))) - allContactNameGroups << QLatin1String("#"); -} - -QString SeasideCache::nameGroup(const CacheItem *cacheItem) +QString SeasideCache::displayLabelGroup(const CacheItem *cacheItem) { if (!cacheItem) return QString(); - return cacheItem->nameGroup; + return cacheItem->displayLabelGroup; } -QString SeasideCache::determineNameGroup(const CacheItem *cacheItem) -{ - if (!cacheItem) - return QString(); - - if (!instancePtr->m_nameGrouper.isNull()) { - QString group = instancePtr->m_nameGrouper->nameGroupForContact(cacheItem->contact, groupProperty()); - if (!group.isNull() && allContactNameGroups.contains(group)) { - return group; - } - } - - const QContactName name(cacheItem->contact.detail()); - const QString nameProperty(groupProperty() == QString::fromLatin1("firstName") ? name.firstName() : name.lastName()); - - QString group; - if (!nameProperty.isEmpty()) { - group = mLocale.indexBucket(nameProperty); - } else if (!cacheItem->displayLabel.isEmpty()) { - group = mLocale.indexBucket(cacheItem->displayLabel); - } - - if (!group.isEmpty()) { - if (!allContactNameGroups.contains(group)) { - // If this group is some kind of digit, group under '#' - if (mLocale.toLatinNumbers(group.mid(0, 1)).at(0).isDigit()) { - group = QString(); - } - } - } - - if (group.isEmpty()) { - group = QString::fromLatin1("#"); - } else if (!allContactNameGroups.contains(group)) { - // Insert before the '#' group, which is always last, and after the pre-defined groups - const int maxIndex = allContactNameGroups.count() - 1; - int index = qMin(contactNameGroupCount, maxIndex); - for ( ; index < maxIndex; ++index) { - if (group < allContactNameGroups.at(index)) { - break; - } - } - - allContactNameGroups.insert(index, group); - } - - return group; -} - -QStringList SeasideCache::allNameGroups() +QStringList SeasideCache::allDisplayLabelGroups() { // Ensure the cache has been instantiated instance(); - return allContactNameGroups; + return allContactDisplayLabelGroups; } -QHash > SeasideCache::nameGroupMembers() +QHash > SeasideCache::displayLabelGroupMembers() { if (instancePtr) - return instancePtr->m_contactNameGroups; + return instancePtr->m_contactDisplayLabelGroups; return QHash >(); } @@ -1132,10 +1062,10 @@ void SeasideCache::removeContactData(quint32 iid, FilterType filter) m_contacts[filter].removeAt(row); if (filter == FilterAll) { - const QString group(nameGroup(existingItem(iid))); - QSet modifiedNameGroups; - removeFromContactNameGroup(iid, group, &modifiedNameGroups); - notifyNameGroupsChanged(modifiedNameGroups); + const QString group(displayLabelGroup(existingItem(iid))); + QSet modifiedDisplayLabelGroups; + removeFromContactDisplayLabelGroup(iid, group, &modifiedDisplayLabelGroups); + notifyDisplayLabelGroupsChanged(modifiedDisplayLabelGroups); } for (int i = 0; i < models.count(); ++i) @@ -1979,11 +1909,11 @@ bool SeasideCache::event(QEvent *event) // Before removal, ensure none of these contacts are in name groups foreach (quint32 iid, removeIds) { if (CacheItem *item = existingItem(iid)) { - removeFromContactNameGroup(item->iid, item->nameGroup, &modifiedGroups); + removeFromContactDisplayLabelGroup(item->iid, item->displayLabelGroup, &modifiedGroups); } } - notifyNameGroupsChanged(modifiedGroups); + notifyDisplayLabelGroupsChanged(modifiedGroups); // Remove the contacts from the cache foreach (quint32 iid, removeIds) { @@ -2181,7 +2111,7 @@ void SeasideCache::updateCache(CacheItem *item, const QContact &contact, bool pa } item->displayLabel = generateDisplayLabel(item->contact, displayLabelOrder()); - item->nameGroup = determineNameGroup(item); + item->displayLabelGroup = contact.detail().value(QContactDisplayLabel__FieldLabelGroup).toString(); if (!initialInsert) { reportItemUpdated(item); @@ -2497,7 +2427,7 @@ void SeasideCache::applyContactUpdates(const QList &contacts, const QS foreach (QContact contact, contacts) { quint32 iid = internalId(contact); - QString oldNameGroup; + QString oldDisplayLabelGroup; QString oldDisplayLabel; CacheItem *item = existingItem(iid); @@ -2506,7 +2436,7 @@ void SeasideCache::applyContactUpdates(const QList &contacts, const QS item = &(m_people[iid]); item->iid = iid; } else { - oldNameGroup = item->nameGroup; + oldDisplayLabelGroup = item->displayLabelGroup; oldDisplayLabel = item->displayLabel; if (partialFetch) { @@ -2531,10 +2461,10 @@ void SeasideCache::applyContactUpdates(const QList &contacts, const QS roleDataChanged |= (item->displayLabel != oldDisplayLabel); // do this even if !roleDataChanged as name groups are affected by other display label changes - if (item->nameGroup != oldNameGroup) { - if (!ignoreContactForNameGroups(item->contact)) { - addToContactNameGroup(item->iid, item->nameGroup, &modifiedGroups); - removeFromContactNameGroup(item->iid, oldNameGroup, &modifiedGroups); + if (item->displayLabelGroup != oldDisplayLabelGroup) { + if (!ignoreContactForDisplayLabelGroups(item->contact)) { + addToContactDisplayLabelGroup(item->iid, item->displayLabelGroup, &modifiedGroups); + removeFromContactDisplayLabelGroup(item->iid, oldDisplayLabelGroup, &modifiedGroups); } } @@ -2543,45 +2473,45 @@ void SeasideCache::applyContactUpdates(const QList &contacts, const QS } } - notifyNameGroupsChanged(modifiedGroups); + notifyDisplayLabelGroupsChanged(modifiedGroups); } -void SeasideCache::addToContactNameGroup(quint32 iid, const QString &group, QSet *modifiedGroups) +void SeasideCache::addToContactDisplayLabelGroup(quint32 iid, const QString &group, QSet *modifiedGroups) { if (!group.isEmpty()) { - QSet &set(m_contactNameGroups[group]); + QSet &set(m_contactDisplayLabelGroups[group]); if (!set.contains(iid)) { set.insert(iid); - if (modifiedGroups && !m_nameGroupChangeListeners.isEmpty()) { + if (modifiedGroups && !m_displayLabelGroupChangeListeners.isEmpty()) { modifiedGroups->insert(group); } } } } -void SeasideCache::removeFromContactNameGroup(quint32 iid, const QString &group, QSet *modifiedGroups) +void SeasideCache::removeFromContactDisplayLabelGroup(quint32 iid, const QString &group, QSet *modifiedGroups) { if (!group.isEmpty()) { - QSet &set(m_contactNameGroups[group]); + QSet &set(m_contactDisplayLabelGroups[group]); if (set.remove(iid)) { - if (modifiedGroups && !m_nameGroupChangeListeners.isEmpty()) { + if (modifiedGroups && !m_displayLabelGroupChangeListeners.isEmpty()) { modifiedGroups->insert(group); } } } } -void SeasideCache::notifyNameGroupsChanged(const QSet &groups) +void SeasideCache::notifyDisplayLabelGroupsChanged(const QSet &groups) { - if (groups.isEmpty() || m_nameGroupChangeListeners.isEmpty()) + if (groups.isEmpty() || m_displayLabelGroupChangeListeners.isEmpty()) return; QHash > updates; foreach (const QString &group, groups) - updates.insert(group, m_contactNameGroups[group]); + updates.insert(group, m_contactDisplayLabelGroups[group]); - for (int i = 0; i < m_nameGroupChangeListeners.count(); ++i) - m_nameGroupChangeListeners[i]->nameGroupsUpdated(updates); + for (int i = 0; i < m_displayLabelGroupChangeListeners.count(); ++i) + m_displayLabelGroupChangeListeners[i]->displayLabelGroupsUpdated(updates); } void SeasideCache::contactIdsAvailable() @@ -2695,14 +2625,14 @@ void SeasideCache::appendContacts(const QList &contacts, FilterType fi updateCache(item, contact, partialFetch, true); if (filterType == FilterAll) { - addToContactNameGroup(iid, nameGroup(item), &modifiedGroups); + addToContactDisplayLabelGroup(iid, displayLabelGroup(item), &modifiedGroups); } } for (int i = 0; i < models.count(); ++i) models.at(i)->sourceItemsInserted(begin, end); - notifyNameGroupsChanged(modifiedGroups); + notifyDisplayLabelGroupsChanged(modifiedGroups); } } } @@ -2938,8 +2868,11 @@ void SeasideCache::setSortOrder(const QString &property) lastNameOrder.setDirection(Qt::AscendingOrder); lastNameOrder.setBlankPolicy(QContactSortOrder::BlanksFirst); - m_sortOrder = firstNameFirst ? (QList() << firstNameOrder << lastNameOrder) - : (QList() << lastNameOrder << firstNameOrder); + QContactSortOrder displayLabelGroupOrder; + setDetailType(displayLabelGroupOrder, QContactDisplayLabel__FieldLabelGroup); + + m_sortOrder = firstNameFirst ? (QList() << displayLabelGroupOrder << firstNameOrder << lastNameOrder) + : (QList() << displayLabelGroupOrder << lastNameOrder << firstNameOrder); m_onlineSortOrder = m_sortOrder; @@ -2952,8 +2885,6 @@ void SeasideCache::setSortOrder(const QString &property) void SeasideCache::displayLabelOrderChanged(CacheConfiguration::DisplayLabelOrder order) { - QSet modifiedGroups; - // Update the display labels typedef QHash::iterator iterator; for (iterator it = m_people.begin(); it != m_people.end(); ++it) { @@ -2969,21 +2900,8 @@ void SeasideCache::displayLabelOrderChanged(CacheConfiguration::DisplayLabelOrde if (it->itemData) { it->itemData->displayLabelOrderChanged(static_cast(order)); } - - // If the contact's name group is derived from display label, it may have changed - const QString group(determineNameGroup(&*it)); - if (group != it->nameGroup) { - if (!ignoreContactForNameGroups(it->contact)) { - removeFromContactNameGroup(it->iid, it->nameGroup, &modifiedGroups); - - it->nameGroup = group; - addToContactNameGroup(it->iid, it->nameGroup, &modifiedGroups); - } - } } - notifyNameGroupsChanged(modifiedGroups); - for (int i = 0; i < FilterTypesCount; ++i) { const QList &models = m_models[i]; for (int j = 0; j < models.count(); ++j) { @@ -2994,6 +2912,12 @@ void SeasideCache::displayLabelOrderChanged(CacheConfiguration::DisplayLabelOrde } } +void SeasideCache::displayLabelGroupsChanged(const QStringList &groups) +{ + allContactDisplayLabelGroups = groups; + contactDisplayLabelGroupCount = groups.count(); +} + void SeasideCache::sortPropertyChanged(const QString &sortProperty) { setSortOrder(sortProperty); @@ -3013,25 +2937,11 @@ void SeasideCache::sortPropertyChanged(const QString &sortProperty) void SeasideCache::groupPropertyChanged(const QString &) { - // Update the name groups - QSet modifiedGroups; - - typedef QHash::iterator iterator; - for (iterator it = m_people.begin(); it != m_people.end(); ++it) { - // Update the nameGroup for this contact - const QString group(determineNameGroup(&*it)); - if (group != it->nameGroup) { - if (!ignoreContactForNameGroups(it->contact)) { - removeFromContactNameGroup(it->iid, it->nameGroup, &modifiedGroups); - - it->nameGroup = group; - addToContactNameGroup(it->iid, it->nameGroup, &modifiedGroups); - } - } - } - - notifyNameGroupsChanged(modifiedGroups); + // It is unfortunate that this is required at all! + // Maybe handling for this could be added to dataChanged() + // instead? TODO: investigate that possibility. + // The backend will automatically update, but notify the models of the change. for (int i = 0; i < FilterTypesCount; ++i) { const QList &models = m_models[i]; for (int j = 0; j < models.count(); ++j) { @@ -3040,6 +2950,10 @@ void SeasideCache::groupPropertyChanged(const QString &) model->sourceItemsChanged(); } } + + // Update the sorted list order + m_refreshRequired = true; + requestUpdate(); } void SeasideCache::displayStatusChanged(const QString &status) diff --git a/src/seasidecache.h b/src/seasidecache.h index 588631b..af94380 100644 --- a/src/seasidecache.h +++ b/src/seasidecache.h @@ -34,7 +34,6 @@ #include "contactcacheexport.h" #include "cacheconfiguration.h" -#include "seasidenamegrouper.h" #include #include @@ -62,13 +61,13 @@ QTCONTACTS_USE_NAMESPACE -class CONTACTCACHE_EXPORT SeasideNameGroupChangeListener +class CONTACTCACHE_EXPORT SeasideDisplayLabelGroupChangeListener { public: - SeasideNameGroupChangeListener() {} - ~SeasideNameGroupChangeListener() {} + SeasideDisplayLabelGroupChangeListener() {} + ~SeasideDisplayLabelGroupChangeListener() {} - virtual void nameGroupsUpdated(const QHash > &groups) = 0; + virtual void displayLabelGroupsUpdated(const QHash > &groups) = 0; }; class CONTACTCACHE_EXPORT SeasideCache : public QObject @@ -200,7 +199,7 @@ class CONTACTCACHE_EXPORT SeasideCache : public QObject quint64 statusFlags; ContactState contactState; ItemListener *listeners; - QString nameGroup; + QString displayLabelGroup; QString displayLabel; }; @@ -267,16 +266,14 @@ class CONTACTCACHE_EXPORT SeasideCache : public QObject static void registerUser(QObject *user); static void unregisterUser(QObject *user); - static void registerNameGroupChangeListener(SeasideNameGroupChangeListener *listener); - static void unregisterNameGroupChangeListener(SeasideNameGroupChangeListener *listener); + static void registerDisplayLabelGroupChangeListener(SeasideDisplayLabelGroupChangeListener *listener); + static void unregisterDisplayLabelGroupChangeListener(SeasideDisplayLabelGroupChangeListener *listener); static void registerChangeListener(ChangeListener *listener); static void unregisterChangeListener(ChangeListener *listener); static void unregisterResolveListener(ResolveListener *listener); - static void setNameGrouper(SeasideNameGrouper *grouper); - static DisplayLabelOrder displayLabelOrder(); static QString sortProperty(); static QString groupProperty(); @@ -293,11 +290,9 @@ class CONTACTCACHE_EXPORT SeasideCache : public QObject static void ensureCompletion(CacheItem *cacheItem); static void refreshContact(CacheItem *cacheItem); - static QString nameGroup(const CacheItem *cacheItem); - static QString determineNameGroup(const CacheItem *cacheItem); - - static QStringList allNameGroups(); - static QHash > nameGroupMembers(); + static QString displayLabelGroup(const CacheItem *cacheItem); + static QStringList allDisplayLabelGroups(); + static QHash > displayLabelGroupMembers(); static CacheItem *itemByPhoneNumber(const QString &number, bool requireComplete = true); static CacheItem *itemByEmailAddress(const QString &address, bool requireComplete = true); @@ -355,6 +350,7 @@ private slots: void contactsChanged(const QList &contactIds); void contactsPresenceChanged(const QList &contactIds); void contactsRemoved(const QList &contactIds); + void displayLabelGroupsChanged(const QStringList &groups); void displayLabelOrderChanged(CacheConfiguration::DisplayLabelOrder order); void sortPropertyChanged(const QString &sortProperty); void groupPropertyChanged(const QString &groupProperty); @@ -396,9 +392,9 @@ private slots: void removeContactData(quint32 iid, FilterType filter); void makePopulated(FilterType filter); - void addToContactNameGroup(quint32 iid, const QString &group, QSet *modifiedGroups = 0); - void removeFromContactNameGroup(quint32 iid, const QString &group, QSet *modifiedGroups = 0); - void notifyNameGroupsChanged(const QSet &groups); + void addToContactDisplayLabelGroup(quint32 iid, const QString &group, QSet *modifiedGroups = 0); + void removeFromContactDisplayLabelGroup(quint32 iid, const QString &group, QSet *modifiedGroups = 0); + void notifyDisplayLabelGroupsChanged(const QSet &groups); void updateConstituentAggregations(const QContactId &contactId); void completeContactAggregation(const QContactId &contact1Id, const QContactId &contact2Id); @@ -421,7 +417,7 @@ private slots: QHash m_emailAddressIds; QHash, quint32> m_onlineAccountIds; QHash m_contactsToSave; - QHash > m_contactNameGroups; + QHash > m_contactDisplayLabelGroups; QList m_contactsToCreate; QHash, QList > > m_contactsToAppend; QList, QList > > m_contactsToUpdate; @@ -435,8 +431,7 @@ private slots: QList > m_contactPairsToLink; QList m_relationshipsToSave; QList m_relationshipsToRemove; - QScopedPointer m_nameGrouper; - QList m_nameGroupChangeListeners; + QList m_displayLabelGroupChangeListeners; QList m_changeListeners; QList m_models[FilterTypesCount]; QSet m_users; @@ -490,8 +485,8 @@ private slots: QElapsedTimer m_fetchPostponed; static SeasideCache *instancePtr; - static int contactNameGroupCount; - static QStringList allContactNameGroups; + static int contactDisplayLabelGroupCount; + static QStringList allContactDisplayLabelGroups; static QTranslator *engEnTranslator; static QTranslator *translator; diff --git a/src/seasidenamegrouper.h b/src/seasidenamegrouper.h deleted file mode 100644 index 6c41525..0000000 --- a/src/seasidenamegrouper.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (C) 2013 Jolla Mobile - * - * You may use this file under the terms of the BSD license as follows: - * - * "Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Nemo Mobile nor the names of its contributors - * may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." - */ - -#ifndef SEASIDENAMEGROUPER_H -#define SEASIDENAMEGROUPER_H - -#include "contactcacheexport.h" - -#include -#include - -QTCONTACTS_USE_NAMESPACE - -class CONTACTCACHE_EXPORT SeasideNameGrouper -{ -public: - SeasideNameGrouper() {} - virtual ~SeasideNameGrouper() {} - - virtual QString nameGroupForContact(const QContact &contact, const QString &groupProperty) const = 0; - virtual QStringList allNameGroups() const = 0; -}; - -#endif // SEASIDENAMEGROUPER_H diff --git a/src/src.pro b/src/src.pro index 335dc3e..78cec88 100644 --- a/src/src.pro +++ b/src/src.pro @@ -21,7 +21,7 @@ packagesExist(mlite5) { } else { warning("mlite not available. Some functionality may not work as expected.") } -PKGCONFIG += mlocale5 mce +PKGCONFIG += mlocale5 mce qtcontacts-sqlite-qt5-extensions DEFINES += CONTACTCACHE_BUILD @@ -49,7 +49,6 @@ HEADERS += \ $$PWD/seasideimport.h \ $$PWD/seasidecontactbuilder.h \ $$PWD/synchronizelists.h \ - $$PWD/seasidenamegrouper.h \ $$PWD/seasidepropertyhandler.h headers.files = \ @@ -60,7 +59,6 @@ headers.files = \ $$PWD/seasideimport.h \ $$PWD/seasidecontactbuilder.h \ $$PWD/synchronizelists.h \ - $$PWD/seasidenamegrouper.h \ $$PWD/seasidepropertyhandler.h headers.path = $$PREFIX/include/$$TARGET INSTALLS += headers