Warning, /plasma/kpipewire/tests/main.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2022 Aleix Pol Gonzalez <aleixpol@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006 
0007 import QtQuick 2.1
0008 import QtQuick.Layouts 1.1
0009 import QtQuick.Controls 2.1
0010 import org.kde.kirigami 2.15 as Kirigami
0011 
0012 import org.kde.pipewire 0.1 as PipeWire
0013 import org.kde.pipewire.record 0.1 as PWRec
0014 
0015 Kirigami.ApplicationWindow
0016 {
0017     id: root
0018     width: 500
0019     height: 500
0020     visible: true
0021     property QtObject app
0022 
0023     function addStream(nodeid, displayText, fd) {
0024         if (fd == null)
0025             fd = 0;
0026         rep.model.append({nodeId: nodeid, uuid: "", display: displayText, fd: fd})
0027     }
0028     function removeStream(nodeid) {
0029         for(var i=0; i<rep.model.count; ++i) {
0030             if (rep.model.get(i).nodeId === nodeid) {
0031                rep.model.remove(i)
0032                 break;
0033             }
0034         }
0035     }
0036 
0037     signal record(int nodeId, bool capture)
0038 
0039     ColumnLayout {
0040         id: pipes
0041         anchors.fill: parent
0042 
0043         Button {
0044             text: "Add Virtual Monitor"
0045             onClicked: app.createVirtualMonitor()
0046         }
0047 
0048         Repeater {
0049             id: rep
0050             model: ListModel {}
0051 
0052             delegate: Item {
0053                 Layout.fillWidth: true
0054                 Layout.fillHeight: true
0055                 PipeWire.PipeWireSourceItem {
0056                     id: sourceItem
0057                     nodeId: model.nodeId
0058                     fd: model.fd
0059                     visible: record.state !== PWRec.PipeWireRecord.Recording
0060                     anchors.fill: parent
0061 
0062                 }
0063                 Button {
0064                     id: butt
0065                     icon.name: "media-record"
0066                     text: model.display + " " + model.nodeId
0067                     enabled: checked === (record.state !== PWRec.PipeWireRecord.Idle)
0068                     checkable: true
0069 
0070                     PWRec.PipeWireRecord {
0071                         id: record
0072                         nodeId: model.nodeId
0073                         fd: model.fd
0074                         output: "~/clementine.mp4"
0075                         active: butt.checked
0076                     }
0077                 }
0078             }
0079         }
0080     }
0081 }