/* * Copyright 2016 Konsulko Group * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * 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 ApplicationWindow { property Component volumeSlider id: root Mixer { id: mixer Component.onCompleted: { root.volumeSlider = Qt.createComponent("VolumeSlider.qml"); if (root.VolumeSlider.status !== Component.Ready) { console.log("Failed to load the VolumeSlider.qml component: " + root.volumeSlider.errorString()); } 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(); } // Add slider for each role for(var j = 0; j < mixer.roles.length; ++j) { addSlider(mixer.roles[j]); } } onVolumeChanged: { for(var i = 0; i < sliders.children.length ; i++) { console.log("Slider found: " + i); //if (sliders[i].role === name) { // sliders[i].value = value; //} } } function addSlider(name) { var sld = root.volumeSlider.createObject(sliders); sld.role = name; mixer.getVolume(name); // Update volume } function deleteChilds(item) { for(var i = item.children.length; i > 0 ; i--) { deleteChilds(item.children[i-1]); } item.destroy(); } } Label { id: title font.pixelSize: 48 text: "Mixer" anchors.horizontalCenter: parent.horizontalCenter } ColumnLayout { id: sliders anchors.margins: 80 anchors.top: title.bottom anchors.left: parent.left anchors.right: parent.right } }