95 lines
2.4 KiB
QML
95 lines
2.4 KiB
QML
|
import QtQuick 2.15
|
||
|
import QtQuick.Controls 2.15
|
||
|
import QtQuick.Layouts 1.15
|
||
|
|
||
|
import StatusQ.Core 0.1
|
||
|
import StatusQ.Core.Utils 0.1
|
||
|
import StatusQ.Popups.Dialog 0.1
|
||
|
|
||
|
import AppLayouts.Wallet.views 1.0
|
||
|
|
||
|
import SortFilterProxyModel 0.2
|
||
|
|
||
|
/**
|
||
|
Panel holding search field and lists of assets.
|
||
|
*/
|
||
|
Control {
|
||
|
id: root
|
||
|
|
||
|
/**
|
||
|
Expected model structure:
|
||
|
|
||
|
tokensKey [string] - unique asset's identifier
|
||
|
name [string] - asset's name
|
||
|
symbol [string] - asset's symbol
|
||
|
iconSource [url] - asset's icon
|
||
|
currencyBalanceAsString [string] - formatted balance
|
||
|
balances [model] - submodel of balances per chain
|
||
|
balanceAsString [string] - formatted balance per chain
|
||
|
iconUrl [url] - chain's icon
|
||
|
**/
|
||
|
property alias model: sfpm.sourceModel
|
||
|
|
||
|
signal selected(string key)
|
||
|
property string highlightedKey: ""
|
||
|
|
||
|
SortFilterProxyModel {
|
||
|
id: sfpm
|
||
|
|
||
|
filters: AnyOf {
|
||
|
SearchFilter {
|
||
|
roleName: "name"
|
||
|
searchPhrase: searchBox.text
|
||
|
}
|
||
|
SearchFilter {
|
||
|
roleName: "symbol"
|
||
|
searchPhrase: searchBox.text
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
contentItem: ColumnLayout {
|
||
|
spacing: 0
|
||
|
|
||
|
TokenSearchBox {
|
||
|
id: searchBox
|
||
|
|
||
|
Layout.fillWidth: true
|
||
|
placeholderText: qsTr("Search assets")
|
||
|
}
|
||
|
|
||
|
StatusDialogDivider {
|
||
|
Layout.fillWidth: true
|
||
|
visible: listView.count
|
||
|
}
|
||
|
|
||
|
StatusListView {
|
||
|
id: listView
|
||
|
|
||
|
clip: true
|
||
|
|
||
|
Layout.fillWidth: true
|
||
|
Layout.fillHeight: true
|
||
|
Layout.preferredHeight: contentHeight
|
||
|
|
||
|
model: sfpm
|
||
|
|
||
|
delegate: TokenSelectorAssetDelegate {
|
||
|
required property var model
|
||
|
required property int index
|
||
|
|
||
|
highlighted: tokensKey === root.highlightedKey
|
||
|
|
||
|
tokensKey: model.tokensKey
|
||
|
name: model.name
|
||
|
symbol: model.symbol
|
||
|
currencyBalanceAsString: model.currencyBalanceAsString
|
||
|
iconSource: model.iconSource
|
||
|
balancesModel: model.balances
|
||
|
|
||
|
onClicked: root.selected(model.tokensKey)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|