diff options
author | Valerio Valerio <valerio.valerio@nokia.com> | 2012-04-04 13:57:31 +0300 |
---|---|---|
committer | Valerio Valerio <valerio.valerio@nokia.com> | 2012-04-04 13:57:31 +0300 |
commit | d3c3f56c77bc1a132a64b328df163ea15616236e (patch) | |
tree | de7e756806e0c8287bfe5255342b1b6df8c00fc1 | |
parent | 20c1040af9702082425300886c929aef01047f1b (diff) |
Fixes: NB#297007 - [Thread view] Hotmail: Attachments are not available
Patch by Sergey Kashin (MeeGo QMF)
-rw-r--r-- | src/libraries/qmfclient/qmailstore_p.cpp | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/src/libraries/qmfclient/qmailstore_p.cpp b/src/libraries/qmfclient/qmailstore_p.cpp index 82638334..7cfc0cd2 100644 --- a/src/libraries/qmfclient/qmailstore_p.cpp +++ b/src/libraries/qmfclient/qmailstore_p.cpp @@ -3752,21 +3752,21 @@ QMailStorePrivate::AttemptResult QMailStorePrivate::updateThreadsValues(const QM } bindValues << updateData.mNewPreview; } - if (!updateData.mStatus > 0) { + if (updateData.mStatus > 0) { if (firstProperty) { - sql.append(QString("%1 = (status | (?))").arg(threadPropertyMap().value(QMailThreadKey::Status))); + sql.append(QString("status = (status | (?))")); firstProperty = false; } else { - sql.append(QString(", %1 = (status | (?))").arg(threadPropertyMap().value(QMailThreadKey::Status))); + sql.append(QString(", status = (status | (?))")); } bindValues << updateData.mStatus; } - if (!updateData.mStatus < 0) { + if (updateData.mStatus < 0) { if (firstProperty) { - sql.append(QString("%1 = (~((status|%2)& %2))&(status|%2))").arg(threadPropertyMap().value(QMailThreadKey::Status), updateData.mStatus * (-1) )); + sql.append(QString("status = (~((status|%1)& %1))&(status|%1)").arg(updateData.mStatus * (-1))); firstProperty = false; } else { - sql.append(QString(", %1 = (~((status|%2)& %2))&(status|%2))").arg(threadPropertyMap().value(QMailThreadKey::Status), updateData.mStatus * (-1) )); + sql.append(QString(", status = (~((status|%1)& %1))&(status|%1)").arg(updateData.mStatus * (-1))); } } @@ -6601,9 +6601,10 @@ QMailStorePrivate::AttemptResult QMailStorePrivate::attemptUpdateMessage(QMailMe // TODO: fix other columns as well if necessary QSqlQuery query(simpleQuery("UPDATE mailthreads " "SET messagecount = messagecount + (SELECT messagecount FROM mailthreads WHERE id=?), " - " unreadcount = unreadcount + (SELECT unreadcount FROM mailthreads WHERE id=?) " + " unreadcount = unreadcount + (SELECT unreadcount FROM mailthreads WHERE id=?), " + " status = (status | (SELECT status FROM mailthreads WHERE id=?))" "WHERE id=(SELECT parentthreadid FROM mailmessages WHERE id=?)", - QVariantList() << threadId << threadId << metaData->inResponseTo().toULongLong(), + QVariantList() << threadId << threadId << threadId << metaData->inResponseTo().toULongLong(), "updateMessage mailthreads update query")); if (query.lastError().type() != QSqlError::NoError) return DatabaseFailure; @@ -6701,7 +6702,13 @@ QMailStorePrivate::AttemptResult QMailStorePrivate::attemptUpdateMessage(QMailMe // Check NB#294937. Sometimes metaData contains 0 as a parentThreadId // and that is really bad for a thread mode. if (!metaData->parentThreadId().isValid()) + { + //Dirty hack to fix NB#297007, but at least it is better then nothing + QMailMessageMetaData data(metaData->id()); + if (data.parentThreadId().isValid()) + metaData->setParentThreadId(data.parentThreadId()); updateProperties &= ~QMailMessageKey::ParentThreadId; + } extractedValues = messageValues(updateProperties, *metaData); { QString sql("UPDATE mailmessages SET %1 WHERE id=?"); @@ -6740,7 +6747,7 @@ QMailStorePrivate::AttemptResult QMailStorePrivate::attemptUpdateMessage(QMailMe const bool& updatePreview = (metaData->date() >= thread.lastDate()) && (thread.preview() != metaData->preview()) && !metaData->preview().isEmpty(); const bool& updateSubject = (metaData->inResponseTo() == QMailMessageId()) && (metaData->date().toUTC() == thread.startedDate().toUTC()); const bool& messageUnreadStatusChanged = (status & QMailMessage::Read) != (metaData->status() & QMailMessage::Read); - const bool& threadStatusChanged = (!thread.status() & metaData->status()); + const bool& threadStatusChanged = (thread.status() & metaData->status()) != 0; const bool& threadSendersChanged = !thread.senders().contains(metaData->from()) || metaData->date() > thread.lastDate(); if (updatePreview || updateSubject || messageUnreadStatusChanged || threadStatusChanged || threadSendersChanged) { |