diff --git a/kaddressbookgrantlee/src/formatter/grantleecontactformatter.cpp b/kaddressbookgrantlee/src/formatter/grantleecontactformatter.cpp --- a/kaddressbookgrantlee/src/formatter/grantleecontactformatter.cpp +++ b/kaddressbookgrantlee/src/formatter/grantleecontactformatter.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include #include @@ -44,12 +45,25 @@ #include -#include #include +#include #include +#include using namespace KAddressBookGrantlee; +// Grantlee has no Q_GADGET support yet +#define GRANTLEE_MAKE_GADGET(Class) \ + GRANTLEE_BEGIN_LOOKUP(Class) \ + const auto idx = Class::staticMetaObject.indexOfProperty(property.toUtf8().constData()); \ + if (idx < 0) { \ + return {};} \ + const auto mp = Class::staticMetaObject.property(idx); \ + return mp.readOnGadget(&object); \ + GRANTLEE_END_LOOKUP + +GRANTLEE_MAKE_GADGET(KContacts::Email) + class Q_DECL_HIDDEN GrantleeContactFormatter::Private { public: @@ -101,6 +115,7 @@ GrantleeContactFormatter::GrantleeContactFormatter() : d(new Private) { + Grantlee::registerMetaType(); } GrantleeContactFormatter::~GrantleeContactFormatter() @@ -296,17 +311,8 @@ } // Emails - QStringList emails; - const QStringList emailsList = rawContact.emails(); - for (const QString &email : emailsList) { - const QString fullEmail = QString::fromLatin1(QUrl::toPercentEncoding(rawContact.fullEmail(email))); - - const QString url = QStringLiteral("%2") - .arg(fullEmail, email); - emails << url; - } grantleeContactUtil.insertVariableToQVariantHash(contactObject, QStringLiteral("emailsi18n")); - contactObject.insert(QStringLiteral("emails"), emails); + contactObject.insert(QStringLiteral("emails"), QVariant::fromValue(rawContact.emailList())); // Phone numbers QVariantList phoneNumbers;