--- a/qtmobility/plugins/contacts/symbian/src/filtering/cntfilterintersection.cpp Fri Apr 16 15:51:22 2010 +0300
+++ b/qtmobility/plugins/contacts/symbian/src/filtering/cntfilterintersection.cpp Mon May 03 13:18:40 2010 +0300
@@ -45,7 +45,6 @@
#include "cntfilterdefault.h"
#include "cntfilterrelationship.h"
#include "cnttransformcontact.h"
-#include "qcontactintersectionfilter.h"
CntFilterIntersection::CntFilterIntersection(CContactDatabase& contactDatabase,CntSymbianSrvConnection &cntServer,CntDbInfo& dbInfo)
: m_contactdatabase(contactDatabase),
@@ -65,23 +64,24 @@
const QContactFilter &filter,
const QList<QContactSortOrder> &sortOrders,
bool &filterSupportedflag,
- QContactManager::Error &error)
+ QContactManager::Error* error)
{
Q_UNUSED(sortOrders);
Q_UNUSED(filterSupportedflag);
//Check if any invalid filter is passed
if(filterSupported(filter) == false)
{
- error = QContactManager::NotSupportedError;
+ *error = QContactManager::NotSupportedError;
return QList<QContactLocalId>();
}
QList<QContactLocalId> idList;
- QString sqlQuery;
- this->createSelectQuery( filter,sqlQuery,error) ;
+ QString sqlQuery;
+ createSelectQuery(filter,sqlQuery,error);
+ QString sortQuery = m_dbInfo.getSortQuery(sortOrders, sqlQuery, error);
//fetch the contacts
- if(error == QContactManager::NoError )
+ if(*error == QContactManager::NoError )
{
- idList = m_srvConnection.searchContacts(sqlQuery, error);
+ idList = m_srvConnection.searchContacts(sortQuery, error);
}
return idList;
}
@@ -100,13 +100,13 @@
void CntFilterIntersection::createSelectQuery(const QContactFilter& filter,
QString& selectquery,
- QContactManager::Error& error)
+ QContactManager::Error* error)
{
const QContactIntersectionFilter& intersectionfilter = static_cast<const QContactIntersectionFilter&>(filter);
if(!filterSupported(filter))
{
- error = QContactManager::NotSupportedError;
+ *error = QContactManager::NotSupportedError;
return;
}
QList<QContactFilter> individualFilters = intersectionfilter.filters();
@@ -120,7 +120,7 @@
QString query;
getSelectQueryforFilter(individualFilters[i],query,error);
- if(error == QContactManager::NoError )
+ if(*error == QContactManager::NoError )
{
selectquery.append(" INTERSECT ");
selectquery += query;
@@ -130,7 +130,8 @@
}
-void CntFilterIntersection::getSelectQueryforFilter(const QContactFilter& filter,QString& sqlSelectQuery,QContactManager::Error& error)
+
+void CntFilterIntersection::getSelectQueryforFilter(const QContactFilter& filter,QString& sqlSelectQuery,QContactManager::Error* error)
{
switch(filter.type())
{
@@ -145,7 +146,7 @@
QContactDetailFilter detailfilter(filter);
if(detailfilter.detailDefinitionName() == QContactPhoneNumber::DefinitionName )
{
- error=QContactManager::NotSupportedError;
+ *error=QContactManager::NotSupportedError;
}
else
{
@@ -154,12 +155,18 @@
}
break;
}
+ case QContactFilter::RelationshipFilter:
+ {
+ CntFilterRelationship relationfltr(m_contactdatabase,m_srvConnection,m_dbInfo);
+ relationfltr.createSelectQuery(filter,sqlSelectQuery,error);
+ break;
+ }
case QContactFilter::IntersectionFilter:
{
sqlSelectQuery += "SELECT DISTINCT contact_id FROM (";
CntFilterIntersection intersectionfltr(m_contactdatabase,m_srvConnection,m_dbInfo);
intersectionfltr.createSelectQuery(filter,sqlSelectQuery,error);
- sqlSelectQuery += ")";
+ sqlSelectQuery += ')';
break;
}
case QContactFilter::UnionFilter:
@@ -167,12 +174,12 @@
sqlSelectQuery += "SELECT DISTINCT contact_id FROM (";
CntFilterUnion unionfltr(m_contactdatabase,m_srvConnection,m_dbInfo);
unionfltr.createSelectQuery(filter,sqlSelectQuery,error);
- sqlSelectQuery += ")";
+ sqlSelectQuery += ')';
break;
}
default:
{
- error = QContactManager::NotSupportedError;
+ *error = QContactManager::NotSupportedError;
break;
}
}