Details
-
Bug
-
Resolution: Done
-
P2: Important
-
None
-
1.2.0
-
None
-
MeeGo
-
c3fc8dd258e6c956abc2fd0229cb94d9502da9d2
Description
I'm using QContactManagerEngine::testFilter() to check that a contact is matching a particular QContactDetailFilter as follows:
""" Sample code """
QContact c; QContactOrganization org; org.setDepartment(QStringList() << "OTC" << "SSG"); c.saveDetail(&org); QContactDetailFilter f; f.setDetailDefinitionName(QContactOrganization::DefinitionName, QContactOrganization::FieldDepartment); f.setMatchFlags(QContactFilter::MatchExactly); f.setValue(QStringList() << "OTC" << "XXX"); Q_ASSERT(!QCOntactManagerEngine::testFilter(filter, c)); // HITS THE ASSERT (It shouldn't)
"""
What happens is that QContactManagerEngine::testFilter() will call QContactManagerEngine::compareVariant().
The thing is that the QContactOrganization::FieldDepartment is a QStringList and compareVariant() does not support String lists comparison and will return 0 (i.e. "are equal").
I believe that QContactManagerEngine::compareVariant() should support StringList comparison since some details' fields have this type (e.g. QContactOrganization::FieldDepartment).