qtmobility/plugins/contacts/symbian/src/filtering/cntfilterintersection.cpp
changeset 4 90517678cc4f
parent 1 2b40d63a9c3d
child 11 06b8e2af4411
--- 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;
                 }
             }