moment/src/gui/Pages/Chat/ChatPage.qml

89 lines
1.9 KiB
QML
Raw Normal View History

2019-12-19 22:46:16 +11:00
// SPDX-License-Identifier: LGPL-3.0-or-later
2019-12-09 20:25:31 +11:00
import QtQuick 2.12
import QtQuick.Layouts 1.12
2019-12-18 19:53:08 +11:00
import "../../Base"
2019-12-09 20:25:31 +11:00
import "Banners"
import "Timeline"
import "FileTransfer"
HColumnPage {
2019-12-09 20:25:31 +11:00
id: chatPage
leftPadding: 0
rightPadding: 0
// The target will be our EventList, not the page itself
becomeKeyboardFlickableTarget: false
2019-12-10 05:13:38 +11:00
readonly property alias composer: composer
readonly property bool loadEventList: ! pageLoader.appearAnimation.running
2019-12-10 05:13:38 +11:00
2019-12-09 20:25:31 +11:00
RoomHeader {
Layout.fillWidth: true
}
Timer {
id: delayEventListLoadingTimer
interval: 200
running: true
}
HLoader {
id: eventListLoader
sourceComponent: loadEventList ? evListComponent : placeholder
opacity: loadEventList ? 1 : 0
2019-12-09 20:25:31 +11:00
Layout.fillWidth: true
Layout.fillHeight: true
Behavior on opacity { HNumberAnimation {} }
Component {
id: placeholder
Item {}
}
Component {
id: evListComponent
EventList {}
}
2019-12-09 20:25:31 +11:00
}
TypingMembersBar {
Layout.fillWidth: true
}
TransferList {
Layout.fillWidth: true
Layout.minimumHeight: implicitHeight
Layout.preferredHeight: implicitHeight * transferCount
Layout.maximumHeight: chatPage.height / 6
Behavior on Layout.preferredHeight { HNumberAnimation {} }
}
InviteBanner {
id: inviteBanner
visible: ! chat.roomInfo.left && inviterId
inviterId: chat.roomInfo.inviter_id
Layout.fillWidth: true
}
LeftBanner {
id: leftBanner
visible: chat.roomInfo.left
Layout.fillWidth: true
}
2019-12-09 20:25:31 +11:00
Composer {
id: composer
eventList: loadEventList ? eventListLoader.item : null
visible:
! chat.roomInfo.left && ! chat.roomInfo.inviter_id
2019-12-09 20:25:31 +11:00
}
}