From 653a977e79d2d38ca99bceede8d1759f0cfc2462 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Tue, 20 Mar 2018 21:41:21 +0100 Subject: Avoid displaying empty contacts by falling back to the FN --- framework/src/domain/peoplemodel.cpp | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/framework/src/domain/peoplemodel.cpp b/framework/src/domain/peoplemodel.cpp index 108cab48..f52ac53f 100644 --- a/framework/src/domain/peoplemodel.cpp +++ b/framework/src/domain/peoplemodel.cpp @@ -79,6 +79,19 @@ static QStringList toStringList(const QList getFirstnameLastname(const QString &fn) +{ + auto parts = fn.split(' '); + if (parts.isEmpty()) { + return {}; + } + if (parts.size() == 1) { + return {parts.first(), {}}; + } + const auto lastName = parts.takeLast(); + return {parts.join(' '), lastName}; +} + QVariant PeopleModel::data(const QModelIndex &idx, int role) const { auto srcIdx = mapToSource(idx); @@ -94,10 +107,22 @@ QVariant PeopleModel::data(const QModelIndex &idx, int role) const return "contact"; case DomainObject: return QVariant::fromValue(contact); - case FirstName: - return contact->getFirstname(); - case LastName: - return contact->getLastname(); + case FirstName: { + const auto n = contact->getFirstname(); + //Fall back to the fn if we have no name + if (n.isEmpty()) { + return getFirstnameLastname(contact->getFn()).first; + } + return n; + } + case LastName: { + const auto n = contact->getLastname(); + //Fall back to the fn if we have no name + if (n.isEmpty()) { + return getFirstnameLastname(contact->getFn()).second; + } + return n; + } case ImageData: return contact->getPhoto(); } -- cgit v1.2.3