--- a/qtmobility/plugins/contacts/maemo5/qcontactmaemo5backend.cpp Fri Jun 11 14:26:25 2010 +0300
+++ b/qtmobility/plugins/contacts/maemo5/qcontactmaemo5backend.cpp Wed Jun 23 19:08:38 2010 +0300
@@ -97,17 +97,38 @@
/* Synthesise the display label of a contact */
QString QContactMaemo5Engine::synthesizedDisplayLabel(const QContact& contact, QContactManager::Error* error) const
{
- Q_UNUSED(error)
- QString label = QContactManagerEngine::synthesizedDisplayLabel(contact, error);
+ QString label;
+
+ // Try to get the display name from the OSSO-ABook Contact
+ label = d->m_abook->getDisplayName(contact);
- if (label.isEmpty()) {
- QContactNickname n = contact.detail(QContactNickname::DefinitionName);
- label = n.nickname();
+ // Synthesise the display label for not saved contacts
+ // A. FirstName + LastName
+ if (label.isEmpty()){
+ QContactName name = contact.detail(QContactName::DefinitionName);
+ QStringList nameList;
+
+ nameList << name.firstName();
+ if (name.lastName().count()){
+ nameList << name.lastName();
+ }
+
+ label = nameList.join(QString(' '));
}
- if (label.isEmpty())
- label = "No name";
+ // B. Email
+ if (label.isEmpty()){
+ QContactEmailAddress email = contact.detail(QContactEmailAddress::DefinitionName);
+ label = email.emailAddress();
+ }
+ //
+ if (label.isEmpty()){
+ *error = QContactManager::UnspecifiedError;
+ return QString("No name");
+ }
+
+ *error = QContactManager::NoError;
return label;
}
@@ -144,8 +165,26 @@
{
Q_CHECK_PTR(d->m_abook);
- //return QContactManagerEngine::contactIds(filter, sortOrders, error);
- return d->m_abook->contactIds(filter, sortOrders, error);
+ QList<QContactLocalId> rtn;
+
+ // do this naively for now...
+ QContactManager::Error tempError = QContactManager::NoError;
+ QList<QContactLocalId> allIds = d->m_abook->contactIds(filter, sortOrders, error);
+ QList<QContact> sortedAndFiltered;
+
+ foreach (const QContactLocalId& currId, allIds) {
+ QContact curr = contact(currId, QContactFetchHint(), &tempError);
+ if (tempError != QContactManager::NoError)
+ *error = tempError;
+ if (QContactManagerEngine::testFilter(filter, curr)) {
+ QContactManagerEngine::addSorted(&sortedAndFiltered, curr, sortOrders);
+ }
+ }
+
+ foreach (const QContact& contact, sortedAndFiltered) {
+ rtn.append(contact.localId());
+ }
+ return rtn;
}
QList<QContact> QContactMaemo5Engine::contacts(const QContactFilter & filter, const QList<QContactSortOrder> & sortOrders, const QContactFetchHint & fetchHint,
@@ -166,6 +205,7 @@
Q_UNUSED(fetchHint); //TODO
Q_CHECK_PTR(d->m_abook);
+ //NOTE getQContact can't set the displayLabel
QContact *contact = d->m_abook->getQContact(contactId, error);
QContact rtn(*contact);
delete contact;
@@ -338,7 +378,7 @@
fields.remove(QContactOrganization::FieldDepartment);
fields.remove(QContactOrganization::FieldLocation);
fields.remove(QContactOrganization::FieldLogoUrl);
- fields.remove(QContactOrganization::FieldName);
+ fields.remove(QContactOrganization::FieldTitle);
fields.remove(QContactOrganization::FieldRole);
defns[contactType][QContactOrganization::DefinitionName].setFields(fields);