nheko/resources/qml/TimelineView.qml

144 lines
3.0 KiB
QML
Raw Normal View History

2021-03-05 00:35:15 +01:00
// SPDX-FileCopyrightText: 2021 Nheko Contributors
2021-03-14 02:45:20 +01:00
//
2021-03-05 00:35:15 +01:00
// SPDX-License-Identifier: GPL-3.0-or-later
2020-10-08 21:11:21 +02:00
import "./delegates"
import "./device-verification"
import "./emoji"
2020-12-17 17:25:32 +01:00
import "./voip"
2021-03-14 22:22:52 +01:00
import Qt.labs.platform 1.1 as Platform
2020-10-08 21:11:21 +02:00
import QtGraphicalEffects 1.0
import QtQuick 2.9
import QtQuick.Controls 2.13
import QtQuick.Layouts 1.3
import QtQuick.Window 2.2
import im.nheko 1.0
2020-05-14 02:19:15 +02:00
import im.nheko.EmojiModel 1.0
Item {
id: timelineView
2021-04-27 11:08:21 +02:00
property var room: null
Label {
visible: !room && !TimelineManager.isInitialSync
anchors.centerIn: parent
text: qsTr("No room open")
font.pointSize: 24
color: Nheko.colors.text
2021-04-11 16:31:49 +02:00
}
BusyIndicator {
visible: running
anchors.centerIn: parent
running: TimelineManager.isInitialSync
height: 200
width: 200
z: 3
}
ColumnLayout {
id: timelineLayout
2021-04-11 22:24:39 +02:00
visible: room != null
2020-10-08 21:11:21 +02:00
anchors.fill: parent
spacing: 0
2021-01-12 20:22:52 +01:00
TopBar {
2020-10-08 21:11:21 +02:00
}
Rectangle {
Layout.fillWidth: true
height: 1
2020-10-08 21:11:21 +02:00
z: 3
2021-05-14 23:35:34 +02:00
color: Nheko.theme.separator
2020-10-08 21:11:21 +02:00
}
Rectangle {
id: msgView
2021-01-26 06:03:09 +01:00
Layout.fillWidth: true
Layout.fillHeight: true
color: Nheko.colors.base
2020-10-08 21:11:21 +02:00
ColumnLayout {
anchors.fill: parent
spacing: 0
2020-11-15 04:52:49 +01:00
StackLayout {
id: stackLayout
2020-10-08 21:11:21 +02:00
currentIndex: 0
2020-11-15 04:52:49 +01:00
Connections {
function onRoomChanged() {
stackLayout.currentIndex = 0;
2020-10-08 21:11:21 +02:00
}
target: timelineView
}
2020-11-15 04:52:49 +01:00
MessageView {
Layout.fillWidth: true
implicitHeight: msgView.height - typingIndicator.height
2020-10-08 21:11:21 +02:00
}
Loader {
source: CallManager.isOnCall && CallManager.callType != CallType.VOICE ? "voip/VideoCall.qml" : ""
onLoaded: TimelineManager.setVideoCallItem()
2020-10-27 18:14:06 +01:00
}
2020-10-08 21:11:21 +02:00
}
TypingIndicator {
id: typingIndicator
}
2021-01-11 23:51:39 +01:00
2020-12-17 17:25:32 +01:00
}
}
2020-10-08 21:11:21 +02:00
CallInviteBar {
id: callInviteBar
2020-10-08 21:11:21 +02:00
Layout.fillWidth: true
z: 3
}
2020-10-26 13:50:44 +01:00
ActiveCallBar {
Layout.fillWidth: true
z: 3
}
Rectangle {
Layout.fillWidth: true
z: 3
height: 1
2021-05-14 23:35:34 +02:00
color: Nheko.theme.separator
}
ReplyPopup {
2021-02-03 01:30:03 +01:00
}
2020-10-26 13:50:44 +01:00
MessageInput {
2020-10-08 21:11:21 +02:00
}
}
NhekoDropArea {
anchors.fill: parent
roomid: room ? room.roomId() : ""
}
Connections {
target: room
onOpenRoomSettingsDialog: {
var roomSettings = roomSettingsComponent.createObject(timelineRoot, {
"roomSettings": settings
});
roomSettings.show();
}
2020-10-08 21:11:21 +02:00
}
2019-08-30 19:29:25 +02:00
}