qtmobility/src/messaging/qmessageservice_maemo.cpp
changeset 5 453da2cfceef
parent 4 90517678cc4f
child 8 71781823f776
equal deleted inserted replaced
4:90517678cc4f 5:453da2cfceef
    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     }
   288         if (!_sorted) {
   251         if (!_sorted) {
   289             MessagingHelper::orderMessages(_ids, _sortOrder);
   252             MessagingHelper::orderMessages(_ids, _sortOrder);
   290         }
   253         }
   291         MessagingHelper::applyOffsetAndLimitToMessageIdList(_ids, _limit, _offset);
   254         MessagingHelper::applyOffsetAndLimitToMessageIdList(_ids, _limit, _offset);
   292 
   255 
       
   256         ModestEngine::instance()->clearHeaderCache();
       
   257 
   293         emit q_ptr->messagesFound(_ids);
   258         emit q_ptr->messagesFound(_ids);
   294 
   259 
   295         setFinished(true);
   260         setFinished(true);
   296 
   261 
   297         _ids.clear();
   262         _ids.clear();
   301 }
   266 }
   302 
   267 
   303 void QMessageServicePrivate::messagesCounted(int count)
   268 void QMessageServicePrivate::messagesCounted(int count)
   304 {
   269 {
   305     _pendingRequestCount--;
   270     _pendingRequestCount--;
       
   271 
   306     _count += count;
   272     _count += count;
       
   273 
   307     if (_pendingRequestCount == 0) {
   274     if (_pendingRequestCount == 0) {
       
   275         ModestEngine::instance()->clearHeaderCache();
       
   276 
   308         emit q_ptr->messagesCounted(_count);
   277         emit q_ptr->messagesCounted(_count);
   309 
   278 
   310         setFinished(true);
   279         setFinished(true);
   311 
   280 
   312         _count = 0;
   281         _count = 0;
   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))
   559 QMessageManager::Error QMessageService::error() const
   537 QMessageManager::Error QMessageService::error() const
   560 {
   538 {
   561     return d_ptr->_error;
   539     return d_ptr->_error;
   562 }
   540 }
   563 
   541 
       
   542 #include "moc_qmessageservice_maemo_p.cpp"
       
   543 
   564 QTM_END_NAMESPACE
   544 QTM_END_NAMESPACE