status-desktop/ui/app/AppLayouts/Wallet/addaccount/panels/DerivationPathSection.qml

141 lines
3.8 KiB
QML
Raw Normal View History

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 utils 1.0
import "../stores"
Column {
id: root
property AddAccountStore store
padding: Style.current.padding
state: {
if (root.store.editMode) {
return d.expandedState
}
root.store.addAccountModule.actionAuthenticated? d.expandedState : d.collapsedState
}
QtObject {
id: d
readonly property string expandedState: "expanded"
readonly property string collapsedState: "collapsed"
}
RowLayout {
width: parent.width - 2 * root.padding
height: 64
visible: !root.store.editMode
StatusBaseText {
font.pixelSize: Constants.addAccountPopup.labelFontSize1
textFormat: Text.RichText
text: {
let t = qsTr("Derivation path")
let t1 = qsTr("(advanced)")
return `%1 <font color="${Theme.palette.baseColor1}">%2</font>`.arg(t).arg(t1)
}
}
Item {
Layout.fillWidth: true
Layout.preferredHeight: 1
}
StatusButton {
objectName: "AddAccountPopup-EditDerivationPath"
visible: !root.store.addAccountModule.actionAuthenticated
text: qsTr("Edit")
icon.name: {
if (root.store.selectedOrigin.keyUid === root.store.userProfileKeyUid &&
root.store.userProfileUsingBiometricLogin) {
return "touch-id"
}
if (root.store.selectedOrigin.migratedToKeycard || root.store.userProfileIsKeycardUser) {
return "keycard"
}
return "password"
}
onClicked: {
root.store.authenticateForEditingDerivationPath()
}
}
StatusIcon {
id: expandImage
visible: root.store.addAccountModule.actionAuthenticated
color: Theme.palette.baseColor1
MouseArea {
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onClicked: {
if (root.state === d.expandedState) {
root.state = d.collapsedState
return
}
root.state = d.expandedState
root.state = Qt.binding(function(){ return root.store.addAccountModule.actionAuthenticated? d.expandedState : d.collapsedState })
}
}
}
}
DerivationPath {
id: derivationPathContent
visible: !root.store.editMode
width: parent.width - 2 * root.padding
store: root.store
}
Loader {
active: root.store.editMode
sourceComponent: DerivationPathDisplay {
width: parent.width - 2 * root.padding
store: root.store
}
}
states: [
State {
name: d.expandedState
PropertyChanges {target: expandImage; icon: "chevron-up"}
PropertyChanges {target: derivationPathContent; visible: !root.store.editMode}
},
State {
name: d.collapsedState
PropertyChanges {target: expandImage; icon: "chevron-down"}
PropertyChanges {target: derivationPathContent; visible: false}
}
]
transitions: [
Transition {
from: d.collapsedState
to: d.expandedState
NumberAnimation { properties: "height"; duration: 200;}
},
Transition {
from: d.expandedState
to: d.collapsedState
NumberAnimation { properties: "height"; duration: 200;}
}
]
}