Warning, /multimedia/haruna/src/qml/PlayListItem.qml is written in an unsupported language. File is not indexed.

0001 /*
0002  * SPDX-FileCopyrightText: 2020 George Florea Bănuș <georgefb899@gmail.com>
0003  *
0004  * SPDX-License-Identifier: GPL-3.0-or-later
0005  */
0006 
0007 import QtQuick
0008 import QtQuick.Controls
0009 import QtQuick.Layouts
0010 
0011 import org.kde.kirigami as Kirigami
0012 import org.kde.haruna
0013 import org.kde.haruna.settings
0014 
0015 ItemDelegate {
0016     id: root
0017 
0018     property bool isLocal: model.isLocal
0019     property string rowNumber: (index + 1).toString()
0020     property var alpha: PlaylistSettings.overlayVideo ? 0.6 : 1
0021     property int fontSize: (window.isFullScreen() && PlaylistSettings.bigFontFullscreen)
0022                            ? Kirigami.Units.gridUnit
0023                            : Kirigami.Units.gridUnit - 6
0024 
0025     padding: 0
0026     implicitWidth: ListView.view.width
0027     highlighted: model.isPlaying
0028 
0029     background: Rectangle {
0030         anchors.fill: parent
0031         color: {
0032             if (hovered) {
0033                 return Qt.alpha(Kirigami.Theme.hoverColor, alpha)
0034             }
0035 
0036             if (highlighted) {
0037                 return Qt.alpha(Kirigami.Theme.highlightColor, alpha)
0038             }
0039 
0040             return Qt.alpha(Kirigami.Theme.backgroundColor, alpha)
0041         }
0042     }
0043 
0044     contentItem: Item {
0045         anchors.fill: parent
0046         RowLayout {
0047             anchors.fill: parent
0048             spacing: Kirigami.Units.largeSpacing
0049             Label {
0050                 text: pad(root.rowNumber, playlistView.count.toString().length)
0051                 color: root.hovered || root.highlighted ? Kirigami.Theme.highlightedTextColor : Kirigami.Theme.textColor
0052                 visible: PlaylistSettings.showRowNumber
0053                 font.pointSize: root.fontSize
0054                 horizontalAlignment: Qt.AlignCenter
0055                 Layout.leftMargin: Kirigami.Units.largeSpacing
0056 
0057                 function pad(number, length) {
0058                     while (number.length < length)
0059                         number = "0" + number;
0060                     return number;
0061                 }
0062 
0063             }
0064 
0065             Rectangle {
0066                 width: 1
0067                 color: Kirigami.Theme.alternateBackgroundColor
0068                 visible: PlaylistSettings.showRowNumber
0069                 Layout.fillHeight: true
0070             }
0071 
0072             Kirigami.Icon {
0073                 source: "media-playback-start"
0074                 color: root.hovered || root.highlighted ? Kirigami.Theme.highlightedTextColor : Kirigami.Theme.textColor
0075                 width: Kirigami.Units.iconSizes.small
0076                 height: Kirigami.Units.iconSizes.small
0077                 visible: model.isPlaying
0078                 Layout.leftMargin: PlaylistSettings.showRowNumber ? 0 : Kirigami.Units.largeSpacing
0079             }
0080 
0081             LabelWithTooltip {
0082                 color: root.hovered || root.highlighted ? Kirigami.Theme.highlightedTextColor : Kirigami.Theme.textColor
0083                 horizontalAlignment: Qt.AlignLeft
0084                 verticalAlignment: Qt.AlignVCenter
0085                 elide: Text.ElideRight
0086                 font.pointSize: root.fontSize
0087                 font.weight: model.isPlaying ? Font.ExtraBold : Font.Normal
0088                 text: PlaylistSettings.showMediaTitle ? model.title : model.name
0089                 layer.enabled: true
0090                 Layout.fillWidth: true
0091                 Layout.leftMargin: PlaylistSettings.showRowNumber || model.isPlaying ? 0 : Kirigami.Units.largeSpacing
0092                 Binding {
0093                     target: root
0094                     property: "implicitHeight"
0095                     value: root.fontSize * 3
0096                 }
0097             }
0098 
0099             Label {
0100                 text: model.duration
0101                 color: root.hovered || root.highlighted ? Kirigami.Theme.highlightedTextColor : Kirigami.Theme.textColor
0102                 visible: model.duration.length > 0
0103                 font.pointSize: root.fontSize
0104                 horizontalAlignment: Qt.AlignCenter
0105                 Layout.margins: Kirigami.Units.largeSpacing
0106             }
0107         }
0108     }
0109     onDoubleClicked: {
0110         mpv.playlistProxyModel.setPlayingItem(index)
0111     }
0112 }