70 const QMessageFilter &filter, |
70 const QMessageFilter &filter, |
71 const QMessageSortOrder &sortOrder, |
71 const QMessageSortOrder &sortOrder, |
72 uint limit, uint offset, |
72 uint limit, uint offset, |
73 EnginesToCall enginesToCall) |
73 EnginesToCall enginesToCall) |
74 { |
74 { |
75 qDebug() << "QMessageServicePrivate::queryMessages 1"; |
|
76 if (_active) { |
75 if (_active) { |
77 return false; |
76 return false; |
78 } |
77 } |
|
78 |
|
79 _filter = filter; |
|
80 MessagingHelper::handleNestedFiltersFromMessageFilter(_filter); |
79 |
81 |
80 _ids.clear(); |
82 _ids.clear(); |
81 _sorted = true; |
83 _sorted = true; |
82 _filtered = true; |
84 _filtered = true; |
83 |
85 |
84 _active = true; |
86 _active = true; |
85 _error = QMessageManager::NoError; |
87 _error = QMessageManager::NoError; |
86 bool modestEngineCalled=false; |
88 |
|
89 _pendingRequestCount = 0; |
87 |
90 |
88 if (enginesToCall & EnginesToCallTelepathy) { |
91 if (enginesToCall & EnginesToCallTelepathy) { |
89 _ids= EventLoggerEngine::instance()->filterAndOrderMessages(filter,sortOrder,QString(),QMessageDataComparator::MatchFlags()); |
92 _ids = EventLoggerEngine::instance()->filterAndOrderMessages(filter,sortOrder,QString(),QMessageDataComparator::MatchFlags()); |
90 qDebug() << "QMessageServicePrivate::queryMessages filterAndOrderMessages:"; |
93 QMetaObject::invokeMethod(this, "messagesFoundSlot", Qt::QueuedConnection); |
91 } |
94 _pendingRequestCount++; |
92 |
95 } |
93 _pendingRequestCount = 0; |
96 |
94 if (enginesToCall & EnginesToCallModest) { |
97 if (enginesToCall & EnginesToCallModest) { |
95 qDebug() << "QMessageServicePrivate::queryMessages modest"; |
98 if (ModestEngine::instance()->queryMessages(messageService, _filter, sortOrder, limit, offset)) { |
96 modestEngineCalled=true; |
99 _pendingRequestCount++; |
97 if (ModestEngine::instance()->queryMessages(messageService, filter, sortOrder, limit, offset)) { |
100 } |
98 qDebug() << "QMessageServicePrivate::queryMessages modest done"; |
|
99 _pendingRequestCount++; |
|
100 |
|
101 } |
|
102 qDebug() << "QMessageServicePrivate::queryMessages modest done 2"; |
|
103 } |
101 } |
104 |
102 |
105 if (!modestEngineCalled && enginesToCall & EnginesToCallTelepathy && _pendingRequestCount==0 ) { |
|
106 qDebug() << "QMessageServicePrivate::queryMessages only eventloggerengine"; |
|
107 if (!_sorted) { |
|
108 MessagingHelper::orderMessages(_ids, sortOrder); |
|
109 } |
|
110 MessagingHelper::applyOffsetAndLimitToMessageIdList(_ids, limit, offset); |
|
111 |
|
112 emit q_ptr->messagesFound(_ids); |
|
113 |
|
114 qDebug() << "QMessageServicePrivate::queryMessages setFinished(true)"; |
|
115 setFinished(true); |
|
116 |
|
117 _ids.clear(); |
|
118 qDebug() << "QMessageServicePrivate::queryMessages return true"; |
|
119 return true; // Operation initialized and completed |
|
120 } |
|
121 |
|
122 |
|
123 if (_pendingRequestCount > 0) { |
103 if (_pendingRequestCount > 0) { |
124 _filter = filter; |
|
125 _sortOrder = sortOrder; |
104 _sortOrder = sortOrder; |
126 _limit = limit; |
105 _limit = limit; |
127 _offset = offset; |
106 _offset = offset; |
128 |
107 |
129 _state = QMessageService::ActiveState; |
108 stateChanged(QMessageService::ActiveState); |
130 emit messageService.stateChanged(_state); |
|
131 } else { |
109 } else { |
132 qDebug() << "QMessageServicePrivate::queryMessages setFinixhed() active=" << _active; |
110 _filter = QMessageFilter(); |
133 if(_active)setFinished(false); |
111 setFinished(false); |
134 } |
112 } |
135 |
113 |
136 return _active; |
114 return _active; |
137 } |
115 } |
138 |
116 |
142 QMessageDataComparator::MatchFlags matchFlags, |
120 QMessageDataComparator::MatchFlags matchFlags, |
143 const QMessageSortOrder &sortOrder, |
121 const QMessageSortOrder &sortOrder, |
144 uint limit, uint offset, |
122 uint limit, uint offset, |
145 EnginesToCall enginesToCall) |
123 EnginesToCall enginesToCall) |
146 { |
124 { |
147 qDebug() << "QMessageServicePrivate::queryMessages 2"; |
|
148 if (_active) { |
125 if (_active) { |
149 return false; |
126 return false; |
150 } |
127 } |
|
128 |
|
129 _filter = filter; |
|
130 MessagingHelper::handleNestedFiltersFromMessageFilter(_filter); |
151 |
131 |
152 _ids.clear(); |
132 _ids.clear(); |
153 _sorted = true; |
133 _sorted = true; |
154 _filtered = true; |
134 _filtered = true; |
155 |
135 |
156 _active = true; |
136 _active = true; |
157 _error = QMessageManager::NoError; |
137 _error = QMessageManager::NoError; |
158 |
138 |
159 _pendingRequestCount = 0; |
139 _pendingRequestCount = 0; |
160 |
140 |
161 bool modestEngineCalled=false; |
|
162 |
|
163 if (enginesToCall & EnginesToCallTelepathy) { |
141 if (enginesToCall & EnginesToCallTelepathy) { |
164 _ids= EventLoggerEngine::instance()->filterAndOrderMessages(filter,sortOrder,body,matchFlags); |
142 _ids= EventLoggerEngine::instance()->filterAndOrderMessages(filter,sortOrder,body,matchFlags); |
|
143 QMetaObject::invokeMethod(this, "messagesFoundSlot", Qt::QueuedConnection); |
|
144 _pendingRequestCount++; |
165 } |
145 } |
166 |
146 |
167 if (enginesToCall & EnginesToCallModest) { |
147 if (enginesToCall & EnginesToCallModest) { |
168 modestEngineCalled=true; |
148 if (ModestEngine::instance()->queryMessages(messageService, _filter, body, matchFlags, |
169 if (ModestEngine::instance()->queryMessages(messageService, filter, body, matchFlags, |
|
170 sortOrder, limit, offset)) { |
149 sortOrder, limit, offset)) { |
171 _pendingRequestCount++; |
150 _pendingRequestCount++; |
172 } |
151 } |
173 } |
152 } |
174 |
153 |
175 if (!modestEngineCalled && enginesToCall & EnginesToCallTelepathy && _pendingRequestCount==0 ) { |
|
176 if (!_sorted) { |
|
177 MessagingHelper::orderMessages(_ids, sortOrder); |
|
178 } |
|
179 MessagingHelper::applyOffsetAndLimitToMessageIdList(_ids, limit, offset); |
|
180 |
|
181 emit q_ptr->messagesFound(_ids); |
|
182 setFinished(true); |
|
183 |
|
184 _ids.clear(); |
|
185 qDebug() << "QMessageServicePrivate::queryMessages return true"; |
|
186 return true; // Operation initialized and completed |
|
187 } |
|
188 |
|
189 if (_pendingRequestCount > 0) { |
154 if (_pendingRequestCount > 0) { |
190 _filter = filter; |
|
191 _sortOrder = sortOrder; |
155 _sortOrder = sortOrder; |
192 _limit = limit; |
156 _limit = limit; |
193 _offset = offset; |
157 _offset = offset; |
194 |
158 |
195 _state = QMessageService::ActiveState; |
159 stateChanged(QMessageService::ActiveState); |
196 emit stateChanged(_state); |
|
197 } else { |
160 } else { |
198 if(_active)setFinished(false); |
161 _filter = QMessageFilter(); |
|
162 setFinished(false); |
199 } |
163 } |
200 |
164 |
201 return _active; |
165 return _active; |
202 } |
166 } |
203 |
167 |
207 { |
171 { |
208 if (_active) { |
172 if (_active) { |
209 return false; |
173 return false; |
210 } |
174 } |
211 |
175 |
|
176 QMessageFilter handledFilter = filter; |
|
177 MessagingHelper::handleNestedFiltersFromMessageFilter(handledFilter); |
|
178 |
212 _count = 0; |
179 _count = 0; |
213 |
180 |
214 _active = true; |
181 _active = true; |
215 _error = QMessageManager::NoError; |
182 _error = QMessageManager::NoError; |
216 |
183 |
217 _pendingRequestCount = 0; |
184 _pendingRequestCount = 0; |
218 if (enginesToCall & EnginesToCallModest) { |
|
219 if (ModestEngine::instance()->countMessages(messageService, filter)) { |
|
220 _pendingRequestCount++; |
|
221 } |
|
222 } |
|
223 |
185 |
224 //TODO: SMS count support |
186 //TODO: SMS count support |
225 //if (enginesToCall & EnginesToCallTelepathy) { |
187 //if (enginesToCall & EnginesToCallTelepathy) { |
226 //} |
188 //} |
227 |
189 |
|
190 if (enginesToCall & EnginesToCallModest) { |
|
191 if (ModestEngine::instance()->countMessages(messageService, handledFilter)) { |
|
192 _pendingRequestCount++; |
|
193 } |
|
194 } |
|
195 |
228 if (_pendingRequestCount > 0) { |
196 if (_pendingRequestCount > 0) { |
229 _state = QMessageService::ActiveState; |
197 stateChanged(QMessageService::ActiveState); |
230 emit stateChanged(_state); |
|
231 } else { |
198 } else { |
232 setFinished(false); |
199 setFinished(false); |
233 } |
200 } |
234 |
201 |
235 return _active; |
202 return _active; |
236 } |
203 } |
237 |
204 |
238 |
205 |
239 void QMessageServicePrivate::setFinished(bool successful) |
206 void QMessageServicePrivate::setFinished(bool successful) |
240 { |
207 { |
241 qDebug() << "setFinished" << successful; |
|
242 if (!successful && _pendingRequestCount > 0) { |
208 if (!successful && _pendingRequestCount > 0) { |
243 _pendingRequestCount--; |
209 _pendingRequestCount--; |
244 } |
210 } |
245 |
211 |
246 if (_pendingRequestCount == 0) { |
212 if (_pendingRequestCount == 0) { |
247 if (!successful && (_error == QMessageManager::NoError)) { |
213 if (!successful && (_error == QMessageManager::NoError)) { |
248 // We must report an error of some sort |
214 // We must report an error of some sort |
249 _error = QMessageManager::RequestIncomplete; |
215 _error = QMessageManager::RequestIncomplete; |
250 } |
216 } |
251 qDebug() << "emit stateChanged(FinishedState)"; |
217 |
252 _state = QMessageService::FinishedState; |
|
253 _active = false; |
218 _active = false; |
254 emit q_ptr->stateChanged(_state); |
219 stateChanged(QMessageService::FinishedState); |
255 } |
220 } |
256 } |
221 } |
257 |
222 |
258 void QMessageServicePrivate::stateChanged(QMessageService::State state) |
223 void QMessageServicePrivate::stateChanged(QMessageService::State state) |
259 { |
224 { |
260 _state = state; |
225 _state = state; |
261 qDebug() <<" StateChanged" << state; |
|
262 emit q_ptr->stateChanged(_state); |
226 emit q_ptr->stateChanged(_state); |
263 } |
227 } |
264 |
228 |
265 void QMessageServicePrivate::messagesFound(const QMessageIdList &ids, bool isFiltered, bool isSorted) |
229 void QMessageServicePrivate::messagesFound(const QMessageIdList &ids, bool isFiltered, bool isSorted) |
266 { |
230 { |
267 qDebug() <<" MessagesFound"; |
|
268 _pendingRequestCount--; |
231 _pendingRequestCount--; |
269 |
232 |
270 if (!isFiltered) { |
233 if (!isFiltered) { |
271 _filtered = false; |
234 _filtered = false; |
272 } |
235 } |
316 void QMessageServicePrivate::progressChanged(uint value, uint total) |
285 void QMessageServicePrivate::progressChanged(uint value, uint total) |
317 { |
286 { |
318 emit q_ptr->progressChanged(value, total); |
287 emit q_ptr->progressChanged(value, total); |
319 } |
288 } |
320 |
289 |
|
290 void QMessageServicePrivate::messagesFoundSlot() |
|
291 { |
|
292 messagesFound(QMessageIdList(), true, false); |
|
293 } |
|
294 |
|
295 void QMessageServicePrivate::messagesCountedSlot() |
|
296 { |
|
297 messagesCounted(0); |
|
298 } |
321 |
299 |
322 |
300 |
323 QMessageService::QMessageService(QObject *parent) |
301 QMessageService::QMessageService(QObject *parent) |
324 : QObject(parent), |
302 : QObject(parent), |
325 d_ptr(new QMessageServicePrivate(this)) |
303 d_ptr(new QMessageServicePrivate(this)) |