From 7a77748d326d5bfbc203c0e27993eaf9196c98e3 Mon Sep 17 00:00:00 2001 From: Noelia Date: Fri, 31 Mar 2023 13:26:50 +0200 Subject: [PATCH] feat(MintToken): Created remote self destruct popup Created remote self destruct popup. Part of #10051 remoteselfpopu --- .../community/RemoteSelfDestructPopup.qml | 83 +++++++++++++++++++ .../AppLayouts/Chat/popups/community/qmldir | 1 + 2 files changed, 84 insertions(+) create mode 100644 ui/app/AppLayouts/Chat/popups/community/RemoteSelfDestructPopup.qml diff --git a/ui/app/AppLayouts/Chat/popups/community/RemoteSelfDestructPopup.qml b/ui/app/AppLayouts/Chat/popups/community/RemoteSelfDestructPopup.qml new file mode 100644 index 00000000000..dc348862649 --- /dev/null +++ b/ui/app/AppLayouts/Chat/popups/community/RemoteSelfDestructPopup.qml @@ -0,0 +1,83 @@ +import QtQuick 2.14 +import QtQuick.Controls 2.14 +import QtQuick.Layouts 1.14 +import QtQml.Models 2.14 + +import StatusQ.Core 0.1 +import StatusQ.Controls 0.1 +import StatusQ.Popups.Dialog 0.1 +import StatusQ.Core.Theme 0.1 + +import AppLayouts.Chat.panels.communities 1.0 + +import utils 1.0 + +StatusDialog { + id: root + + property alias model: tokenHoldersPanel.model + + property string collectibleName + + signal selfDestructClicked(int tokenCount) + + QtObject { + id: d + + readonly property int maxHeight: 560 // by design + property int tokenCount: 0 + + function getVerticalPadding() { + return root.topPadding + root.bottomPadding + } + + function getHorizontalPadding() { + return root.leftPadding + root.rightPadding + } + + function calculateTotalTokensToDestruct() { + tokenCount = 0 + for(var i = 0; i < tokenHoldersPanel.model.count; i ++) { + var item = tokenHoldersPanel.model.get(i) + if(item.selfDestruct) { + tokenCount += item.selfDestructAmount + } + } + } + } + + title: qsTr("Remotely self-destruct %1 token").arg(root.collectibleName) + implicitWidth: 600 // by design + topPadding: Style.current.padding + bottomPadding: topPadding + implicitHeight: Math.min(tokenHoldersPanel.implicitHeight + d.getVerticalPadding() + root.header.height + root.footer.height, d.maxHeight) + contentItem: StatusScrollView { + id: scrollview + + contentHeight: tokenHoldersPanel.implicitHeight + contentWidth: tokenHoldersPanel.implicitWidth + rightPadding: 20 + + TokenHoldersPanel { + id: tokenHoldersPanel + + width: root.width - d.getHorizontalPadding() - scrollview.rightPadding + tokenName: root.collectibleName + isSelectorMode: true + + onSelfDestructChanged: d.calculateTotalTokensToDestruct() + } + } + + footer: StatusDialogFooter { + spacing: Style.current.padding + rightButtons: ObjectModel { + StatusButton { + enabled: d.tokenCount > 0 + text: qsTr("Self-destruct %n token(s)", "", d.tokenCount) + type: StatusBaseButton.Type.Danger + onClicked: root.selfDestructClicked(d.tokenCount) + } + } + } +} diff --git a/ui/app/AppLayouts/Chat/popups/community/qmldir b/ui/app/AppLayouts/Chat/popups/community/qmldir index 394b5088e3d..fc229d1d83d 100644 --- a/ui/app/AppLayouts/Chat/popups/community/qmldir +++ b/ui/app/AppLayouts/Chat/popups/community/qmldir @@ -1,3 +1,4 @@ CreateChannelPopup 1.0 CreateChannelPopup.qml CommunityTokenPermissionsPopup 1.0 CommunityTokenPermissionsPopup.qml SignMintTokenTransactionPopup 1.0 SignMintTokenTransactionPopup.qml +RemoteSelfDestructPopup 1.0 RemoteSelfDestructPopup.qml