status-desktop/ui/imports/shared/controls/chat/FetchMoreMessagesButton.qml

92 lines
2.4 KiB
QML
Raw Normal View History

import QtQuick 2.15
import StatusQ.Core 0.1
import StatusQ.Core.Theme 0.1
import StatusQ.Components 0.1
import shared.panels 1.0
import shared.stores 1.0
import utils 1.0
Item {
id: root
property int nextMessageIndex
property double nextMsgTimestamp
signal clicked()
signal timerTriggered()
implicitHeight: childrenRect.height + Theme.smallPadding * 2
QtObject {
id: d
readonly property string formattedDate: nextMessageIndex > -1 ? LocaleUtils.formatDate(nextMsgTimestamp) : LocaleUtils.formatDate()
}
Timer {
id: timer
interval: 3000
onTriggered: {
fetchLoaderIndicator.active = false;
fetchMoreButton.visible = true;
fetchDate.visible = true;
root.timerTriggered();
}
}
Separator {
id: sep1
}
Loader {
id: fetchLoaderIndicator
anchors.top: sep1.bottom
anchors.topMargin: Theme.padding
anchors.left: parent.left
anchors.right: parent.right
active: false
sourceComponent: StatusLoadingIndicator {
width: 12
height: 12
}
}
StyledText {
id: fetchMoreButton
font.weight: Font.Medium
font.pixelSize: Theme.primaryTextFontSize
color: Theme.palette.primaryColor1
text: qsTr("↓ Fetch more messages")
horizontalAlignment: Text.AlignHCenter
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: sep1.bottom
anchors.topMargin: Theme.smallPadding
MouseArea {
cursorShape: Qt.PointingHandCursor
anchors.fill: parent
onClicked: {
root.clicked();
fetchLoaderIndicator.active = true;
fetchMoreButton.visible = false;
fetchDate.visible = false;
timer.start();
}
}
}
StyledText {
id: fetchDate
anchors.top: fetchMoreButton.bottom
anchors.topMargin: 3
anchors.horizontalCenter: parent.horizontalCenter
horizontalAlignment: Text.AlignHCenter
color: Theme.palette.secondaryText
text: qsTr("Before %1").arg(d.formattedDate)
visible: d.formattedDate
}
Separator {
anchors.top: fetchDate.bottom
anchors.topMargin: Theme.smallPadding
}
}