mirror of
https://github.com/status-im/status-desktop.git
synced 2025-02-17 09:08:49 +00:00
fix: Use prefixes for address copy (#16230)
This commit is contained in:
parent
8dc067e0c4
commit
69605f5965
70
storybook/pages/AccountContextMenuPage.qml
Normal file
70
storybook/pages/AccountContextMenuPage.qml
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
import QtQuick 2.15
|
||||||
|
import QtQuick.Controls 2.15
|
||||||
|
import QtQuick.Layouts 1.15
|
||||||
|
|
||||||
|
import StatusQ.Core.Theme 0.1
|
||||||
|
|
||||||
|
import AppLayouts.Wallet.views 1.0
|
||||||
|
|
||||||
|
import utils 1.0
|
||||||
|
|
||||||
|
SplitView {
|
||||||
|
Rectangle {
|
||||||
|
SplitView.fillWidth: true
|
||||||
|
SplitView.fillHeight: true
|
||||||
|
color: Theme.palette.statusAppLayout.rightPanelBackgroundColor
|
||||||
|
clip: true
|
||||||
|
|
||||||
|
Button {
|
||||||
|
anchors.centerIn: parent
|
||||||
|
text: "Show menu"
|
||||||
|
onClicked: {
|
||||||
|
menu.popup()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
AccountContextMenu {
|
||||||
|
id: menu
|
||||||
|
anchors.centerIn: parent
|
||||||
|
|
||||||
|
name: walletAccountCheckbox.checked ? "Test name" : ""
|
||||||
|
address: walletAccountCheckbox.checked ? "0x1234567890" : ""
|
||||||
|
canDelete: canDeleteCheckbox.checked
|
||||||
|
walletType: watchOnlyCheckbox.checked ? Constants.watchWalletType : ""
|
||||||
|
canAddWatchOnlyAccount: canAddWatchOnlyAccountCheckbox.checked
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Pane {
|
||||||
|
SplitView.minimumWidth: 300
|
||||||
|
SplitView.preferredWidth: 300
|
||||||
|
|
||||||
|
ScrollView {
|
||||||
|
anchors.fill: parent
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
spacing: 16
|
||||||
|
CheckBox {
|
||||||
|
id: walletAccountCheckbox
|
||||||
|
text: "Wallet account"
|
||||||
|
checked: true
|
||||||
|
}
|
||||||
|
CheckBox {
|
||||||
|
id: canDeleteCheckbox
|
||||||
|
text: "Can delete"
|
||||||
|
checked: true
|
||||||
|
}
|
||||||
|
CheckBox {
|
||||||
|
id: watchOnlyCheckbox
|
||||||
|
text: "Is watch only"
|
||||||
|
checked: true
|
||||||
|
}
|
||||||
|
CheckBox {
|
||||||
|
id: canAddWatchOnlyAccountCheckbox
|
||||||
|
text: "Can add watch only"
|
||||||
|
checked: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -4,40 +4,42 @@ import QtQuick.Controls 2.15
|
|||||||
import StatusQ 0.1
|
import StatusQ 0.1
|
||||||
import StatusQ.Popups 0.1
|
import StatusQ.Popups 0.1
|
||||||
|
|
||||||
import "../stores"
|
|
||||||
|
|
||||||
import utils 1.0
|
import utils 1.0
|
||||||
|
|
||||||
StatusMenu {
|
StatusMenu {
|
||||||
id: root
|
id: root
|
||||||
|
|
||||||
property var account
|
property string address
|
||||||
|
property string name
|
||||||
|
property string walletType
|
||||||
|
property bool canDelete
|
||||||
|
property bool hideFromTotalBalance
|
||||||
|
property bool canAddWatchOnlyAccount: false
|
||||||
|
|
||||||
signal editAccountClicked()
|
signal editAccountClicked()
|
||||||
signal deleteAccountClicked()
|
signal deleteAccountClicked()
|
||||||
signal addNewAccountClicked()
|
signal addNewAccountClicked()
|
||||||
signal addWatchOnlyAccountClicked()
|
signal addWatchOnlyAccountClicked()
|
||||||
signal hideFromTotalBalanceClicked(string address, bool hideFromTotalBalance)
|
signal hideFromTotalBalanceClicked(bool hideFromTotalBalance)
|
||||||
|
|
||||||
|
|
||||||
StatusSuccessAction {
|
StatusSuccessAction {
|
||||||
id: copyAddressAction
|
id: copyAddressAction
|
||||||
objectName: "AccountMenu-CopyAddressAction_" + root.account.name
|
objectName: "AccountMenu-CopyAddressAction_" + root.name
|
||||||
successText: qsTr("Address copied")
|
successText: qsTr("Address copied")
|
||||||
text: qsTr("Copy address")
|
text: qsTr("Copy address")
|
||||||
icon.name: "copy"
|
icon.name: "copy"
|
||||||
timeout: 1500
|
timeout: 1500
|
||||||
enabled: !!root.account
|
enabled: !!root.address
|
||||||
onTriggered: ClipboardUtils.setText(root.account.address?? "")
|
onTriggered: ClipboardUtils.setText(root.address)
|
||||||
}
|
}
|
||||||
|
|
||||||
StatusMenuSeparator {
|
StatusMenuSeparator {
|
||||||
visible: !!root.account
|
visible: !!root.address
|
||||||
}
|
}
|
||||||
|
|
||||||
StatusAction {
|
StatusAction {
|
||||||
objectName: "AccountMenu-EditAction_" + root.account.name
|
objectName: "AccountMenu-EditAction_" + root.name
|
||||||
enabled: !!root.account
|
enabled: !!root.address
|
||||||
text: qsTr("Edit")
|
text: qsTr("Edit")
|
||||||
icon.name: "pencil-outline"
|
icon.name: "pencil-outline"
|
||||||
onTriggered: {
|
onTriggered: {
|
||||||
@ -46,17 +48,16 @@ StatusMenu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
StatusAction {
|
StatusAction {
|
||||||
objectName: "AccountMenu-HideFromTotalBalance_" + root.account.name
|
objectName: "AccountMenu-HideFromTotalBalance_" + root.name
|
||||||
enabled: !!root.account && root.account.walletType === Constants.watchWalletType
|
enabled: !!root.address && root.walletType === Constants.watchWalletType
|
||||||
text: !!root.account ? root.account.hideFromTotalBalance ? qsTr("Include in balances and activity")
|
text: root.hideFromTotalBalance ? qsTr("Include in balances and activity") : qsTr("Exclude from balances and activity")
|
||||||
: qsTr("Exclude from balances and activity") : ""
|
icon.name: root.hideFromTotalBalance ? "show" : "hide"
|
||||||
icon.name: !!root.account ? root.account.hideFromTotalBalance ? "show" : "hide": ""
|
onTriggered: root.hideFromTotalBalanceClicked(!root.hideFromTotalBalance)
|
||||||
onTriggered: root.hideFromTotalBalanceClicked(root.account.address, !root.account.hideFromTotalBalance)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
StatusAction {
|
StatusAction {
|
||||||
objectName: "AccountMenu-DeleteAction_" + root.account.name
|
objectName: "AccountMenu-DeleteAction_" + root.name
|
||||||
enabled: !!root.account && !root.account.isWallet
|
enabled: !!root.address && root.canDelete
|
||||||
text: qsTr("Delete")
|
text: qsTr("Delete")
|
||||||
icon.name: "info"
|
icon.name: "info"
|
||||||
type: StatusAction.Type.Danger
|
type: StatusAction.Type.Danger
|
||||||
@ -66,28 +67,22 @@ StatusMenu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
StatusAction {
|
StatusAction {
|
||||||
objectName: "AccountMenu-AddNewAccountAction_" + root.account.name
|
objectName: "AccountMenu-AddNewAccountAction_" + root.name
|
||||||
text: qsTr("Add new account")
|
text: qsTr("Add new account")
|
||||||
enabled: !root.account
|
enabled: !root.address
|
||||||
icon.name: "add"
|
icon.name: "add"
|
||||||
onTriggered: {
|
onTriggered: {
|
||||||
root.addNewAccountClicked()
|
root.addNewAccountClicked()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Loader {
|
StatusAction {
|
||||||
active: !production
|
objectName: "AccountMenu-AddWatchOnlyAccountAction_" + root.name
|
||||||
sourceComponent: StatusAction {
|
text: qsTr("Add watched address")
|
||||||
objectName: "AccountMenu-AddWatchOnlyAccountAction_" + root.account.name
|
enabled: root.canAddWatchOnlyAccount && !root.address
|
||||||
text: qsTr("Add watched address")
|
icon.name: "show"
|
||||||
enabled: !root.account
|
onTriggered: {
|
||||||
icon.name: "show"
|
root.addWatchOnlyAccountClicked()
|
||||||
onTriggered: {
|
|
||||||
root.addWatchOnlyAccountClicked()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
onLoaded: {
|
|
||||||
root.addAction(item)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,8 @@ import shared.popups.keycard 1.0
|
|||||||
import shared.popups.addaccount 1.0
|
import shared.popups.addaccount 1.0
|
||||||
import shared.stores 1.0
|
import shared.stores 1.0
|
||||||
|
|
||||||
|
import AppLayouts.Wallet 1.0
|
||||||
|
|
||||||
import "../controls"
|
import "../controls"
|
||||||
import "../popups"
|
import "../popups"
|
||||||
import "../stores"
|
import "../stores"
|
||||||
@ -63,6 +65,23 @@ Rectangle {
|
|||||||
id: walletAccountContextMenu
|
id: walletAccountContextMenu
|
||||||
active: false
|
active: false
|
||||||
sourceComponent: AccountContextMenu {
|
sourceComponent: AccountContextMenu {
|
||||||
|
property var account: null
|
||||||
|
address: {
|
||||||
|
if (!account)
|
||||||
|
return ""
|
||||||
|
let address = account.address
|
||||||
|
const preferredChains = account.preferredSharingChainIds
|
||||||
|
if (!!preferredChains) {
|
||||||
|
const shortNames = WalletUtils.getNetworkShortNames(preferredChains, root.networkConnectionStore.filteredflatNetworks)
|
||||||
|
address = `${shortNames}${address}`
|
||||||
|
}
|
||||||
|
return address
|
||||||
|
}
|
||||||
|
name: account ? account.name : ""
|
||||||
|
walletType: account ? account.walletType : ""
|
||||||
|
canDelete: account && !account.isWallet
|
||||||
|
hideFromTotalBalance: account && account.hideFromTotalBalance
|
||||||
|
canAddWatchOnlyAccount: !production
|
||||||
|
|
||||||
onClosed: {
|
onClosed: {
|
||||||
walletAccountContextMenu.active = false
|
walletAccountContextMenu.active = false
|
||||||
@ -95,7 +114,11 @@ Rectangle {
|
|||||||
removeAccountConfirmation.active = true
|
removeAccountConfirmation.active = true
|
||||||
}
|
}
|
||||||
|
|
||||||
onHideFromTotalBalanceClicked: RootStore.updateWatchAccountHiddenFromTotalBalance(address, hideFromTotalBalance)
|
onHideFromTotalBalanceClicked: {
|
||||||
|
if (!account)
|
||||||
|
return
|
||||||
|
RootStore.updateWatchAccountHiddenFromTotalBalance(account.address, hideFromTotalBalance)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,3 +6,4 @@ SavedAddresses 1.0 SavedAddresses.qml
|
|||||||
TokenSelectorAssetDelegate 1.0 TokenSelectorAssetDelegate.qml
|
TokenSelectorAssetDelegate 1.0 TokenSelectorAssetDelegate.qml
|
||||||
TokenSelectorCollectibleDelegate 1.0 TokenSelectorCollectibleDelegate.qml
|
TokenSelectorCollectibleDelegate 1.0 TokenSelectorCollectibleDelegate.qml
|
||||||
TokenSelectorView 1.0 TokenSelectorView.qml
|
TokenSelectorView 1.0 TokenSelectorView.qml
|
||||||
|
AccountContextMenu 1.0 AccountContextMenu.qml
|
||||||
|
@ -17,7 +17,7 @@ QtObject {
|
|||||||
readonly property bool balanceCache: walletSectionAssets.hasBalanceCache
|
readonly property bool balanceCache: walletSectionAssets.hasBalanceCache
|
||||||
readonly property bool marketValuesCache: walletSectionAssets.hasMarketValuesCache
|
readonly property bool marketValuesCache: walletSectionAssets.hasMarketValuesCache
|
||||||
|
|
||||||
readonly property SortFilterProxyModel __filteredflatNetworks: SortFilterProxyModel {
|
readonly property SortFilterProxyModel filteredflatNetworks: SortFilterProxyModel {
|
||||||
sourceModel: networksModule.flatNetworks
|
sourceModel: networksModule.flatNetworks
|
||||||
filters: ValueFilter { roleName: "isTest"; value: networksModule.areTestNetworksEnabled }
|
filters: ValueFilter { roleName: "isTest"; value: networksModule.areTestNetworksEnabled }
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user