From 86d690c4587c72bbf0cb62155c4ccd2f83f6aff9 Mon Sep 17 00:00:00 2001 From: Alexandre Lision <alexandre.lision@savoirfairelinux.com> Date: Wed, 13 Jan 2016 14:14:37 -0500 Subject: [PATCH] TextRecording: add IsRead role We can now check to see if a message has been read or set it as such. Setting the message to read will re-save the text recording on disk. Tuleap: #203 Change-Id: Idfe67fc374dbf97833825db6fb278663fdada4b0 --- src/media/textrecording.cpp | 23 +++++++++++++++++++---- src/media/textrecording.h | 1 + 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/media/textrecording.cpp b/src/media/textrecording.cpp index f0611031..c3467b81 100644 --- a/src/media/textrecording.cpp +++ b/src/media/textrecording.cpp @@ -550,6 +550,7 @@ QHash<int,QByteArray> InstantMessagingModel::roleNames() const roles.insert((int)Media::TextRecording::Role::AuthorUri , "authorUri" ); roles.insert((int)Media::TextRecording::Role::AuthorPresenceStatus, "authorPresenceStatus"); roles.insert((int)Media::TextRecording::Role::Timestamp , "timestamp" ); + roles.insert((int)Media::TextRecording::Role::IsRead , "isRead" ); roles.insert((int)Media::TextRecording::Role::FormattedDate , "formattedDate" ); roles.insert((int)Media::TextRecording::Role::IsStatus , "isStatus" ); } @@ -597,6 +598,8 @@ QVariant InstantMessagingModel::data( const QModelIndex& idx, int role) const n->m_pContactMethod->contact()->isPresent() : n->m_pContactMethod->isPresent(); case (int)Media::TextRecording::Role::Timestamp : return (int)n->m_pMessage->timestamp; + case (int)Media::TextRecording::Role::IsRead : + return (int)n->m_pMessage->isRead; case (int)Media::TextRecording::Role::FormattedDate : return QDateTime::fromTime_t(n->m_pMessage->timestamp).toString(); case (int)Media::TextRecording::Role::IsStatus : @@ -630,10 +633,22 @@ Qt::ItemFlags InstantMessagingModel::flags(const QModelIndex& idx) const ///Set model data bool InstantMessagingModel::setData(const QModelIndex& idx, const QVariant &value, int role) { - Q_UNUSED(idx) - Q_UNUSED(value) - Q_UNUSED(role) - return false; + if (idx.column() || !idx.isValid()) + return false; + + ::TextMessageNode* n = m_pRecording->d_ptr->m_lNodes[idx.row()]; + switch (role) { + case (int)Media::TextRecording::Role::IsRead : + n->m_pMessage->isRead = value.toBool(); + emit dataChanged(idx,idx); + break; + default: + return false; + } + + //Save the conversation + m_pRecording->save(); + return true; } void InstantMessagingModel::addRowBegin() diff --git a/src/media/textrecording.h b/src/media/textrecording.h index f0240b16..7de7965e 100644 --- a/src/media/textrecording.h +++ b/src/media/textrecording.h @@ -54,6 +54,7 @@ public: AuthorUri , AuthorPresenceStatus , Timestamp , + IsRead , FormattedDate , IsStatus , HTML , -- GitLab