diff options
-rw-r--r-- | src/libraries/qmfclient/qmailmessagekey.cpp | 9 | ||||
-rw-r--r-- | src/libraries/qmfclient/qmailmessagelistmodel.cpp | 4 | ||||
-rw-r--r-- | src/libraries/qmfclient/qmailmessageset.cpp | 15 | ||||
-rw-r--r-- | src/libraries/qmfclient/qmailmessagethreadedmodel.cpp | 14 | ||||
-rw-r--r-- | src/libraries/qmfclient/qmailstore.cpp | 15 | ||||
-rw-r--r-- | src/libraries/qmfclient/qmailstoreimplementation_p.cpp | 29 | ||||
-rw-r--r-- | src/plugins/messageservices/imap/imapservice.cpp | 2 | ||||
-rw-r--r-- | src/plugins/messageservices/imap/imapstrategy.cpp | 24 | ||||
-rw-r--r-- | src/tools/messageserver/messageserver.cpp | 2 | ||||
-rw-r--r-- | src/tools/messageserver/servicehandler.cpp | 35 | ||||
-rw-r--r-- | src/tools/messageserver/servicehandler.h | 1 | ||||
-rw-r--r-- | tests/tst_qmaildisconnected/tst_qmaildisconnected.cpp | 2 | ||||
-rw-r--r-- | tests/tst_qmailserviceaction/tst_qmailserviceaction.cpp | 2 | ||||
-rw-r--r-- | tests/tst_qmailstorekeys/tst_qmailstorekeys.cpp | 36 |
14 files changed, 112 insertions, 78 deletions
diff --git a/src/libraries/qmfclient/qmailmessagekey.cpp b/src/libraries/qmfclient/qmailmessagekey.cpp index c7fa64d4..e144ae16 100644 --- a/src/libraries/qmfclient/qmailmessagekey.cpp +++ b/src/libraries/qmfclient/qmailmessagekey.cpp @@ -390,7 +390,8 @@ QMailMessageKey QMailMessageKey::id(const QMailMessageIdList &ids, QMailDataComp if (ids.count() >= IdLookupThreshold) { // If there are a large number of IDs, they will be inserted into a temporary table // with a uniqueness constraint; ensure only unique values are supplied - return QMailMessageKey(ids.toSet().toList(), Id, QMailKey::comparator(cmp)); + const QSet<QMailMessageId> uniqueIds(ids.constBegin(), ids.constEnd()); + return QMailMessageKey(uniqueIds.values(), Id, QMailKey::comparator(cmp)); } #endif @@ -670,7 +671,8 @@ QMailMessageKey QMailMessageKey::serverUid(const QStringList &uids, QMailDataCom if (uids.count() >= IdLookupThreshold) { // If there are a large number of UIDs, they will be inserted into a temporary table // with a uniqueness constraint; ensure only unique values are supplied - return QMailMessageKey(uids.toSet().toList(), ServerUid, QMailKey::comparator(cmp)); + const QSet<QString> uniqueIds(uids.constBegin(), uids.constEnd()); + return QMailMessageKey(uniqueIds.values(), ServerUid, QMailKey::comparator(cmp)); } #endif @@ -1001,7 +1003,8 @@ QMailMessageKey QMailMessageKey::copyServerUid(const QStringList &uids, QMailDat if (uids.count() >= IdLookupThreshold) { // If there are a large number of UIDs, they will be inserted into a temporary table // with a uniqueness constraint; ensure only unique values are supplied - return QMailMessageKey(uids.toSet().toList(), CopyServerUid, QMailKey::comparator(cmp)); + const QSet<QString> uniqueIds(uids.constBegin(), uids.constEnd()); + return QMailMessageKey(uniqueIds.values(), CopyServerUid, QMailKey::comparator(cmp)); } #endif diff --git a/src/libraries/qmfclient/qmailmessagelistmodel.cpp b/src/libraries/qmfclient/qmailmessagelistmodel.cpp index 059b543b..fb7bd6d4 100644 --- a/src/libraries/qmfclient/qmailmessagelistmodel.cpp +++ b/src/libraries/qmfclient/qmailmessagelistmodel.cpp @@ -402,7 +402,9 @@ bool QMailMessageListModelPrivate::updateMessages(const QMailMessageIdList &ids) QList<int> updateIndices; // Find the updated positions for our messages - QMailMessageKey idKey(QMailMessageKey::id((_idList.toSet() + ids.toSet()).toList())); + QSet<QMailMessageId> uniqueIds(_idList.constBegin(), _idList.constEnd()); + uniqueIds.unite(QSet<QMailMessageId>(ids.constBegin(), ids.constEnd())); + QMailMessageKey idKey(QMailMessageKey::id(uniqueIds.values())); QMailMessageIdList newIds(QMailStore::instance()->queryMessages(_key & idKey, _sortKey, _limit)); QMap<QMailMessageId, int> newPositions; diff --git a/src/libraries/qmfclient/qmailmessageset.cpp b/src/libraries/qmfclient/qmailmessageset.cpp index aa141d2e..25989dc4 100644 --- a/src/libraries/qmfclient/qmailmessageset.cpp +++ b/src/libraries/qmfclient/qmailmessageset.cpp @@ -958,7 +958,7 @@ void QMailFilterMessageSet::messagesAdded(const QMailMessageIdList &ids) QMailMessageIdList matchingIds = QMailStore::instance()->queryMessages(key & idFilter); if (!matchingIds.isEmpty()) { // Our filtered message set has changed - impl(this)->_messageIds.unite(QSet<QMailMessageId>::fromList(matchingIds)); + impl(this)->_messageIds.unite(QSet<QMailMessageId>(matchingIds.constBegin(), matchingIds.constEnd())); update(this); } } @@ -969,7 +969,7 @@ void QMailFilterMessageSet::messagesRemoved(const QMailMessageIdList &ids) { QSet<QMailMessageId>& _messageIds = impl(this)->_messageIds; if (!_messageIds.isEmpty()) { - QSet<QMailMessageId> removedIds = QSet<QMailMessageId>::fromList(ids); + QSet<QMailMessageId> removedIds = QSet<QMailMessageId>(ids.constBegin(), ids.constEnd()); // See if any of these messages are in our set removedIds.intersect(_messageIds); @@ -986,11 +986,12 @@ void QMailFilterMessageSet::messagesUpdated(const QMailMessageIdList &ids) QMailMessageKey key(messageKey()); if (!key.isNonMatching()) { QSet<QMailMessageId>& _messageIds = impl(this)->_messageIds; - QSet<QMailMessageId> updatedIds = QSet<QMailMessageId>::fromList(ids); + QSet<QMailMessageId> updatedIds = QSet<QMailMessageId>(ids.constBegin(), ids.constEnd()); // Find which of the updated messages should be in our set QMailMessageKey idFilter(QMailMessageKey::id(ids)); - QSet<QMailMessageId> matchingIds = QSet<QMailMessageId>::fromList(QMailStore::instance()->queryMessages(key & idFilter)); + const QMailMessageIdList filteredIds = QMailStore::instance()->queryMessages(key & idFilter); + QSet<QMailMessageId> matchingIds = QSet<QMailMessageId>(filteredIds.constBegin(), filteredIds.constEnd()); QSet<QMailMessageId> presentIds = updatedIds; QSet<QMailMessageId> absentIds = updatedIds; @@ -1037,7 +1038,8 @@ void QMailFilterMessageSet::folderContentsModified(const QMailFolderIdList &) void QMailFilterMessageSet::resyncState() { if (impl(this)->_minimized) { - impl(this)->_messageIds = QSet<QMailMessageId>::fromList(QMailStore::instance()->queryMessages(messageKey())); + const QMailMessageIdList ids = QMailStore::instance()->queryMessages(messageKey()); + impl(this)->_messageIds = QSet<QMailMessageId>(ids.constBegin(), ids.constEnd()); } else { impl(this)->_messageIds.clear(); } @@ -1057,7 +1059,8 @@ void QMailFilterMessageSet::reset() if (impl(this)->_minimized) { disconnect(model(), SIGNAL(folderContentsModified(QMailFolderIdList)), this, SLOT(folderContentsModified(QMailFolderIdList))); - impl(this)->_messageIds = QSet<QMailMessageId>::fromList(QMailStore::instance()->queryMessages(messageKey())); + const QMailMessageIdList ids = QMailStore::instance()->queryMessages(messageKey()); + impl(this)->_messageIds = QSet<QMailMessageId>(ids.constBegin(), ids.constEnd()); connect(model(), SIGNAL(messagesAdded(QMailMessageIdList)), this, SLOT(messagesAdded(QMailMessageIdList))); connect(model(), SIGNAL(messagesRemoved(QMailMessageIdList)), this, SLOT(messagesRemoved(QMailMessageIdList))); diff --git a/src/libraries/qmfclient/qmailmessagethreadedmodel.cpp b/src/libraries/qmfclient/qmailmessagethreadedmodel.cpp index 59c68f38..57f2235d 100644 --- a/src/libraries/qmfclient/qmailmessagethreadedmodel.cpp +++ b/src/libraries/qmfclient/qmailmessagethreadedmodel.cpp @@ -528,12 +528,13 @@ bool QMailMessageThreadedModelPrivate::processMessagesUpdated(const QMailMessage bool QMailMessageThreadedModelPrivate::updateMessages(const QMailMessageIdList &ids) { - QSet<QMailMessageId> existingIds(_currentIds.toSet()); + QSet<QMailMessageId> existingIds(_currentIds.constBegin(), _currentIds.constEnd()); + existingIds.unite(QSet<QMailMessageId>(ids.constBegin(), ids.constEnd())); - QMailMessageKey idKey(QMailMessageKey::id((existingIds + ids.toSet()).toList())); + QMailMessageKey idKey(QMailMessageKey::id(existingIds.values())); QMailMessageIdList newIds(QMailStore::instance()->queryMessages(_key & idKey, _sortKey, _limit)); - QSet<QMailMessageId> currentIds(newIds.toSet()); + QSet<QMailMessageId> currentIds(newIds.constBegin(), newIds.constEnd()); // Find which of the messages we must add and remove QMailMessageIdList additionIds; @@ -633,7 +634,10 @@ bool QMailMessageThreadedModelPrivate::updateMessages(const QMailMessageIdList & removeMessages(temporaryRemovalIds, &readditionIds); // Find the locations for the added and reinserted messages - addMessages((additionIds.toSet() + temporaryRemovalIds.toSet() + readditionIds.toSet()).toList()); + QSet<QMailMessageId> uniqueIds(additionIds.constBegin(), additionIds.constEnd()); + uniqueIds.unite(QSet<QMailMessageId>(temporaryRemovalIds.constBegin(), temporaryRemovalIds.constEnd())); + uniqueIds.unite(QSet<QMailMessageId>(readditionIds.constBegin(), readditionIds.constEnd())); + addMessages(uniqueIds.values()); return true; } @@ -705,7 +709,7 @@ bool QMailMessageThreadedModelPrivate::removeMessages(const QMailMessageIdList & } if (readditions) { - *readditions = childIds.toList(); + *readditions = childIds.values(); } return true; diff --git a/src/libraries/qmfclient/qmailstore.cpp b/src/libraries/qmfclient/qmailstore.cpp index c8f3499f..a3aebca6 100644 --- a/src/libraries/qmfclient/qmailstore.cpp +++ b/src/libraries/qmfclient/qmailstore.cpp @@ -1232,7 +1232,8 @@ void QMailStore::emitAccountNotification(ChangeType type, const QMailAccountIdLi Q_ASSERT(!ids.contains(QMailAccountId())); if (!ids.isEmpty()) { // Ensure there are no duplicates in the list - QMailAccountIdList idList(ids.toSet().toList()); + const QSet<QMailAccountId> uids(ids.constBegin(), ids.constEnd()); + QMailAccountIdList idList(uids.constBegin(), uids.constEnd()); d->notifyAccountsChange(type, idList); @@ -1262,7 +1263,8 @@ void QMailStore::emitFolderNotification(ChangeType type, const QMailFolderIdList Q_ASSERT(!ids.contains(QMailFolderId())); if (!ids.isEmpty()) { // Ensure there are no duplicates in the list - QMailFolderIdList idList(ids.toSet().toList()); + const QSet<QMailFolderId> uids(ids.constBegin(), ids.constEnd()); + QMailFolderIdList idList(uids.constBegin(), uids.constEnd()); d->notifyFoldersChange(type, idList); @@ -1292,7 +1294,8 @@ void QMailStore::emitThreadNotification(ChangeType type, const QMailThreadIdList Q_ASSERT(!ids.contains(QMailThreadId())); if (!ids.isEmpty()) { // Ensure there are no duplicates in the list - QMailThreadIdList idList(ids.toSet().toList()); + const QSet<QMailThreadId> uids(ids.constBegin(), ids.constEnd()); + QMailThreadIdList idList(uids.constBegin(), uids.constEnd()); d->notifyThreadsChange(type, idList); @@ -1322,7 +1325,8 @@ void QMailStore::emitMessageNotification(ChangeType type, const QMailMessageIdLi Q_ASSERT(!ids.contains(QMailMessageId())); if (!ids.isEmpty()) { // Ensure there are no duplicates in the list - QMailMessageIdList idList(ids.toSet().toList()); + const QSet<QMailMessageId> uids(ids.constBegin(), ids.constEnd()); + QMailMessageIdList idList(uids.constBegin(), uids.constEnd()); d->notifyMessagesChange(type, idList); @@ -1393,7 +1397,8 @@ void QMailStore::emitRemovalRecordNotification(ChangeType type, const QMailAccou { if (!ids.isEmpty()) { // Ensure there are no duplicates in the list - QMailAccountIdList idList(ids.toSet().toList()); + const QSet<QMailAccountId> uids(ids.constBegin(), ids.constEnd()); + QMailAccountIdList idList(uids.constBegin(), uids.constEnd()); d->notifyMessageRemovalRecordsChange(type, idList); diff --git a/src/libraries/qmfclient/qmailstoreimplementation_p.cpp b/src/libraries/qmfclient/qmailstoreimplementation_p.cpp index 8b2c1967..625e7fc1 100644 --- a/src/libraries/qmfclient/qmailstoreimplementation_p.cpp +++ b/src/libraries/qmfclient/qmailstoreimplementation_p.cpp @@ -143,11 +143,11 @@ void emitIpcUpdates(const QMailMessageIdList& ids, quint64 status, bool set, co } } -template<typename IDSetType> -void dispatchNotifications(IDSetType &ids, const QString &sig) +template<typename IDType> +void dispatchNotifications(QSet<IDType> &ids, const QString &sig) { if (!ids.isEmpty()) { - emitIpcUpdates(ids.toList(), sig); + emitIpcUpdates(ids.values(), sig); ids.clear(); } } @@ -167,7 +167,7 @@ void dispatchNotifications(MessagesPropertiesBuffer& data, const QString &sig) { if (!data.isEmpty()) { foreach (const MessagesProperties& props, data) { - emitIpcUpdates(props.second.toList(), props.first.first, props.first.second, sig); + emitIpcUpdates(props.second.values(), props.first.first, props.first.second, sig); } data.clear(); } @@ -180,7 +180,8 @@ void dispatchNotifications(MessagesStatusBuffer& data, const QString &sig) { if (!data.isEmpty()) { foreach (const MessagesStatus& status, data.keys()) { - emitIpcUpdates(data[status].toList(), status.first, status.second, sig); + const QSet<QMailMessageId> ids = data[status]; + emitIpcUpdates(ids.values(), status.first, status.second, sig); } data.clear(); } @@ -396,7 +397,7 @@ void QMailStoreImplementationBase::notifyAccountsChange(QMailStore::ChangeType c flushTimer.start(flushTimeout); } - QSet<QMailAccountId> idsSet = QSet<QMailAccountId>::fromList(ids); + QSet<QMailAccountId> idsSet = QSet<QMailAccountId>(ids.constBegin(), ids.constEnd()); switch (changeType) { case QMailStore::Added: @@ -433,7 +434,7 @@ void QMailStoreImplementationBase::notifyMessagesChange(QMailStore::ChangeType c flushTimer.start(flushTimeout); } - QSet<QMailMessageId> idsSet = QSet<QMailMessageId>::fromList(ids); + QSet<QMailMessageId> idsSet = QSet<QMailMessageId>(ids.constBegin(), ids.constEnd()); switch (changeType) { case QMailStore::Added: @@ -499,7 +500,7 @@ void QMailStoreImplementationBase::notifyMessagesDataChange(const QMailMessageId flushTimer.start(flushTimeout); } - MessagesProperties props(QPair<QMailMessageKey::Properties, QMailMessageMetaData>(properties, data), ids.toSet()); + MessagesProperties props(QPair<QMailMessageKey::Properties, QMailMessageMetaData>(properties, data), QSet<QMailMessageId>(ids.constBegin(), ids.constEnd())); messagesPropertiesBuffer.append(props);; } else { @@ -519,7 +520,7 @@ void QMailStoreImplementationBase::notifyMessagesDataChange(const QMailMessageId } MessagesStatus messageStatus(status, set); - messagesStatusBuffer[messageStatus] += ids.toSet(); + messagesStatusBuffer[messageStatus] += QSet<QMailMessageId>(ids.constBegin(), ids.constEnd()); } else { emitIpcUpdates(ids, status, set, messageStatusUpdatedSig()); @@ -539,7 +540,7 @@ void QMailStoreImplementationBase::notifyThreadsChange(QMailStore::ChangeType ch flushTimer.start(flushTimeout); } - QSet<QMailThreadId> idsSet = QSet<QMailThreadId>::fromList(ids); + QSet<QMailThreadId> idsSet = QSet<QMailThreadId>(ids.constBegin(), ids.constEnd()); switch (changeType) { case QMailStore::Added: @@ -577,7 +578,7 @@ void QMailStoreImplementationBase::notifyFoldersChange(QMailStore::ChangeType ch flushTimer.start(flushTimeout); } - QSet<QMailFolderId> idsSet = QSet<QMailFolderId>::fromList(ids); + QSet<QMailFolderId> idsSet = QSet<QMailFolderId>(ids.constBegin(), ids.constEnd()); switch (changeType) { case QMailStore::Added: @@ -614,7 +615,7 @@ void QMailStoreImplementationBase::notifyMessageRemovalRecordsChange(QMailStore: flushTimer.start(flushTimeout); } - QSet<QMailAccountId> idsSet = QSet<QMailAccountId>::fromList(ids); + QSet<QMailAccountId> idsSet = QSet<QMailAccountId>(ids.constBegin(), ids.constEnd()); switch (changeType) { case QMailStore::Added: @@ -652,7 +653,7 @@ void QMailStoreImplementationBase::notifyTransmissionInProgress(const QMailAccou bool QMailStoreImplementationBase::setRetrievalInProgress(const QMailAccountIdList& ids) { - QSet<QMailAccountId> idSet(ids.toSet()); + QSet<QMailAccountId> idSet(ids.constBegin(), ids.constEnd()); if ((idSet != retrievalInProgressIds) || !retrievalSetInitialized) { retrievalInProgressIds = idSet; retrievalSetInitialized = true; @@ -664,7 +665,7 @@ bool QMailStoreImplementationBase::setRetrievalInProgress(const QMailAccountIdLi bool QMailStoreImplementationBase::setTransmissionInProgress(const QMailAccountIdList& ids) { - QSet<QMailAccountId> idSet(ids.toSet()); + QSet<QMailAccountId> idSet(ids.constBegin(), ids.constEnd()); if ((idSet != transmissionInProgressIds) || !transmissionSetInitialized) { transmissionInProgressIds = idSet; transmissionSetInitialized = true; diff --git a/src/plugins/messageservices/imap/imapservice.cpp b/src/plugins/messageservices/imap/imapservice.cpp index eca22f75..7aecd14a 100644 --- a/src/plugins/messageservices/imap/imapservice.cpp +++ b/src/plugins/messageservices/imap/imapservice.cpp @@ -1205,7 +1205,7 @@ bool ImapService::Source::prepareMessages(const QList<QPair<QMailMessagePart::Lo bool external(false); // Are these messages being resolved for internal or external references? - QMailMessageKey key(QMailMessageKey::id(referringIds.toList())); + QMailMessageKey key(QMailMessageKey::id(referringIds.values())); QMailMessageKey::Properties props(QMailMessageKey::Id | QMailMessageKey::ParentAccountId | QMailMessageKey::Status); foreach (const QMailMessageMetaData &metaData, QMailStore::instance()->messagesMetaData(key, props)) { diff --git a/src/plugins/messageservices/imap/imapstrategy.cpp b/src/plugins/messageservices/imap/imapstrategy.cpp index 916afdfd..0b3910f8 100644 --- a/src/plugins/messageservices/imap/imapstrategy.cpp +++ b/src/plugins/messageservices/imap/imapstrategy.cpp @@ -347,13 +347,15 @@ QSet<QMailFolderId> foldersApplicableTo(QMailMessageKey const& messagekey, QSet< if (arg.op == QMailKey::Equal || arg.op == QMailKey::Includes) { Q_ASSERT(arg.valueList.count() == 1); Q_ASSERT(arg.valueList[0].canConvert<QMailFolderId>()); - included.unite(QMailStore::instance()->queryFolders( - QMailFolderKey::ancestorFolderIds(arg.valueList[0].value<QMailFolderId>())).toSet()); + const auto ancestorFolders = QMailStore::instance()->queryFolders( + QMailFolderKey::ancestorFolderIds(arg.valueList[0].value<QMailFolderId>())); + included.unite(QSet<QMailFolderId>(ancestorFolders.constBegin(), ancestorFolders.constEnd())); } else if (arg.op == QMailKey::NotEqual || arg.op == QMailKey::Excludes) { Q_ASSERT(arg.valueList.count() == 1); Q_ASSERT(arg.valueList[0].canConvert<QMailFolderId>()); - excluded.unite(QMailStore::instance()->queryFolders( - QMailFolderKey::ancestorFolderIds(arg.valueList[0].value<QMailFolderId>())).toSet()); + const auto ancestorFolders = QMailStore::instance()->queryFolders( + QMailFolderKey::ancestorFolderIds(arg.valueList[0].value<QMailFolderId>())); + excluded.unite(QSet<QMailFolderId>(ancestorFolders.constBegin(), ancestorFolders.constEnd())); } else { Q_ASSERT(false); } @@ -363,13 +365,15 @@ QSet<QMailFolderId> foldersApplicableTo(QMailMessageKey const& messagekey, QSet< if (arg.op == QMailKey::Equal || arg.op == QMailKey::Includes) { Q_ASSERT(arg.valueList.count() == 1); Q_ASSERT(arg.valueList[0].canConvert<QMailAccountId>()); - included.unite(QMailStore::instance()->queryFolders( - QMailFolderKey::parentAccountId(arg.valueList[0].value<QMailAccountId>())).toSet()); + const auto parentAccountFolders = QMailStore::instance()->queryFolders( + QMailFolderKey::parentAccountId(arg.valueList[0].value<QMailAccountId>())); + included.unite(QSet<QMailFolderId>(parentAccountFolders.constBegin(), parentAccountFolders.constEnd())); } else if (arg.op == QMailKey::NotEqual || arg.op == QMailKey::Excludes) { Q_ASSERT(arg.valueList.count() == 1); Q_ASSERT(arg.valueList[0].canConvert<QMailAccountId>()); - excluded.unite(QMailStore::instance()->queryFolders( - QMailFolderKey::parentAccountId(arg.valueList[0].value<QMailAccountId>())).toSet()); + const auto parentAccountFolders = QMailStore::instance()->queryFolders( + QMailFolderKey::parentAccountId(arg.valueList[0].value<QMailAccountId>())); + excluded.unite(QSet<QMailFolderId>(parentAccountFolders.constBegin(), parentAccountFolders.constEnd())); } else { Q_ASSERT(false); } @@ -1954,9 +1958,9 @@ void ImapSearchMessageStrategy::folderListCompleted(ImapStrategyContextBase *con _limit = -1; _count = false; } else { - QSet<QMailFolderId> accountFolders(_mailboxList.toSet()); + QSet<QMailFolderId> accountFolders(_mailboxList.constBegin(), _mailboxList.constEnd()); - QMailFolderIdList foldersToSearch(foldersApplicableTo(_searches.first().criteria, accountFolders).toList()); + QMailFolderIdList foldersToSearch(foldersApplicableTo(_searches.first().criteria, accountFolders).values()); if (foldersToSearch.isEmpty()) { ImapRetrieveFolderListStrategy::folderListCompleted(context); diff --git a/src/tools/messageserver/messageserver.cpp b/src/tools/messageserver/messageserver.cpp index b9cae752..17da8118 100644 --- a/src/tools/messageserver/messageserver.cpp +++ b/src/tools/messageserver/messageserver.cpp @@ -297,7 +297,7 @@ void MessageServer::retrievalCompleted(quint64 action) if (!completionAttempted) { // Complete the messages that we selected for immediate completion completionAttempted = true; - handler->retrieveMessages(action, completionList.toList(), QMailRetrievalAction::Content); + handler->retrieveMessages(action, completionList.values(), QMailRetrievalAction::Content); return; } else { completionList.clear(); diff --git a/src/tools/messageserver/servicehandler.cpp b/src/tools/messageserver/servicehandler.cpp index bee046d6..7d7b1d6e 100644 --- a/src/tools/messageserver/servicehandler.cpp +++ b/src/tools/messageserver/servicehandler.cpp @@ -987,6 +987,11 @@ QSet<QMailMessageService*> ServiceHandler::sourceServiceSet(const QSet<QMailAcco return services; } +QSet<QMailMessageService*> ServiceHandler::sourceServiceSet(const QMailAccountIdList &ids) const +{ + return sourceServiceSet(QSet<QMailAccountId>(ids.constBegin(), ids.constEnd())); +} + QSet<QMailMessageService*> ServiceHandler::sinkServiceSet(const QMailAccountId &id) const { QSet<QMailMessageService*> services; @@ -1242,10 +1247,10 @@ void ServiceHandler::expireAction() } if (retrievalSetModified) { - QMailStore::instance()->setRetrievalInProgress(_retrievalAccountIds.toList()); + QMailStore::instance()->setRetrievalInProgress(QMailAccountIdList(_retrievalAccountIds.constBegin(), _retrievalAccountIds.constEnd())); } if (transmissionSetModified) { - QMailStore::instance()->setTransmissionInProgress(_transmissionAccountIds.toList()); + QMailStore::instance()->setTransmissionInProgress(QMailAccountIdList(_transmissionAccountIds.constBegin(), _transmissionAccountIds.constEnd())); } mActiveActions.erase(it); @@ -1254,7 +1259,7 @@ void ServiceHandler::expireAction() mActionExpiry.removeFirst(); // Restart the service(s) for each of these accounts - QMailAccountIdList ids(serviceAccounts.toList()); + QMailAccountIdList ids(serviceAccounts.constBegin(), serviceAccounts.constEnd()); deregisterAccountServices(ids, QMailServiceAction::Status::ErrTimeout, tr("Request is not progressing")); registerAccountServices(ids); @@ -1319,10 +1324,10 @@ void ServiceHandler::cancelTransfer(quint64 action) } if (retrievalSetModified) { - QMailStore::instance()->setRetrievalInProgress(_retrievalAccountIds.toList()); + QMailStore::instance()->setRetrievalInProgress(QMailAccountIdList(_retrievalAccountIds.constBegin(), _retrievalAccountIds.constEnd())); } if (transmissionSetModified) { - QMailStore::instance()->setTransmissionInProgress(_transmissionAccountIds.toList()); + QMailStore::instance()->setTransmissionInProgress(QMailAccountIdList(_transmissionAccountIds.constBegin(), _transmissionAccountIds.constEnd())); } //The ActionData might have already been deleted by actionCompleted, triggered by cancelOperation @@ -1370,7 +1375,7 @@ void ServiceHandler::transmitMessages(quint64 action, const QMailAccountId &acco // Find the accounts that own these messages QMap<QMailAccountId, QList<QPair<QMailMessagePart::Location, QMailMessagePart::Location> > > unresolvedLists(messageResolvers(unresolvedMessages)); - sources = sourceServiceSet(unresolvedLists.keys().toSet()); + sources = sourceServiceSet(unresolvedLists.keys()); // Emit no signal after completing preparation enqueueRequest(action, serialize(unresolvedLists), sources, &ServiceHandler::dispatchPrepareMessages, 0, TransmitMessagesRequestType); @@ -1406,7 +1411,7 @@ void ServiceHandler::transmitMessage(quint64 action, const QMailMessageId &messa // Find the accounts that own these messages QMap<QMailAccountId, QList<QPair<QMailMessagePart::Location, QMailMessagePart::Location> > > unresolvedLists(messageResolvers(unresolvedMessages)); - sources = sourceServiceSet(unresolvedLists.keys().toSet()); + sources = sourceServiceSet(unresolvedLists.keys()); // Emit no signal after completing preparation enqueueRequest(action, serialize(unresolvedLists), sources, &ServiceHandler::dispatchPrepareMessages, 0, TransmitMessagesRequestType); @@ -1703,7 +1708,7 @@ void ServiceHandler::retrieveMessages(quint64 action, const QMailMessageIdList & { QMap<QMailAccountId, QMailMessageIdList> messageLists(accountMessages(messageIds)); - QSet<QMailMessageService*> sources(sourceServiceSet(messageLists.keys().toSet())); + QSet<QMailMessageService*> sources(sourceServiceSet(messageLists.keys())); if (sources.isEmpty()) { reportFailure(action, QMailServiceAction::Status::ErrNoConnection, tr("Unable to retrieve messages for unconfigured account")); } else { @@ -1740,7 +1745,7 @@ bool ServiceHandler::dispatchRetrieveMessages(quint64 action, const QByteArray & } } - QMailStore::instance()->setRetrievalInProgress(_retrievalAccountIds.toList()); + QMailStore::instance()->setRetrievalInProgress(QMailAccountIdList(_retrievalAccountIds.constBegin(), _retrievalAccountIds.constEnd())); return true; } @@ -1976,7 +1981,7 @@ void ServiceHandler::onlineDeleteMessages(quint64 action, const QMailMessageIdLi discardMessages(action, messageIds); } else { QMap<QMailAccountId, QMailMessageIdList> messageLists(accountMessages(messageIds)); - sources = sourceServiceSet(messageLists.keys().toSet()); + sources = sourceServiceSet(messageLists.keys()); if (sources.isEmpty()) { reportFailure(action, QMailServiceAction::Status::ErrNoConnection, tr("Unable to delete messages for unconfigured account")); } else { @@ -2132,7 +2137,7 @@ void ServiceHandler::onlineMoveMessages(quint64 action, const QMailMessageIdList QSet<QMailMessageService*> sources; QMap<QMailAccountId, QMailMessageIdList> messageLists(accountMessages(messageIds)); - sources = sourceServiceSet(messageLists.keys().toSet()); + sources = sourceServiceSet(messageLists.keys()); if (sources.isEmpty()) { reportFailure(action, QMailServiceAction::Status::ErrNoConnection, tr("Unable to move messages for unconfigured account")); } else { @@ -2173,7 +2178,7 @@ void ServiceHandler::onlineFlagMessagesAndMoveToStandardFolder(quint64 action, c QSet<QMailMessageService*> sources; QMap<QMailAccountId, QMailMessageIdList> messageLists(accountMessages(messageIds)); - sources = sourceServiceSet(messageLists.keys().toSet()); + sources = sourceServiceSet(messageLists.keys()); if (sources.isEmpty()) { reportFailure(action, QMailServiceAction::Status::ErrNoConnection, tr("Unable to flag messages for unconfigured account")); } else { @@ -2615,7 +2620,7 @@ void ServiceHandler::searchMessages(quint64 action, const QMailMessageKey& filte { if (spec == QMailSearchAction::Remote) { // Find the accounts that we need to search within from the criteria - QSet<QMailAccountId> searchAccountIds(accountsApplicableTo(filter, sourceMap.keys().toSet())); + QSet<QMailAccountId> searchAccountIds(accountsApplicableTo(filter, QSet<QMailAccountId>(sourceMap.keyBegin(), sourceMap.keyEnd()))); QSet<QMailMessageService*> sources(sourceServiceSet(searchAccountIds)); if (sources.isEmpty()) { @@ -3198,7 +3203,7 @@ void ServiceHandler::setRetrievalInProgress(const QMailAccountId &accountId, boo } if (modified) { - QMailStore::instance()->setRetrievalInProgress(_retrievalAccountIds.toList()); + QMailStore::instance()->setRetrievalInProgress(QMailAccountIdList(_retrievalAccountIds.constBegin(), _retrievalAccountIds.constEnd())); } } @@ -3215,7 +3220,7 @@ void ServiceHandler::setTransmissionInProgress(const QMailAccountId &accountId, } if (modified) { - QMailStore::instance()->setTransmissionInProgress(_transmissionAccountIds.toList()); + QMailStore::instance()->setTransmissionInProgress(QMailAccountIdList(_transmissionAccountIds.constBegin(), _transmissionAccountIds.constEnd())); } } diff --git a/src/tools/messageserver/servicehandler.h b/src/tools/messageserver/servicehandler.h index 789bd678..280363d3 100644 --- a/src/tools/messageserver/servicehandler.h +++ b/src/tools/messageserver/servicehandler.h @@ -229,6 +229,7 @@ private: QSet<QMailMessageService*> sourceServiceSet(const QMailAccountId &id) const; QSet<QMailMessageService*> sourceServiceSet(const QSet<QMailAccountId> &ids) const; + QSet<QMailMessageService*> sourceServiceSet(const QMailAccountIdList &ids) const; QSet<QMailMessageService*> sinkServiceSet(const QMailAccountId &id) const; QSet<QMailMessageService*> sinkServiceSet(const QSet<QMailAccountId> &ids) const; diff --git a/tests/tst_qmaildisconnected/tst_qmaildisconnected.cpp b/tests/tst_qmaildisconnected/tst_qmaildisconnected.cpp index bc6f10ed..c411cd5f 100644 --- a/tests/tst_qmaildisconnected/tst_qmaildisconnected.cpp +++ b/tests/tst_qmaildisconnected/tst_qmaildisconnected.cpp @@ -411,7 +411,7 @@ void tst_QMailDisconnected::test_qmaildisconnected() QMailMessage dstMsg; QMailDisconnected::copyPreviousFolder(QMailMessage(savedMessage2), &dstMsg); - QMap<QMailFolderId, QMailMessageIdList> map = QMailDisconnected::restoreMap(allMessages.toList()); + QMap<QMailFolderId, QMailMessageIdList> map = QMailDisconnected::restoreMap(allMessages.values()); QMailDisconnected::copyToFolder(QMailMessageIdList() << inboxMessage1, archivedId1); QMailDisconnected::copyToStandardFolder(QMailMessageIdList() << inboxMessage1, QMailFolder::JunkFolder); diff --git a/tests/tst_qmailserviceaction/tst_qmailserviceaction.cpp b/tests/tst_qmailserviceaction/tst_qmailserviceaction.cpp index e206479f..7fb9ce65 100644 --- a/tests/tst_qmailserviceaction/tst_qmailserviceaction.cpp +++ b/tests/tst_qmailserviceaction/tst_qmailserviceaction.cpp @@ -412,7 +412,7 @@ void tst_QMailServiceAction::test_retrievalaction() uint min = 10240u; action.retrieveFolderList(accountId1, inboxId1); action.retrieveMessageList(accountId2, inboxId2); - action.retrieveMessages(allMessages.toList()); + action.retrieveMessages(allMessages.values()); action.retrieveMessageRange(inboxMessage1, min); action.exportUpdates(accountId1); diff --git a/tests/tst_qmailstorekeys/tst_qmailstorekeys.cpp b/tests/tst_qmailstorekeys/tst_qmailstorekeys.cpp index cd8c1709..5301b4c2 100644 --- a/tests/tst_qmailstorekeys/tst_qmailstorekeys.cpp +++ b/tests/tst_qmailstorekeys/tst_qmailstorekeys.cpp @@ -97,7 +97,8 @@ private: // We only want to compare sets, disregarding ordering const QSet<QMailAccountId> accountSet(const QMailAccountKey &key) const { - return QMailStore::instance()->queryAccounts(key).toSet(); + const QMailAccountIdList &accounts(QMailStore::instance()->queryAccounts(key)); + return QSet<QMailAccountId>(accounts.constBegin(), accounts.constEnd()); } QSet<QMailAccountId> accountSet() const @@ -107,7 +108,8 @@ private: const QSet<QMailFolderId> folderSet(const QMailFolderKey &key) const { - return QMailStore::instance()->queryFolders(key).toSet(); + const QMailFolderIdList &folders(QMailStore::instance()->queryFolders(key)); + return QSet<QMailFolderId>(folders.constBegin(), folders.constEnd()); } QSet<QMailFolderId> folderSet() const @@ -117,7 +119,8 @@ private: const QSet<QMailMessageId> messageSet(const QMailMessageKey &key) const { - return QMailStore::instance()->queryMessages(key).toSet(); + const QMailMessageIdList &messages(QMailStore::instance()->queryMessages(key)); + return QSet<QMailMessageId>(messages.constBegin(), messages.constEnd()); } QSet<QMailMessageId> messageSet() const @@ -570,8 +573,9 @@ void tst_QMailStoreKeys::accountId() QCOMPARE(accountSet(~QMailAccountKey::id(QMailAccountId(), NotEqual)), noAccounts); // List inclusion - QCOMPARE(accountSet(QMailAccountKey::id(allAccounts.toList())), allAccounts); - QCOMPARE(accountSet(~QMailAccountKey::id(allAccounts.toList())), noAccounts); + const QMailAccountIdList accounts(allAccounts.constBegin(), allAccounts.constEnd()); + QCOMPARE(accountSet(QMailAccountKey::id(accounts)), allAccounts); + QCOMPARE(accountSet(~QMailAccountKey::id(accounts)), noAccounts); QCOMPARE(accountSet(QMailAccountKey::id(QMailAccountIdList() << accountId1)), accountSet() << accountId1); QCOMPARE(accountSet(~QMailAccountKey::id(QMailAccountIdList() << accountId1)), accountSet() << accountId2 << accountId3 << accountId4); QCOMPARE(accountSet(QMailAccountKey::id(QMailAccountIdList() << accountId2)), accountSet() << accountId2); @@ -580,8 +584,8 @@ void tst_QMailStoreKeys::accountId() QCOMPARE(accountSet(~QMailAccountKey::id(QMailAccountIdList() << accountId1 << accountId2)), accountSet() << accountId3 << accountId4); // List exclusion - QCOMPARE(accountSet(QMailAccountKey::id(allAccounts.toList(), Excludes)), noAccounts); - QCOMPARE(accountSet(~QMailAccountKey::id(allAccounts.toList(), Excludes)), allAccounts); + QCOMPARE(accountSet(QMailAccountKey::id(accounts, Excludes)), noAccounts); + QCOMPARE(accountSet(~QMailAccountKey::id(accounts, Excludes)), allAccounts); QCOMPARE(accountSet(QMailAccountKey::id(QMailAccountIdList() << accountId1, Excludes)), accountSet() << accountId2 << accountId3 << accountId4); QCOMPARE(accountSet(~QMailAccountKey::id(QMailAccountIdList() << accountId1, Excludes)), accountSet() << accountId1); QCOMPARE(accountSet(QMailAccountKey::id(QMailAccountIdList() << accountId2, Excludes)), accountSet() << accountId1 << accountId3 << accountId4); @@ -841,8 +845,9 @@ void tst_QMailStoreKeys::folderId() QCOMPARE(folderSet(~QMailFolderKey::id(QMailFolderId(), NotEqual)), noFolders); // List inclusion - QCOMPARE(folderSet(QMailFolderKey::id(allFolders.toList())), allFolders); - QCOMPARE(folderSet(~QMailFolderKey::id(allFolders.toList())), standardFolders); + const QMailFolderIdList folders(allFolders.constBegin(), allFolders.constEnd()); + QCOMPARE(folderSet(QMailFolderKey::id(folders)), allFolders); + QCOMPARE(folderSet(~QMailFolderKey::id(folders)), standardFolders); QCOMPARE(folderSet(QMailFolderKey::id(QMailFolderIdList() << inboxId1)), folderSet() << inboxId1); QCOMPARE(folderSet(~QMailFolderKey::id(QMailFolderIdList() << inboxId1)), standardFolders + folderSet() << savedId1 << archivedId1 << inboxId2 << savedId2 << archivedId2); QCOMPARE(folderSet(QMailFolderKey::id(QMailFolderIdList() << archivedId2)), folderSet() << archivedId2); @@ -851,8 +856,8 @@ void tst_QMailStoreKeys::folderId() QCOMPARE(folderSet(~QMailFolderKey::id(QMailFolderIdList() << inboxId1 << archivedId2)), standardFolders + folderSet() << savedId1 << archivedId1 << inboxId2 << savedId2); // List exclusion - QCOMPARE(folderSet(QMailFolderKey::id(allFolders.toList(), Excludes)), standardFolders); - QCOMPARE(folderSet(~QMailFolderKey::id(allFolders.toList(), Excludes)), allFolders); + QCOMPARE(folderSet(QMailFolderKey::id(folders, Excludes)), standardFolders); + QCOMPARE(folderSet(~QMailFolderKey::id(folders, Excludes)), allFolders); QCOMPARE(folderSet(QMailFolderKey::id(QMailFolderIdList() << inboxId1, Excludes)), standardFolders + folderSet() << savedId1 << archivedId1 << inboxId2 << savedId2 << archivedId2); QCOMPARE(folderSet(~QMailFolderKey::id(QMailFolderIdList() << inboxId1, Excludes)), folderSet() << inboxId1); QCOMPARE(folderSet(QMailFolderKey::id(QMailFolderIdList() << archivedId2, Excludes)), standardFolders + folderSet() << inboxId1 << savedId1 << archivedId1 << inboxId2 << savedId2); @@ -1322,8 +1327,9 @@ void tst_QMailStoreKeys::messageId() QCOMPARE(messageSet(~QMailMessageKey::id(QMailMessageId(), NotEqual)), noMessages); // List inclusion - QCOMPARE(messageSet(QMailMessageKey::id(allMessages.toList())), allMessages); - QCOMPARE(messageSet(~QMailMessageKey::id(allMessages.toList())), noMessages); + const QMailMessageIdList messages(allMessages.constBegin(), allMessages.constEnd()); + QCOMPARE(messageSet(QMailMessageKey::id(messages)), allMessages); + QCOMPARE(messageSet(~QMailMessageKey::id(messages)), noMessages); QCOMPARE(messageSet(QMailMessageKey::id(QMailMessageIdList() << smsMessage)), messageSet() << smsMessage); QCOMPARE(messageSet(~QMailMessageKey::id(QMailMessageIdList() << smsMessage)), allEmailMessages); QCOMPARE(messageSet(QMailMessageKey::id(QMailMessageIdList() << inboxMessage1)), messageSet() << inboxMessage1); @@ -1332,8 +1338,8 @@ void tst_QMailStoreKeys::messageId() QCOMPARE(messageSet(~QMailMessageKey::id(QMailMessageIdList() << smsMessage << inboxMessage1)), messageSet() << archivedMessage1 << inboxMessage2 << savedMessage2); // List Exclusion - QCOMPARE(messageSet(QMailMessageKey::id(allMessages.toList(), Excludes)), noMessages); - QCOMPARE(messageSet(~QMailMessageKey::id(allMessages.toList(), Excludes)), allMessages); + QCOMPARE(messageSet(QMailMessageKey::id(messages, Excludes)), noMessages); + QCOMPARE(messageSet(~QMailMessageKey::id(messages, Excludes)), allMessages); QCOMPARE(messageSet(QMailMessageKey::id(QMailMessageIdList() << smsMessage, Excludes)), allEmailMessages); QCOMPARE(messageSet(~QMailMessageKey::id(QMailMessageIdList() << smsMessage, Excludes)), messageSet() << smsMessage); QCOMPARE(messageSet(QMailMessageKey::id(QMailMessageIdList() << inboxMessage1, Excludes)), messageSet() << smsMessage << archivedMessage1 << inboxMessage2 << savedMessage2); |