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); |