diff options
author | Eric Springer <eric.springer@nokia.com> | 2011-03-17 15:36:26 +1000 |
---|---|---|
committer | Eric Springer <eric.springer@nokia.com> | 2011-03-17 15:36:26 +1000 |
commit | 402ae19585cce51000e9a4982214441f811b6945 (patch) | |
tree | 93ab145f6c4eeb90456ff3cb28a419bbf372ae34 | |
parent | cf15ade62779a45e28df962c713e9e33a23d64bc (diff) |
Thread and conversation querying improvements
-rw-r--r-- | src/libraries/qmfclient/qmailstore_p.cpp | 35 |
1 files changed, 13 insertions, 22 deletions
diff --git a/src/libraries/qmfclient/qmailstore_p.cpp b/src/libraries/qmfclient/qmailstore_p.cpp index f4400c59..62b4271a 100644 --- a/src/libraries/qmfclient/qmailstore_p.cpp +++ b/src/libraries/qmfclient/qmailstore_p.cpp @@ -422,7 +422,7 @@ static QMailStorePrivate::MessagePropertyMap messagePropertyMap() map.insert(QMailMessageKey::ContentIdentifier,"mailfile"); map.insert(QMailMessageKey::InResponseTo,"responseid"); map.insert(QMailMessageKey::ResponseType,"responsetype"); - map.insert(QMailMessageKey::Conversation,"id"); + map.insert(QMailMessageKey::Conversation,"parentthreadid"); map.insert(QMailMessageKey::CopyServerUid, "copyserveruid"); map.insert(QMailMessageKey::RestoreFolderId, "restorefolderid"); map.insert(QMailMessageKey::ListId, "listid"); @@ -1861,26 +1861,14 @@ QString whereClauseItem<QMailMessageKey>(const QMailMessageKey &, const QMailMes break; case QMailMessageKey::Conversation: - { - // This desperately needs to be simplified... - QString nestedAlias1(incrementAlias(alias)); - QString nestedAlias2(incrementAlias(nestedAlias1)); - - q << baseExpression(columnName, Includes, true); - q << "( SELECT " << qualifiedName("id", nestedAlias1) << " FROM mailmessages " << nestedAlias1 << " WHERE parentthreadid IN "; - q << "( SELECT DISTINCT " << qualifiedName("parentthreadid", nestedAlias2) << " FROM mailmessages " << nestedAlias2 << " WHERE "; - - if (a.valueList.first().canConvert<QMailMessageKey>()) { - QMailMessageKey messageKey = a.valueList.first().value<QMailMessageKey>(); - QString nestedAlias3(incrementAlias(nestedAlias2)); - - q << baseExpression(qualifiedName("id", nestedAlias2), Includes, true) << "( SELECT " << qualifiedName("id", nestedAlias3) << " FROM mailmessages " << nestedAlias3; - q << store.buildWhereClause(QMailStorePrivate::Key(messageKey, nestedAlias3)) << " )"; - } else { - q << columnExpression(qualifiedName("id", nestedAlias2), a.op, a.valueList); - } + if (a.valueList.first().canConvert<QMailMessageKey>()) { + QMailMessageKey messageKey = a.valueList.first().value<QMailMessageKey>(); + QString nestedAlias(incrementAlias(alias)); - q << " ) )"; + q << baseExpression(columnName, a.op, true) << "( SELECT " << qualifiedName("parentthreadid", nestedAlias) << " FROM mailmessages " << nestedAlias; + q << store.buildWhereClause(QMailStorePrivate::Key(messageKey, nestedAlias)) << ")"; + } else { + q << expression; } break; case QMailMessageKey::ServerUid: @@ -2738,7 +2726,7 @@ bool QMailStorePrivate::execute(QSqlQuery& query, bool batch) } #ifdef QMAILSTORE_LOG_SQL - qWarning() << "(" << pid << ")" << qPrintable(queryText(query)); + qDebug() << "(" << pid << ")" << qPrintable(queryText(query)); #endif if (!inTransaction) { @@ -3207,7 +3195,10 @@ QVariantList QMailStorePrivate::whereClauseValues(const Key& key) const } else if (key.isType<QMailAccountKey>()) { const QMailAccountKey &accountKey(key.key<QMailAccountKey>()); return ::whereClauseValues(accountKey); - } + } else if (key.isType<QMailThreadKey>()) { + const QMailThreadKey &threadKey(key.key<QMailThreadKey>()); + return ::whereClauseValues(threadKey); + } return QVariantList(); } |