コード例 #1
0
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);
}