Warning, /network/neochat/src/qml/InviteUserPage.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-FileCopyrightText: 2019 Black Hat <bhat@encom.eu.org>
0002 // SPDX-License-Identifier: GPL-3.0-only
0003
0004 import QtQuick
0005 import QtQuick.Controls as QQC2
0006 import QtQuick.Layouts
0007
0008 import org.kde.kirigami as Kirigami
0009 import org.kde.kirigamiaddons.delegates as Delegates
0010 import org.kde.kirigamiaddons.labs.components as KirigamiComponents
0011
0012 import org.kde.neochat
0013
0014 Kirigami.ScrollablePage {
0015 id: root
0016
0017 property NeoChatRoom room
0018
0019 title: i18n("Invite a User")
0020
0021 actions: [
0022 Kirigami.Action {
0023 icon.name: "dialog-close"
0024 text: i18nc("@action", "Cancel")
0025 onTriggered: root.closeDialog()
0026 }
0027 ]
0028 header: RowLayout {
0029 Layout.fillWidth: true
0030 Layout.margins: Kirigami.Units.largeSpacing
0031
0032 Kirigami.SearchField {
0033 id: identifierField
0034 property bool isUserID: text.match(/@(.+):(.+)/g)
0035 Layout.fillWidth: true
0036
0037 placeholderText: i18n("Find a user...")
0038 onAccepted: userDictListModel.search()
0039 }
0040
0041 QQC2.Button {
0042 visible: identifierField.isUserID
0043
0044 text: i18n("Add")
0045 highlighted: true
0046
0047 onClicked: {
0048 room.inviteToRoom(identifierField.text)
0049 }
0050 }
0051 }
0052
0053 ListView {
0054 id: userDictListView
0055
0056 clip: true
0057
0058 model: UserDirectoryListModel {
0059 id: userDictListModel
0060
0061 connection: root.room.connection
0062 keyword: identifierField.text
0063 }
0064
0065 Kirigami.PlaceholderMessage {
0066 anchors.centerIn: parent
0067
0068 visible: userDictListView.count < 1
0069
0070 text: i18n("No users available")
0071 }
0072
0073 delegate: Delegates.RoundedItemDelegate {
0074 id: delegate
0075
0076 required property string userID
0077 required property string name
0078 required property string avatar
0079
0080 property bool inRoom: room && room.containsUser(userID)
0081
0082 text: name
0083
0084 contentItem: RowLayout {
0085 KirigamiComponents.Avatar {
0086 Layout.preferredWidth: Kirigami.Units.iconSizes.medium
0087 Layout.preferredHeight: Kirigami.Units.iconSizes.medium
0088 source: delegate.avatar ? ("image://mxc/" + delegate.avatar) : ""
0089 name: delegate.name
0090 }
0091
0092 Delegates.SubtitleContentItem {
0093 itemDelegate: delegate
0094 subtitle: delegate.userID
0095 labelItem.textFormat: Text.PlainText
0096 }
0097
0098 QQC2.ToolButton {
0099 id: inviteButton
0100 icon.name: "document-send"
0101 text: i18n("Send invitation")
0102 checkable: true
0103 checked: inRoom
0104 opacity: inRoom ? 0.5 : 1
0105
0106 onToggled: {
0107 if (inRoom) {
0108 checked = true
0109 } else {
0110 room.inviteToRoom(delegate.userID);
0111 applicationWindow().pageStack.layers.pop();
0112 }
0113 }
0114
0115 QQC2.ToolTip.text: !inRoom ? text : i18n("User is either already a member or has been invited")
0116 QQC2.ToolTip.visible: inviteButton.hovered
0117 QQC2.ToolTip.delay: Kirigami.Units.toolTipDelay
0118 }
0119 }
0120 }
0121 }
0122 }