From 44dc1d480e6812b91e53ec79b08c63ba18ca4a24 Mon Sep 17 00:00:00 2001 From: Simon Briere Date: Fri, 8 Mar 2024 11:31:01 -0500 Subject: [PATCH] Refs #2. Updated GenericItemDelegate to use listview properties. --- .../content/delegates/GenericItemDelegate.qml | 10 ++-- .../content/widgets/ListViewWidget.qml | 47 +++---------------- .../resources/json/TestDashboardv2.json | 2 +- 3 files changed, 11 insertions(+), 48 deletions(-) diff --git a/Frontend/DashboardsViewer/content/delegates/GenericItemDelegate.qml b/Frontend/DashboardsViewer/content/delegates/GenericItemDelegate.qml index 9e2ea9b..e09ce3c 100644 --- a/Frontend/DashboardsViewer/content/delegates/GenericItemDelegate.qml +++ b/Frontend/DashboardsViewer/content/delegates/GenericItemDelegate.qml @@ -3,10 +3,6 @@ import QtQuick.Controls 2.15 import QtQuick.Layouts Item { - property string fieldIdName: "id_" - property string fieldDisplayName: "disp_" - property string iconPath: "qrc:/genericIcon" - id: myDelegate signal itemClicked(int id); @@ -28,7 +24,7 @@ Item { // Customize delegate appearance as needed Text { height: 20 - text: "Name: " + model[fieldDisplayName] + text: "Name: " + model[myDelegate.ListView.view.fieldDisplayName] color: "red" } /* @@ -46,7 +42,7 @@ Item { */ } Component.onCompleted: function() { - console.log("GenericItemDelegate"); + //console.log("GenericItemDelegate - " + myDelegate.ListView.view.fieldDisplayName); } @@ -54,7 +50,7 @@ Item { id: mouseArea anchors.fill: parent onClicked: { - itemClicked(model[fieldIdName]); + itemClicked(model[myDelegate.ListView.view.fieldIdName]); } } } diff --git a/Frontend/DashboardsViewer/content/widgets/ListViewWidget.qml b/Frontend/DashboardsViewer/content/widgets/ListViewWidget.qml index bdcb16a..a3c21fa 100644 --- a/Frontend/DashboardsViewer/content/widgets/ListViewWidget.qml +++ b/Frontend/DashboardsViewer/content/widgets/ListViewWidget.qml @@ -6,54 +6,21 @@ import QtQuick.Controls 2.15 BaseWidget { //Set model and delegate properties externally - property alias model: myListView.model property alias delegate: myListView.delegate - property var dataSource: Object() - + property var dataSource: null // Define a ListView to display the items ListView { id: myListView anchors.fill: parent - model: myModel - delegate: myDelegate - - onModelChanged: function() - { - //At this stage the model is empty - } - - onCountChanged: function() - { - //Something added to the model - //Update all delegate to model items - for (var i = 0; i < myListView.count; ++i) { - var element = model.get(i); // Access the ListElement at index i - var item = myListView.itemAtIndex(i); - - // Data Source will determine field names - var fieldIdName = dataSource.fieldIdName; - var fieldDisplayName = dataSource.fieldDisplayName; - var iconPath = dataSource.iconPath; - - - //TODO not working yet. - /* - item[fieldIdName] = element[fieldIdName]; - item[fieldDisplayName] = element[fieldDisplayName]; - item[iconPath] = element[iconPath]; - */ + model: dataSource ? dataSource.model : null - console.log("Item at index", i, ":", item, element); - } - - } + property string fieldDisplayName: dataSource.fieldDisplayName + property string fieldIdName: dataSource.fieldIdName + property string iconPath: dataSource.iconPath } - - - - +/* ListModel { id: myModel ListElement { name: "Apple" } @@ -66,7 +33,7 @@ BaseWidget { Text { text: name } - } + }*/ } diff --git a/Frontend/DashboardsViewer/resources/json/TestDashboardv2.json b/Frontend/DashboardsViewer/resources/json/TestDashboardv2.json index 0ec2155..5c6c7b7 100644 --- a/Frontend/DashboardsViewer/resources/json/TestDashboardv2.json +++ b/Frontend/DashboardsViewer/resources/json/TestDashboardv2.json @@ -106,7 +106,7 @@ "target": {"object": "participantListData", "slot": "update", "args": []} }, { - "source": {"object": "participantList.delegate", "signal": "onParticipantClicked"}, + "source": {"object": "participantList.delegate", "signal": "onItemClicked"}, "target": {"object": "participantSessionListData", "slot": "setParticipant", "args": ["id_participant"]} } ]