Add gitreview file for Lucky Lamprey branch
[apps/mixer.git] / app / Mixer.qml
index 8b1ba06..b14ae68 100644 (file)
  * 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 {}
+       }
+}