void MessagingHelper::filterMessages(QMessageIdList& messageIds, const QMessageFilter& filter) { if (messageIds.count() && !filter.isEmpty()) { QMessageFilterPrivate* pf = QMessageFilterPrivate::implementation(filter); if ((pf->_field == QMessageFilterPrivate::None) && (pf->_filterList.count() == 0)) { if (pf->_notFilter) { // There is only one filter: empty ~QMessageFilter() // => accountIds must be cleared messageIds.clear(); return; } else { // There is only one filter: empty QMessageFilter() // => accountIds list can remain intact return; } } if (pf->_valid) { QMessageStore* store = QMessageStore::instance(); for (int i=messageIds.count()-1; i >= 0; i--) { QMessage message = store->message(messageIds[i]); if (!pf->filter(message)) { messageIds.removeAt(i); } } } } }
void MessagingHelper::applyOffsetAndLimitToMessageIdList(QMessageIdList& messageIds, int limit, int offset) { if (messageIds.count() == 0) { return; } if (offset > 0) { if (offset > messageIds.count()) { messageIds.clear(); } else { for (int i = 0; i < offset; i++) { messageIds.removeFirst(); } } } if (limit > 0) { for (int i = messageIds.count()-1; i >= limit; i--) { messageIds.removeAt(i); } } }