172 lines
5.7 KiB
QML
172 lines
5.7 KiB
QML
|
import QtQuick 2.14
|
||
|
import QtQuick.Controls 2.14
|
||
|
import QtQuick.Layouts 1.14
|
||
|
|
||
|
import StatusQ.Core 0.1
|
||
|
import StatusQ.Core.Theme 0.1
|
||
|
import StatusQ.Controls 0.1
|
||
|
import StatusQ.Controls.Validators 0.1
|
||
|
import StatusQ.Components 0.1
|
||
|
import StatusQ.Popups 0.1
|
||
|
|
||
|
import utils 1.0
|
||
|
|
||
|
import "../stores"
|
||
|
import "../panels"
|
||
|
|
||
|
Item {
|
||
|
id: root
|
||
|
|
||
|
property AddAccountStore store
|
||
|
|
||
|
QtObject {
|
||
|
id: d
|
||
|
|
||
|
property bool showPassword: false
|
||
|
property bool addressResolved: root.store.privateKeyAccAddress.address !== ""
|
||
|
}
|
||
|
|
||
|
Column {
|
||
|
anchors.top: parent.top
|
||
|
anchors.left: parent.left
|
||
|
anchors.right: parent.right
|
||
|
anchors.margins: Style.current.padding
|
||
|
spacing: Style.current.padding
|
||
|
|
||
|
Column {
|
||
|
width: parent.width
|
||
|
spacing: Style.current.halfPadding
|
||
|
|
||
|
StatusBaseText {
|
||
|
text: qsTr("Private key")
|
||
|
font.pixelSize: Constants.addAccountPopup.labelFontSize1
|
||
|
}
|
||
|
|
||
|
GridLayout {
|
||
|
width: parent.width
|
||
|
columns: 2
|
||
|
columnSpacing: Style.current.padding
|
||
|
rowSpacing: Style.current.halfPadding
|
||
|
|
||
|
StatusPasswordInput {
|
||
|
id: privKeyInput
|
||
|
Layout.preferredHeight: Constants.addAccountPopup.itemHeight
|
||
|
Layout.preferredWidth: parent.width - parent.columnSpacing - showHideButton.width
|
||
|
rightPadding: pasteButton.width + pasteButton.anchors.rightMargin + Style.current.halfPadding
|
||
|
placeholderText: qsTr("Type or paste your private key")
|
||
|
echoMode: d.showPassword ? TextInput.Normal : TextInput.Password
|
||
|
|
||
|
onTextChanged: {
|
||
|
root.store.enteredPrivateKeyIsValid = Utils.isPrivateKey(text)
|
||
|
if (root.store.enteredPrivateKeyIsValid) {
|
||
|
root.store.changePrivateKeyPostponed(text)
|
||
|
return
|
||
|
}
|
||
|
root.store.cleanPrivateKey()
|
||
|
}
|
||
|
|
||
|
onPressed: {
|
||
|
root.store.submitAddAccount(event)
|
||
|
}
|
||
|
|
||
|
StatusButton {
|
||
|
id: pasteButton
|
||
|
anchors.verticalCenter: parent.verticalCenter
|
||
|
anchors.right: parent.right
|
||
|
anchors.rightMargin: Style.current.padding
|
||
|
borderColor: Theme.palette.primaryColor1
|
||
|
size: StatusBaseButton.Size.Tiny
|
||
|
text: qsTr("Paste")
|
||
|
onClicked: {
|
||
|
privKeyInput.text = root.store.getFromClipboard()
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
StatusFlatRoundButton {
|
||
|
id: showHideButton
|
||
|
Layout.alignment: Qt.AlignVCenter
|
||
|
Layout.preferredWidth: 24
|
||
|
Layout.preferredHeight: 24
|
||
|
icon.name: d.showPassword ? "hide" : "show"
|
||
|
icon.color: Theme.palette.baseColor1
|
||
|
onClicked: d.showPassword = !d.showPassword
|
||
|
}
|
||
|
|
||
|
StatusBaseText {
|
||
|
Layout.alignment: Qt.AlignRight
|
||
|
visible: privKeyInput.text !== "" && !root.store.enteredPrivateKeyIsValid
|
||
|
wrapMode: Text.WordWrap
|
||
|
font.pixelSize: 12
|
||
|
color: Theme.palette.dangerColor1
|
||
|
text: qsTr("Private key invalid")
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Column {
|
||
|
width: parent.width
|
||
|
spacing: Style.current.halfPadding
|
||
|
visible: d.addressResolved
|
||
|
|
||
|
StatusBaseText {
|
||
|
text: qsTr("Public address of private key")
|
||
|
font.pixelSize: Constants.addAccountPopup.labelFontSize1
|
||
|
}
|
||
|
|
||
|
StatusInput {
|
||
|
width: parent.width
|
||
|
input.edit.enabled: false
|
||
|
text: root.store.privateKeyAccAddress.address
|
||
|
input.enabled: false
|
||
|
input.background.color: "transparent"
|
||
|
input.background.border.color: Theme.palette.baseColor2
|
||
|
}
|
||
|
|
||
|
AddressDetails {
|
||
|
width: parent.width
|
||
|
addressDetailsItem: root.store.privateKeyAccAddress
|
||
|
defaultMessage: ""
|
||
|
defaultMessageCondition: !d.addressResolved
|
||
|
}
|
||
|
}
|
||
|
|
||
|
StatusModalDivider {
|
||
|
width: parent.width
|
||
|
visible: d.addressResolved
|
||
|
}
|
||
|
|
||
|
Column {
|
||
|
width: parent.width
|
||
|
spacing: Style.current.halfPadding
|
||
|
visible: d.addressResolved
|
||
|
|
||
|
StatusInput {
|
||
|
width: parent.width
|
||
|
label: qsTr("Key name")
|
||
|
charLimit: Constants.addAccountPopup.keyPairNameMaxLength
|
||
|
placeholderText: qsTr("Enter a name")
|
||
|
text: root.store.addAccountModule.newKeyPairName
|
||
|
|
||
|
onTextChanged: {
|
||
|
if (text.trim() == "") {
|
||
|
root.store.addAccountModule.newKeyPairName = ""
|
||
|
return
|
||
|
}
|
||
|
root.store.addAccountModule.newKeyPairName = text
|
||
|
}
|
||
|
|
||
|
onKeyPressed: {
|
||
|
root.store.submitAddAccount(event)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
StatusBaseText {
|
||
|
text: qsTr("For your future reference. This is only visible to you.")
|
||
|
font.pixelSize: Constants.addAccountPopup.labelFontSize2
|
||
|
color: Theme.palette.baseColor1
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|