/*! * Converts \a contacts into a list of corresponding QVersitDocuments, using the format given by * \a versitType. * * Returns true on success. If any of the contacts could not be exported, false is returned and * errorMap() will return a list describing the errors that occurred. The successfully exported * documents will still be available via documents(). * * \sa documents(), errorMap() */ bool QVersitContactExporter::exportContacts( const QList<QContact>& contacts, QVersitDocument::VersitType versitType) { int contactIndex = 0; d->mDocuments.clear(); d->mErrors.clear(); bool ok = true; foreach (const QContact& contact, contacts) { if (contact.isEmpty()) { d->mErrors[contactIndex] = EmptyContactError; ok = false; continue; } QVersitDocument versitDocument; versitDocument.setType(versitType); versitDocument.setComponentType(QLatin1String("VCARD")); d->exportContact(contact, versitDocument); d->mDocuments.append(versitDocument); contactIndex++; } return ok; }
void tst_QVersitContactPlugins::testImporterPlugins() { QVersitContactImporter importer("Test"); QVersitDocument document; document.setComponentType("VCARD"); QVersitProperty property; property.setName("FN"); property.setValue("Bob"); document.addProperty(property); QVERIFY(importer.importDocuments(QList<QVersitDocument>() << document)); QCOMPARE(importer.contacts().size(), 1); QList<QContactDetail> details(importer.contacts().first().details("TestDetail")); QCOMPARE(details.size(), 5); // The plugins have had their index set such that they should be executed in reverse order // Check that they are all loaded, and run in the correct order QCOMPARE(details.at(0).value<int>("Plugin"), 5); QCOMPARE(details.at(1).value<int>("Plugin"), 4); QCOMPARE(details.at(2).value<int>("Plugin"), 3); QCOMPARE(details.at(3).value<int>("Plugin"), 2); QCOMPARE(details.at(4).value<int>("Plugin"), 1); }