qtcontactsmobility/plugins/contacts/symbian/src/filtering/cntfilterunion.cpp
changeset 27 de1630741fbe
parent 25 76a2435edfd4
child 37 fd64c38c277d
equal deleted inserted replaced
25:76a2435edfd4 27:de1630741fbe
    43 #include "cntfilterdetail.h"
    43 #include "cntfilterdetail.h"
    44 #include "cntfilterdefault.h"
    44 #include "cntfilterdefault.h"
    45 #include "cntfilterrelationship.h"
    45 #include "cntfilterrelationship.h"
    46 #include "cntfilterintersection.h"
    46 #include "cntfilterintersection.h"
    47 #include "cnttransformcontact.h"
    47 #include "cnttransformcontact.h"
    48 #include "qcontactunionfilter.h"
       
    49 
    48 
    50 CntFilterUnion::CntFilterUnion(CContactDatabase& contactDatabase,CntSymbianSrvConnection &cntServer,CntDbInfo& dbInfo) : 
    49 CntFilterUnion::CntFilterUnion(CContactDatabase& contactDatabase,CntSymbianSrvConnection &cntServer,CntDbInfo& dbInfo) : 
    51                     m_contactdatabase(contactDatabase),
    50                     m_contactdatabase(contactDatabase),
    52                     m_srvConnection(cntServer),
    51                     m_srvConnection(cntServer),
    53                     m_dbInfo(dbInfo)
    52                     m_dbInfo(dbInfo)
    63 
    62 
    64 QList<QContactLocalId> CntFilterUnion::contacts(
    63 QList<QContactLocalId> CntFilterUnion::contacts(
    65         const QContactFilter &filter,
    64         const QContactFilter &filter,
    66         const QList<QContactSortOrder> &sortOrders,
    65         const QList<QContactSortOrder> &sortOrders,
    67         bool &filterSupportedflag,
    66         bool &filterSupportedflag,
    68         QContactManager::Error &error) 
    67         QContactManager::Error* error)
    69 {
    68 {
    70     Q_UNUSED(sortOrders);
    69     Q_UNUSED(sortOrders);
    71     Q_UNUSED(filterSupportedflag);
    70     Q_UNUSED(filterSupportedflag);
    72     //Check if any invalid filter is passed 
    71     //Check if any invalid filter is passed 
    73     if(!filterSupported(filter))
    72     if(!filterSupported(filter))
    74         {
    73         {
    75         error =  QContactManager::NotSupportedError;
    74         *error = QContactManager::NotSupportedError;
    76         return QList<QContactLocalId>();
    75         return QList<QContactLocalId>();
    77         }
    76         }
    78      QList<QContactLocalId> idList;
    77      QList<QContactLocalId> idList;
    79      QString sqlQuery;
    78      QString sqlQuery;
    80      this->createSelectQuery( filter,sqlQuery,error) ;
    79      createSelectQuery(filter,sqlQuery,error);
       
    80      QString sortQuery = m_dbInfo.getSortQuery(sortOrders, sqlQuery, error);
    81      //fetch the contacts
    81      //fetch the contacts
    82      if(error == QContactManager::NoError )
    82      if(*error == QContactManager::NoError )
    83          {
    83          {
    84          idList =  m_srvConnection.searchContacts(sqlQuery, error);
    84          idList =  m_srvConnection.searchContacts(sortQuery, error);
    85          }
    85          }
    86      return idList;
    86      return idList;
    87 }
    87 }
    88 
    88 
    89 
    89 
   100 
   100 
   101 
   101 
   102 
   102 
   103 void CntFilterUnion::createSelectQuery(const QContactFilter& filter,
   103 void CntFilterUnion::createSelectQuery(const QContactFilter& filter,
   104                               QString& selectquery,
   104                               QString& selectquery,
   105                               QContactManager::Error& error)
   105                               QContactManager::Error* error)
   106 
   106 
   107 {
   107 {
   108     const QContactUnionFilter& unionfilter = static_cast<const QContactUnionFilter&>(filter);
   108     const QContactUnionFilter& unionfilter = static_cast<const QContactUnionFilter&>(filter);
   109     if(!filterSupported(filter))
   109     if(!filterSupported(filter))
   110         {
   110         {
   111         error = QContactManager::NotSupportedError;
   111         *error = QContactManager::NotSupportedError;
   112         return;
   112         return;
   113         }
   113         }
   114         QList<QContactFilter> individualFilters = unionfilter.filters();
   114         QList<QContactFilter> individualFilters = unionfilter.filters();
   115         //QString selectquery;
   115         //QString selectquery;
   116         int fltrcnt =  individualFilters.count();          
   116         int fltrcnt =  individualFilters.count();          
   120         for(int i=1; i< fltrcnt ; i++)
   120         for(int i=1; i< fltrcnt ; i++)
   121             {
   121             {
   122         
   122         
   123             QString query;
   123             QString query;
   124             getSelectQueryforFilter(individualFilters[i],query,error);
   124             getSelectQueryforFilter(individualFilters[i],query,error);
   125             if(error == QContactManager::NoError )
   125             if(*error == QContactManager::NoError )
   126                 {
   126                 {
   127                 selectquery.append(" UNION ");
   127                 selectquery.append(" UNION ");
   128                 selectquery += query;
   128                 selectquery += query;
   129                 }
   129                 }
   130             
   130             
   131             }
   131             }
   132         
   132         
   133             
   133             
   134 }
   134 }
   135 void CntFilterUnion::getSelectQueryforFilter(const QContactFilter& filter,QString& sqlSelectQuery,QContactManager::Error& error)
   135 
       
   136 void CntFilterUnion::getSelectQueryforFilter(const QContactFilter& filter,QString& sqlSelectQuery,QContactManager::Error* error)
   136     {
   137     {
   137     switch(filter.type())
   138     switch(filter.type())
   138             {
   139             {
   139             case QContactFilter::DefaultFilter:
   140             case QContactFilter::DefaultFilter:
   140                 {
   141                 {
   145             case QContactFilter::ContactDetailFilter:
   146             case QContactFilter::ContactDetailFilter:
   146                 {
   147                 {
   147                 QContactDetailFilter detailfilter(filter);
   148                 QContactDetailFilter detailfilter(filter);
   148                 if(detailfilter.detailDefinitionName() == QContactPhoneNumber::DefinitionName ) 
   149                 if(detailfilter.detailDefinitionName() == QContactPhoneNumber::DefinitionName ) 
   149                     {
   150                     {
   150                     error=QContactManager::NotSupportedError;
   151                     *error=QContactManager::NotSupportedError;
   151                     }
   152                     }
   152                 else
   153                 else
   153                     {
   154                     {
   154                     CntFilterDetail dtlfltr(m_contactdatabase,m_srvConnection,m_dbInfo);
   155                     CntFilterDetail dtlfltr(m_contactdatabase,m_srvConnection,m_dbInfo);
   155                     dtlfltr.createSelectQuery(filter,sqlSelectQuery,error);
   156                     dtlfltr.createSelectQuery(filter,sqlSelectQuery,error);
   178                 sqlSelectQuery += ')';
   179                 sqlSelectQuery += ')';
   179                 break;
   180                 break;
   180                 }
   181                 }
   181             default:
   182             default:
   182                 {
   183                 {
   183                 error = QContactManager::NotSupportedError;
   184                 *error = QContactManager::NotSupportedError;
   184                 break;
   185                 break;
   185                 }
   186                 }
   186             }
   187             }
   187     }
   188     }
   188     
   189