107 lines
3.4 KiB
QML
107 lines
3.4 KiB
QML
import QtQuick 2.13
|
|
import QtQuick.Controls 2.13
|
|
import QtQuick.Layouts 1.13
|
|
import StatusQ.Controls.Validators 0.1
|
|
|
|
import utils 1.0
|
|
|
|
import StatusQ.Controls 0.1
|
|
import StatusQ.Popups 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 "../controls"
|
|
import "../views"
|
|
|
|
StatusFloatingButtonsSelector {
|
|
id: root
|
|
|
|
property var locale
|
|
property var selectedAccount
|
|
// Expected signature: function(newAccount, newIndex)
|
|
property var changeSelectedAccount: function(){}
|
|
property bool showAllWalletTypes: false
|
|
|
|
repeater.objectName: "accountsListFloatingHeader"
|
|
|
|
signal updatedSelectedAccount(var account)
|
|
|
|
QtObject {
|
|
id: d
|
|
property var firstModelData: null
|
|
|
|
function isWalletTypeAccepted(walletType, index) {
|
|
return (root.showAllWalletTypes || walletType !== Constants.watchWalletType)
|
|
}
|
|
}
|
|
|
|
delegate: Rectangle {
|
|
width: button.width
|
|
height: button.height
|
|
radius: 8
|
|
visible: root.visibleIndices.includes(index) && d.isWalletTypeAccepted(walletType, index)
|
|
color: Theme.palette.baseColor3
|
|
StatusButton {
|
|
id: button
|
|
size: StatusBaseButton.Size.Tiny
|
|
implicitHeight: 32
|
|
leftPadding: 4
|
|
text: name
|
|
objectName: name
|
|
asset.emoji: !!emoji ? emoji: ""
|
|
icon.name: !emoji ? "filled-account": ""
|
|
normalColor: "transparent"
|
|
hoverColor: Theme.palette.statusFloatingButtonHighlight
|
|
highlighted: index === root.currentIndex
|
|
onClicked: {
|
|
changeSelectedAccount(model, index)
|
|
root.currentIndex = index
|
|
}
|
|
Component.onCompleted: {
|
|
// On startup make the preseected wallet in the floating menu,
|
|
// and if the selectedAccount is watch only then select 0th item
|
|
if(index === 0) {
|
|
d.firstModelData = model
|
|
}
|
|
|
|
if(name !== root.selectedAccount.name) {
|
|
return
|
|
}
|
|
|
|
if(name === root.selectedAccount.name) {
|
|
if(d.isWalletTypeAccepted(walletType, index)) {
|
|
// If the selected index wont be displayed, added it to the visible indices
|
|
if(index > 2) {
|
|
visibleIndices = [0, 1, index]
|
|
}
|
|
root.currentIndex = index
|
|
}
|
|
else {
|
|
changeSelectedAccount(root.selectedAccount, 0)
|
|
root.currentIndex = 0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
popupMenuDelegate: StatusListItem {
|
|
implicitWidth: 272
|
|
title: name
|
|
subTitle: LocaleUtils.currencyAmountToLocaleString(currencyBalance, locale)
|
|
asset.emoji: !!emoji ? emoji: ""
|
|
asset.color: model.color
|
|
asset.name: !emoji ? "filled-account": ""
|
|
asset.letterSize: 14
|
|
asset.isLetterIdenticon: !!model.emoji
|
|
asset.bgColor: Theme.palette.indirectColor1
|
|
onClicked: {
|
|
changeSelectedAccount(model, index)
|
|
root.selectItem(index)
|
|
}
|
|
visible: !root.visibleIndices.includes(index) && d.isWalletTypeAccepted(walletType, index)
|
|
}
|
|
}
|
|
|