Warning, /plasma/plasma-workspace/applets/cameraindicator/contents/ui/FullRepresentation.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2023 Fushan Wen <qydwhotmail@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 import QtQuick 0008 0009 import org.kde.plasma.plasmoid 0010 import org.kde.kirigami as Kirigami 0011 import org.kde.plasma.components as PlasmaComponents 0012 import org.kde.plasma.extras as PlasmaExtras 0013 import org.kde.pipewire.monitor as Monitor 0014 0015 PlasmaComponents.Page { 0016 implicitWidth: root.switchWidth 0017 implicitHeight: root.switchHeight 0018 0019 PlasmaComponents.ScrollView { 0020 anchors.fill: parent 0021 contentWidth: availableWidth - contentItem.leftMargin - contentItem.rightMargin 0022 focus: true 0023 0024 contentItem: ListView { 0025 id: cameraList 0026 0027 focus: cameraList.count > 0 0028 model: !root.expanded || monitor.count <= 1 ? null : monitor 0029 0030 delegate: PlasmaExtras.ExpandableListItem { 0031 // TODO: switch to PlasmaExtras.ListItem once it has subtitle 0032 icon: switch (model.state) { 0033 case Monitor.NodeState.Running: 0034 return "camera-on-symbolic"; 0035 case Monitor.NodeState.Idle: 0036 return "camera-ready-symbolic"; 0037 default: 0038 return "camera-off-symbolic"; 0039 } 0040 title: model.display || i18nc("@title", "Camera") 0041 subtitle: switch (model.state) { 0042 case Monitor.NodeState.Running: 0043 return i18nc("@info:status", "Active"); 0044 case Monitor.NodeState.Idle: 0045 return i18nc("@info:status", "Idle"); 0046 case Monitor.NodeState.Error: 0047 return i18nc("@info:status", "Error"); 0048 case Monitor.NodeState.Creating: 0049 return i18nc("@info:status", "Creating"); 0050 case Monitor.NodeState.Suspended: 0051 return i18nc("@info:status", "Suspended"); 0052 default: 0053 return i18nc("@info:status", "Unknown"); 0054 } 0055 } 0056 0057 Instantiator { 0058 active: cameraList.count === 0 0059 asynchronous: true 0060 model: monitor.count === 1 ? monitor : 1 0061 0062 delegate: PlasmaExtras.PlaceholderMessage { 0063 parent: cameraList 0064 anchors.centerIn: parent 0065 width: parent.width - (Kirigami.Units.gridUnit * 4) 0066 iconName: Plasmoid.icon 0067 text: { 0068 if (monitor.count === 1 && model.state === Monitor.NodeState.Running && model.display) { 0069 return i18nc("@info:status %1 camera name", "%1 is in use", model.display); 0070 } 0071 return root.toolTipSubText; 0072 } 0073 } 0074 } 0075 } 0076 } 0077 }