status-desktop/ui/app/AppLayouts/Wallet/views/AccountContextMenu.qml

111 lines
3.1 KiB
QML
Raw Normal View History

import QtQuick 2.15
import QtQuick.Controls 2.15
import StatusQ.Popups 0.1
import StatusQ.Core.Theme 0.1
import utils 1.0
import "../stores"
StatusMenu {
id: root
required property string uniqueIdentifier // unique idetifier added as postfix to options' objectName (used for ui tests)
property var account
signal editAccountClicked()
signal deleteAccountClicked()
signal addNewAccountClicked()
signal addWatchOnlyAccountClicked()
width: 204
onAboutToShow: {
d.resetCopyAddressAction()
}
QtObject {
id: d
function resetCopyAddressAction() {
copyAddressAction.action.text = qsTr("Copy address")
copyAddressAction.action.type = StatusAction.Type.Normal
copyAddressAction.action.icon.name = "copy"
copyAddressAction.action.icon.color = Theme.palette.primaryColor1
}
}
StatusMenuItem {
id: copyAddressAction
objectName: "AccountMenu-CopyAddressAction-%1".arg(root.uniqueIdentifier)
enabled: !!root.account
text: qsTr("Copy address")
action: StatusAction {}
MouseArea {
anchors.fill: parent
hoverEnabled: true
cursorShape: containsMouse ? Qt.PointingHandCursor : Qt.ArrowCursor
onClicked: {
RootStore.copyToClipboard(root.account.address?? "")
copyAddressAction.action.text = qsTr("Address copied")
copyAddressAction.action.type = StatusAction.Type.Success
copyAddressAction.action.icon.name = "tiny/checkmark"
copyAddressAction.action.icon.color = Theme.palette.successColor1
Backpressure.debounce(root, 1500, function () {
d.resetCopyAddressAction()
root.dismiss()
})()
}
}
}
StatusMenuSeparator {
visible: !!root.account
}
StatusAction {
objectName: "AccountMenu-EditAction-%1".arg(root.uniqueIdentifier)
enabled: !!root.account
text: qsTr("Edit")
icon.name: "pencil-outline"
onTriggered: {
root.editAccountClicked()
}
}
StatusAction {
objectName: "AccountMenu-DeleteAction-%1".arg(root.uniqueIdentifier)
enabled: !!root.account && root.account.walletType !== ""
text: qsTr("Delete")
icon.name: "info"
type: StatusAction.Type.Danger
onTriggered: {
root.deleteAccountClicked()
}
}
StatusMenuSeparator {
visible: !!root.account
}
StatusAction {
objectName: "AccountMenu-AddNewAccountAction-%1".arg(root.uniqueIdentifier)
text: qsTr("Add new account")
icon.name: "add"
onTriggered: {
root.addNewAccountClicked()
}
}
StatusAction {
objectName: "AccountMenu-AddWatchOnlyAccountAction-%1".arg(root.uniqueIdentifier)
text: qsTr("Add watch-only account")
icon.name: "show"
onTriggered: {
root.addWatchOnlyAccountClicked()
}
}
}