moment/src/qml/Chat/Timeline/EventList.qml

67 lines
1.7 KiB
QML
Raw Normal View History

2019-07-07 23:52:41 -04:00
// Copyright 2019 miruka
// This file is part of harmonyqml, licensed under LGPLv3.
import QtQuick 2.12
import SortFilterProxyModel 0.2
import "../../Base"
2019-03-21 23:28:14 -04:00
HRectangle {
property alias listView: eventList
2019-07-06 17:29:32 -04:00
color: theme.chat.eventList.background
2019-04-28 11:01:38 -04:00
2019-05-13 13:15:03 -04:00
HListView {
id: eventList
2019-05-02 15:01:25 -04:00
clip: true
2019-03-21 23:28:14 -04:00
model: HListModel {
2019-07-04 16:01:44 -04:00
sourceModel: timelines
filters: ValueFilter {
roleName: "roomId"
value: chatPage.roomId
}
}
2019-07-02 22:29:09 -04:00
delegate: EventDelegate {}
2019-04-28 11:01:38 -04:00
anchors.fill: parent
2019-07-16 05:29:47 -04:00
anchors.leftMargin: theme.spacing
anchors.rightMargin: theme.spacing
2019-04-28 11:01:38 -04:00
2019-07-16 05:29:47 -04:00
topMargin: theme.spacing
bottomMargin: theme.spacing
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 * 4
2019-04-17 14:27:22 -04:00
2019-07-05 02:45:30 -04:00
// Declaring this as "alias" provides the on... signal
property real yPos: visibleArea.yPosition
2019-07-05 02:45:30 -04:00
property bool canLoad: true
property int zz: 0
2019-07-05 02:45:30 -04:00
onYPosChanged: {
2019-07-05 02:45:30 -04:00
if (chatPage.category != "Invites" && canLoad && yPos <= 0.1) {
zz += 1
2019-07-05 02:45:30 -04:00
print(canLoad, zz)
eventList.canLoad = false
2019-07-05 02:45:30 -04:00
py.callClientCoro(
chatPage.userId,
"load_past_events",
[chatPage.roomId],
function(more_to_load) { eventList.canLoad = more_to_load }
2019-07-05 02:45:30 -04:00
)
}
}
2019-03-21 23:28:14 -04:00
}
HNoticePage {
text: qsTr("Nothing to show here yet...")
visible: eventList.model.count < 1
anchors.fill: parent
}
2019-03-21 23:28:14 -04:00
}