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 }