2023-10-24 11:21:20 +00:00
|
|
|
|
import QtQuick 2.15
|
2024-01-04 12:05:54 +00:00
|
|
|
|
import QtQuick.Controls 2.15
|
2023-10-24 11:21:20 +00:00
|
|
|
|
import QtQuick.Layouts 1.15
|
|
|
|
|
|
2024-01-16 16:22:05 +00:00
|
|
|
|
import StatusQ 0.1
|
2024-01-04 12:05:54 +00:00
|
|
|
|
import StatusQ.Core 0.1
|
2023-10-24 11:21:20 +00:00
|
|
|
|
import StatusQ.Controls 0.1
|
2024-01-04 12:05:54 +00:00
|
|
|
|
import StatusQ.Components 0.1
|
2024-01-16 16:22:05 +00:00
|
|
|
|
import StatusQ.Models 0.1
|
2024-01-04 12:05:54 +00:00
|
|
|
|
import StatusQ.Core.Theme 0.1
|
|
|
|
|
import StatusQ.Popups.Dialog 0.1
|
2023-10-24 11:21:20 +00:00
|
|
|
|
|
|
|
|
|
import shared.controls 1.0
|
2024-01-04 12:05:54 +00:00
|
|
|
|
import shared.stores 1.0 as SharedStores
|
2023-11-17 14:08:43 +00:00
|
|
|
|
import utils 1.0
|
2023-10-24 11:21:20 +00:00
|
|
|
|
|
2023-10-25 10:40:10 +00:00
|
|
|
|
import AppLayouts.Profile.panels 1.0
|
2023-11-17 14:08:43 +00:00
|
|
|
|
import AppLayouts.Wallet.panels 1.0
|
2023-10-25 10:40:10 +00:00
|
|
|
|
|
2024-01-26 15:39:42 +00:00
|
|
|
|
Item {
|
2023-10-24 11:21:20 +00:00
|
|
|
|
id: root
|
|
|
|
|
|
2024-02-01 12:01:07 +00:00
|
|
|
|
required property double tokenListUpdatedAt
|
2024-01-31 18:09:44 +00:00
|
|
|
|
required property var assetsController
|
|
|
|
|
required property var collectiblesController
|
|
|
|
|
|
2023-10-25 10:40:10 +00:00
|
|
|
|
required property var sourcesOfTokensModel // Expected roles: key, name, updatedAt, source, version, tokensCount, image
|
|
|
|
|
required property var tokensListModel // Expected roles: name, symbol, image, chainName, explorerUrl
|
|
|
|
|
|
2023-11-17 14:08:43 +00:00
|
|
|
|
required property var baseWalletAssetsModel
|
|
|
|
|
required property var baseWalletCollectiblesModel
|
|
|
|
|
|
2024-01-24 16:35:53 +00:00
|
|
|
|
property var getCurrencyAmount: function (balance, symbol) {}
|
|
|
|
|
property var getCurrentCurrencyAmount: function(balance){}
|
|
|
|
|
|
2023-12-06 10:54:36 +00:00
|
|
|
|
property alias currentIndex: tabBar.currentIndex
|
|
|
|
|
|
2023-11-17 14:08:43 +00:00
|
|
|
|
readonly property bool dirty: {
|
|
|
|
|
if (!loader.item)
|
|
|
|
|
return false
|
2024-01-16 16:22:05 +00:00
|
|
|
|
if (tabBar.currentIndex > d.hiddenTabIndex)
|
2023-11-17 14:08:43 +00:00
|
|
|
|
return false
|
2024-01-04 12:05:54 +00:00
|
|
|
|
// FIXME take advanced settings into account here too (#13178)
|
2023-11-17 14:08:43 +00:00
|
|
|
|
return loader.item && loader.item.dirty
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function saveChanges() {
|
2024-01-16 16:22:05 +00:00
|
|
|
|
if (tabBar.currentIndex > d.hiddenTabIndex)
|
2023-11-17 14:08:43 +00:00
|
|
|
|
return
|
2024-01-04 12:05:54 +00:00
|
|
|
|
// FIXME save advanced settings (#13178)
|
2023-11-17 14:08:43 +00:00
|
|
|
|
loader.item.saveSettings()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QtObject {
|
|
|
|
|
id: d
|
|
|
|
|
|
|
|
|
|
readonly property int assetsTabIndex: 0
|
|
|
|
|
readonly property int collectiblesTabIndex: 1
|
2024-01-16 16:22:05 +00:00
|
|
|
|
readonly property int hiddenTabIndex: 2
|
|
|
|
|
readonly property int advancedTabIndex: 3
|
2023-11-17 14:08:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
2024-01-26 15:39:42 +00:00
|
|
|
|
ColumnLayout {
|
|
|
|
|
anchors.fill: parent
|
2023-10-24 11:21:20 +00:00
|
|
|
|
|
2024-01-26 15:39:42 +00:00
|
|
|
|
StatusTabBar {
|
|
|
|
|
id: tabBar
|
2023-10-24 11:21:20 +00:00
|
|
|
|
|
2024-01-26 15:39:42 +00:00
|
|
|
|
Layout.fillWidth: true
|
|
|
|
|
Layout.topMargin: 5
|
|
|
|
|
|
|
|
|
|
StatusTabButton {
|
|
|
|
|
leftPadding: 0
|
|
|
|
|
width: implicitWidth
|
|
|
|
|
text: qsTr("Assets")
|
|
|
|
|
}
|
|
|
|
|
StatusTabButton {
|
|
|
|
|
width: implicitWidth
|
|
|
|
|
text: qsTr("Collectibles")
|
|
|
|
|
}
|
|
|
|
|
StatusTabButton {
|
|
|
|
|
width: implicitWidth
|
|
|
|
|
text: qsTr("Hidden")
|
|
|
|
|
}
|
|
|
|
|
StatusTabButton {
|
|
|
|
|
width: implicitWidth
|
|
|
|
|
text: qsTr("Advanced")
|
|
|
|
|
}
|
2023-10-24 11:21:20 +00:00
|
|
|
|
}
|
|
|
|
|
|
2024-01-26 15:39:42 +00:00
|
|
|
|
// NB: we want to discard any pending unsaved changes when switching tabs or navigating away
|
|
|
|
|
Loader {
|
|
|
|
|
id: loader
|
|
|
|
|
Layout.fillWidth: true
|
|
|
|
|
Layout.fillHeight: true
|
|
|
|
|
active: visible
|
2023-11-17 14:08:43 +00:00
|
|
|
|
|
2024-01-26 15:39:42 +00:00
|
|
|
|
sourceComponent: {
|
|
|
|
|
switch (tabBar.currentIndex) {
|
|
|
|
|
case d.assetsTabIndex:
|
2024-02-13 16:08:38 +00:00
|
|
|
|
return assetsPanel
|
2024-01-26 15:39:42 +00:00
|
|
|
|
case d.collectiblesTabIndex:
|
|
|
|
|
return collectiblesPanel
|
|
|
|
|
case d.hiddenTabIndex:
|
|
|
|
|
return hiddenPanel
|
|
|
|
|
case d.advancedTabIndex:
|
|
|
|
|
return advancedTab
|
|
|
|
|
}
|
2023-11-17 14:08:43 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
2023-10-24 11:21:20 +00:00
|
|
|
|
|
2024-01-26 15:39:42 +00:00
|
|
|
|
Component {
|
2024-02-13 16:08:38 +00:00
|
|
|
|
id: assetsPanel
|
2024-01-26 15:39:42 +00:00
|
|
|
|
ManageAssetsPanel {
|
|
|
|
|
getCurrencyAmount: function (balance, symbol) {
|
|
|
|
|
return root.getCurrencyAmount(balance, symbol)
|
|
|
|
|
}
|
|
|
|
|
getCurrentCurrencyAmount: function (balance) {
|
|
|
|
|
return root.getCurrentCurrencyAmount(balance)
|
|
|
|
|
}
|
|
|
|
|
|
2024-01-31 18:09:44 +00:00
|
|
|
|
controller: root.assetsController
|
2024-01-24 16:35:53 +00:00
|
|
|
|
}
|
2023-10-24 11:21:20 +00:00
|
|
|
|
}
|
|
|
|
|
|
2024-01-26 15:39:42 +00:00
|
|
|
|
Component {
|
|
|
|
|
id: collectiblesPanel
|
|
|
|
|
ManageCollectiblesPanel {
|
2024-01-31 18:09:44 +00:00
|
|
|
|
controller: root.collectiblesController
|
2024-01-26 15:39:42 +00:00
|
|
|
|
}
|
2023-10-24 11:21:20 +00:00
|
|
|
|
}
|
|
|
|
|
|
2024-01-26 15:39:42 +00:00
|
|
|
|
Component {
|
|
|
|
|
id: hiddenPanel
|
|
|
|
|
ManageHiddenPanel {
|
|
|
|
|
getCurrencyAmount: function (balance, symbol) {
|
|
|
|
|
return root.getCurrencyAmount(balance, symbol)
|
|
|
|
|
}
|
|
|
|
|
getCurrentCurrencyAmount: function (balance) {
|
|
|
|
|
return root.getCurrentCurrencyAmount(balance)
|
|
|
|
|
}
|
2024-01-31 18:09:44 +00:00
|
|
|
|
assetsController: root.assetsController
|
|
|
|
|
collectiblesController: root.collectiblesController
|
2024-01-25 18:53:09 +00:00
|
|
|
|
}
|
2024-01-16 16:22:05 +00:00
|
|
|
|
}
|
|
|
|
|
|
2024-01-26 15:39:42 +00:00
|
|
|
|
Component {
|
|
|
|
|
id: advancedTab
|
|
|
|
|
ColumnLayout {
|
2024-02-12 15:38:52 +00:00
|
|
|
|
id: advancedTabColumn
|
|
|
|
|
|
2024-01-26 15:39:42 +00:00
|
|
|
|
spacing: 8
|
|
|
|
|
StatusListItem {
|
|
|
|
|
Layout.fillWidth: true
|
|
|
|
|
title: qsTr("Show community assets when sending tokens")
|
2024-01-04 12:05:54 +00:00
|
|
|
|
|
2024-01-26 15:39:42 +00:00
|
|
|
|
components: [
|
|
|
|
|
StatusSwitch {
|
|
|
|
|
id: showCommunityAssetsSwitch
|
|
|
|
|
checked: true // FIXME integrate with backend (#13178)
|
|
|
|
|
onCheckedChanged: {
|
|
|
|
|
// FIXME integrate with backend (#13178)
|
|
|
|
|
}
|
2024-01-04 12:05:54 +00:00
|
|
|
|
}
|
2024-01-26 15:39:42 +00:00
|
|
|
|
]
|
|
|
|
|
onClicked: {
|
|
|
|
|
showCommunityAssetsSwitch.checked = !showCommunityAssetsSwitch.checked
|
2024-01-04 12:05:54 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
2024-01-26 15:39:42 +00:00
|
|
|
|
StatusDialogDivider {
|
|
|
|
|
Layout.fillWidth: true
|
|
|
|
|
}
|
|
|
|
|
StatusListItem {
|
|
|
|
|
Layout.fillWidth: true
|
|
|
|
|
title: qsTr("Don’t display assets with balance lower than")
|
2024-01-04 12:05:54 +00:00
|
|
|
|
|
2024-01-26 15:39:42 +00:00
|
|
|
|
components: [
|
|
|
|
|
CurrencyAmountInput {
|
|
|
|
|
enabled: displayThresholdSwitch.checked
|
|
|
|
|
currencySymbol: SharedStores.RootStore.currencyStore.currentCurrency
|
|
|
|
|
value: 0.10 // FIXME integrate with backend (#13178)
|
|
|
|
|
},
|
|
|
|
|
StatusSwitch {
|
|
|
|
|
id: displayThresholdSwitch
|
|
|
|
|
checked: false // FIXME integrate with backend (#13178)
|
|
|
|
|
onCheckedChanged: {
|
|
|
|
|
// FIXME integrate with backend (#13178)
|
|
|
|
|
}
|
2024-01-04 12:05:54 +00:00
|
|
|
|
}
|
2024-01-26 15:39:42 +00:00
|
|
|
|
]
|
|
|
|
|
onClicked: {
|
|
|
|
|
displayThresholdSwitch.checked = !displayThresholdSwitch.checked
|
2024-01-04 12:05:54 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
2024-01-26 15:39:42 +00:00
|
|
|
|
StatusDialogDivider {
|
2024-01-22 16:29:05 +00:00
|
|
|
|
Layout.fillWidth: true
|
|
|
|
|
}
|
2024-01-26 15:39:42 +00:00
|
|
|
|
RowLayout {
|
|
|
|
|
Layout.fillWidth: true
|
|
|
|
|
Layout.preferredHeight: 64
|
|
|
|
|
Layout.topMargin: 18
|
2024-02-12 15:38:52 +00:00
|
|
|
|
Layout.bottomMargin: -6
|
2024-01-26 15:39:42 +00:00
|
|
|
|
StatusBaseText {
|
|
|
|
|
Layout.fillWidth: true
|
|
|
|
|
text: qsTr("Token lists")
|
|
|
|
|
color: Style.current.textColor
|
|
|
|
|
}
|
|
|
|
|
StatusBaseText {
|
|
|
|
|
Layout.alignment: Qt.AlignRight
|
2024-02-01 12:01:07 +00:00
|
|
|
|
text: qsTr("Last updated %1 @%2").arg(LocaleUtils.formatDate(root.tokenListUpdatedAt * 1000)).arg(LocaleUtils.formatTime(root.tokenListUpdatedAt, Locale.ShortFormat))
|
2024-02-12 15:38:52 +00:00
|
|
|
|
font.pixelSize: Style.current.additionalTextSize
|
2024-01-26 15:39:42 +00:00
|
|
|
|
color: Style.current.darkGrey
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
SupportedTokenListsPanel {
|
|
|
|
|
Layout.fillWidth: true
|
|
|
|
|
Layout.fillHeight: true
|
|
|
|
|
sourcesOfTokensModel: root.sourcesOfTokensModel
|
|
|
|
|
tokensListModel: root.tokensListModel
|
2024-01-22 16:29:05 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
2023-10-24 11:21:20 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|