2022-03-01 10:14:13 +00:00
|
|
|
import QtQuick 2.13
|
|
|
|
import QtQuick.Controls 2.13
|
2022-07-25 15:16:22 +00:00
|
|
|
import QtQml.Models 2.14
|
2022-03-01 10:14:13 +00:00
|
|
|
|
|
|
|
import utils 1.0
|
|
|
|
import shared.controls 1.0
|
|
|
|
import shared.panels 1.0
|
|
|
|
|
|
|
|
import StatusQ.Core 0.1
|
|
|
|
import StatusQ.Core.Theme 0.1
|
|
|
|
import StatusQ.Controls 0.1
|
|
|
|
import StatusQ.Controls.Validators 0.1
|
2022-07-25 15:16:22 +00:00
|
|
|
import StatusQ.Popups.Dialog 0.1
|
2022-03-01 10:14:13 +00:00
|
|
|
|
|
|
|
import "../stores"
|
|
|
|
|
2022-07-25 15:16:22 +00:00
|
|
|
StatusDialog {
|
2022-03-01 10:14:13 +00:00
|
|
|
id: root
|
|
|
|
|
|
|
|
property bool edit: false
|
|
|
|
property string address
|
|
|
|
property alias name: nameInput.text
|
2022-08-18 14:44:48 +00:00
|
|
|
property bool favourite: false
|
2022-03-01 10:14:13 +00:00
|
|
|
property var contactsStore
|
|
|
|
|
|
|
|
signal save(string name, string address)
|
|
|
|
|
|
|
|
QtObject {
|
2022-08-08 18:21:56 +00:00
|
|
|
id: d
|
2022-03-01 10:14:13 +00:00
|
|
|
property int validationMode: root.edit ?
|
|
|
|
StatusInput.ValidationMode.Always
|
|
|
|
: StatusInput.ValidationMode.OnlyWhenDirty
|
|
|
|
property bool valid: addressInput.isValid && nameInput.valid // TODO: Add network preference and emoji
|
|
|
|
property bool dirty: nameInput.input.dirty
|
|
|
|
}
|
|
|
|
|
|
|
|
width: 574
|
|
|
|
height: 490
|
2022-07-25 15:16:22 +00:00
|
|
|
|
|
|
|
header: StatusDialogHeader {
|
|
|
|
headline.title: edit ? qsTr("Edit saved address") : qsTr("Add saved address")
|
|
|
|
headline.subtitle: edit ? name : ""
|
|
|
|
}
|
2022-03-01 10:14:13 +00:00
|
|
|
|
|
|
|
onOpened: {
|
|
|
|
if(edit) {
|
|
|
|
addressInput.input.text = root.address
|
|
|
|
}
|
|
|
|
nameInput.input.edit.forceActiveFocus(Qt.MouseFocusReason)
|
|
|
|
}
|
|
|
|
|
2022-07-25 15:16:22 +00:00
|
|
|
Column {
|
|
|
|
width: parent.width
|
2022-03-01 10:14:13 +00:00
|
|
|
height: childrenRect.height
|
|
|
|
topPadding: Style.current.xlPadding
|
|
|
|
|
|
|
|
spacing: Style.current.bigPadding
|
|
|
|
|
|
|
|
StatusInput {
|
|
|
|
id: nameInput
|
2022-07-25 15:16:22 +00:00
|
|
|
implicitWidth: parent.width
|
2022-08-03 10:08:46 +00:00
|
|
|
input.edit.objectName: "savedAddressNameInput"
|
2022-07-25 15:16:22 +00:00
|
|
|
minimumHeight: 56
|
|
|
|
maximumHeight: 56
|
2022-07-22 10:28:04 +00:00
|
|
|
placeholderText: qsTr("Enter a name")
|
2022-03-01 10:14:13 +00:00
|
|
|
label: qsTr("Name")
|
|
|
|
validators: [
|
|
|
|
StatusMinLengthValidator {
|
|
|
|
minLength: 1
|
|
|
|
errorMessage: qsTr("Name must not be blank")
|
2022-03-24 15:31:38 +00:00
|
|
|
},
|
|
|
|
StatusRegularExpressionValidator {
|
|
|
|
regularExpression: /^[^<>]+$/
|
|
|
|
errorMessage: qsTr("This is not a valid account name")
|
2022-03-01 10:14:13 +00:00
|
|
|
}
|
|
|
|
]
|
2022-03-24 15:31:38 +00:00
|
|
|
charLimit: 40
|
2022-08-08 18:21:56 +00:00
|
|
|
validationMode: d.validationMode
|
2022-03-01 10:14:13 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// To-Do use StatusInput within the below component
|
2022-07-25 15:16:22 +00:00
|
|
|
RecipientSelector {
|
|
|
|
id: addressInput
|
|
|
|
implicitWidth: parent.width
|
|
|
|
inputWidth: implicitWidth
|
|
|
|
accounts: RootStore.accounts
|
|
|
|
contactsStore: root.contactsStore
|
|
|
|
label: qsTr("Address")
|
2022-08-03 10:08:46 +00:00
|
|
|
input.textField.objectName: "savedAddressAddressInput"
|
2022-07-25 15:16:22 +00:00
|
|
|
input.placeholderText: qsTr("Enter ENS Name or Ethereum Address")
|
|
|
|
labelFont.pixelSize: 15
|
|
|
|
labelFont.weight: Font.Normal
|
|
|
|
input.implicitHeight: 56
|
|
|
|
input.textField.anchors.rightMargin: 0
|
|
|
|
isSelectorVisible: false
|
|
|
|
addContactEnabled: false
|
|
|
|
onSelectedRecipientChanged: {
|
|
|
|
root.address = selectedRecipient.address
|
2022-03-01 10:14:13 +00:00
|
|
|
}
|
2022-07-25 15:16:22 +00:00
|
|
|
readOnly: root.edit
|
|
|
|
wrongInputValidationError: qsTr("Please enter a valid ENS name OR Ethereum Address")
|
2022-03-01 10:14:13 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-07-25 15:16:22 +00:00
|
|
|
footer: StatusDialogFooter {
|
|
|
|
rightButtons: ObjectModel {
|
|
|
|
StatusButton {
|
|
|
|
text: root.edit ? qsTr("Save") : qsTr("Add address")
|
2022-08-08 18:21:56 +00:00
|
|
|
enabled: d.valid && d.dirty
|
2022-07-25 15:16:22 +00:00
|
|
|
onClicked: root.save(name, address)
|
2022-08-03 10:08:46 +00:00
|
|
|
objectName: "addSavedAddress"
|
2022-07-25 15:16:22 +00:00
|
|
|
}
|
2022-03-01 10:14:13 +00:00
|
|
|
}
|
2022-07-25 15:16:22 +00:00
|
|
|
}
|
2022-03-01 10:14:13 +00:00
|
|
|
}
|