You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 lines
2.2 KiB

10 years ago
import QtQuick 2.0
import QtQuick.Controls 1.1
import QtQuick.Layouts 1.1
import org.ethereum.qml.QSolidityType 1.0
Column
10 years ago
{
id: root
property alias members: repeater.model //js array
property var value: ({})
Layout.fillWidth: true
Repeater
10 years ago
{
id: repeater
visible: model.length > 0
10 years ago
Layout.fillWidth: true
RowLayout
10 years ago
{
id: row
height: 20 + (members[index].type.category === QSolidityType.Struct ? (20 * members[index].type.members.length) : 0)
Layout.fillWidth: true
DefaultLabel {
height: 20
id: typeLabel
text: modelData.type.name
anchors.verticalCenter: parent.verticalCenter
}
10 years ago
DefaultLabel {
id: nameLabel
text: modelData.name
anchors.verticalCenter: parent.verticalCenter
}
10 years ago
DefaultLabel {
id: equalLabel
text: "="
anchors.verticalCenter: parent.verticalCenter
}
Loader
{
id: typeLoader
anchors.verticalCenter: parent.verticalCenter
sourceComponent:
{
var t = modelData.type.category;
if (t === QSolidityType.SignedInteger || t === QSolidityType.UnsignedInteger)
return Qt.createComponent("qrc:/qml/QIntTypeView.qml");
else if (t === QSolidityType.Bool)
return Qt.createComponent("qrc:/qml/QBoolTypeView.qml");
else if (t === QSolidityType.Bytes)
return Qt.createComponent("qrc:/qml/QStringTypeView.qml");
else if (t === QSolidityType.Hash || t === QSolidityType.Address)
return Qt.createComponent("qrc:/qml/QHashTypeView.qml");
else if (t === QSolidityType.Struct)
return Qt.createComponent("qrc:/qml/StructView.qml");
else
return undefined;
10 years ago
}
onLoaded:
10 years ago
{
var ptype = members[index].type;
var pname = members[index].name;
var vals = value;
if (ptype.category === QSolidityType.Struct && !item.members)
{
item.value = getValue();
item.members = ptype.members;
10 years ago
}
else
item.value = getValue();
10 years ago
item.onValueChanged.connect(function() {
vals[pname] = item.value;
valueChanged();
});
}
10 years ago
function getValue()
{
if (value && value[modelData.name] !== undefined)
return value[modelData.name];
else if (modelData.type.category === QSolidityType.Struct)
return {};
return "";
10 years ago
}
}
}
}
}