--- a/qtmobility/src/messaging/qmessageservice_maemo.cpp Mon May 03 13:18:40 2010 +0300
+++ b/qtmobility/src/messaging/qmessageservice_maemo.cpp Fri May 14 16:41:33 2010 +0300
@@ -72,65 +72,43 @@
uint limit, uint offset,
EnginesToCall enginesToCall)
{
- qDebug() << "QMessageServicePrivate::queryMessages 1";
if (_active) {
return false;
}
+ _filter = filter;
+ MessagingHelper::handleNestedFiltersFromMessageFilter(_filter);
+
_ids.clear();
_sorted = true;
_filtered = true;
_active = true;
_error = QMessageManager::NoError;
- bool modestEngineCalled=false;
-
- if (enginesToCall & EnginesToCallTelepathy) {
- _ids= EventLoggerEngine::instance()->filterAndOrderMessages(filter,sortOrder,QString(),QMessageDataComparator::MatchFlags());
- qDebug() << "QMessageServicePrivate::queryMessages filterAndOrderMessages:";
- }
_pendingRequestCount = 0;
+
+ if (enginesToCall & EnginesToCallTelepathy) {
+ _ids = EventLoggerEngine::instance()->filterAndOrderMessages(filter,sortOrder,QString(),QMessageDataComparator::MatchFlags());
+ QMetaObject::invokeMethod(this, "messagesFoundSlot", Qt::QueuedConnection);
+ _pendingRequestCount++;
+ }
+
if (enginesToCall & EnginesToCallModest) {
- qDebug() << "QMessageServicePrivate::queryMessages modest";
- modestEngineCalled=true;
- if (ModestEngine::instance()->queryMessages(messageService, filter, sortOrder, limit, offset)) {
- qDebug() << "QMessageServicePrivate::queryMessages modest done";
- _pendingRequestCount++;
-
+ if (ModestEngine::instance()->queryMessages(messageService, _filter, sortOrder, limit, offset)) {
+ _pendingRequestCount++;
}
- qDebug() << "QMessageServicePrivate::queryMessages modest done 2";
}
- if (!modestEngineCalled && enginesToCall & EnginesToCallTelepathy && _pendingRequestCount==0 ) {
- qDebug() << "QMessageServicePrivate::queryMessages only eventloggerengine";
- if (!_sorted) {
- MessagingHelper::orderMessages(_ids, sortOrder);
- }
- MessagingHelper::applyOffsetAndLimitToMessageIdList(_ids, limit, offset);
-
- emit q_ptr->messagesFound(_ids);
-
- qDebug() << "QMessageServicePrivate::queryMessages setFinished(true)";
- setFinished(true);
-
- _ids.clear();
- qDebug() << "QMessageServicePrivate::queryMessages return true";
- return true; // Operation initialized and completed
- }
-
-
if (_pendingRequestCount > 0) {
- _filter = filter;
_sortOrder = sortOrder;
_limit = limit;
_offset = offset;
- _state = QMessageService::ActiveState;
- emit messageService.stateChanged(_state);
+ stateChanged(QMessageService::ActiveState);
} else {
- qDebug() << "QMessageServicePrivate::queryMessages setFinixhed() active=" << _active;
- if(_active)setFinished(false);
+ _filter = QMessageFilter();
+ setFinished(false);
}
return _active;
@@ -144,11 +122,13 @@
uint limit, uint offset,
EnginesToCall enginesToCall)
{
- qDebug() << "QMessageServicePrivate::queryMessages 2";
if (_active) {
return false;
}
+ _filter = filter;
+ MessagingHelper::handleNestedFiltersFromMessageFilter(_filter);
+
_ids.clear();
_sorted = true;
_filtered = true;
@@ -158,44 +138,28 @@
_pendingRequestCount = 0;
- bool modestEngineCalled=false;
-
if (enginesToCall & EnginesToCallTelepathy) {
_ids= EventLoggerEngine::instance()->filterAndOrderMessages(filter,sortOrder,body,matchFlags);
+ QMetaObject::invokeMethod(this, "messagesFoundSlot", Qt::QueuedConnection);
+ _pendingRequestCount++;
}
if (enginesToCall & EnginesToCallModest) {
- modestEngineCalled=true;
- if (ModestEngine::instance()->queryMessages(messageService, filter, body, matchFlags,
+ if (ModestEngine::instance()->queryMessages(messageService, _filter, body, matchFlags,
sortOrder, limit, offset)) {
_pendingRequestCount++;
}
}
- if (!modestEngineCalled && enginesToCall & EnginesToCallTelepathy && _pendingRequestCount==0 ) {
- if (!_sorted) {
- MessagingHelper::orderMessages(_ids, sortOrder);
- }
- MessagingHelper::applyOffsetAndLimitToMessageIdList(_ids, limit, offset);
-
- emit q_ptr->messagesFound(_ids);
- setFinished(true);
-
- _ids.clear();
- qDebug() << "QMessageServicePrivate::queryMessages return true";
- return true; // Operation initialized and completed
- }
-
if (_pendingRequestCount > 0) {
- _filter = filter;
_sortOrder = sortOrder;
_limit = limit;
_offset = offset;
- _state = QMessageService::ActiveState;
- emit stateChanged(_state);
+ stateChanged(QMessageService::ActiveState);
} else {
- if(_active)setFinished(false);
+ _filter = QMessageFilter();
+ setFinished(false);
}
return _active;
@@ -209,25 +173,28 @@
return false;
}
+ QMessageFilter handledFilter = filter;
+ MessagingHelper::handleNestedFiltersFromMessageFilter(handledFilter);
+
_count = 0;
_active = true;
_error = QMessageManager::NoError;
_pendingRequestCount = 0;
- if (enginesToCall & EnginesToCallModest) {
- if (ModestEngine::instance()->countMessages(messageService, filter)) {
- _pendingRequestCount++;
- }
- }
//TODO: SMS count support
//if (enginesToCall & EnginesToCallTelepathy) {
//}
+ if (enginesToCall & EnginesToCallModest) {
+ if (ModestEngine::instance()->countMessages(messageService, handledFilter)) {
+ _pendingRequestCount++;
+ }
+ }
+
if (_pendingRequestCount > 0) {
- _state = QMessageService::ActiveState;
- emit stateChanged(_state);
+ stateChanged(QMessageService::ActiveState);
} else {
setFinished(false);
}
@@ -238,7 +205,6 @@
void QMessageServicePrivate::setFinished(bool successful)
{
- qDebug() << "setFinished" << successful;
if (!successful && _pendingRequestCount > 0) {
_pendingRequestCount--;
}
@@ -248,23 +214,20 @@
// We must report an error of some sort
_error = QMessageManager::RequestIncomplete;
}
- qDebug() << "emit stateChanged(FinishedState)";
- _state = QMessageService::FinishedState;
+
_active = false;
- emit q_ptr->stateChanged(_state);
+ stateChanged(QMessageService::FinishedState);
}
}
void QMessageServicePrivate::stateChanged(QMessageService::State state)
{
_state = state;
- qDebug() <<" StateChanged" << state;
emit q_ptr->stateChanged(_state);
}
void QMessageServicePrivate::messagesFound(const QMessageIdList &ids, bool isFiltered, bool isSorted)
{
- qDebug() <<" MessagesFound";
_pendingRequestCount--;
if (!isFiltered) {
@@ -290,6 +253,8 @@
}
MessagingHelper::applyOffsetAndLimitToMessageIdList(_ids, _limit, _offset);
+ ModestEngine::instance()->clearHeaderCache();
+
emit q_ptr->messagesFound(_ids);
setFinished(true);
@@ -303,8 +268,12 @@
void QMessageServicePrivate::messagesCounted(int count)
{
_pendingRequestCount--;
+
_count += count;
+
if (_pendingRequestCount == 0) {
+ ModestEngine::instance()->clearHeaderCache();
+
emit q_ptr->messagesCounted(_count);
setFinished(true);
@@ -318,6 +287,15 @@
emit q_ptr->progressChanged(value, total);
}
+void QMessageServicePrivate::messagesFoundSlot()
+{
+ messagesFound(QMessageIdList(), true, false);
+}
+
+void QMessageServicePrivate::messagesCountedSlot()
+{
+ messagesCounted(0);
+}
QMessageService::QMessageService(QObject *parent)
@@ -561,4 +539,6 @@
return d_ptr->_error;
}
+#include "moc_qmessageservice_maemo_p.cpp"
+
QTM_END_NAMESPACE