mirror of
https://github.com/status-im/status-desktop.git
synced 2025-01-12 23:35:32 +00:00
2f050a025f
Changes: 1. Align dialog with Figma design 2. Add new components for round image with badge and connection status tag 3. Add tests 4. Dapps service will now receive wallet `RootStore` as input and reuse existing models with account balance and other necessary info for account selection and chain selection 5. Minor updates in stores 6. Minor updates in WC toast messages to display app domain instead of app url
137 lines
4.6 KiB
QML
137 lines
4.6 KiB
QML
import QtQuick 2.15
|
|
import QtQuick.Controls 2.15
|
|
import QtQuick.Layouts 1.15
|
|
import QtQml 2.15
|
|
|
|
import StatusQ 0.1
|
|
import StatusQ.Controls 0.1
|
|
import StatusQ.Components 0.1
|
|
import StatusQ.Core 0.1
|
|
import StatusQ.Core.Theme 0.1
|
|
import StatusQ.Core.Utils 0.1 as StatusQUtils
|
|
|
|
import utils 1.0
|
|
|
|
import shared.controls 1.0
|
|
|
|
/**
|
|
Expected model structure:
|
|
name [string] - account name e.g. "Piggy Bank"
|
|
address [string] - wallet account address e.g. "0x1234567890"
|
|
colorizedChainPrefixes [string] - chain prefixes with rich text colors e.g. "<font color=\"red\">eth:</font><font color=\"blue\">oeth:</font><font color=\"green\">arb:</font>"
|
|
emoji [string] - emoji for account e.g. "🐷"
|
|
colorId [string] - color id for account e.g. "1"
|
|
currencyBalance [var] - fiat currency balance
|
|
amount [number] - amount of currency e.g. 1234
|
|
symbol [string] - currency symbol e.g. "USD"
|
|
displayDecimals [number] - optional number of decimals to display
|
|
stripTrailingZeroes [bool] - strip trailing zeroes
|
|
walletType [string] - wallet type e.g. Constants.watchWalletType. See `Constants` for possible values
|
|
migratedToKeycard [bool] - whether account is migrated to keycard
|
|
accountBalance [var] - account balance for a specific network
|
|
formattedBalance [string] - formatted balance e.g. "1234.56B"
|
|
balance [string] - balance e.g. "123456000000"
|
|
iconUrl [string] - icon url e.g. "network/Network=Hermez"
|
|
chainColor [string] - chain color e.g. "#FF0000"
|
|
**/
|
|
|
|
StatusComboBox {
|
|
id: root
|
|
|
|
// input property for programatic selection
|
|
property string selectedAddress: ""
|
|
// output property for selected account
|
|
readonly property alias currentAccount: selectedEntry.item
|
|
readonly property string currentAccountAddress: d.currentAccountSelection
|
|
|
|
// styling options
|
|
type: StatusComboBox.Type.Secondary
|
|
size: StatusComboBox.Size.Small
|
|
|
|
currentIndex: 0
|
|
|
|
objectName: "accountSelector"
|
|
popupContentItemObjectName: "accountSelectorList"
|
|
|
|
control.popup.width: 430
|
|
|
|
control.valueRole: "address"
|
|
control.textRole: "name"
|
|
implicitHeight: control.implicitHeight
|
|
implicitWidth: control.implicitWidth
|
|
|
|
contentItem: RowLayout {
|
|
id: contentItemRow
|
|
|
|
spacing: 4
|
|
|
|
StatusSmartIdenticon {
|
|
id: assetContent
|
|
objectName: "assetContent"
|
|
asset.emoji: currentAccount.emoji ?? ""
|
|
asset.color: currentAccount.color ?? Theme.palette.baseColor1
|
|
asset.width: 24
|
|
asset.height: asset.width
|
|
asset.isLetterIdenticon: !!currentAccount.emoji
|
|
asset.bgColor: Theme.palette.primaryColor3
|
|
visible: !!currentAccount.emoji
|
|
}
|
|
|
|
StatusBaseText {
|
|
id: textContent
|
|
objectName: "textContent"
|
|
Layout.fillWidth: true
|
|
Layout.fillHeight: true
|
|
text: currentAccount.name ?? ""
|
|
horizontalAlignment: Text.AlignLeft
|
|
verticalAlignment: Text.AlignVCenter
|
|
elide: Text.ElideRight
|
|
font.pixelSize: 13
|
|
color: Theme.palette.directColor1
|
|
}
|
|
}
|
|
|
|
delegate: WalletAccountListItem {
|
|
id: delegateItem
|
|
|
|
required property var model
|
|
|
|
tagsScrollBarVisible: false
|
|
|
|
width: ListView.view.width
|
|
name: model.name
|
|
address: model.address
|
|
chainShortNames: model.colorizedChainPrefixes ?? ""
|
|
emoji: model.emoji
|
|
walletColor: Utils.getColorForId(model.colorId)
|
|
currencyBalance: model.currencyBalance
|
|
walletType: model.walletType
|
|
migratedToKeycard: model.migratedToKeycard ?? false
|
|
accountBalance: model.accountBalance ?? null
|
|
color: sensor.containsMouse || highlighted ?
|
|
Theme.palette.baseColor2 :
|
|
!!currentAccount && currentAccount.name === model.name ? Theme.palette.statusListItem.highlightColor : "transparent"
|
|
onClicked: {
|
|
d.currentAccountSelection = model.address
|
|
control.popup.close()
|
|
}
|
|
}
|
|
|
|
ModelEntry {
|
|
id: selectedEntry
|
|
sourceModel: root.model ?? null
|
|
key: "address"
|
|
value: d.currentAccountSelection
|
|
}
|
|
|
|
QtObject {
|
|
id: d
|
|
property string currentAccountSelection: root.selectedAddress || root.currentValue
|
|
|
|
Binding on currentAccountSelection {
|
|
value: root.selectedAddress || root.currentValue
|
|
}
|
|
}
|
|
}
|
|
|