import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQml.Models 2.15
import QtQuick.Layouts 1.15
import StatusQ.Core 0.1
import StatusQ.Components 0.1
import StatusQ.Core.Theme 0.1
import StatusQ.Core.Utils 0.1 as StatusQUtils
import StatusQ.Controls 0.1
import StatusQ.Popups.Dialog 0.1
import AppLayouts.Wallet 1.0
import utils 1.0
import shared.controls 1.0
StatusDialog {
id: root
required property string accountType
required property string accountName
required property string accountAddress
required property string accountDerivationPath
required property string emoji
required property string color
signal removeAccount(string address)
width: 521
focus: visible
padding: Theme.padding
QtObject {
id: d
readonly property int checkboxHeight: 24
readonly property real lineHeight: 1.2
function confirm() {
if (root.accountType !== Constants.watchWalletType && !derivationPathWritten.checked) {
return
}
root.removeAccount(root.accountAddress)
}
}
header: StatusDialogHeader {
headline.title: qsTr("Remove %1").arg(root.accountName)
headline.subtitle: StatusQUtils.Utils.elideText(root.accountAddress, 6, 4)
actions.closeButton.onClicked: root.close()
leftComponent: StatusSmartIdenticon {
asset.emoji: root.emoji
asset.color: root.color
}
}
contentItem: ColumnLayout {
spacing: Theme.halfPadding
StatusBaseText {
objectName: "RemoveAccountPopup-Notification"
Layout.preferredWidth: parent.width
wrapMode: Text.WordWrap
textFormat: Text.RichText
font.pixelSize: Theme.primaryTextFontSize
lineHeight: d.lineHeight
text: {
switch(root.accountType) {
case Constants.generatedWalletType: return qsTr("Are you sure you want to remove %1? The account will be removed from all of your synced devices. Make sure you have a backup of your keys or recovery phrase before proceeding. %2 Copying the derivation path to this account now will enable you to import it again at a later date should you wish to do so:").arg("%1".arg(root.accountName)).arg("
")
case Constants.watchWalletType: return qsTr("Are you sure you want to remove %1? The address will be removed from all of your synced devices.").arg("%1".arg(root.accountName))
case Constants.keyWalletType: return qsTr("Are you sure you want to remove %1 and it's associated private key? The account and private key will be removed from all of your synced devices.").arg("%1".arg(root.accountName))
case Constants.seedWalletType: return qsTr("Are you sure you want to remove %1? The account will be removed from all of your synced devices. Copying the derivation path to this account now will enable you to import it again at a later date should you with to do so:").arg("%1".arg(root.accountName))
}
}
}
StatusBaseText {
Layout.preferredWidth: parent.width
Layout.topMargin: Theme.padding
visible: root.accountType === Constants.generatedWalletType || root.accountType === Constants.seedWalletType
text: qsTr("Derivation path for %1").arg(root.accountName)
font.pixelSize: Theme.primaryTextFontSize
lineHeight: d.lineHeight
}
StatusInput {
objectName: "RemoveAccountPopup-DerivationPath"
Layout.preferredWidth: parent.width
visible: root.accountType === Constants.generatedWalletType || root.accountType === Constants.seedWalletType
input.edit.enabled: false
text: root.accountDerivationPath
input.background.color: "transparent"
input.background.border.color: Theme.palette.baseColor2
input.rightComponent: CopyButton {
textToCopy: root.accountDerivationPath
}
}
StatusCheckBox {
id: derivationPathWritten
objectName: "RemoveAccountPopup-HavePenPaper"
Layout.preferredWidth: parent.width
Layout.preferredHeight: d.checkboxHeight
Layout.topMargin: Theme.padding
visible: root.accountType !== Constants.watchWalletType
spacing: Theme.padding
font.pixelSize: Theme.primaryTextFontSize
text: {
if (root.accountType === Constants.keyWalletType) {
return qsTr("I have a copy of the private key")
}
return qsTr("I have taken note of the derivation path")
}
}
}
footer: StatusDialogFooter {
spacing: Theme.padding
rightButtons: ObjectModel {
StatusFlatButton {
objectName: "RemoveAccountPopup-CancelButton"
text: qsTr("Cancel")
type: StatusBaseButton.Type.Normal
onClicked: {
root.close()
}
}
StatusButton {
objectName: "RemoveAccountPopup-ConfirmButton"
text: qsTr("Remove %1").arg(root.accountName)
type: StatusBaseButton.Type.Danger
enabled: root.accountType === Constants.watchWalletType || derivationPathWritten.checked
focus: true
Keys.onReturnPressed: function(event) {
d.confirm()
}
onClicked: {
d.confirm()
}
}
}
}
}