moment/src/gui/Pages/AddChat/CreateRoom.qml

139 lines
3.4 KiB
QML
Raw Normal View History

2019-12-19 07:46:16 -04:00
// SPDX-License-Identifier: LGPL-3.0-or-later
2019-11-07 09:50:59 -04:00
import QtQuick 2.12
import QtQuick.Layouts 1.12
import "../../Base"
HBox {
id: addChatBox
clickButtonOnEnter: "apply"
2019-11-07 09:50:59 -04:00
onFocusChanged: nameField.item.forceActiveFocus()
2019-11-07 09:50:59 -04:00
buttonModel: [
2019-11-09 11:10:00 -04:00
{ name: "apply", text: qsTr("Create"), iconName: "room-create" },
2019-11-07 09:50:59 -04:00
{ name: "cancel", text: qsTr("Cancel"), iconName: "cancel" },
]
buttonCallbacks: ({
2019-11-08 15:32:12 -04:00
apply: button => {
button.loading = true
errorMessage.text = ""
2019-11-08 15:32:12 -04:00
2020-03-08 04:46:20 -04:00
const args = [
nameField.item.text,
topicArea.item.text,
2019-11-08 15:32:12 -04:00
publicCheckBox.checked,
encryptCheckBox.checked,
! blockOtherServersCheckBox.checked,
]
2019-11-09 14:20:53 -04:00
py.callClientCoro(userId, "new_group_chat", args, roomId => {
2019-11-08 15:32:12 -04:00
button.loading = false
pageLoader.showRoom(userId, roomId)
mainPane.roomList.startCorrectItemSearch()
}, (type, args) => {
button.loading = false
errorMessage.text =
2019-11-09 14:20:53 -04:00
qsTr("Unknown error - %1: %2").arg(type).arg(args)
2019-11-08 15:32:12 -04:00
})
},
cancel: button => {
nameField.item.text = ""
topicArea.item.text = ""
publicCheckBox.checked = false
encryptCheckBox.checked = false
blockOtherServersCheckBox.checked = false
pageLoader.showPrevious()
}
2019-11-07 09:50:59 -04:00
})
2019-11-08 15:32:12 -04:00
readonly property string userId: addChatPage.userId
HRoomAvatar {
id: avatar
roomId: ""
displayName: nameField.item.text
Layout.alignment: Qt.AlignCenter
Layout.preferredWidth: 128
Layout.preferredHeight: Layout.preferredWidth
2019-11-09 15:19:10 -04:00
CurrentUserAvatar {
anchors.fill: parent
z: 10
opacity: nameField.item.text ? 0 : 1
visible: opacity > 0
2019-12-16 04:42:41 -04:00
Behavior on opacity { HNumberAnimation {} }
}
}
HLabeledItem {
2019-11-07 09:50:59 -04:00
id: nameField
2020-03-17 13:40:58 -04:00
label.text: qsTr("Name:")
2019-11-07 09:50:59 -04:00
Layout.fillWidth: true
HTextField {
width: parent.width
maximumLength: 255
}
2019-11-07 09:50:59 -04:00
}
HLabeledItem {
id: topicArea
2020-03-17 13:40:58 -04:00
label.text: qsTr("Topic:")
2019-11-07 09:50:59 -04:00
Layout.fillWidth: true
HTextArea {
width: parent.width
placeholderText: qsTr("This room is about...")
focusItemOnTab: publicCheckBox
}
2019-11-07 09:50:59 -04:00
}
HCheckBox {
id: publicCheckBox
text: qsTr("Make this room public")
2019-12-22 11:36:31 -04:00
subtitle.text:
qsTr("Anyone will be able to join with no invite required")
2019-11-07 09:50:59 -04:00
Layout.fillWidth: true
2019-11-07 09:50:59 -04:00
}
EncryptCheckBox {
2019-11-07 09:50:59 -04:00
id: encryptCheckBox
Layout.fillWidth: true
2019-11-07 09:50:59 -04:00
}
HCheckBox {
id: blockOtherServersCheckBox
text: qsTr("Reject users from other matrix servers")
subtitle.text: qsTr("Cannot be changed later!")
2020-03-10 08:58:14 -04:00
subtitle.color: theme.colors.warningText
2019-11-07 09:50:59 -04:00
Layout.fillWidth: true
2019-11-07 09:50:59 -04:00
}
HLabel {
id: errorMessage
wrapMode: Text.Wrap
horizontalAlignment: Text.AlignHCenter
color: theme.colors.errorText
visible: Layout.maximumHeight > 0
Layout.maximumHeight: text ? implicitHeight : 0
Behavior on Layout.maximumHeight { HNumberAnimation {} }
Layout.fillWidth: true
}
}