Add usermarker.
This commit is contained in:
parent
3ef1744b5c
commit
29624c5f59
|
@ -3,20 +3,13 @@ import QtQuick.Controls 2.2
|
|||
import QtQuick.Layouts 1.3
|
||||
import Matrique.Settings 0.1
|
||||
|
||||
Item {
|
||||
property alias icon: iconText.text
|
||||
property var color: MSettings.darkTheme ? "white" : "black"
|
||||
Text {
|
||||
property alias icon: materialLabel.text
|
||||
|
||||
id: item
|
||||
id: materialLabel
|
||||
|
||||
Text {
|
||||
anchors.fill: parent
|
||||
|
||||
id: iconText
|
||||
font.pointSize: 16
|
||||
font.family: materialFont.name
|
||||
color: item.color
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
font.pointSize: 16
|
||||
font.family: materialFont.name
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
|
|
|
@ -93,13 +93,29 @@ RowLayout {
|
|||
active: eventType === "image" || eventType === "file" || eventType === "audio"
|
||||
}
|
||||
|
||||
AutoLabel {
|
||||
Row {
|
||||
Layout.alignment: Qt.AlignRight
|
||||
visible: Math.abs(time - aboveTime) > 600000 || index == 0
|
||||
text: Qt.formatTime(time, "hh:mm")
|
||||
coloredBackground: highlighted
|
||||
Material.foreground: "grey"
|
||||
font.pointSize: 8
|
||||
|
||||
spacing: 8
|
||||
|
||||
AutoLabel {
|
||||
id: timeLabel
|
||||
|
||||
visible: Math.abs(time - aboveTime) > 600000 || index == 0
|
||||
text: Qt.formatTime(time, "hh:mm")
|
||||
coloredBackground: highlighted
|
||||
Material.foreground: "grey"
|
||||
font.pointSize: 8
|
||||
}
|
||||
|
||||
MaterialIcon {
|
||||
height: timeLabel.height
|
||||
|
||||
visible: userMarker.length > 0
|
||||
icon: "\ue5ca"
|
||||
color: highlighted ? "white": Material.foreground
|
||||
font.pointSize: 12
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue