170 lines
5.1 KiB
QML
170 lines
5.1 KiB
QML
import QtQuick 2.15
|
|
import QtQuick.Controls 2.15
|
|
|
|
import StatusQ.Core.Theme 0.1
|
|
import StatusQ.Components 0.1
|
|
import StatusQ.Core 0.1
|
|
import StatusQ.Controls 0.1
|
|
|
|
import AppLayouts.Wallet.controls 1.0
|
|
import utils 1.0
|
|
|
|
StatusListItem {
|
|
id: root
|
|
|
|
property string name
|
|
property url icon
|
|
property string balance
|
|
|
|
property bool marketDetailsAvailable: false
|
|
property string marketBalance
|
|
property bool marketDetailsLoading: false
|
|
property string marketCurrencyPrice
|
|
property real marketChangePct24hour
|
|
|
|
property string communityId
|
|
property string communityName
|
|
property url communityIcon
|
|
|
|
property string errorTooltipText_1
|
|
property string errorTooltipText_2
|
|
|
|
signal communityClicked(string communityId)
|
|
|
|
QtObject {
|
|
id: d
|
|
|
|
readonly property bool isCommunityToken: !!root.communityId
|
|
|
|
readonly property string textColor: {
|
|
if (!root.marketDetailsAvailable)
|
|
return Theme.palette.successColor1
|
|
|
|
if (root.marketChangePct24hour === 0)
|
|
return Theme.palette.baseColor1
|
|
|
|
return root.marketChangePct24hour < 0
|
|
? Theme.palette.dangerColor1
|
|
: Theme.palette.successColor1
|
|
}
|
|
|
|
readonly property string upDownTriangle: {
|
|
if (root.marketChangePct24hour === 0)
|
|
return ""
|
|
|
|
return root.marketChangePct24hour < 0 ? "▾" : "▴"
|
|
}
|
|
}
|
|
|
|
title: root.name
|
|
subTitle: root.balance
|
|
asset.name: root.icon
|
|
asset.isImage: true
|
|
asset.width: 32
|
|
asset.height: 32
|
|
errorIcon.tooltip.maxWidth: 300
|
|
height: implicitHeight
|
|
|
|
statusListItemTitleIcons.sourceComponent: StatusFlatRoundButton {
|
|
width: 14
|
|
height: visible ? 14 : 0
|
|
icon.width: 14
|
|
icon.height: 14
|
|
icon.name: "tiny/warning"
|
|
icon.color: Theme.palette.dangerColor1
|
|
tooltip.text: root.errorTooltipText_1
|
|
tooltip.maxWidth: 300
|
|
visible: !!tooltip.text
|
|
}
|
|
|
|
components: [
|
|
Column {
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
StatusFlatRoundButton {
|
|
id: errorIcon
|
|
width: 14
|
|
height: visible ? 14 : 0
|
|
icon.width: 14
|
|
icon.height: 14
|
|
icon.name: "tiny/warning"
|
|
icon.color: Theme.palette.dangerColor1
|
|
tooltip.text: root.errorTooltipText_2
|
|
tooltip.maxWidth: 200
|
|
visible: root.marketDetailsAvailable && !!tooltip.text
|
|
}
|
|
StatusTextWithLoadingState {
|
|
id: currencyBalance
|
|
|
|
anchors.right: parent.right
|
|
visible: !errorIcon.visible && root.marketDetailsAvailable
|
|
|
|
loading: root.marketDetailsLoading
|
|
text: loading ? Constants.dummyText : root.marketBalance
|
|
}
|
|
Row {
|
|
anchors.right: parent.right
|
|
spacing: 6
|
|
visible: !errorIcon.visible && root.marketDetailsAvailable
|
|
|
|
StatusTextWithLoadingState {
|
|
id: change24HourPercentageText
|
|
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
customColor: d.textColor
|
|
font.pixelSize: 13
|
|
loading: root.marketDetailsLoading
|
|
|
|
text: qsTr("%1 %2%", "[up/down/none character depending on value sign] [localized percentage value]%")
|
|
.arg(d.upDownTriangle).arg(LocaleUtils.numberToLocaleString(root.marketChangePct24hour, 2))
|
|
}
|
|
Rectangle {
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
width: 1
|
|
height: 12
|
|
color: Theme.palette.directColor9
|
|
}
|
|
StatusTextWithLoadingState {
|
|
id: currencyPrice
|
|
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
customColor: d.textColor
|
|
font.pixelSize: 13
|
|
loading: root.marketDetailsLoading
|
|
text: loading ? Constants.dummyText : root.marketCurrencyPrice
|
|
}
|
|
}
|
|
|
|
Loader {
|
|
active: d.isCommunityToken
|
|
|
|
sourceComponent: ManageTokensCommunityTag {
|
|
anchors.right: parent.right
|
|
|
|
communityImage: root.communityIcon
|
|
communityName: root.communityName
|
|
communityId: root.communityId
|
|
|
|
asset.letterSize: 12
|
|
|
|
TapHandler {
|
|
acceptedButtons: Qt.LeftButton
|
|
onSingleTapped: root.communityClicked(root.communityId)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
|
|
states: State {
|
|
name: "unknownToken"
|
|
when: !root.icon.toString()
|
|
|
|
PropertyChanges {
|
|
target: root.asset
|
|
isLetterIdenticon: true
|
|
color: Theme.palette.miscColor5
|
|
name: root.name
|
|
}
|
|
}
|
|
}
|