void CntVersitFavoritePlugin::propertyProcessed( const QVersitDocument& document, const QVersitProperty& property, const QContact& contact, bool* alreadyProcessed, QList<QContactDetail>* updatedDetails) { Q_UNUSED(document); Q_UNUSED(contact); Q_UNUSED(alreadyProcessed); Q_UNUSED(updatedDetails); if (property.name().contains(QLatin1String("X-FAVORITE"), Qt::CaseInsensitive)) { // This method is called before the corresponding detail gets imported to QContact. // Detail is saved after whole versit document is processed. QContactFavorite favorite; favorite.setFavorite(true); favorite.setIndex(property.value().toInt()); mFavoriteDetailList.append(favorite); } }
void TestSymbianEngine::saveContactWithFavoriteDetail() { QContactManager::Error err; QContactFetchHint hint; //save a contact without favorite detail QContact c1; c1.setType(QContactType::TypeContact); QContactName name1; name1.setFirstName("somename"); c1.saveDetail(&name1); QVERIFY(m_engine->saveContact(&c1, &err)); QVERIFY(err == QContactManager::NoError); //fetch contact and check there is no favorite detail QContact savedContact1 = m_engine->contact(c1.localId(), hint, &err); QVERIFY(err == QContactManager::NoError); QVERIFY(savedContact1.details<QContactFavorite>().count() == 0); //save a contact with a favorite detail QContact c2; c2.setType(QContactType::TypeContact); QContactName name2; name2.setFirstName("firstname"); c2.saveDetail(&name2); QContactFavorite fav; fav.setFavorite(true); fav.setIndex(100); c2.saveDetail(&fav); QVERIFY(m_engine->saveContact(&c2, &err)); QVERIFY(err == QContactManager::NoError); //fetch contact and check there is a preferred detail we saved QContact savedContact2 = m_engine->contact(c2.localId(), hint, &err); QVERIFY(err == QContactManager::NoError); QContactFavorite savedFav = savedContact2.detail<QContactFavorite>(); QVERIFY(savedFav.isFavorite()); QVERIFY(savedFav.index() == 100); //remove favorite detail and save contact savedContact2.removeDetail(&savedFav); QVERIFY(m_engine->saveContact(&savedContact2, &err)); QVERIFY(err == QContactManager::NoError); //fetch contact and check there is no favorite detail QContact savedContact3 = m_engine->contact(savedContact2.localId(), hint, &err); QVERIFY(err == QContactManager::NoError); QVERIFY(savedContact3.details<QContactFavorite>().count() == 0); //save a contact with a favorite detail, favorite index is 0 QContact c3; c3.setType(QContactType::TypeContact); QContactName name3; name3.setFirstName("firstname3"); c3.saveDetail(&name3); QContactFavorite fav3; fav3.setFavorite(true); fav3.setIndex(0); c3.saveDetail(&fav3); QVERIFY(m_engine->saveContact(&c3, &err)); QVERIFY(err == QContactManager::NoError); //fetch contact and check there is a preferred detail we saved QContact savedContact4 = m_engine->contact(c3.localId(), hint, &err); QVERIFY(err == QContactManager::NoError); QContactFavorite savedFav4 = savedContact4.detail<QContactFavorite>(); QVERIFY(savedFav4.isFavorite()); QVERIFY(savedFav4.index() == 0); //remove favorite detail by changing QContactFavorite detail and save contact savedFav4.setFavorite(false); savedContact4.saveDetail(&savedFav4); QVERIFY(m_engine->saveContact(&savedContact4, &err)); QVERIFY(err == QContactManager::NoError); //fetch contact and check there is no favorite detail QContact savedContact5 = m_engine->contact(savedContact4.localId(), hint, &err); QVERIFY(err == QContactManager::NoError); QVERIFY(savedContact5.details<QContactFavorite>().count() == 0); }