Merge lp:~renatofilho/address-book-service/fix-addr-update into lp:address-book-service

Proposed by Renato Araujo Oliveira Filho
Status: Merged
Approved by: Bill Filler
Approved revision: 146
Merged at revision: 146
Proposed branch: lp:~renatofilho/address-book-service/fix-addr-update
Merge into: lp:address-book-service
Diff against target: 211 lines (+49/-22)
3 files modified
lib/qindividual.cpp (+27/-22)
lib/qindividual.h (+2/-0)
tests/unittest/qcontacts-test.cpp (+20/-0)
To merge this branch: bzr merge lp:~renatofilho/address-book-service/fix-addr-update
Reviewer Review Type Date Requested Status
Bill Filler (community) Approve
PS Jenkins bot continuous-integration Approve
Review via email: mp+240587@code.launchpad.net

Commit message

Save address fields in single lines. To avoid problems with folks.

To post a comment you must log in.
145. By Renato Araujo Oliveira Filho

Remove spaces at the end and new line symbols from street field.

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Bill Filler (bfiller) wrote :

shouldn't we do this with all fields, not just address fields?

review: Needs Fixing
Revision history for this message
Bill Filler (bfiller) wrote :

also, please add some unit tests to test for this case of unexpected characters in the fields

146. By Renato Araujo Oliveira Filho

Convert any multi line field into a single line value.
Create unit test.

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Bill Filler (bfiller) wrote :

