2018-10-02 02:07:47 +00:00
|
|
|
import QtQuick 2.9
|
|
|
|
|
|
|
|
RoomPanelForm {
|
2018-11-04 11:14:02 +00:00
|
|
|
roomHeader.paintable: currentRoom ? currentRoom.paintable : null
|
2018-10-02 02:07:47 +00:00
|
|
|
roomHeader.topic: currentRoom ? (currentRoom.topic).replace(/(\r\n\t|\n|\r\t)/gm,"") : ""
|
2018-11-16 12:30:42 +00:00
|
|
|
roomHeader.atTop: messageListView.atYBeginning
|
2018-11-04 04:07:00 +00:00
|
|
|
roomHeader.onClicked: roomDrawer.open()
|
2018-10-02 02:07:47 +00:00
|
|
|
|
|
|
|
sortedMessageEventModel.onModelReset: {
|
2018-11-02 11:05:15 +00:00
|
|
|
if (currentRoom) {
|
2018-10-02 02:07:47 +00:00
|
|
|
var lastScrollPosition = sortedMessageEventModel.mapFromSource(currentRoom.savedTopVisibleIndex())
|
2018-10-13 07:31:31 +00:00
|
|
|
messageListView.currentIndex = lastScrollPosition
|
2018-11-04 04:07:00 +00:00
|
|
|
if (messageListView.contentY < messageListView.originY + 10 || currentRoom.timelineSize < 20)
|
2018-10-02 02:07:47 +00:00
|
|
|
currentRoom.getPreviousContent(100)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
messageListView {
|
2018-10-02 02:21:39 +00:00
|
|
|
property int largestVisibleIndex: messageListView.count > 0 ? messageListView.indexAt(messageListView.contentX, messageListView.contentY + messageListView.height - 1) : -1
|
2018-10-02 02:07:47 +00:00
|
|
|
|
|
|
|
onContentYChanged: {
|
2018-10-15 00:24:08 +00:00
|
|
|
if(currentRoom && messageListView.contentY - 5000 < messageListView.originY)
|
2018-10-02 02:07:47 +00:00
|
|
|
currentRoom.getPreviousContent(50);
|
|
|
|
}
|
|
|
|
|
2018-11-02 11:05:15 +00:00
|
|
|
onMovementEnded: currentRoom.saveViewport(sortedMessageEventModel.mapToSource(messageListView.indexAt(messageListView.contentX, messageListView.contentY)), sortedMessageEventModel.mapToSource(largestVisibleIndex))
|
2018-10-02 02:07:47 +00:00
|
|
|
|
|
|
|
displaced: Transition {
|
|
|
|
NumberAnimation {
|
|
|
|
property: "y"; duration: 200
|
|
|
|
easing.type: Easing.OutQuad
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-10-22 05:16:58 +00:00
|
|
|
goBottomFab.onClicked: goToEvent(currentRoom.readMarkerEventId)
|
2018-10-08 12:51:00 +00:00
|
|
|
goTopFab.onClicked: messageListView.positionViewAtBeginning()
|
2018-10-22 01:48:37 +00:00
|
|
|
|
|
|
|
function goToEvent(eventID) {
|
|
|
|
var index = messageEventModel.eventIDToIndex(eventID)
|
|
|
|
if (index === -1) return
|
2018-11-02 11:05:15 +00:00
|
|
|
messageListView.currentIndex = -1
|
2018-10-22 01:48:37 +00:00
|
|
|
messageListView.currentIndex = sortedMessageEventModel.mapFromSource(index)
|
|
|
|
}
|
2018-11-02 11:05:15 +00:00
|
|
|
|
|
|
|
function saveReadMarker(room) {
|
|
|
|
var readMarker = sortedMessageEventModel.get(messageListView.largestVisibleIndex).eventId
|
|
|
|
if (!readMarker) return
|
|
|
|
room.readMarkerEventId = readMarker
|
|
|
|
}
|
2018-10-02 02:07:47 +00:00
|
|
|
}
|