summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDon Sanders <don.sanders@nokia.com>2010-03-09 20:03:24 +1000
committerDon Sanders <don.sanders@nokia.com>2010-03-09 20:03:24 +1000
commitf763bc4fd1b1ea878c7f9d16be692d8fabca4be6 (patch)
treecf8a25f525801162c4e44e1ebd09eb7e7753060f
parentb5382b3124ce1ea9d8551483a1fd4bc61f9fd168 (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.cpp6
-rw-r--r--src/libraries/qtopiamail/qmailmessagelistmodel.cpp2
-rw-r--r--src/libraries/qtopiamail/qmailmessagemodelbase.cpp4
-rw-r--r--src/libraries/qtopiamail/qmailmessagemodelbase.h2
-rw-r--r--src/libraries/qtopiamail/qmailmessagethreadedmodel.cpp2
-rw-r--r--src/libraries/qtopiamail/qmailstore_p.cpp2
-rw-r--r--src/libraries/qtopiamail/qtopiamail.qrc1
-rw-r--r--src/plugins/messageservices/imap/imapprotocol.cpp1
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 );