Pass room through the model, not when creating the delegate
This is another thing that enables us to view multiple rooms in a single timeline. Specifically, this improves the experience in room search going across room versions and getting a correct readOnly status (for hiding certain hover actions.)
This commit is contained in:
@@ -52,7 +52,6 @@ QQC2.ScrollView {
|
||||
delegate: Timeline.MessageDelegate {
|
||||
alwaysFillWidth: true
|
||||
cardBackground: false
|
||||
room: root.room
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,7 +60,6 @@ QQC2.ScrollView {
|
||||
delegate: Timeline.MessageDelegate {
|
||||
alwaysFillWidth: true
|
||||
cardBackground: false
|
||||
room: root.room
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,16 +21,12 @@ DelegateChooser {
|
||||
|
||||
DelegateChoice {
|
||||
roleValue: DelegateType.State
|
||||
delegate: StateDelegate {
|
||||
room: root.room
|
||||
}
|
||||
delegate: StateDelegate {}
|
||||
}
|
||||
|
||||
DelegateChoice {
|
||||
roleValue: DelegateType.Message
|
||||
delegate: MessageDelegate {
|
||||
room: root.room
|
||||
}
|
||||
delegate: MessageDelegate {}
|
||||
}
|
||||
|
||||
DelegateChoice {
|
||||
@@ -45,23 +41,17 @@ DelegateChooser {
|
||||
|
||||
DelegateChoice {
|
||||
roleValue: DelegateType.Predecessor
|
||||
delegate: PredecessorDelegate {
|
||||
room: root.room
|
||||
}
|
||||
delegate: PredecessorDelegate {}
|
||||
}
|
||||
|
||||
DelegateChoice {
|
||||
roleValue: DelegateType.Successor
|
||||
delegate: SuccessorDelegate {
|
||||
room: root.room
|
||||
}
|
||||
delegate: SuccessorDelegate {}
|
||||
}
|
||||
|
||||
DelegateChoice {
|
||||
roleValue: DelegateType.TimelineEnd
|
||||
delegate: TimelineEndDelegate {
|
||||
room: root.room
|
||||
}
|
||||
delegate: TimelineEndDelegate {}
|
||||
}
|
||||
|
||||
DelegateChoice {
|
||||
@@ -75,9 +65,7 @@ DelegateChooser {
|
||||
|
||||
Component {
|
||||
id: hiddenDelegate
|
||||
HiddenDelegate {
|
||||
room: root.room
|
||||
}
|
||||
HiddenDelegate {}
|
||||
}
|
||||
Component {
|
||||
id: emptyDelegate
|
||||
|
||||
@@ -326,6 +326,10 @@ QVariant MessageModel::data(const QModelIndex &idx, int role) const
|
||||
return event.value().get().matrixType();
|
||||
}
|
||||
|
||||
if (role == RoomRole) {
|
||||
return QVariant::fromValue(eventRoom);
|
||||
}
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
@@ -356,6 +360,7 @@ QHash<int, QByteArray> MessageModel::roleNames() const
|
||||
roles[IsEditableRole] = "isEditable";
|
||||
roles[ShowAuthorRole] = "showAuthor";
|
||||
roles[EventTypeRole] = "eventType";
|
||||
roles[RoomRole] = "room";
|
||||
return roles;
|
||||
}
|
||||
|
||||
|
||||
@@ -87,6 +87,7 @@ public:
|
||||
IsEditableRole, /**< Whether the event can be edited by the user. */
|
||||
ShowAuthorRole, /**< Whether the author of a message should be shown. */
|
||||
EventTypeRole, /**< The matrix event type of this message. */
|
||||
RoomRole, /**< The room this event is from. */
|
||||
LastRole, // Keep this last
|
||||
};
|
||||
Q_ENUM(EventRoles)
|
||||
|
||||
Reference in New Issue
Block a user