99 lines
3.2 KiB
QML
99 lines
3.2 KiB
QML
import QtQuick 2.13
|
|
|
|
import SortFilterProxyModel 0.2
|
|
|
|
import StatusQ.Controls 0.1
|
|
import StatusQ.Core 0.1
|
|
import StatusQ.Core.Theme 0.1
|
|
|
|
import utils 1.0
|
|
|
|
import "../controls"
|
|
|
|
Rectangle {
|
|
id: root
|
|
|
|
property var assets: []
|
|
property string currentCurrencySymbol
|
|
signal tokenSelected(var selectedToken)
|
|
property var searchTokenSymbolByAddressFn: function (address) {
|
|
return ""
|
|
}
|
|
|
|
QtObject {
|
|
id: d
|
|
property string searchString
|
|
readonly property var updateSearchText: Backpressure.debounce(root, 1000, function(inputText) {
|
|
d.searchString = inputText
|
|
})
|
|
}
|
|
|
|
height: visible ? tokenList.height: 0
|
|
color: Theme.palette.indirectColor1
|
|
radius: 8
|
|
|
|
StatusListView {
|
|
id: tokenList
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
anchors.top: parent.top
|
|
width: parent.width
|
|
height: Math.min(433, tokenList.contentHeight)
|
|
|
|
model: SortFilterProxyModel {
|
|
sourceModel: root.assets
|
|
filters: [
|
|
ExpressionFilter {
|
|
expression: {
|
|
var tokenSymbolByAddress = searchTokenSymbolByAddressFn(d.searchString)
|
|
return visibleForNetwork && (
|
|
symbol.startsWith(d.searchString.toUpperCase()) || name.toUpperCase().startsWith(d.searchString.toUpperCase()) || (tokenSymbolByAddress!=="" && symbol.startsWith(tokenSymbolByAddress))
|
|
)
|
|
}
|
|
}
|
|
]
|
|
}
|
|
delegate: TokenDelegate {
|
|
objectName: "SendModal_AssetView_TokenListItem_" + symbol
|
|
readonly property string balance: enabledNetworkBalance // Needed for the tests
|
|
currentCurrencySymbol: root.currentCurrencySymbol
|
|
width: ListView.view.width
|
|
onClicked: {
|
|
tokenSelected({name: name, symbol: symbol, totalBalance: totalBalance, totalCurrencyBalance: totalCurrencyBalance, balances: balances, decimals: decimals})
|
|
}
|
|
color: sensor.containsMouse || highlighted ? Theme.palette.baseColor3 : "transparent"
|
|
}
|
|
headerPositioning: ListView.OverlayHeader
|
|
header: Rectangle {
|
|
width: parent.width
|
|
height: childrenRect.height
|
|
color: Theme.palette.indirectColor1
|
|
radius: 8
|
|
z: 2
|
|
Column {
|
|
width: parent.width
|
|
Item {
|
|
height: 5
|
|
width: parent.width
|
|
}
|
|
StatusInput {
|
|
height: 50
|
|
width: parent.width
|
|
input.showBackground: false
|
|
placeholderText: qsTr("Search for token or enter token address")
|
|
input.rightComponent: StatusIcon {
|
|
icon: "search"
|
|
height: 17
|
|
color: Theme.palette.baseColor1
|
|
}
|
|
onTextChanged: Qt.callLater(d.updateSearchText, text)
|
|
}
|
|
Rectangle {
|
|
height: 1
|
|
width: parent.width
|
|
color: Theme.palette.baseColor3
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|