import QtQuick; import QtQuick.Controls.Basic as QQC2 import Flowee.org.pay; import "../Flowee" as Flowee; import "../mobile" as Mobile; import Flowee.org.pay.backup; Mobile.Page { id: root headerText: qsTr("Create NFC backup") required property QtObject pageData Item { id: data property bool writeSuccess: false NFC { id: nfc account: root.pageData onNfcStatusChanged: { let status = nfcStatus if (status == Wallet.NFC_WriteSuccess) { data.writeSuccess = true errorLabel.writeError = 0; closeButton.isMainButton = true } else if (status != Wallet.NFC_WriteWait) { errorLabel.writeError = status; } } } Timer { interval: 200 running: nfc.nfcStatus != Wallet.NFC_Disabled repeat: false onTriggered: nfc.start() } } Flowee.Label { width: parent.width wrapMode: Text.WrapAtWordBoundaryOrAnywhere text: qsTr("Store your wallet seed on an simple NFC tag for offline backup. A seed can be used to re-start your wallet and get back any money in it.") } Flowee.Label { text: nfc.nfcStatus anchors.right: parent.right anchors.bottom: parent.bottom opacity: 0.6 } Image { id: tag anchors.horizontalCenter: parent.horizontalCenter y: 200 source: "qrc:/backup-sync/nfc-tag.svg" width: 90 height: 90 } Flowee.Label { id: infoLabel anchors.top: tag.bottom anchors.topMargin: 20 anchors.horizontalCenter: parent.horizontalCenter width: parent.width * 0.7 horizontalAlignment: Text.AlignHCenter wrapMode: Text.WrapAtWordBoundaryOrAnywhere font.pixelSize: root.font.pixelSize * 1.3 text: data.writeSuccess ? qsTr("Success!") : qsTr("To write, bring the NFC tag near your device.") visible: nfc.nfcStatus != Wallet.NFC_Disabled } Flowee.Label { id: errorLabel anchors.top: infoLabel.bottom anchors.topMargin: 20 anchors.horizontalCenter: parent.horizontalCenter width: parent.width / 3 * 2 horizontalAlignment: Text.AlignHCenter wrapMode: Text.WrapAtWordBoundaryOrAnywhere font.pixelSize: root.font.pixelSize * 1.1 property int writeError: 0 color: mainWindow.errorRed text: { let e = writeError; if (e === Wallet.NFC_WriteFailTagInvalid) return qsTr("Invalid NFC tag") if (e === Wallet.NFC_WriteFailRO) return qsTr("Tag read-only. Try another.") // our files are so tiny, this should not happen. if (e === Wallet.NFC_WriteFailSize) return "Tag is full. Try another" if (e === Wallet.NFC_WriteFailOther) return qsTr("Write failed. Try again.") if (nfc.nfcStatus === Wallet.NFC_Disabled) return qsTr("NFC disabled, please enable in settings") return ""; } } Flowee.Button { anchors.top: errorLabel.bottom anchors.right: parent.right text: qsTr("Settings") visible: nfc.nfcStatus === Wallet.NFC_Disabled onClicked: nfc.openSettings(); } Flowee.BigButton { id: closeButton anchors.bottom: parent.bottom anchors.bottomMargin: 20 anchors.horizontalCenter: parent.horizontalCenter text: (data.writeSuccess || nfc.nfcStatus == Wallet.NFC_Disabled) ? qsTr("Close") : qsTr("Cancel") onClicked: { thePile.pop(); thePile.pop(); } } }