Warning, /multimedia/plasmatube/src/ui/components/Comments.qml is written in an unsupported language. File is not indexed.

0001 // SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com>
0002 // SPDX-License-Identifier: GPL-3.0-or-later
0003 
0004 import QtQuick
0005 import QtQuick.Layouts
0006 import QtQuick.Controls as QQC2
0007 
0008 import org.kde.kirigami as Kirigami
0009 import org.kde.kirigamiaddons.components as KirigamiComponents
0010 
0011 import org.kde.plasmatube
0012 
0013 ColumnLayout {
0014     id: root
0015 
0016     spacing: Kirigami.Units.mediumSpacing
0017 
0018     function loadComments(vid) {
0019         commentsModel.fillComments(vid)
0020     }
0021 
0022     Repeater {
0023         id: commentsRepeater
0024 
0025         Layout.fillWidth: true
0026         Layout.fillHeight: true
0027 
0028         model: CommentsModel {
0029             id: commentsModel
0030         }
0031 
0032         delegate: RowLayout {
0033             width: commentsRepeater.width
0034 
0035             required property string author
0036             required property string authorAvatar
0037             required property string content
0038 
0039             KirigamiComponents.Avatar {
0040                 source: authorAvatar
0041                 cache: true
0042                 name: author
0043 
0044                 Layout.alignment: Qt.AlignTop
0045             }
0046 
0047             ColumnLayout {
0048                 id: layout
0049 
0050                 Layout.fillWidth: true
0051 
0052                 spacing: Kirigami.Units.mediumSpacing
0053                 clip: true
0054 
0055                 Kirigami.Heading {
0056                     level: 4
0057                     text: author
0058                     type: Kirigami.Heading.Type.Primary
0059                     color: root.secondary ? Kirigami.Theme.disabledTextColor : Kirigami.Theme.textColor
0060                     verticalAlignment: Text.AlignTop
0061                     elide: Text.ElideRight
0062                     textFormat: Text.RichText
0063 
0064                     Layout.fillWidth: true
0065                 }
0066 
0067                 QQC2.Label {
0068                     color: Kirigami.Theme.disabledTextColor
0069                     text: content
0070                     verticalAlignment: Text.AlignTop
0071                     wrapMode: Text.WordWrap
0072                     textFormat: Text.RichText
0073 
0074                     onHoveredLinkChanged: if (hoveredLink.length > 0 && hoveredLink !== "1") {
0075                         applicationWindow().hoverLinkIndicator.text = hoveredLink;
0076                     } else {
0077                         applicationWindow().hoverLinkIndicator.text = "";
0078                     }
0079 
0080                     onLinkActivated: (link) => Qt.openUrlExternally(link)
0081 
0082                     HoverHandler {
0083                         cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.IBeamCursor
0084                     }
0085 
0086                     Layout.fillWidth: true
0087                 }
0088             }
0089         }
0090     }
0091 
0092     QQC2.Button {
0093         text: i18nc("@action:button Load more comments", "Load more")
0094         onClicked: commentsModel.loadMore()
0095     }
0096 }