* limitations under the License.
*/
-// BUG: ValueChanged event is raised by sliders when you are moving the caret, should be raised only when you release it.
-// TODO: Call mixer.setVolume(sliderName, Value) on value change
-// TODO: Call mixer.getVolume(sliderName) on load
-
import QtQuick 2.6
import QtQuick.Layouts 1.1
import QtQuick.Controls 2.0
import AGL.Demo.Controls 1.0
import Mixer 1.0
+import QtQuick.Window 2.13
+
ApplicationWindow {
- id: root
+ // ----- Signals
- Mixer {
- id: mixer
- Component.objectName: {
- mixer.open(bindingAddress)
- }
- onRolesChanged: {
- // Remove existing sliders
- for(var i = sliders.children.length; i > 0 ; --i) {
- console.log("destroying: " + i)
- sliders.children[i-1].destroy()
- }
+ // ----- Properties
+ property Component volumeSlider
- // Add slider for each role
- for(var j = 0; j < mixer.roles.length; ++j) {
- addSlider(mixer.roles[j])
- }
- }
+ // ----- Setup
+ id: root
+ width: Window.width * roles.scale
+ height: Window.height * roles.scale
- function addSlider(name) {
- Qt.createQmlObject("
-import QtQuick.Layouts 1.1
-import QtQuick.Controls 2.0
-RowLayout {
- property int value
- id: slider_" + name + "
- Layout.minimumHeight: 75
- Label {
- font.pixelSize: 24
- text: \"" + name+ "\"
- Layout.minimumWidth: 150
- }
- Label {
- id: slider_" + name + "_textvalue
- font.pixelSize: 24
- text: \"0 %\"
- }
- Slider {
- id: slider_" + name + "_slider
- Layout.fillWidth: true
- from: 0
- to: 100
- stepSize: 1
- snapMode: Slider.SnapOnRelease
- onValueChanged: {
- slider_" + name + "_textvalue.text = value + \" %\"
- mixer.setVolume(\"" + name + "\", value)
- }
- Component.objectName: {
- mixer.getVolume(\"" + name + "\")
- }
- }
- }", sliders, "volumeslider")
- }
+ // ----- Childs
+ Label {
+ id: title
+ font.pixelSize: 48
+ text: "Mixer"
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
- function deleteChilds(item) {
- for(var i = item.children.length; i > 0 ; i--) {
- deleteChilds(item.children[i-1])
- }
- item.destroy()
- }
- }
+ Mixer {
+ signal sliderVolumeChanged(string role, int value)
- Label {
- id: title
- font.pixelSize: 48
- text: "Mixer"
- anchors.horizontalCenter: parent.horizontalCenter
- }
+ id: mixer
- ColumnLayout {
- id: sliders
- anchors.margins: 80
- anchors.top: title.bottom
- anchors.left: parent.left
- anchors.right: parent.right
- }
-}
+ Component.onCompleted: {
+ mixer.open(bindingAddress);
+ }
+ }
+
+ ListView {
+ id: roles
+ model: mixer.roles
+ //scale: scale_factor
+ scale: 1
+ anchors.margins: 80
+ anchors.top: title.bottom
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.bottom: parent.bottom
+ spacing: 10
+
+ delegate: VolumeSlider {}
+ }
+}