Warning, /network/neochat/src/qml/ExplorerDelegate.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-FileCopyrightText: 2023 James Graham <james.h.graham@protonmail.com> 0002 // SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 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 Components 0011 0012 import org.kde.neochat 0013 0014 Delegates.RoundedItemDelegate { 0015 id: root 0016 0017 required property string roomId 0018 required property string displayName 0019 required property url avatarUrl 0020 required property string alias 0021 required property string topic 0022 required property int memberCount 0023 required property bool isJoined 0024 property bool justJoined: false 0025 0026 /** 0027 * @brief Signal emitted when a room delegate is selected. 0028 * 0029 * The signal contains all the delegate's model info so that it can be acted 0030 * upon as required, e.g. joining or entering the room or adding the room as 0031 * the child of a space. 0032 */ 0033 signal roomSelected(string roomId, string displayName, url avatarUrl, string alias, string topic, int memberCount, bool isJoined) 0034 0035 onClicked: { 0036 if (!isJoined) { 0037 justJoined = true; 0038 } 0039 root.roomSelected(root.roomId, root.displayName, root.avatarUrl, root.alias, root.topic, root.memberCount, root.isJoined); 0040 } 0041 0042 contentItem: RowLayout { 0043 spacing: Kirigami.Units.smallSpacing 0044 0045 Components.Avatar { 0046 Layout.preferredWidth: Kirigami.Units.gridUnit * 2 0047 Layout.preferredHeight: Kirigami.Units.gridUnit * 2 0048 Layout.alignment: Qt.AlignTop 0049 0050 source: root.avatarUrl 0051 name: root.displayName 0052 } 0053 0054 ColumnLayout { 0055 Layout.fillWidth: true 0056 RowLayout { 0057 Layout.fillWidth: true 0058 Kirigami.Heading { 0059 Layout.fillWidth: true 0060 level: 4 0061 text: root.displayName 0062 font.bold: true 0063 textFormat: Text.PlainText 0064 elide: Text.ElideRight 0065 wrapMode: Text.NoWrap 0066 } 0067 QQC2.Label { 0068 visible: root.isJoined || root.justJoined 0069 text: i18n("Joined") 0070 color: Kirigami.Theme.linkColor 0071 } 0072 } 0073 QQC2.Label { 0074 Layout.fillWidth: true 0075 visible: text 0076 text: root.topic ? root.topic.replace(/(\r\n\t|\n|\r\t)/gm, " ") : "" 0077 textFormat: Text.PlainText 0078 elide: Text.ElideRight 0079 wrapMode: Text.NoWrap 0080 } 0081 RowLayout { 0082 Layout.fillWidth: true 0083 Kirigami.Icon { 0084 source: "user" 0085 color: Kirigami.Theme.disabledTextColor 0086 implicitHeight: Kirigami.Units.iconSizes.small 0087 implicitWidth: Kirigami.Units.iconSizes.small 0088 } 0089 QQC2.Label { 0090 text: root.memberCount + " " + (root.alias ?? root.roomId) 0091 color: Kirigami.Theme.disabledTextColor 0092 elide: Text.ElideRight 0093 Layout.fillWidth: true 0094 } 0095 } 0096 } 0097 } 0098 }