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 import org.kde.taskmanager
0012 
0013 import org.kde.pipewire 0.1 as PipeWire
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, allowDmaBuf) {
0024         if (fd == null)
0025             fd = 0;
0026         rep.model.append({nodeId: nodeid, uuid: "", display: displayText, fd: fd, allowDmaBuf: allowDmaBuf })
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     Instantiator {
0038         model: TasksModel {
0039             groupMode: TasksModel.GroupDisabled
0040         }
0041         delegate: Item {
0042             property var uuid: model.WinIdList
0043             property var appId: model.AppId
0044         }
0045         onObjectAdded: (index, object) => {
0046            app.addWindow(object.uuid, object.appId)
0047         }
0048     }
0049 
0050     ColumnLayout {
0051         id: pipes
0052         anchors.fill: parent
0053 
0054         Button {
0055             text: "Add Virtual Monitor"
0056             onClicked: app.createVirtualMonitor()
0057         }
0058 
0059         Button {
0060             text: "Add Region"
0061             onClicked: app.requestSelection()
0062         }
0063 
0064         Repeater {
0065             id: rep
0066             model: ListModel {}
0067 
0068             delegate: Item {
0069                 Layout.fillWidth: true
0070                 Layout.fillHeight: true
0071                 PipeWire.PipeWireSourceItem {
0072                     id: sourceItem
0073                     nodeId: model.nodeId
0074                     fd: model.fd
0075                     anchors.fill: parent
0076                     allowDmaBuf: model.allowDmaBuf
0077                 }
0078 
0079                 RowLayout {
0080                     Kirigami.Icon {
0081                         id: butt
0082                         source: sourceItem.usingDmaBuf ? "speedometer" : "delete"
0083                     }
0084                     Label {
0085                         text: model.display
0086                     }
0087                 }
0088             }
0089         }
0090     }
0091 }