status-desktop/ui/app/AppLayouts/Profile/views/wallet/MainView.qml

168 lines
4.2 KiB
QML
Raw Normal View History

import QtQuick 2.13
import SortFilterProxyModel 0.2
import utils 1.0
import shared.status 1.0
import shared.panels 1.0
import StatusQ.Core.Theme 0.1
import StatusQ.Core 0.1
import StatusQ.Components 0.1
import "../../stores"
2022-03-01 14:40:53 +00:00
import "../../controls"
import "../../popups"
Column {
id: root
property WalletStore walletStore
signal goToNetworksView()
signal goToAccountView(var account)
signal goToDappPermissionsView()
Component.onCompleted: {
// TODO remove this call and handle it from the backend
// once the profile is refactored and the navigation is driven from the backend
root.walletStore.loadDapps()
}
Separator {
height: 17
}
StatusListItem {
title: qsTr("DApp Permissions")
height: 64
width: parent.width
onClicked: goToDappPermissionsView()
label: qsTr("%n DApp(s) connected", "", root.walletStore.dappList.count)
components: [
StatusIcon {
icon: "chevron-down"
rotation: 270
color: Theme.palette.baseColor1
}
]
}
Separator {
height: 17
}
StatusListItem {
2022-07-21 12:15:02 +00:00
objectName: "networksItem"
title: qsTr("Networks")
height: 64
width: parent.width
onClicked: goToNetworksView()
components: [
StatusIcon {
icon: "chevron-down"
rotation: 270
color: Theme.palette.baseColor1
}
]
}
Separator {
height: 17
}
StatusDescriptionListItem {
height: 64
subTitle: qsTr("Accounts")
}
StatusSectionHeadline {
text: qsTr("Generated from Your Seed Phrase")
leftPadding: Style.current.padding
topPadding: Style.current.halfPadding
bottomPadding: Style.current.halfPadding/2
}
ListView {
width: parent.width
height: childrenRect.height
objectName: "generatedAccounts"
model: SortFilterProxyModel {
sourceModel: walletStore.accounts
filters: ExpressionFilter {
expression: {
return model.walletType === "generated" || model.walletType === ""
}
}
}
2022-03-01 14:40:53 +00:00
delegate: WalletAccountDelegate {
width: ListView.view.width
2022-03-01 14:40:53 +00:00
account: model
onGoToAccountView: {
root.goToAccountView(model)
}
}
}
SortFilterProxyModel {
id: importedAccounts
sourceModel: walletStore.accounts
filters: ExpressionFilter {
expression: {
return model.walletType !== "generated" && model.walletType !== "watch" && model.walletType !== ""
}
2022-03-01 14:40:53 +00:00
}
}
StatusSectionHeadline {
text: qsTr("Imported")
leftPadding: Style.current.padding
topPadding: Style.current.halfPadding
bottomPadding: Style.current.halfPadding/2
visible: importedAccounts.count > 0
}
2022-03-01 14:40:53 +00:00
Repeater {
model: importedAccounts
2022-03-01 14:40:53 +00:00
delegate: WalletAccountDelegate {
width: ListView.view.width
2022-03-01 14:40:53 +00:00
account: model
onGoToAccountView: {
root.goToAccountView(model)
}
2022-03-01 14:40:53 +00:00
}
}
SortFilterProxyModel {
id: watchOnlyAccounts
sourceModel: walletStore.accounts
filters: ValueFilter {
roleName: "walletType"
value: "watch"
}
}
StatusSectionHeadline {
text: qsTr("Watch-Only")
leftPadding: Style.current.padding
topPadding: Style.current.halfPadding
bottomPadding: Style.current.halfPadding/2
visible: watchOnlyAccounts.count > 0
}
2022-03-01 14:40:53 +00:00
Repeater {
model: watchOnlyAccounts
2022-03-01 14:40:53 +00:00
delegate: WalletAccountDelegate {
width: ListView.view.width
2022-03-01 14:40:53 +00:00
account: model
onGoToAccountView: {
root.goToAccountView(model)
}
2022-03-01 14:40:53 +00:00
}
}
2022-03-16 12:54:00 +00:00
// Adding padding to the end so that when the view is scrolled to the end there is some gap left
Item {
height: Style.current.bigPadding
width: parent.width
}
}