diff options
| author | Don Sanders <don.sanders@nokia.com> | 2010-03-09 20:03:24 +1000 |
|---|---|---|
| committer | Don Sanders <don.sanders@nokia.com> | 2010-03-09 20:03:24 +1000 |
| commit | f763bc4fd1b1ea878c7f9d16be692d8fabca4be6 (patch) | |
| tree | cf8a25f525801162c4e44e1ebd09eb7e7753060f | |
| parent | b5382b3124ce1ea9d8551483a1fd4bc61f9fd168 (diff) | |
BIC:Fix a problem with only the first column of a modelview item being
updated when a message is modified in the store.
This required a BIC change, which means a clean build will be required.
Also for newly downloaded messages set the Read status to be the same
as the ReadElsewhere status, this is required for two way syncing of
Read/Unread status info.
Also reset existing entries in the database.
| -rw-r--r-- | examples/applications/qtmail/messagelistview.cpp | 6 | ||||
| -rw-r--r-- | src/libraries/qtopiamail/qmailmessagelistmodel.cpp | 2 | ||||
| -rw-r--r-- | src/libraries/qtopiamail/qmailmessagemodelbase.cpp | 4 | ||||
| -rw-r--r-- | src/libraries/qtopiamail/qmailmessagemodelbase.h | 2 | ||||
| -rw-r--r-- | src/libraries/qtopiamail/qmailmessagethreadedmodel.cpp | 2 | ||||
| -rw-r--r-- | src/libraries/qtopiamail/qmailstore_p.cpp | 2 | ||||
| -rw-r--r-- | src/libraries/qtopiamail/qtopiamail.qrc | 1 | ||||
| -rw-r--r-- | src/plugins/messageservices/imap/imapprotocol.cpp | 1 |
8 files changed, 11 insertions, 9 deletions
diff --git a/examples/applications/qtmail/messagelistview.cpp b/examples/applications/qtmail/messagelistview.cpp index 1306f70b..b0f25aa3 100644 --- a/examples/applications/qtmail/messagelistview.cpp +++ b/examples/applications/qtmail/messagelistview.cpp @@ -116,7 +116,7 @@ QWidget(parent) m_statusCombo = new QComboBox(this); QMailMessageKey removed(QMailMessageKey::status(QMailMessage::Removed)); m_statusCombo->addItem(QIcon(":icon/exec"),tr("Any Status"),~removed); - m_statusCombo->addItem(QIcon(":icon/mail_generic"),tr("Unread"),QMailMessageKey::status(QMailMessage::Read,QMailDataComparator::Excludes)&QMailMessageKey::status(QMailMessage::ReadElsewhere,QMailDataComparator::Excludes)&~removed); + m_statusCombo->addItem(QIcon(":icon/mail_generic"),tr("Unread"),QMailMessageKey::status(QMailMessage::Read,QMailDataComparator::Excludes)&~removed); m_statusCombo->addItem(QIcon(":icon/new"),tr("New"),QMailMessageKey::status(QMailMessage::New)&~removed); m_statusCombo->addItem(QIcon(":icon/mail_reply"),tr("Replied"),QMailMessageKey::status(QMailMessage::Replied)&~removed); m_statusCombo->addItem(QIcon(":icon/mail_forward"),tr("Forwarded"),QMailMessageKey::status(QMailMessage::Forwarded)&~removed); @@ -276,7 +276,7 @@ QVariant MessageListModel<BaseModel>::data(const QModelIndex & index, int role) QMailMessageMetaData message(SuperType::idFromIndex(index)); if (message.id().isValid()) { quint64 status = message.status(); - bool unread = !(status & QMailMessage::Read || status & QMailMessage::ReadElsewhere); + bool unread = !(status & QMailMessage::Read); if (status & QMailMessage::PartialContentAvailable && unread) return newMessageColor; } @@ -365,7 +365,7 @@ void MessageList::keyPressEvent(QKeyEvent* e) break; QMailMessageMetaData message(id); quint64 status = message.status(); - bool unread = !(status & QMailMessage::Read || status & QMailMessage::ReadElsewhere); + bool unread = !(status & QMailMessage::Read); if (unread) { setCurrentIndex(index); scrollTo(index); diff --git a/src/libraries/qtopiamail/qmailmessagelistmodel.cpp b/src/libraries/qtopiamail/qmailmessagelistmodel.cpp index b58e8d54..47756cce 100644 --- a/src/libraries/qtopiamail/qmailmessagelistmodel.cpp +++ b/src/libraries/qtopiamail/qmailmessagelistmodel.cpp @@ -417,7 +417,7 @@ bool QMailMessageListModelPrivate::updateMessages(const QMailMessageIdList &ids) qSort(updateIndices); foreach (int index, updateIndices) { - _model.emitDataChanged(_model.index(index, 0, QModelIndex())); + _model.emitDataChanged(_model.index(index, 0, QModelIndex()), _model.index(index, _model.columnCount() - 1, QModelIndex())); } return true; diff --git a/src/libraries/qtopiamail/qmailmessagemodelbase.cpp b/src/libraries/qtopiamail/qmailmessagemodelbase.cpp index cf5fd1a4..5440974a 100644 --- a/src/libraries/qtopiamail/qmailmessagemodelbase.cpp +++ b/src/libraries/qtopiamail/qmailmessagemodelbase.cpp @@ -421,9 +421,9 @@ void QMailMessageModelBase::setSortKey(const QMailMessageSortKey& sortKey) */ /*! \internal */ -void QMailMessageModelBase::emitDataChanged(const QModelIndex& idx) +void QMailMessageModelBase::emitDataChanged(const QModelIndex& idx, const QModelIndex& jdx) { - emit dataChanged(idx, idx); + emit dataChanged(idx, jdx); } /*! \internal */ diff --git a/src/libraries/qtopiamail/qmailmessagemodelbase.h b/src/libraries/qtopiamail/qmailmessagemodelbase.h index a2cc763f..6e4c19f0 100644 --- a/src/libraries/qtopiamail/qmailmessagemodelbase.h +++ b/src/libraries/qtopiamail/qmailmessagemodelbase.h @@ -126,7 +126,7 @@ public: virtual QModelIndex generateIndex(int row, int column, void *ptr) = 0; - void emitDataChanged(const QModelIndex &idx); + void emitDataChanged(const QModelIndex &idx, const QModelIndex &jdx); void emitBeginInsertRows(const QModelIndex &idx, int start, int end); void emitEndInsertRows(); diff --git a/src/libraries/qtopiamail/qmailmessagethreadedmodel.cpp b/src/libraries/qtopiamail/qmailmessagethreadedmodel.cpp index 85ece385..362113d4 100644 --- a/src/libraries/qtopiamail/qmailmessagethreadedmodel.cpp +++ b/src/libraries/qtopiamail/qmailmessagethreadedmodel.cpp @@ -558,7 +558,7 @@ bool QMailMessageThreadedModelPrivate::updateMessages(const QMailMessageIdList & temporaryRemovalIds.append(messageId); } else { // Find the location for this updated item (not its parent) - _model.emitDataChanged(index(item, 0)); + _model.emitDataChanged(index(item, 0), index(item, _model.columnCount() - 1)); } } diff --git a/src/libraries/qtopiamail/qmailstore_p.cpp b/src/libraries/qtopiamail/qmailstore_p.cpp index 72b7d007..ed8d64a9 100644 --- a/src/libraries/qtopiamail/qmailstore_p.cpp +++ b/src/libraries/qtopiamail/qmailstore_p.cpp @@ -2110,7 +2110,7 @@ bool QMailStorePrivate::initStore() << tableInfo("mailfolders", 104) << tableInfo("mailfoldercustom", 100) << tableInfo("mailfolderlinks", 100) - << tableInfo("mailmessages", 105) + << tableInfo("mailmessages", 106) << tableInfo("mailmessagecustom", 100) << tableInfo("mailstatusflags", 101) << tableInfo("mailmessageidentifiers", 101) diff --git a/src/libraries/qtopiamail/qtopiamail.qrc b/src/libraries/qtopiamail/qtopiamail.qrc index ec3c3492..3952a69c 100644 --- a/src/libraries/qtopiamail/qtopiamail.qrc +++ b/src/libraries/qtopiamail/qtopiamail.qrc @@ -21,6 +21,7 @@ <file alias="mailmessages-102-103">resources/mailmessages-102-103.sqlite.sql</file> <file alias="mailmessages-103-104">resources/mailmessages-103-104.sqlite.sql</file> <file alias="mailmessages-104-105">resources/mailmessages-104-105.sqlite.sql</file> +<file alias="mailmessages-105-106">resources/mailmessages-105-106.sqlite.sql</file> <file alias="temporarymailmessages">resources/temporarymailmessages.sqlite.sql</file> <file alias="mailmessagecustom">resources/mailmessagecustom.sqlite.sql</file> <file alias="deletedmessages">resources/deletedmessages.sqlite.sql</file> diff --git a/src/plugins/messageservices/imap/imapprotocol.cpp b/src/plugins/messageservices/imap/imapprotocol.cpp index 6ef5af74..465ab025 100644 --- a/src/plugins/messageservices/imap/imapprotocol.cpp +++ b/src/plugins/messageservices/imap/imapprotocol.cpp @@ -3188,6 +3188,7 @@ void ImapProtocol::createMail(const QString &uid, const QDateTime &timeStamp, in if (flags & MFlag_Seen) { mail.setStatus( QMailMessage::ReadElsewhere, true ); + mail.setStatus( QMailMessage::Read, true ); } if (flags & MFlag_Answered) { mail.setStatus( QMailMessage::Replied, true ); |
