95 lines
3.7 KiB
QML
95 lines
3.7 KiB
QML
import QtQuick 2.14
|
|
import QtQuick.Layouts 1.14
|
|
|
|
import StatusQ.Controls 0.1
|
|
import StatusQ.Components 0.1
|
|
import StatusQ.Core 0.1
|
|
import StatusQ.Core.Theme 0.1
|
|
|
|
import utils 1.0
|
|
|
|
Rectangle {
|
|
id: root
|
|
|
|
property string chainShortNames
|
|
property string userProfilePublicKey
|
|
property bool includeWatchOnlyAccount
|
|
|
|
signal goToAccountView(var account)
|
|
signal toggleIncludeWatchOnlyAccount()
|
|
|
|
QtObject {
|
|
id: d
|
|
readonly property var relatedAccounts: model.keyPair.accounts
|
|
readonly property bool isWatchOnly: model.keyPair.pairType === Constants.keycard.keyPairType.watchOnly
|
|
readonly property bool isPrivateKeyImport: model.keyPair.pairType === Constants.keycard.keyPairType.privateKeyImport
|
|
readonly property bool isProfileKeypair: model.keyPair.pairType === Constants.keycard.keyPairType.profile
|
|
readonly property string locationInfo: model.keyPair.migratedToKeycard ? qsTr("On Keycard"): qsTr("On device")
|
|
}
|
|
|
|
implicitHeight: layout.height
|
|
color: Theme.palette.baseColor4
|
|
radius: 8
|
|
|
|
ColumnLayout {
|
|
id: layout
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
width: parent.width
|
|
StatusListItem {
|
|
Layout.fillWidth: true
|
|
title: d.isWatchOnly ? qsTr("Watch only") : model.keyPair.name
|
|
statusListItemSubTitle.textFormat: Qt.RichText
|
|
titleTextIcon: model.keyPair.migratedToKeycard ? "keycard": ""
|
|
subTitle: d.isWatchOnly ? "" : d.isProfileKeypair ?
|
|
Utils.getElidedCompressedPk(model.keyPair.pubKey) + Constants.settingsSection.dotSepString + d.locationInfo : d.locationInfo
|
|
color: Theme.palette.transparent
|
|
ringSettings {
|
|
ringSpecModel: d.isProfileKeypair ? Utils.getColorHashAsJson(root.userProfilePublicKey) : []
|
|
ringPxSize: Math.max(asset.width / 24.0)
|
|
}
|
|
asset {
|
|
width: model.keyPair.icon ? 24 : 40
|
|
height: model.keyPair.icon ? 24 : 40
|
|
name: model.keyPair.image ? model.keyPair.image : model.keyPair.icon
|
|
isImage: !!model.keyPair.image
|
|
color: d.isProfileKeypair ? Utils.colorForPubkey(root.userProfilePublicKey) : Theme.palette.primaryColor1
|
|
letterSize: Math.max(4, asset.width / 2.4)
|
|
charactersLen: 2
|
|
isLetterIdenticon: !model.keyPair.icon && !asset.name.toString()
|
|
}
|
|
components: [
|
|
StatusFlatRoundButton {
|
|
icon.name: "more"
|
|
icon.color: Theme.palette.directColor1
|
|
visible: !d.isWatchOnly
|
|
},
|
|
StatusBaseText {
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
text: qsTr("Include in total balance")
|
|
visible: d.isWatchOnly
|
|
},
|
|
StatusSwitch {
|
|
visible: d.isWatchOnly
|
|
checked: root.includeWatchOnlyAccount
|
|
onClicked: root.toggleIncludeWatchOnlyAccount()
|
|
}
|
|
]
|
|
}
|
|
StatusListView {
|
|
Layout.fillWidth: true
|
|
Layout.preferredHeight: childrenRect.height
|
|
Layout.leftMargin: 16
|
|
Layout.rightMargin: 16
|
|
spacing: 1
|
|
model: d.relatedAccounts
|
|
delegate: WalletAccountDelegate {
|
|
width: ListView.view.width
|
|
account: model.account
|
|
totalCount: ListView.view.count
|
|
chainShortNames: root.chainShortNames
|
|
onGoToAccountView: root.goToAccountView(model.account)
|
|
}
|
|
}
|
|
}
|
|
}
|