Add delegates to show room upgrades into the timeline model.

The delegates are at the beginning for upgraded rooms and end for predecessors.

Closes: network/neochat#620 and network/neochat#619
This commit is contained in:
James Graham
2024-08-22 17:21:36 +00:00
parent 656558850c
commit b3afa9f595
7 changed files with 213 additions and 2 deletions

View File

@@ -10,8 +10,10 @@ ecm_add_qml_module(timeline GENERATE_PLUGIN_SOURCE
HiddenDelegate.qml
MessageDelegate.qml
LoadingDelegate.qml
PredecessorDelegate.qml
ReadMarkerDelegate.qml
StateDelegate.qml
SuccessorDelegate.qml
TimelineEndDelegate.qml
Bubble.qml
AvatarFlow.qml

View File

@@ -41,6 +41,20 @@ DelegateChooser {
delegate: LoadingDelegate {}
}
DelegateChoice {
roleValue: DelegateType.Predecessor
delegate: PredecessorDelegate {
room: root.room
}
}
DelegateChoice {
roleValue: DelegateType.Successor
delegate: SuccessorDelegate {
room: root.room
}
}
DelegateChoice {
roleValue: DelegateType.TimelineEnd
delegate: TimelineEndDelegate {

View File

@@ -0,0 +1,33 @@
// SPDX-FileCopyrightText: 2024 James Graham <james.h.graham@protonmail.com>
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
import QtQuick
import QtQuick.Layouts
import org.kde.kirigami as Kirigami
import org.kde.neochat
TimelineDelegate {
id: root
/**
* @brief The current room that user is viewing.
*/
required property NeoChatRoom room
width: parent?.width
rightPadding: NeoChatConfig.compactLayout && root.ListView.view.width >= Kirigami.Units.gridUnit * 20 ? Kirigami.Units.gridUnit * 2 + Kirigami.Units.largeSpacing : Kirigami.Units.largeSpacing
alwaysFillWidth: NeoChatConfig.compactLayout
contentItem: Kirigami.InlineMessage {
visible: true
text: i18n("This room continues another conversation.")
type: Kirigami.MessageType.Information
actions: Kirigami.Action {
text: i18n("See older messages…")
onTriggered: RoomManager.resolveResource(root.room.predecessorId)
}
}
}

View File

@@ -0,0 +1,33 @@
// SPDX-FileCopyrightText: 2024 James Graham <james.h.graham@protonmail.com>
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
import QtQuick
import QtQuick.Layouts
import org.kde.kirigami as Kirigami
import org.kde.neochat
TimelineDelegate {
id: root
/**
* @brief The current room that user is viewing.
*/
required property NeoChatRoom room
width: parent?.width
rightPadding: NeoChatConfig.compactLayout && root.ListView.view.width >= Kirigami.Units.gridUnit * 20 ? Kirigami.Units.gridUnit * 2 + Kirigami.Units.largeSpacing : Kirigami.Units.largeSpacing
alwaysFillWidth: NeoChatConfig.compactLayout
contentItem: Kirigami.InlineMessage {
visible: true
text: i18n("This room has been replaced.")
type: Kirigami.MessageType.Information
actions: Kirigami.Action {
text: i18n("See new room…")
onTriggered: RoomManager.resolveResource(root.room.successorId)
}
}
}