Warning, /network/neochat/src/qml/StateComponent.qml is written in an unsupported language. File is not indexed.

0001 // SPDX-FileCopyrightText: 2022 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.labs.components as KirigamiComponents
0010 
0011 import org.kde.neochat
0012 
0013 /**
0014  * @brief A component for visualising a single state event
0015  */
0016 RowLayout {
0017     id: root
0018 
0019     /**
0020      * @brief All model roles as a map with the property names as the keys.
0021      */
0022     required property var modelData
0023 
0024     /**
0025      * @brief The message author.
0026      *
0027      * This should consist of the following:
0028      *  - id - The matrix ID of the author.
0029      *  - isLocalUser - Whether the author is the local user.
0030      *  - avatarSource - The mxc URL for the author's avatar in the current room.
0031      *  - avatarMediaId - The media ID of the author's avatar.
0032      *  - avatarUrl - The mxc URL for the author's avatar.
0033      *  - displayName - The display name of the author.
0034      *  - display - The name of the author.
0035      *  - color - The color for the author.
0036      *  - object - The Quotient::User object for the author.
0037      *
0038      * @sa Quotient::User
0039      */
0040     property var author: modelData.author
0041 
0042     /**
0043      * @brief The displayname for the event's sender; for name change events, the old displayname.
0044      */
0045     property string authorDisplayName: modelData.authorDisplayName
0046 
0047     /**
0048      * @brief The display text for the state event.
0049      */
0050     property string text: modelData.text
0051 
0052     KirigamiComponents.Avatar {
0053         id: stateAvatar
0054 
0055         Layout.preferredWidth: Kirigami.Units.iconSizes.small
0056         Layout.preferredHeight: Kirigami.Units.iconSizes.small
0057 
0058         source: root.author?.avatarSource ?? ""
0059         name: root.author?.displayName ?? ""
0060         color: root.author?.color ?? undefined
0061 
0062         MouseArea {
0063             anchors.fill: parent
0064             cursorShape: Qt.PointingHandCursor
0065             onClicked: RoomManager.resolveResource("https://matrix.to/#/" + root.author.id)
0066         }
0067     }
0068 
0069     QQC2.Label {
0070         id: label
0071         Layout.alignment: Qt.AlignVCenter
0072         Layout.fillWidth: true
0073         text: `<style>a {text-decoration: none; color: ${Kirigami.Theme.textColor};}</style><a href="https://matrix.to/#/${root.author.id}">${root.authorDisplayName}</a> ${root.text}`
0074         wrapMode: Text.WordWrap
0075         textFormat: Text.RichText
0076         onLinkActivated: link => RoomManager.resolveResource(link)
0077         HoverHandler {
0078             cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.IBeamCursor
0079         }
0080     }
0081 }