Add usermarker.

This commit is contained in:
Black Hat
2018-09-13 13:05:51 +08:00
parent 3ef1744b5c
commit 29624c5f59
4 changed files with 46 additions and 21 deletions

View File

@@ -32,6 +32,7 @@ QHash<int, QByteArray> MessageEventModel::roleNames() const {
roles[AnnotationRole] = "annotation";
roles[EventResolvedTypeRole] = "eventResolvedType";
roles[PlainTextRole] = "plainText";
roles[UserMarkerRole] = "userMarker";
return roles;
}
@@ -137,6 +138,11 @@ void MessageEventModel::setRoom(MatriqueRoom* room) {
&MessageEventModel::refreshEvent);
connect(m_currentRoom, &Room::fileTransferCancelled, this,
&MessageEventModel::refreshEvent);
connect(m_currentRoom, &Room::readMarkerForUserMoved, this,
[=](User* user, QString fromEventId, QString toEventId) {
refreshEventRoles(fromEventId, {UserMarkerRole});
refreshEventRoles(toEventId, {UserMarkerRole});
});
qDebug() << "Connected to room" << room->id() << "as"
<< room->localUser()->id();
} else
@@ -624,6 +630,15 @@ QVariant MessageEventModel::data(const QModelIndex& idx, int role) const {
return role == TimeRole ? QVariant(ts) : renderDate(ts);
}
if (role == UserMarkerRole) {
QVariantList variantList;
for (User* user : m_currentRoom->usersAtEventId(evt.id())) {
if (user == m_currentRoom->localUser()) continue;
variantList.append(QVariant::fromValue(user));
}
return variantList;
}
if (role == AboveEventTypeRole || role == AboveSectionRole ||
role == AboveAuthorRole || role == AboveTimeRole)
for (auto r = row + 1; r < rowCount(); ++r) {

View File

@@ -29,6 +29,7 @@ class MessageEventModel : public QAbstractListModel {
LongOperationRole,
AnnotationRole,
PlainTextRole,
UserMarkerRole,
// For debugging
EventResolvedTypeRole,
};
@@ -42,7 +43,7 @@ class MessageEventModel : public QAbstractListModel {
int rowCount(const QModelIndex& parent = QModelIndex()) const override;
QVariant data(const QModelIndex& index,
int role = Qt::DisplayRole) const override;
QHash<int, QByteArray> roleNames() const;
QHash<int, QByteArray> roleNames() const override;
private slots:
int refreshEvent(const QString& eventId);