import QtQuick.Layouts 1.1
import QtQuick.Controls 2.0
import AGL.Demo.Controls 1.0
-import PaControlModel 1.0
+import Mixer 1.0
ApplicationWindow {
+ // ----- Signals
+
+ // ----- Properties
+ property Component volumeSlider
+
+ // ----- Setup
id: root
+ width: 1080 * roles.scale
+ height: 1487 * roles.scale
- Label {
+ // ----- Childs
+ Label {
id: title
font.pixelSize: 48
text: "Mixer"
anchors.horizontalCenter: parent.horizontalCenter
}
- Component {
- id: ctldesc
- Label {
- font.pixelSize: 32
- width: listView.width
- wrapMode: Text.WordWrap
- property var typeString: {modelType ? "Output" : "Input"}
- text: "[" + typeString + " #" + modelCIndex + "]: " + modelDesc
- }
- }
+ Mixer {
+ signal sliderVolumeChanged(string role, int value)
+
+ id: mixer
- Component {
- id: empty
- Item {
+ Component.onCompleted: {
+ mixer.open(bindingAddress);
}
}
ListView {
- id: listView
- anchors.left: parent.left
- anchors.top: title.bottom
+ id: roles
+ model: mixer.roles
+ scale: scale_factor
+
anchors.margins: 80
- anchors.fill: parent
- model: PaControlModel { objectName: "pacm" }
- delegate: ColumnLayout {
- width: parent.width
- spacing: 40
- Connections {
- target: listView.model
- onDataChanged: slider.value = volume
- }
- Loader {
- property int modelType: type
- property int modelCIndex: cindex
- property string modelDesc: desc
- sourceComponent: (channel == 0) ? ctldesc : empty
- }
- RowLayout {
- Layout.minimumHeight: 75
- Label {
- font.pixelSize: 24
- text: cdesc
- Layout.minimumWidth: 150
- }
- Label {
- font.pixelSize: 24
- text: "0 %"
- }
- Slider {
- id: slider
- Layout.fillWidth: true
- from: 0
- to: 65536
- stepSize: 256
- snapMode: Slider.SnapOnRelease
- onValueChanged: volume = value
- Component.onCompleted: value = volume
- }
- Label {
- font.pixelSize: 24
- text: "100 %"
- }
- }
- }
+ anchors.top: title.bottom
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.bottom: parent.bottom
+ spacing: 10
+
+ delegate: VolumeSlider {}
}
}