Lukáš Tinkl d9d6d90dc9 [Style] remove legacy Style and its themes
- legacy Style and ThemePalette removed
- moved and deduplicated font definitions into `Theme` (unrelated to a
color palette)
- `Style.current.foo` -> `Theme.foo`
- `Style.current.fooColor` -> `Theme.palette.fooColor`
- upgrade the imports to 5.15
- removed some mode dead components

Fixes #16514
2024-10-22 15:54:31 +02:00

159 lines
5.9 KiB
QML

import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Layouts 1.15
import StatusQ.Core 0.1
import StatusQ.Core.Theme 0.1
import StatusQ.Controls 0.1
import StatusQ.Controls.Validators 0.1
import StatusQ.Components 0.1
import utils 1.0
import "../stores"
Item {
id: root
property AddAccountStore store
implicitHeight: layout.implicitHeight
state: root.store.currentState.stateType
Component.onCompleted: {
if (root.store.seedPhraseWord1WordNumber === -1) {
let randomNo1 = Math.floor(Math.random() * 12)
let randomNo2 = randomNo1
while (randomNo2 == randomNo1) {
randomNo2 = Math.floor(Math.random() * 12)
}
if (randomNo1 < randomNo2) {
root.store.seedPhraseWord1WordNumber = randomNo1
root.store.seedPhraseWord2WordNumber = randomNo2
}
else {
root.store.seedPhraseWord1WordNumber = randomNo2
root.store.seedPhraseWord2WordNumber = randomNo1
}
}
}
onStateChanged: {
d.updateEntry()
}
QtObject {
id: d
readonly property int step: root.store.currentState.stateType === Constants.addAccountPopup.state.enterSeedPhraseWord1? 2 : 3
readonly property var seedPhrase: root.store.getSeedPhrase().split(" ")
function updateEntry() {
if (root.store.currentState.stateType === Constants.addAccountPopup.state.enterSeedPhraseWord1) {
if (!root.store.seedPhraseWord1Valid) {
if (word.text.trim() !== "") {
word.reset()
}
}
else if (root.store.seedPhraseWord1WordNumber >= -1 && root.store.seedPhraseWord1WordNumber < d.seedPhrase.length) {
word.text = d.seedPhrase[root.store.seedPhraseWord1WordNumber]
}
}
else {
if (!root.store.seedPhraseWord2Valid) {
if (word.text.trim() !== "") {
word.reset()
}
}
else if (root.store.seedPhraseWord2WordNumber >= -1 && root.store.seedPhraseWord2WordNumber < d.seedPhrase.length) {
word.text = d.seedPhrase[root.store.seedPhraseWord2WordNumber]
}
}
word.validate()
}
function processText(text) {
if(text.length === 0)
return ""
if(/(^\s|^\r|^\n)|(\s$|^\r$|^\n$)/.test(text)) {
return text.trim()
}
else if(/\s|\r|\n/.test(text)) {
return ""
}
return text
}
}
ColumnLayout {
id: layout
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width - 2 * Theme.padding
spacing: Theme.halfPadding
StatusStepper {
Layout.preferredWidth: Constants.addAccountPopup.stepperWidth
Layout.preferredHeight: Constants.addAccountPopup.stepperHeight
Layout.topMargin: Theme.padding
Layout.alignment: Qt.AlignCenter
title: qsTr("Step %1 of 4").arg(d.step)
titleFontSize: Constants.addAccountPopup.labelFontSize1
totalSteps: 4
completedSteps: d.step
leftPadding: 0
rightPadding: 0
}
StatusBaseText {
Layout.preferredWidth: parent.width
Layout.alignment: Qt.AlignCenter
horizontalAlignment: Text.AlignHCenter
font.pixelSize: Constants.addAccountPopup.labelFontSize1
color: Theme.palette.directColor1
text: qsTr("Confirm word #%1 of your seed phrase").arg(root.store.currentState.stateType === Constants.addAccountPopup.state.enterSeedPhraseWord1?
root.store.seedPhraseWord1WordNumber + 1 :
root.store.seedPhraseWord2WordNumber + 1)
}
StatusInput {
id: word
objectName: "AddAccountPopup-EnterSeedPhraseWord"
Layout.fillWidth: true
Layout.topMargin: Theme.xlPadding
validationMode: StatusInput.ValidationMode.Always
label: qsTr("Word #%1").arg(root.store.currentState.stateType === Constants.addAccountPopup.state.enterSeedPhraseWord1?
root.store.seedPhraseWord1WordNumber + 1 :
root.store.seedPhraseWord2WordNumber + 1)
placeholderText: qsTr("Enter word")
validators: [
StatusValidator {
validate: function (t) {
if (!d.seedPhrase || d.seedPhrase.length === 0 || word.text.length === 0)
return false
if (root.store.currentState.stateType === Constants.addAccountPopup.state.enterSeedPhraseWord1) {
return (d.seedPhrase[root.store.seedPhraseWord1WordNumber] === word.text)
}
return (d.seedPhrase[root.store.seedPhraseWord2WordNumber] === word.text)
}
errorMessage: (word.text.length) > 0 ? qsTr("Incorrect word") : ""
}
]
input.tabNavItem: word.input.edit
onTextChanged: {
text = d.processText(text)
if (root.store.currentState.stateType === Constants.addAccountPopup.state.enterSeedPhraseWord1) {
root.store.seedPhraseWord1Valid = word.valid
return
}
root.store.seedPhraseWord2Valid = word.valid
}
onKeyPressed: {
root.store.submitPopup(event)
}
}
}
}