moment/harmonyqml/components/chat/MessageList.qml

56 lines
1.4 KiB
QML
Raw Normal View History

2019-03-21 23:28:14 -04:00
import QtQuick 2.7
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.4
import "../base" as Base
2019-03-21 23:28:14 -04:00
2019-04-28 11:01:38 -04:00
Base.HGlassRectangle {
2019-04-26 16:02:20 -04:00
property bool canLoadPastEvents: true
2019-03-21 23:28:14 -04:00
property int space: 8
2019-04-28 11:01:38 -04:00
color: "transparent"
2019-03-21 23:28:14 -04:00
Layout.fillWidth: true
Layout.fillHeight: true
ListView {
id: messageListView
delegate: MessageDelegate {}
model: Backend.models.roomEvents.get(chatPage.roomId)
2019-03-21 23:28:14 -04:00
2019-04-28 11:01:38 -04:00
anchors.fill: parent
anchors.leftMargin: space
anchors.rightMargin: space
2019-03-21 23:28:14 -04:00
clip: true
topMargin: space
bottomMargin: space
verticalLayoutDirection: ListView.BottomToTop
2019-04-17 13:44:04 -04:00
// Keep x scroll pages cached, to limit images having to be
// reloaded from network.
cacheBuffer: height * 6
2019-04-17 14:27:22 -04:00
// Declaring this "alias" provides the on... signal
property real yPos: visibleArea.yPosition
onYPosChanged: {
2019-04-26 16:02:20 -04:00
if (chatPage.canLoadPastEvents && yPos <= 0.1) {
Backend.loadPastEvents(chatPage.roomId)
}
}
2019-03-21 23:28:14 -04:00
}
Base.HLabel {
visible: messageListView.model.count < 1
anchors.centerIn: parent
text: qsTr("Nothing to see here yet…")
padding: 10
topPadding: padding / 3
bottomPadding: topPadding
background: Rectangle {
2019-04-28 11:01:38 -04:00
color: Base.HStyle.chat.messageList.background
radius: 5
}
}
2019-03-21 23:28:14 -04:00
}