diff --git a/HomeForm.qml b/HomeForm.qml
index 4d8b3a6..ba72a28 100644
--- a/HomeForm.qml
+++ b/HomeForm.qml
@@ -2,10 +2,27 @@ import QtQuick 2.0
import QtQuick.Controls 2.0
Page {
- title: qsTr("Home")
+ title: qsTr("nooLight")
- Label {
- text: qsTr("You are on the home page. " + settings.serviceUrl)
- anchors.centerIn: parent
+ LightsModel {
+ id: lightsModel
+
+ serviceUrl: settings.serviceUrl
+
+ onError: console.log(text)
+ }
+
+ ListView {
+ anchors.fill: parent
+
+ model: lightsModel
+ spacing: 5
+
+ delegate: LightGroup {
+ width: parent.width
+ height: childrenRect.height
+
+ title: groupName || ""
+ }
}
}
diff --git a/LightGroup.qml b/LightGroup.qml
new file mode 100644
index 0000000..02e2be6
--- /dev/null
+++ b/LightGroup.qml
@@ -0,0 +1,21 @@
+import QtQuick 2.0
+import QtQuick.Controls 2.2
+
+Item {
+ id: root
+
+ property string title: ""
+ property var lights: []
+
+ Rectangle {
+ width: parent.width
+ height: 20
+
+ color: "green"
+
+ Label {
+ text: root.title
+ anchors.centerIn: parent
+ }
+ }
+}
diff --git a/LightsModel.qml b/LightsModel.qml
new file mode 100644
index 0000000..fe2bb45
--- /dev/null
+++ b/LightsModel.qml
@@ -0,0 +1,39 @@
+import QtQml.Models 2.1
+
+ListModel {
+ id: root
+
+ property string serviceUrl: undefined
+
+ signal error(string text)
+
+ onServiceUrlChanged: reload()
+
+ function reload() {
+ var request = new XMLHttpRequest()
+
+ request.open('GET', root.serviceUrl + '/static/channels.js')
+ request.onreadystatechange = function () {
+ if (request.readyState !== XMLHttpRequest.DONE) {
+ return
+ }
+
+ if (request.status === 200) {
+ populateModel(JSON.parse(request.responseText))
+ return
+ }
+
+ root.error(qsTr("[%1] Request error: %2").
+ arg(request.status).
+ arg(request.statusText))
+ }
+
+ request.send()
+ }
+
+ function populateModel(data) {
+ data.groups.forEach(function (group) {
+ root.append(group)
+ })
+ }
+}
diff --git a/qml.qrc b/qml.qrc
index d5c7474..ff00483 100644
--- a/qml.qrc
+++ b/qml.qrc
@@ -6,5 +6,7 @@
SettingsForm.qml
MenuBackButton.qml
SubtitledItemDelegate.qml
+ LightsModel.qml
+ LightGroup.qml