status-desktop/storybook/pages/SendSignModalPage.qml

234 lines
7.9 KiB
QML

import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Layouts 1.15
import StatusQ 0.1
import StatusQ.Core.Utils 0.1
import StatusQ.Core.Theme 0.1
import Storybook 1.0
import Models 1.0
import AppLayouts.Wallet.popups.simpleSend 1.0
import utils 1.0
SplitView {
id: root
Logs { id: logs }
orientation: Qt.Horizontal
property var dialog
function createAndOpenDialog() {
dialog = dlgComponent.createObject(popupBg)
dialog.open()
}
Component.onCompleted: createAndOpenDialog()
QtObject {
id: priv
readonly property var accountsModel: WalletAccountsModel {}
readonly property var selectedAccount: selectedAccountEntry.item
readonly property var networksModel: NetworksModel.flatNetworks
readonly property var selectedNetwork: selectedNetworkEntry.item
}
ModelEntry {
id: selectedAccountEntry
sourceModel: priv.accountsModel
key: "address"
value: ctrlAccount.currentValue
}
ModelEntry {
id: selectedNetworkEntry
sourceModel: priv.networksModel
key: "chainId"
value: ctrlNetwork.currentValue
}
Item {
SplitView.fillWidth: true
SplitView.fillHeight: true
PopupBackground {
id: popupBg
anchors.fill: parent
Button {
anchors.centerIn: parent
text: "Reopen"
onClicked: createAndOpenDialog()
}
Component {
id: dlgComponent
SendSignModal {
anchors.centerIn: parent
destroyOnClose: true
modal: false
formatBigNumber: (number, symbol, noSymbolOption) => parseFloat(number).toLocaleString(Qt.locale(), 'f', 2)
+ (noSymbolOption ? "" : " " + (symbol || Qt.locale().currencySymbol(Locale.CurrencyIsoCode)))
tokenSymbol: ctrlFromSymbol.text
tokenAmount: ctrlFromAmount.text
tokenContractAddress: "0x6B175474E89094C44Da98b954EedeAC495271d0F"
accountName: priv.selectedAccount.name
accountAddress: priv.selectedAccount.address
accountEmoji: priv.selectedAccount.emoji
accountColor: Utils.getColorForId(priv.selectedAccount.colorId)
recipientAddress: ctrlRecipient.text
networkShortName: priv.selectedNetwork.shortName
networkName: priv.selectedNetwork.chainName
networkIconPath: Theme.svg(priv.selectedNetwork.iconUrl)
networkBlockExplorerUrl: priv.selectedNetwork.blockExplorerURL
fiatFees: formatBigNumber(42.542567, "EUR")
cryptoFees: formatBigNumber(0.06, "ETH")
estimatedTime: qsTr("> 5 minutes")
isCollectibleLoading: isCollectibleLoadingCheckbox.checked
isCollectible: isCollectibleCheckbox.checked
collectibleContractAddress: !!collectibleComboBox.currentCollectible ?
collectibleComboBox.currentCollectible.contractAddress: ""
collectibleTokenId: !!collectibleComboBox.currentCollectible ?
collectibleComboBox.currentCollectible.tokenId: ""
collectibleName: !!collectibleComboBox.currentCollectible ?
collectibleComboBox.currentCollectible.name: ""
collectibleBackgroundColor: !!collectibleComboBox.currentCollectible ?
collectibleComboBox.currentCollectible.backgroundColor: ""
collectibleIsMetadataValid: !!collectibleComboBox.currentCollectible ?
collectibleComboBox.currentCollectible.isMetadataValid : false
collectibleMediaUrl: !!collectibleComboBox.currentCollectible ?
collectibleComboBox.currentCollectible.mediaUrl ?? "" : ""
collectibleMediaType: ""
collectibleFallbackImageUrl:!!collectibleComboBox.currentCollectible ?
collectibleComboBox.currentCollectible.imageUrl : ""
loginType: ctrlLoginType.currentIndex
feesLoading: ctrlLoading.checked
expirationSeconds: !!ctrlExpiration.text && parseInt(ctrlExpiration.text) ? parseInt(ctrlExpiration.text) : 0
onExpirationSecondsChanged: requestTimestamp = new Date()
fnGetOpenSeaExplorerUrl: function(networkShortName) {
return "%1/assets/%2".arg(Constants.openseaExplorerLinks.mainnetLink).arg(Constants.openseaExplorerLinks.ethereum)
}
onAccepted: logs.logEvent("accepted")
onRejected: logs.logEvent("rejected")
onClosed: logs.logEvent("closed")
}
}
}
}
LogsAndControlsPanel {
SplitView.minimumWidth: 250
SplitView.preferredWidth: 250
logsView.logText: logs.logText
ColumnLayout {
Layout.fillWidth: true
TextField {
Layout.fillWidth: true
id: ctrlFromSymbol
text: "DAI"
placeholderText: "From symbol"
}
CheckBox {
id: isCollectibleCheckbox
text:"is collectible"
}
CheckBox {
id: isCollectibleLoadingCheckbox
text:"is collectible loading"
}
ComboBox {
id: collectibleComboBox
property var currentCollectible
Layout.fillWidth: true
textRole: "name"
model: ManageCollectiblesModel {}
currentIndex: 0
onCurrentIndexChanged: {
currentCollectible = ModelUtils.get(model, collectibleComboBox.currentIndex)
}
enabled: isCollectibleCheckbox.checked
}
Text {
text: "Selected Send Amount"
}
TextField {
Layout.fillWidth: true
id: ctrlFromAmount
text: "100"
placeholderText: "From amount"
}
Text {
text: "Selected From Account"
}
ComboBox {
id: ctrlAccount
textRole: "name"
valueRole: "address"
model: priv.accountsModel
currentIndex: 0
}
TextField {
Layout.fillWidth: true
id: ctrlRecipient
text: "0xA858DDc0445d8131daC4d1DE01f834ffcbA52Ef1"
placeholderText: "Selected recipient"
}
Text {
text: "Selected Network"
}
ComboBox {
id: ctrlNetwork
textRole: "chainName"
valueRole: "chainId"
model: priv.networksModel
currentIndex: 0
}
Switch {
id: ctrlLoading
text: "Fees loading"
}
Text {
text: "Login Type"
}
ComboBox {
id: ctrlLoginType
model: Constants.authenticationIconByType
}
TextField {
id: ctrlExpiration
placeholderText: "Expiration in seconds"
}
}
}
}
// category: Popups
// https://www.figma.com/design/FkFClTCYKf83RJWoifWgoX/Wallet-v2?node-id=25214-40565&m=dev