122 lines
3.7 KiB
QML
122 lines
3.7 KiB
QML
|
import QtQuick 2.13
|
||
|
import QtQuick.Controls 2.13
|
||
|
import QtQuick.Layouts 1.13
|
||
|
import QtGraphicalEffects 1.13
|
||
|
import "../imports"
|
||
|
|
||
|
Item {
|
||
|
id: root
|
||
|
property var accounts
|
||
|
property var contacts
|
||
|
property int inputWidth: 272
|
||
|
property int sourceSelectWidth: 136
|
||
|
property string label: qsTr("Recipient")
|
||
|
property string selectedRecipient: ""
|
||
|
height: inpAddress.height + txtLabel.height
|
||
|
|
||
|
function validate() {
|
||
|
if (selAddressSource.selectedSource === "Address") {
|
||
|
inpAddress.validate()
|
||
|
} else if (selAddressSource.selectedSource === "Contact") {
|
||
|
selContact.validate()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Text {
|
||
|
id: txtLabel
|
||
|
visible: label !== ""
|
||
|
text: root.label
|
||
|
font.pixelSize: 13
|
||
|
font.family: Style.current.fontBold.name
|
||
|
color: Style.current.textColor
|
||
|
height: 18
|
||
|
}
|
||
|
|
||
|
RowLayout {
|
||
|
anchors.top: txtLabel.bottom
|
||
|
anchors.topMargin: 7
|
||
|
anchors.left: parent.left
|
||
|
anchors.right: parent.right
|
||
|
spacing: 8
|
||
|
|
||
|
AddressInput {
|
||
|
id: inpAddress
|
||
|
width: root.inputWidth
|
||
|
label: ""
|
||
|
Layout.preferredWidth: root.inputWidth
|
||
|
Layout.alignment: Qt.AlignTop
|
||
|
Layout.fillWidth: true
|
||
|
validationError: qsTr("Invalid ethereum address")
|
||
|
onSelectedAddressChanged: {
|
||
|
root.selectedRecipient = selectedAddress
|
||
|
}
|
||
|
}
|
||
|
|
||
|
ContactSelector {
|
||
|
id: selContact
|
||
|
contacts: root.contacts
|
||
|
visible: false
|
||
|
width: root.inputWidth
|
||
|
dropdownWidth: parent.width
|
||
|
Layout.preferredWidth: root.inputWidth
|
||
|
Layout.alignment: Qt.AlignTop
|
||
|
Layout.fillWidth: true
|
||
|
onSelectedContactChanged: {
|
||
|
if(selectedContact && selectedContact.address) {
|
||
|
root.selectedRecipient = selectedContact.address
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
AccountSelector {
|
||
|
id: selAccount
|
||
|
accounts: root.accounts
|
||
|
visible: false
|
||
|
width: root.inputWidth
|
||
|
dropdownWidth: parent.width
|
||
|
label: ""
|
||
|
Layout.preferredWidth: root.inputWidth
|
||
|
Layout.alignment: Qt.AlignTop
|
||
|
Layout.fillWidth: true
|
||
|
onSelectedAccountChanged: {
|
||
|
root.selectedRecipient = selectedAccount.address
|
||
|
}
|
||
|
}
|
||
|
AddressSourceSelector {
|
||
|
id: selAddressSource
|
||
|
sources: ["Address", "Contact", "My account"]
|
||
|
width: sourceSelectWidth
|
||
|
Layout.preferredWidth: root.sourceSelectWidth
|
||
|
Layout.alignment: Qt.AlignTop
|
||
|
|
||
|
onSelectedSourceChanged: {
|
||
|
switch (selectedSource) {
|
||
|
case "Address":
|
||
|
inpAddress.visible = true
|
||
|
selContact.visible = selAccount.visible = false
|
||
|
root.height = Qt.binding(function() { return inpAddress.height + txtLabel.height })
|
||
|
break;
|
||
|
case "Contact":
|
||
|
selContact.visible = true
|
||
|
inpAddress.visible = selAccount.visible = false
|
||
|
root.height = Qt.binding(function() { return selContact.height + txtLabel.height })
|
||
|
break;
|
||
|
case "My account":
|
||
|
selAccount.visible = true
|
||
|
inpAddress.visible = selContact.visible = false
|
||
|
root.height = Qt.binding(function() { return selAccount.height + txtLabel.height })
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
/*##^##
|
||
|
Designer {
|
||
|
D{i:0;autoSize:true;height:480;width:640}
|
||
|
}
|
||
|
##^##*/
|