Warning, /network/tokodon/src/content/ui/ConversationDelegate.qml is written in an unsupported language. File is not indexed.

0001 // SPDX-FileCopyrightText: 2022 Carl Schwan <carl@carlschwan.eu>
0002 // SPDX-License-Identifier: LGPL-2.1-or-later
0003 
0004 import QtQuick
0005 import org.kde.kirigami 2 as Kirigami
0006 import QtQuick.Controls 2 as QQC2
0007 import QtQuick.Layouts
0008 import org.kde.kirigamiaddons.delegates 1 as Delegates
0009 import org.kde.kirigamiaddons.components 1 as KirigamiComponents
0010 import org.kde.tokodon
0011 
0012 Delegates.IndicatorItemDelegate {
0013     id: root
0014 
0015     required property string id
0016     required property string content
0017     required property var authorIdentity
0018     required property string relativeTime
0019     required property int conversationsCount
0020     required property string conversationId
0021 
0022     readonly property bool showSeparator: root.index !== conversationsCount - 1
0023 
0024     signal markAsRead(conversationId: string)
0025 
0026     onClicked: {
0027         Navigation.openThread(root.id)
0028         if (root.unread) {
0029             root.markAsRead(root.conversationId);
0030         }
0031     }
0032 
0033     contentItem: RowLayout {
0034         id: rowLayout
0035 
0036         KirigamiComponents.Avatar {
0037             name: root.authorIdentity.displayName
0038             source: root.authorIdentity.avatarUrl
0039             Layout.rightMargin: Kirigami.Units.largeSpacing
0040             sourceSize.width: Kirigami.Units.gridUnit + Kirigami.Units.largeSpacing * 2
0041             sourceSize.height: Kirigami.Units.gridUnit + Kirigami.Units.largeSpacing * 2
0042             Layout.preferredWidth: Kirigami.Units.gridUnit + Kirigami.Units.largeSpacing * 2
0043             Layout.preferredHeight: Kirigami.Units.gridUnit + Kirigami.Units.largeSpacing * 2
0044         }
0045 
0046         ColumnLayout {
0047             Layout.fillWidth: true
0048             spacing: Kirigami.Units.smallSpacing
0049 
0050             RowLayout {
0051                 Layout.fillWidth: true
0052                 QQC2.Label {
0053                     Layout.fillWidth: true
0054                     text: root.authorIdentity.displayNameHtml
0055                     elide: Text.ElideRight
0056                     font.weight: root.unread ? Font.Bold : Font.Normal
0057                 }
0058                 QQC2.Label {
0059                     text: root.relativeTime
0060                     color: Kirigami.Theme.disabledTextColor
0061                 }
0062             }
0063 
0064             QQC2.Label {
0065                 color: Kirigami.Theme.disabledTextColor
0066                 Layout.fillWidth: true
0067                 maximumLineCount: 1
0068                 elide: Text.ElideRight
0069                 text: root.content
0070             }
0071         }
0072     }
0073 }