172 lines
5.6 KiB
QML
172 lines
5.6 KiB
QML
import QtQuick 2.15
|
|
import QtQml.Models 2.15
|
|
import QtQuick.Layouts 1.15
|
|
|
|
import StatusQ.Controls 0.1
|
|
import StatusQ.Popups.Dialog 0.1
|
|
import StatusQ.Core.Theme 0.1
|
|
|
|
import AppLayouts.Communities.panels 1.0
|
|
|
|
import utils 1.0
|
|
|
|
StatusDialog {
|
|
id: root
|
|
|
|
property bool isEditMode
|
|
|
|
property bool requirementsCheckPending
|
|
property var keypairSigningModel
|
|
|
|
required property string communityName
|
|
required property string communityIcon
|
|
property int loginType: Constants.LoginType.Password
|
|
|
|
property var walletAssetsModel
|
|
required property var walletAccountsModel // name, address, emoji, colorId, assets
|
|
required property var permissionsModel // id, key, permissionType, holdingsListModel, channelsListModel, isPrivate, tokenCriteriaMet
|
|
required property var assetsModel
|
|
required property var collectiblesModel
|
|
|
|
property var getCurrencyAmount: function (balance, symbol){}
|
|
|
|
signal shareSelectedAddressesClicked(string airdropAddress, var sharedAddresses)
|
|
signal sharedAddressesChanged(string airdropAddress, var sharedAddresses)
|
|
|
|
signal prepareForSigning(string airdropAddress, var sharedAddresses)
|
|
signal editRevealedAddresses()
|
|
signal signSharedAddressesForAllNonKeycardKeypairs()
|
|
signal signSharedAddressesForKeypair(string keyUid)
|
|
|
|
function setOldSharedAddresses(oldSharedAddresses) {
|
|
if (!d.displaySigningPanel && !!loader.item) {
|
|
d.oldSharedAddresses = oldSharedAddresses
|
|
loader.item.setOldSharedAddresses(oldSharedAddresses)
|
|
}
|
|
}
|
|
|
|
function setOldAirdropAddress(oldAirdropAddress) {
|
|
if (!d.displaySigningPanel && !!loader.item) {
|
|
d.oldAirdropAddress = oldAirdropAddress
|
|
loader.item.setOldAirdropAddress(oldAirdropAddress)
|
|
}
|
|
}
|
|
|
|
function sharedAddressesForAllNonKeycardKeypairsSigned() {
|
|
if (d.displaySigningPanel && !!loader.item) {
|
|
loader.item.sharedAddressesForAllNonKeycardKeypairsSigned()
|
|
}
|
|
}
|
|
|
|
title: !!loader.item? loader.item.title : ""
|
|
implicitWidth: 640 // by design
|
|
padding: 0
|
|
|
|
QtObject {
|
|
id: d
|
|
|
|
property bool displaySigningPanel: false
|
|
property bool allSigned: false
|
|
|
|
property var oldSharedAddresses
|
|
property string oldAirdropAddress
|
|
|
|
property var selectAddressesPanelButtons: ObjectModel {}
|
|
readonly property var signingPanelButtons: ObjectModel {
|
|
StatusFlatButton {
|
|
visible: root.isEditMode
|
|
borderColor: Theme.palette.baseColor2
|
|
text: qsTr("Cancel")
|
|
onClicked: root.close()
|
|
}
|
|
StatusButton {
|
|
text: qsTr("Save changes")
|
|
enabled: d.allSigned
|
|
onClicked: {
|
|
root.editRevealedAddresses()
|
|
root.close()
|
|
}
|
|
}
|
|
}
|
|
|
|
readonly property var signingPanelBackButtons: ObjectModel {
|
|
StatusBackButton {
|
|
onClicked: {
|
|
d.displaySigningPanel = false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
contentItem: Loader {
|
|
id: loader
|
|
sourceComponent: d.displaySigningPanel? sharedAddressesSigningPanelComponent : selectSharedAddressesPanelComponent
|
|
|
|
onLoaded: {
|
|
if (!d.displaySigningPanel) {
|
|
if (!!d.oldSharedAddresses) {
|
|
root.setOldSharedAddresses(d.oldSharedAddresses)
|
|
}
|
|
if (!!d.oldAirdropAddress) {
|
|
root.setOldAirdropAddress(d.oldAirdropAddress)
|
|
}
|
|
d.selectAddressesPanelButtons = loader.item.buttons
|
|
}
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: selectSharedAddressesPanelComponent
|
|
SharedAddressesPanel {
|
|
isEditMode: root.isEditMode
|
|
requirementsCheckPending: root.requirementsCheckPending
|
|
communityName: root.communityName
|
|
communityIcon: root.communityIcon
|
|
loginType: root.loginType
|
|
walletAccountsModel: root.walletAccountsModel
|
|
walletAssetsModel: root.walletAssetsModel
|
|
permissionsModel: root.permissionsModel
|
|
assetsModel: root.assetsModel
|
|
collectiblesModel: root.collectiblesModel
|
|
onShareSelectedAddressesClicked: root.shareSelectedAddressesClicked(airdropAddress, sharedAddresses)
|
|
onPrepareForSigning: {
|
|
root.prepareForSigning(airdropAddress, sharedAddresses)
|
|
d.displaySigningPanel = true
|
|
}
|
|
onSharedAddressesChanged: {
|
|
root.sharedAddressesChanged(airdropAddress, sharedAddresses)
|
|
}
|
|
onClose: root.close()
|
|
getCurrencyAmount: function (balance, symbol){
|
|
return root.getCurrencyAmount(balance, symbol)
|
|
}
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: sharedAddressesSigningPanelComponent
|
|
SharedAddressesSigningPanel {
|
|
|
|
keypairSigningModel: root.keypairSigningModel
|
|
|
|
onSignSharedAddressesForAllNonKeycardKeypairs: {
|
|
root.signSharedAddressesForAllNonKeycardKeypairs()
|
|
}
|
|
|
|
onSignSharedAddressesForKeypair: {
|
|
root.signSharedAddressesForKeypair(keyUid)
|
|
}
|
|
|
|
onAllSignedChanged: {
|
|
d.allSigned = allSigned
|
|
}
|
|
}
|
|
}
|
|
|
|
footer: StatusDialogFooter {
|
|
spacing: Style.current.padding
|
|
rightButtons: d.displaySigningPanel? d.signingPanelButtons : d.selectAddressesPanelButtons
|
|
leftButtons: d.displaySigningPanel? d.signingPanelBackButtons : null
|
|
}
|
|
}
|