Warning, /plasma/plasma-bigscreen/kcms/audio-device-chooser/ui/delegates/AudioDelegate.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2019 Aditya Mehra <aix.m@outlook.com>
0003     SPDX-FileCopyrightText: 2019 Marco Martin <mart@kde.org>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 import QtQuick 2.14
0009 import QtQuick.Layouts 1.14
0010 import QtQuick.Controls 2.14
0011 import org.kde.plasma.components 3.0 as PlasmaComponents
0012 import org.kde.kirigami 2.12 as Kirigami
0013 import org.kde.mycroft.bigscreen 1.0 as BigScreen
0014 import Qt5Compat.GraphicalEffects
0015 import org.kde.plasma.private.volume 0.1
0016 import "../code/icon.js" as Icon
0017 
0018 BigScreen.AbstractDelegate {
0019     id: delegate
0020     property bool isPlayback: type.substring(0, 4) == "sink"
0021     property bool onlyOne: false
0022     readonly property var currentPort: Ports[ActivePortIndex]
0023     property string type
0024     property bool isDefaultDevice: deviceDefaultIcon.visible
0025     signal setDefault
0026 
0027     property var hasVolume: HasVolume
0028     property bool volumeWritable: VolumeWritable
0029     property var muted: Muted
0030     property var vol: Volume
0031     property var pObject: PulseObject
0032     property int focusMarginWidth: listView.currentIndex == index && delegate.activeFocus ? contentLayout.width : contentLayout.width - Kirigami.Units.gridUnit
0033 
0034     implicitWidth: listView.cellWidth * 2.5
0035     implicitHeight: listView.height + Kirigami.Units.largeSpacing
0036     
0037     Behavior on implicitWidth {
0038         NumberAnimation {
0039             duration: Kirigami.Units.longDuration
0040             easing.type: Easing.InOutQuad
0041         }
0042     }
0043     
0044     Keys.onReturnPressed: {
0045         listView.currentIndex = index
0046         settingsViewDetails.currentItem.forceActiveFocus()
0047     }
0048     
0049     onClicked: {
0050         listView.currentIndex = index
0051         settingsViewDetails.forceActiveFocus()
0052     }
0053 
0054     contentItem: Item {
0055         id: contentItemLayout
0056         
0057         Kirigami.Icon {
0058             id: deviceAudioSvgIcon
0059             width: Kirigami.Units.iconSizes.huge
0060             height: width
0061             y: contentItemLayout.height/2 - deviceAudioSvgIcon.height/2
0062             source: Icon.name(Volume, Muted, isPlayback ? "audio-volume" : "microphone-sensitivity")
0063         }
0064         
0065         ColumnLayout {
0066             id: textLayout
0067             
0068             anchors {
0069                 left: deviceAudioSvgIcon.right
0070                 right: contentItemLayout.right
0071                 top: deviceAudioSvgIcon.top
0072                 bottom: deviceAudioSvgIcon.bottom
0073                 leftMargin: Kirigami.Units.smallSpacing
0074             }
0075 
0076             PlasmaComponents.Label {
0077                 id: deviceTypeLabel
0078                 Layout.fillWidth: true
0079                 visible: text.length > 0
0080                 elide: Text.ElideRight
0081                 wrapMode: Text.WordWrap
0082                 horizontalAlignment: Text.AlignHCenter
0083                 maximumLineCount: 2
0084                 textFormat: Text.PlainText
0085                 color: Kirigami.Theme.textColor
0086                 font.pixelSize: textMetrics.font.pixelSize * 1
0087                 text: currentPort.description
0088             }
0089             
0090             PlasmaComponents.Label {
0091                 id: deviceNameLabel
0092                 Layout.fillWidth: true
0093                 visible: text.length > 0
0094                 elide: Text.ElideRight
0095                 wrapMode: Text.WordWrap
0096                 horizontalAlignment: Text.AlignHCenter
0097                 maximumLineCount: 2
0098                 textFormat: Text.PlainText
0099                 color: Kirigami.Theme.textColor
0100                 font.pixelSize: textMetrics.font.pixelSize * 0.8
0101                 text: Description
0102             }
0103         }
0104         
0105         Item {
0106             id: deviceDefaultRepresentationLayout
0107             anchors.right: parent.right
0108             anchors.bottom: parent.bottom
0109             anchors.rightMargin: Kirigami.Units.largeSpacing
0110             anchors.bottomMargin: Kirigami.Units.largeSpacing
0111 
0112             Kirigami.Icon {
0113                 id: deviceDefaultIcon
0114                 anchors.centerIn: parent
0115                 width: listView.currentIndex == index && delegate.activeFocus ? Kirigami.Units.iconSizes.medium : Kirigami.Units.iconSizes.smallMedium
0116                 height: listView.currentIndex == index && delegate.activeFocus ? Kirigami.Units.iconSizes.medium : Kirigami.Units.iconSizes.smallMedium
0117                 source: Qt.resolvedUrl("../images/green-tick-thick.svg")
0118                 opacity: model.PulseObject.default ? 1 : 0
0119             }
0120         }
0121     }
0122 }