tested, approved

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'lib/qindividual.cpp'
--- lib/qindividual.cpp 2014-10-14 15:45:14 +0000
+++ lib/qindividual.cpp 2014-11-06 15:44:29 +0000
@@ -230,23 +230,23 @@
230 if (sn) {230 if (sn) {
231 const char *name = folks_structured_name_get_given_name(sn);231 const char *name = folks_structured_name_get_given_name(sn);
232 if (name && strlen(name)) {232 if (name && strlen(name)) {
233 detail.setFirstName(QString::fromUtf8(name));233 detail.setFirstName(qStringFromGChar(name));
234 }234 }
235 name = folks_structured_name_get_additional_names(sn);235 name = folks_structured_name_get_additional_names(sn);
236 if (name && strlen(name)) {236 if (name && strlen(name)) {
237 detail.setMiddleName(QString::fromUtf8(name));237 detail.setMiddleName(qStringFromGChar(name));
238 }238 }
239 name = folks_structured_name_get_family_name(sn);239 name = folks_structured_name_get_family_name(sn);
240 if (name && strlen(name)) {240 if (name && strlen(name)) {
241 detail.setLastName(QString::fromUtf8(name));241 detail.setLastName(qStringFromGChar(name));
242 }242 }
243 name = folks_structured_name_get_prefixes(sn);243 name = folks_structured_name_get_prefixes(sn);
244 if (name && strlen(name)) {244 if (name && strlen(name)) {
245 detail.setPrefix(QString::fromUtf8(name));245 detail.setPrefix(qStringFromGChar(name));
246 }246 }
247 name = folks_structured_name_get_suffixes(sn);247 name = folks_structured_name_get_suffixes(sn);
248 if (name && strlen(name)) {248 if (name && strlen(name)) {
249 detail.setSuffix(QString::fromUtf8(name));249 detail.setSuffix(qStringFromGChar(name));
250 }250 }
251 detail.setDetailUri(QString("%1.1").arg(index));251 detail.setDetailUri(QString("%1.1").arg(index));
252 }252 }
@@ -262,7 +262,7 @@
262 QContactDisplayLabel detail;262 QContactDisplayLabel detail;
263 const gchar *fullName = folks_name_details_get_full_name(FOLKS_NAME_DETAILS(persona));263 const gchar *fullName = folks_name_details_get_full_name(FOLKS_NAME_DETAILS(persona));
264 if (fullName) {264 if (fullName) {
265 detail.setLabel(QString::fromUtf8(fullName));265 detail.setLabel(qStringFromGChar(fullName));
266 detail.setDetailUri(QString("%1.1").arg(index));266 detail.setDetailUri(QString("%1.1").arg(index));
267 }267 }
268268
@@ -278,7 +278,7 @@
278 QContactNickname detail;278 QContactNickname detail;
279 const gchar* nickname = folks_name_details_get_nickname(FOLKS_NAME_DETAILS(persona));279 const gchar* nickname = folks_name_details_get_nickname(FOLKS_NAME_DETAILS(persona));
280 if (nickname && strlen(nickname)) {280 if (nickname && strlen(nickname)) {
281 detail.setNickname(QString::fromUtf8(nickname));281 detail.setNickname(qStringFromGChar(nickname));
282 detail.setDetailUri(QString("%1.1").arg(index));282 detail.setDetailUri(QString("%1.1").arg(index));
283 }283 }
284 return detail;284 return detail;
@@ -317,6 +317,11 @@
317 }317 }
318}318}
319319
320QString QIndividual::qStringFromGChar(const gchar *str)
321{
322 return QString::fromUtf8(str).remove(QRegExp("[\r\n]"));
323}
324
320QtContacts::QContactDetail QIndividual::getPersonaPhoto(FolksPersona *persona, int index) const325QtContacts::QContactDetail QIndividual::getPersonaPhoto(FolksPersona *persona, int index) const
321{326{
322 QContactAvatar avatar;327 QContactAvatar avatar;
@@ -399,15 +404,15 @@
399 QContactOrganization org;404 QContactOrganization org;
400 QString field;405 QString field;
401406
402 field = QString::fromUtf8(folks_role_get_organisation_name(role));407 field = qStringFromGChar(folks_role_get_organisation_name(role));
403 if (!field.isEmpty()) {408 if (!field.isEmpty()) {
404 org.setName(field);409 org.setName(field);
405 }410 }
406 field = QString::fromUtf8(folks_role_get_title(role));411 field = qStringFromGChar(folks_role_get_title(role));
407 if (!field.isEmpty()) {412 if (!field.isEmpty()) {
408 org.setTitle(field);413 org.setTitle(field);
409 }414 }
410 field = QString::fromUtf8(folks_role_get_role(role));415 field = qStringFromGChar(folks_role_get_role(role));
411 if (!field.isEmpty()) {416 if (!field.isEmpty()) {
412 org.setRole(field);417 org.setRole(field);
413 }418 }
@@ -447,7 +452,7 @@
447 const gchar *email = (const gchar*) folks_abstract_field_details_get_value(fd);452 const gchar *email = (const gchar*) folks_abstract_field_details_get_value(fd);
448453
449 QContactEmailAddress addr;454 QContactEmailAddress addr;
450 addr.setEmailAddress(QString::fromUtf8(email));455 addr.setEmailAddress(qStringFromGChar(email));
451 bool isPref = false;456 bool isPref = false;
452 DetailContextParser::parseParameters(addr, fd, &isPref);457 DetailContextParser::parseParameters(addr, fd, &isPref);
453 addr.setDetailUri(QString("%1.%2").arg(index).arg(fieldIndex++));458 addr.setDetailUri(QString("%1.%2").arg(index).arg(fieldIndex++));
@@ -483,7 +488,7 @@
483 const gchar *phone = (const char*) folks_abstract_field_details_get_value(fd);488 const gchar *phone = (const char*) folks_abstract_field_details_get_value(fd);
484489
485 QContactPhoneNumber number;490 QContactPhoneNumber number;
486 number.setNumber(QString::fromUtf8(phone));491 number.setNumber(qStringFromGChar(phone));
487 bool isPref = false;492 bool isPref = false;
488 DetailContextParser::parseParameters(number, fd, &isPref);493 DetailContextParser::parseParameters(number, fd, &isPref);
489 number.setDetailUri(QString("%1.%2").arg(index).arg(fieldIndex++));494 number.setDetailUri(QString("%1.%2").arg(index).arg(fieldIndex++));
@@ -521,32 +526,32 @@
521 QContactAddress address;526 QContactAddress address;
522 const char *field = folks_postal_address_get_country(addr);527 const char *field = folks_postal_address_get_country(addr);
523 if (field && strlen(field)) {528 if (field && strlen(field)) {
524 address.setCountry(QString::fromUtf8(field));529 address.setCountry(qStringFromGChar(field));
525 }530 }
526531
527 field = folks_postal_address_get_locality(addr);532 field = folks_postal_address_get_locality(addr);
528 if (field && strlen(field)) {533 if (field && strlen(field)) {
529 address.setLocality(QString::fromUtf8(field));534 address.setLocality(qStringFromGChar(field));
530 }535 }
531536
532 field = folks_postal_address_get_po_box(addr);537 field = folks_postal_address_get_po_box(addr);
533 if (field && strlen(field)) {538 if (field && strlen(field)) {
534 address.setPostOfficeBox(QString::fromUtf8(field));539 address.setPostOfficeBox(qStringFromGChar(field));
535 }540 }
536541
537 field = folks_postal_address_get_postal_code(addr);542 field = folks_postal_address_get_postal_code(addr);
538 if (field && strlen(field)) {543 if (field && strlen(field)) {
539 address.setPostcode(QString::fromUtf8(field));544 address.setPostcode(qStringFromGChar(field));
540 }545 }
541546
542 field = folks_postal_address_get_region(addr);547 field = folks_postal_address_get_region(addr);
543 if (field && strlen(field)) {548 if (field && strlen(field)) {
544 address.setRegion(QString::fromUtf8(field));549 address.setRegion(qStringFromGChar(field));
545 }550 }
546551
547 field = folks_postal_address_get_street(addr);552 field = folks_postal_address_get_street(addr);
548 if (field && strlen(field)) {553 if (field && strlen(field)) {
549 address.setStreet(QString::fromUtf8(field));554 address.setStreet(qStringFromGChar(field));
550 }555 }
551556
552 bool isPref = false;557 bool isPref = false;
@@ -594,8 +599,8 @@
594 }599 }
595600
596 QContactOnlineAccount account;601 QContactOnlineAccount account;
597 account.setAccountUri(QString::fromUtf8(uri));602 account.setAccountUri(qStringFromGChar(uri));
598 int protocolId = DetailContextParser::accountProtocolFromString(QString::fromUtf8(key));603 int protocolId = DetailContextParser::accountProtocolFromString(qStringFromGChar(key));
599 account.setProtocol(static_cast<QContactOnlineAccount::Protocol>(protocolId));604 account.setProtocol(static_cast<QContactOnlineAccount::Protocol>(protocolId));
600605
601 bool isPref = false;606 bool isPref = false;
@@ -636,7 +641,7 @@
636 const char *url = (const char*) folks_abstract_field_details_get_value(fd);641 const char *url = (const char*) folks_abstract_field_details_get_value(fd);
637642
638 QContactUrl detail;643 QContactUrl detail;
639 detail.setUrl(QString::fromUtf8(url));644 detail.setUrl(qStringFromGChar(url));
640 bool isPref = false;645 bool isPref = false;
641 DetailContextParser::parseParameters(detail, fd, &isPref);646 DetailContextParser::parseParameters(detail, fd, &isPref);
642 detail.setDetailUri(QString("%1.%2").arg(index).arg(fieldIndex++));647 detail.setDetailUri(QString("%1.%2").arg(index).arg(fieldIndex++));
@@ -780,7 +785,7 @@
780 GeeIterator *iter = gee_iterable_iterator(GEE_ITERABLE(personas));785 GeeIterator *iter = gee_iterable_iterator(GEE_ITERABLE(personas));
781 while(gee_iterator_next(iter)) {786 while(gee_iterator_next(iter)) {
782 FolksPersona *persona = FOLKS_PERSONA(gee_iterator_get(iter));787 FolksPersona *persona = FOLKS_PERSONA(gee_iterator_get(iter));
783 m_personas.insert(QString::fromUtf8(folks_persona_get_iid(persona)), persona);788 m_personas.insert(qStringFromGChar(folks_persona_get_iid(persona)), persona);
784 }789 }
785790
786 g_object_unref(iter);791 g_object_unref(iter);
787792
=== modified file 'lib/qindividual.h'
--- lib/qindividual.h 2014-10-13 19:33:46 +0000
+++ lib/qindividual.h 2014-11-06 15:44:29 +0000
@@ -168,6 +168,8 @@
168 static void folksIndividualChanged (FolksIndividual *individual,168 static void folksIndividualChanged (FolksIndividual *individual,
169 GParamSpec *pspec,169 GParamSpec *pspec,
170 QIndividual *self);170 QIndividual *self);
171
172 static QString qStringFromGChar (const gchar *str);
171};173};
172174
173} //namespace175} //namespace
174176
=== modified file 'tests/unittest/qcontacts-test.cpp'
--- tests/unittest/qcontacts-test.cpp 2014-10-13 19:33:46 +0000
+++ tests/unittest/qcontacts-test.cpp 2014-11-06 15:44:29 +0000
@@ -489,6 +489,26 @@
489 }489 }
490 QCOMPARE(address.size(), 0);490 QCOMPARE(address.size(), 0);
491 }491 }
492
493 /*
494 * Test saving a contact with a multi line field
495 * BUG: #240587
496 */
497 void testFieldWithNewLineChar()
498 {
499 // create a contact
500 QContact contact = testContact();
501 QContactAddress addr;
502 addr.setCountry("Line1\nLine2\r\nLine3");
503 contact.saveDetail(&addr);
504 QSignalSpy spyContactAdded(m_manager, SIGNAL(contactsAdded(QList<QContactId>)));
505 bool result = m_manager->saveContact(&contact);
506 QCOMPARE(result, true);
507 QTRY_COMPARE(spyContactAdded.count(), 1);
508
509 addr = contact.detail<QContactAddress>();
510 QCOMPARE(addr.country(), QStringLiteral("Line1Line2Line3"));
511 }
492};512};
493513
494QTEST_MAIN(QContactsTest)514QTEST_MAIN(QContactsTest)

Subscribers

People subscribed via source and target branches