feat: add asset selector in send modal

This commit is contained in:
Jonathan Rainville 2020-06-29 12:37:36 -04:00 committed by Iuri Matias
parent d90c9ba882
commit 70fdcb85c6
7 changed files with 54 additions and 21 deletions

View File

@ -41,7 +41,6 @@ QtObject:
of "path": result = account.path
of "walletType": result = account.walletType
proc getAccountindexByAddress*(self: AccountList, address: string): int =
var i = 0
for account in self.accounts:

View File

@ -23,6 +23,16 @@ QtObject:
result.assets = @[]
result.setup
proc rowData(self: AssetList, index: int, column: string): string {.slot.} =
if (index >= self.assets.len):
return
let asset = self.assets[index]
case column:
of "name": result = asset.name
of "symbol": result = asset.symbol
of "value": result = asset.value
of "fiatValue": result = asset.fiatValue
method rowCount(self: AssetList, index: QModelIndex = nil): int =
return self.assets.len

View File

@ -10,6 +10,7 @@ ModalPopup {
id: popup
title: qsTr("Send")
height: 600
onOpened: {
sendModalContent.amountInput.text = ""
@ -26,11 +27,22 @@ ModalPopup {
})
}
sendModalContent.accounts = accountsData
const assets = walletModel.assets
const numAssets = assets.rowCount()
const assetsData = []
for (let f = 0; f < numAssets; f++) {
assetsData.push({
name: assets.rowData(f, 'name'),
symbol: assets.rowData(f, 'symbol'),
value: assets.rowData(f, 'value')
})
}
sendModalContent.assets = assetsData
}
SendModalContent {
id: sendModalContent
accounts: []
}
footer: StyledButton {

View File

@ -8,13 +8,19 @@ Item {
property alias amountText: txtAmount.text
property alias toText: txtTo.text
property alias passwordText: txtPassword.text
property var accounts
property var accounts: []
property var assets: []
property string defaultAccount: "0x1234"
property int selectedAccountIndex: 0
property string selectedAccountAddress: accounts && accounts.length ? accounts[selectedAccountIndex].address : ""
property string selectedAccountName: accounts && accounts.length ? accounts[selectedAccountIndex].name : ""
property string selectedAccountIconColor: accounts && accounts.length ? accounts[selectedAccountIndex].iconColor : ""
property int selectedAssetIndex: 0
property string selectedAssetName: assets && assets.length ? assets[selectedAssetIndex].name : ""
property string selectedAssetSymbol: assets && assets.length ? assets[selectedAssetIndex].symbol : ""
property string selectedAccountValue: assets && assets.length ? assets[selectedAssetIndex].value : ""
property string passwordValidationError: ""
property string toValidationError: ""
@ -55,12 +61,31 @@ Item {
Input {
id: txtAmount
label: qsTr("Amount")
icon: "../../../img/token-icons/eth.svg"
anchors.top: parent.top
placeholderText: qsTr("Enter ETH")
placeholderText: qsTr("Enter amount...")
validationError: amountValidationError
}
Select {
id: assetTypeSelect
iconHeight: 24
iconWidth: 24
icon: "../../../img/tokens/" + selectedAssetSymbol.toUpperCase() + ".png"
label: qsTr("Select the asset")
anchors.top: txtAmount.bottom
anchors.topMargin: Theme.padding
selectedText: selectedAssetName
selectOptions: sendModalContent.assets.map(function (asset, index) {
return {
text: asset.name,
onClicked: function () {
selectedAssetIndex = index
}
}
})
}
Select {
id: txtFrom
iconHeight: 12
@ -68,7 +93,7 @@ Item {
icon: "../../../img/walletIcon.svg"
iconColor: selectedAccountIconColor
label: qsTr("From account")
anchors.top: txtAmount.bottom
anchors.top: assetTypeSelect.bottom
anchors.topMargin: Theme.padding
selectedText: selectedAccountName
selectOptions: sendModalContent.accounts.map(function (account, index) {

View File

@ -1,9 +0,0 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M16 32C24.8365 32 32 24.8365 32 16C32 7.16344 24.8365 0 16 0C7.16344 0 0 7.16344 0 16C0 24.8365 7.16344 32 16 32Z" fill="#667FE3"/>
<path d="M8.94867 17.1841L15.9729 27.0799V21.334L8.94867 17.1841Z" fill="white"/>
<path opacity="0.6" d="M15.973 21.334V27.0799L23 17.184L15.973 21.334Z" fill="white"/>
<path opacity="0.3" d="M22.9941 15.853L15.9728 12.6586L15.9727 20.003L22.9941 15.853Z" fill="white"/>
<path opacity="0.6" d="M8.94879 15.8532L15.9731 12.6587L15.9728 20.003L8.94879 15.8532Z" fill="white"/>
<path opacity="0.6" d="M15.9728 4.19864L22.9941 15.853L15.9731 12.6587L15.9728 4.19864Z" fill="white"/>
<path d="M15.9731 4.19864V12.6587L8.94879 15.8532L15.9731 4.19864Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 806 B

View File

@ -1,4 +0,0 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M32 16C32 7.16344 24.8366 0 16 0C7.16344 0 0 7.16344 0 16C0 24.8366 7.16344 32 16 32C24.8366 32 32 24.8366 32 16Z" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M18.6988 15.8523C16.7812 15.9627 15.5793 15.516 13.6615 15.6268C13.1857 15.6535 12.7133 15.7224 12.2498 15.8328C12.5329 12.286 15.0431 9.18331 18.4565 8.98609C20.5512 8.86523 22.6449 10.1585 22.7584 12.258C22.8701 14.3216 21.2968 15.7021 18.6991 15.852L18.6988 15.8523ZM13.5492 23.1071C11.5425 23.2204 9.53703 22.0097 9.42813 20.0451C9.32103 18.1137 10.8286 16.8217 13.3172 16.6815C15.154 16.578 16.3056 16.9961 18.1424 16.8924C18.5979 16.8675 19.0504 16.8029 19.4947 16.6996C19.224 20.0189 16.8193 22.9228 13.5492 23.1071ZM16 0.000258812C7.16336 -3.31784e-09 0 7.16325 0 16C0 24.8368 7.16336 32 16 32C24.8367 32 32 24.8365 32 16C32 7.16351 24.8367 0 16 0" fill="#4360DF"/>
</svg>

Before

Width:  |  Height:  |  Size: 965 B

View File

@ -15,7 +15,7 @@ Item {
property url icon: ""
property int iconHeight: 24
property int iconWidth: 24
property color iconColor
property color iconColor: Theme.transparent
readonly property bool hasIcon: icon.toString() !== ""
@ -63,7 +63,7 @@ Item {
ColorOverlay {
anchors.fill: iconImg
source: iconImg
color: iconColor ? iconColor : Theme.transparent
color: iconColor
}
StyledText {