* 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 Mixer 1.0
ApplicationWindow {
- property Component volumeSlider
+ // ----- Signals
- id: root
+ // ----- Properties
+ property Component volumeSlider
- 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();
- }
+ // ----- Setup
+ id: root
+ width: 1080 * roles.scale
+ height: 1487 * roles.scale
- // Add slider for each role
- for(var j = 0; j < mixer.roles.length; ++j) {
- addSlider(mixer.roles[j]);
- }
- }
+ // ----- Childs
+ Label {
+ id: title
+ font.pixelSize: 48
+ text: "Mixer"
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
- onVolumeChanged: {
- for(var i = 0; i < sliders.children.length ; i++) {
- console.log("Slider found: " + i);
- //if (sliders[i].role === name) {
- // sliders[i].value = value;
- //}
- }
- }
+ Mixer {
+ signal sliderVolumeChanged(string role, int value)
- function addSlider(name) {
- var sld = root.volumeSlider.createObject(sliders);
- sld.role = name;
- mixer.getVolume(name); // Update volume
- }
+ id: mixer
- function deleteChilds(item) {
- for(var i = item.children.length; i > 0 ; i--) {
- deleteChilds(item.children[i-1]);
- }
- item.destroy();
- }
- }
+ Component.onCompleted: {
+ mixer.open(bindingAddress);
+ }
+ }
- Label {
- id: title
- font.pixelSize: 48
- text: "Mixer"
- anchors.horizontalCenter: parent.horizontalCenter
- }
+ ListView {
+ id: roles
+ model: mixer.roles
+ scale: scale_factor
- ColumnLayout {
- id: sliders
- anchors.margins: 80
- anchors.top: title.bottom
- anchors.left: parent.left
- anchors.right: parent.right
- }
-}
+ anchors.margins: 80
+ anchors.top: title.bottom
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.bottom: parent.bottom
+ spacing: 10
+ delegate: VolumeSlider {}
+ }
+}