Warning, /pim/merkuro/src/mail/qml/private/MailDelegate.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-FileCopyrightText: 2022 Devin Lin <devin@kde.org>
0002 // SPDX-License-Identifier: GPL-2.0-or-later
0003
0004 import QtQuick 2.15
0005 import QtQuick.Controls 2.15 as QQC2
0006 import QtQuick.Layouts 1.15
0007
0008 import org.kde.kirigami 2.19 as Kirigami
0009 import org.kde.kirigamiaddons.delegates 1.0 as Delegates
0010 import org.kde.kirigamiaddons.labs.components 1.0 as Components
0011
0012 Delegates.IndicatorItemDelegate {
0013 id: root
0014
0015 required property date datetime
0016 required property string from
0017 required property string to
0018 required property string sender
0019 required property string title
0020 required property var status
0021 required property var item
0022
0023 readonly property string datetimeText: datetime.toLocaleTimeString(Qt.locale(), Locale.ShortFormat)
0024
0025 unread: status && !status.isRead
0026
0027 signal openMailRequested()
0028 signal starMailRequested()
0029 signal contextMenuRequested()
0030
0031 TapHandler {
0032 acceptedButtons: Qt.RightButton
0033 onTapped: root.contextMenuRequested()
0034 }
0035
0036 onPressAndHold: root.contextMenuRequested()
0037 onClicked: root.openMailRequested()
0038
0039 contentItem: RowLayout {
0040 Components.Avatar {
0041 // Euristic to extract name from "Name <email>" pattern
0042 name: root.from.replace(/<.*>/, '').replace(/\(.*\)/, '')
0043 // Extract and use email address as unique identifier for image provider
0044 source: 'image://contact/' + new RegExp("<(.*)>").exec(root.from)[1] ?? ''
0045 Layout.rightMargin: Kirigami.Units.largeSpacing
0046 sourceSize.width: Kirigami.Units.gridUnit + Kirigami.Units.largeSpacing * 2
0047 sourceSize.height: Kirigami.Units.gridUnit + Kirigami.Units.largeSpacing * 2
0048 Layout.preferredWidth: Kirigami.Units.gridUnit + Kirigami.Units.largeSpacing * 2
0049 Layout.preferredHeight: Kirigami.Units.gridUnit + Kirigami.Units.largeSpacing * 2
0050 }
0051
0052 ColumnLayout {
0053 Layout.fillWidth: true
0054 spacing: Kirigami.Units.smallSpacing
0055
0056 RowLayout {
0057 Layout.fillWidth: true
0058 QQC2.Label {
0059 Layout.fillWidth: true
0060 text: root.from
0061 elide: Text.ElideRight
0062 font.weight: root.unread ? Font.Bold : Font.Normal
0063 }
0064
0065 QQC2.Label {
0066 color: Kirigami.Theme.disabledTextColor
0067 text: root.datetimeText
0068 }
0069 }
0070 QQC2.Label {
0071 Layout.fillWidth: true
0072 text: root.title
0073 elide: Text.ElideRight
0074 font.weight: root.unread ? Font.Bold : Font.Normal
0075 }
0076 }
0077 }
0078 }
0079