198 lines
6.7 KiB
QML
198 lines
6.7 KiB
QML
import QtQuick 2.15
|
|
import QtQuick.Controls 2.15
|
|
import QtQuick.Layouts 1.15
|
|
|
|
import Storybook 1.0
|
|
|
|
import AppLayouts.Wallet 1.0
|
|
import AppLayouts.Wallet.stores 1.0 as WalletStores
|
|
import AppLayouts.Wallet.views.collectibles 1.0
|
|
|
|
import StatusQ.Core.Utils 0.1
|
|
|
|
import shared.controls 1.0
|
|
import shared.stores 1.0
|
|
|
|
import Models 1.0
|
|
import utils 1.0
|
|
|
|
SplitView {
|
|
id: root
|
|
|
|
QtObject {
|
|
function isValidURL(url) {
|
|
return true
|
|
}
|
|
|
|
Component.onCompleted: {
|
|
Utils.globalUtilsInst = this
|
|
}
|
|
Component.onDestruction: {
|
|
Utils.globalUtilsInst = {}
|
|
}
|
|
}
|
|
|
|
QtObject {
|
|
id: d
|
|
|
|
readonly property QtObject collectiblesModel: ManageCollectiblesModel {
|
|
Component.onCompleted: {
|
|
d.refreshCurrentCollectible()
|
|
}
|
|
}
|
|
property var currentCollectible
|
|
|
|
function refreshCurrentCollectible() {
|
|
currentCollectible = ModelUtils.get(collectiblesModel, collectibleComboBox.currentIndex)
|
|
}
|
|
|
|
readonly property QtObject transactionsModel: WalletTransactionsModel{}
|
|
|
|
readonly property string addressesSelected: {
|
|
let supportedAddresses = ""
|
|
for (let i =0; i< accountsRepeater.count; i++) {
|
|
if (accountsRepeater.itemAt(i).checked && accountsRepeater.itemAt(i).visible)
|
|
supportedAddresses += accountsRepeater.itemAt(i).address + ":"
|
|
}
|
|
return supportedAddresses
|
|
}
|
|
}
|
|
|
|
SplitView {
|
|
orientation: Qt.Vertical
|
|
SplitView.fillWidth: true
|
|
Item {
|
|
SplitView.fillWidth: true
|
|
SplitView.fillHeight: true
|
|
|
|
Rectangle {
|
|
anchors.fill: viewLoader
|
|
anchors.margins: -1
|
|
color: "transparent"
|
|
border.width: 1
|
|
border.color: "#808080"
|
|
}
|
|
|
|
Loader {
|
|
id: viewLoader
|
|
anchors.fill: parent
|
|
anchors.margins: 50
|
|
|
|
active: false
|
|
|
|
sourceComponent: CollectibleDetailView {
|
|
collectible: d.currentCollectible
|
|
isCollectibleLoading: isLoadingCheckbox.checked
|
|
activityModel: d.transactionsModel
|
|
addressFilters: d.addressesSelected
|
|
rootStore: QtObject {
|
|
readonly property string currentCurrency: "EUR"
|
|
|
|
function getFiatValue(cryptoValue, symbol) {
|
|
return cryptoValue * 0.1;
|
|
}
|
|
|
|
function formatCurrencyAmount(cryptoValue, symbol) {
|
|
return "%L1 %2".arg(cryptoValue).arg(symbol)
|
|
}
|
|
}
|
|
walletRootStore: QtObject {
|
|
function getNameForAddress(address) {
|
|
return "NAMEFOR: %1".arg(address)
|
|
}
|
|
|
|
function getExplorerNameForNetwork(networkName) {
|
|
return qsTr("%1 Explorer").arg(networkName)
|
|
}
|
|
|
|
readonly property bool showAllAccounts: true
|
|
|
|
function getExplorerUrl(networkShortName, contractAddress, tokenId) {
|
|
let link = Constants.networkExplorerLinks.etherscan
|
|
if (networkShortName === Constants.networkShortChainNames.mainnet) {
|
|
return "%1/nft/%2/%3".arg(link).arg(contractAddress).arg(tokenId)
|
|
}
|
|
else {
|
|
return "%1/token/%2?a=%3".arg(link).arg(contractAddress).arg(tokenId)
|
|
}
|
|
}
|
|
|
|
function getOpenSeaCollectionUrl(networkShortName, contractAddress) {
|
|
let baseLink = root.areTestNetworksEnabled ? Constants.openseaExplorerLinks.testnetLink : Constants.openseaExplorerLinks.mainnetLink
|
|
return "%1/assets/%2/%3".arg(baseLink).arg(networkShortName).arg(contractAddress)
|
|
}
|
|
|
|
function getOpenSeaCollectibleUrl(networkShortName, contractAddress, tokenId) {
|
|
let baseLink = root.areTestNetworksEnabled ? Constants.openseaExplorerLinks.testnetLink : Constants.openseaExplorerLinks.mainnetLink
|
|
return "%1/assets/%2/%3/%4".arg(baseLink).arg(networkShortName).arg(contractAddress).arg(tokenId)
|
|
}
|
|
}
|
|
communitiesStore: QtObject {
|
|
function getCommunityDetailsAsJson(communityId) {
|
|
if (communityId.indexOf("unknown") >= 0) {
|
|
return { name : "", image : "", color : "" }
|
|
}
|
|
return {
|
|
name : "Mock Community",
|
|
image : Style.png("tokens/UNI"),
|
|
color : "orchid"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Component.onCompleted: viewLoader.active = true
|
|
}
|
|
}
|
|
|
|
LogsAndControlsPanel {
|
|
SplitView.minimumHeight: 100
|
|
SplitView.preferredHeight: 150
|
|
|
|
SplitView.fillWidth: true
|
|
}
|
|
}
|
|
|
|
Pane {
|
|
SplitView.minimumWidth: 300
|
|
SplitView.preferredWidth: 300
|
|
|
|
ColumnLayout {
|
|
Label {
|
|
text: "Collectible:"
|
|
}
|
|
ComboBox {
|
|
id: collectibleComboBox
|
|
Layout.fillWidth: true
|
|
textRole: "name"
|
|
model: d.collectiblesModel
|
|
currentIndex: 0
|
|
onCurrentIndexChanged: d.refreshCurrentCollectible()
|
|
}
|
|
CheckBox {
|
|
id: isLoadingCheckbox
|
|
text: "isLoading"
|
|
checked: false
|
|
}
|
|
ColumnLayout {
|
|
Layout.fillWidth: true
|
|
Text {
|
|
text: "select account(s)"
|
|
}
|
|
Repeater {
|
|
id: accountsRepeater
|
|
model: WalletAccountsModel {}
|
|
delegate: CheckBox {
|
|
property string address: model.address
|
|
checked: true
|
|
visible: index<2
|
|
width: parent.width
|
|
text: name
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// category: Wallet
|