diff --git a/ui/app/AppLayouts/Chat/panels/communities/CommunityEditSettingsPanel.qml b/ui/app/AppLayouts/Chat/panels/communities/CommunityEditSettingsPanel.qml
index 8f088d2828..58e58bdde3 100644
--- a/ui/app/AppLayouts/Chat/panels/communities/CommunityEditSettingsPanel.qml
+++ b/ui/app/AppLayouts/Chat/panels/communities/CommunityEditSettingsPanel.qml
@@ -91,6 +91,7 @@ Flickable {
StatusStackModal {
anchors.centerIn: parent
+ width: 640
replaceItem: CommunityColorPanel {
Component.onCompleted: color = colorPicker.color
onAccepted: {
@@ -113,6 +114,7 @@ Flickable {
StatusStackModal {
anchors.centerIn: parent
+ width: 640
replaceItem: CommunityTagsPanel {
Component.onCompleted: {
tags = tagsPicker.tags;
diff --git a/ui/app/AppLayouts/CommunitiesPortal/popups/CreateCommunityPopup.qml b/ui/app/AppLayouts/CommunitiesPortal/popups/CreateCommunityPopup.qml
index 7803c2da93..6b792f300f 100644
--- a/ui/app/AppLayouts/CommunitiesPortal/popups/CreateCommunityPopup.qml
+++ b/ui/app/AppLayouts/CommunitiesPortal/popups/CreateCommunityPopup.qml
@@ -26,6 +26,13 @@ StatusStackModal {
property var store
stackTitle: qsTr("Create New Community")
+ width: 640
+
+ nextButton: StatusButton {
+ text: qsTr("Next")
+ enabled: nameInput.valid && descriptionTextInput.valid
+ onClicked: currentIndex++
+ }
finishButton: StatusButton {
text: qsTr("Create Community")
@@ -36,9 +43,6 @@ StatusStackModal {
stackItems: [
Flickable {
id: generalView
-
- readonly property bool canGoNext: nameInput.valid && descriptionTextInput.valid
-
clip: true
contentHeight: generalViewLayout.height
implicitHeight: generalViewLayout.implicitHeight
@@ -125,7 +129,6 @@ StatusStackModal {
},
ColumnLayout {
id: introOutroMessageView
-
spacing: 12
CommunityIntroMessageInput {
diff --git a/ui/app/AppLayouts/Profile/popups/BackupSeedModal.qml b/ui/app/AppLayouts/Profile/popups/BackupSeedModal.qml
index 879e22993e..b036ec424c 100644
--- a/ui/app/AppLayouts/Profile/popups/BackupSeedModal.qml
+++ b/ui/app/AppLayouts/Profile/popups/BackupSeedModal.qml
@@ -14,102 +14,113 @@ import StatusQ.Core.Theme 0.1
import "backupseed"
-StatusModal {
- id: popup
- width: 480
- height: 748
- header.title: qsTr("Back up your seed phrase")
+StatusStackModal {
+ id: root
property var privacyStore
- rightButtons: [
- StatusFlatButton {
- text: "Not Now"
- visible: (stack.currentIndex === 0)
+ QtObject {
+ id: d
+
+ readonly property int firstRandomNo: getRandomWordNumber()
+ readonly property int secondRandomNo: {
+ var num = firstRandomNo;
+ while (num === firstRandomNo) {
+ num = getRandomWordNumber();
+ }
+ return num;
+ }
+
+ property alias seedHidden: confirmSeedPhrase.hideSeed
+ property alias seedStored: confirmStoringSeedPhrase.seedStored
+
+ property alias validFirstSeedWord: confirmFirstWord.inputValid
+ property alias validSecondSeedWord: confirmSecondWord.inputValid
+
+ property Item skipButton: StatusButton {
+ visible: currentIndex === 0
border.color: Theme.palette.baseColor2
- onClicked: {
- popup.close();
- }
- },
- StatusButton {
- enabled: {
- if (stack.currentIndex === 0) {
- return acknowledgment.allAccepted;
- } else {
- switch (backUp.bar.currentIndex) {
- case 0:
- return !backUp.seedHidden;
- case 1:
- return backUp.validFirstSeedWord;
- case 2:
- return backUp.validSecondSeedWord;
- case 3:
- return backUp.seedStored;
- default:
- return true;
- }
- }
- }
- text: {
- if (stack.currentIndex === 1) {
- if (backUp.bar.currentIndex === 0) {
- return qsTr("Confirm Seed Phrase");
- } else if (backUp.bar.currentIndex === 1 ||
- backUp.bar.currentIndex === 2) {
- return qsTr("Continue");
- } else {
- return qsTr("Complete & Delete My Seed Phrase");
- }
- } else {
- return qsTr("Confirm Seed Phrase");
- }
- }
- onClicked: {
- if (stack.currentIndex === 0) {
- stack.currentIndex = 1;
- } else {
- switch (backUp.bar.currentIndex) {
- case 0:
- case 1:
- case 2:
- backUp.bar.currentIndex++;
- break;
- case 3:
- popup.privacyStore.removeMnemonic();
- popup.close();
- break;
- }
- }
- }
+ text: qsTr("Not Now")
+ onClicked: root.close()
}
- ]
- leftButtons: [
- StatusRoundButton {
- visible: (stack.currentIndex === 1)
- icon.name: "arrow-right"
- rotation: 180
- onClicked: {
- if (backUp.bar.currentIndex === 0) {
- stack.currentIndex = 0;
- } else {
- backUp.bar.currentIndex--;
- }
- }
+ function getRandomWordNumber() {
+ return Math.floor(Math.random() * 12);
}
- ]
-
- contentItem: StackLayout {
- id: stack
- anchors.left: parent.left
- anchors.leftMargin: Style.current.padding
- anchors.right: parent.right
- anchors.rightMargin: Style.current.padding
- anchors.top: parent.top
- anchors.topMargin: 80
- anchors.bottom: parent.bottom
- anchors.bottomMargin: 88
- Acknowledgements { id: acknowledgment }
- Backup { id: backUp; privacyStore: popup.privacyStore }
}
+
+ width: 480
+ header.title: qsTr("Back up your seed phrase")
+ rightButtons: [ nextButton, finishButton, d.skipButton ]
+
+ nextButton: StatusButton {
+ enabled: {
+ switch (root.currentIndex) {
+ case 0:
+ return acknowledgment.allAccepted;
+ case 1:
+ return !d.seedHidden;
+ case 2:
+ return d.validFirstSeedWord;
+ case 3:
+ return d.validSecondSeedWord;
+ default:
+ return true;
+ }
+ }
+ text: {
+ switch (root.currentIndex) {
+ case 0:
+ case 1:
+ return qsTr("Confirm Seed Phrase");
+ case 2:
+ case 3:
+ return qsTr("Continue");;
+ default:
+ return "";
+ }
+ }
+ onClicked: root.currentIndex++
+ }
+
+ finishButton: StatusButton {
+ text: qsTr("Complete & Delete My Seed Phrase")
+ enabled: d.seedStored
+ onClicked: {
+ root.privacyStore.removeMnemonic();
+ root.close();
+ }
+ }
+
+ subHeaderItem: SubheaderTabBar {
+ // Count without Acknowledgements
+ steps: root.itemsCount - 1
+ currentIndex: root.currentIndex - 1
+ visible: root.currentIndex > 0
+ }
+
+ stackItems: [
+ Acknowledgements {
+ id: acknowledgment
+ },
+ ConfirmSeedPhrasePanel {
+ id: confirmSeedPhrase
+ seedPhrase: root.privacyStore.getMnemonic().split(" ")
+ },
+ BackupSeedStepBase {
+ id: confirmFirstWord
+ titleText: qsTr("Confirm word #%1 of your seed phrase").arg(d.firstRandomNo + 1)
+ wordRandomNumber: d.firstRandomNo
+ wordAtRandomNumber: root.privacyStore.getMnemonicWordAtIndex(d.firstRandomNo)
+ },
+ BackupSeedStepBase {
+ id: confirmSecondWord
+ titleText: qsTr("Confirm word #%1 of your seed phrase").arg(d.secondRandomNo + 1)
+ wordRandomNumber: d.secondRandomNo
+ wordAtRandomNumber: root.privacyStore.getMnemonicWordAtIndex(d.secondRandomNo)
+ },
+ ConfirmStoringSeedPhrasePanel {
+ id: confirmStoringSeedPhrase
+ }
+ ]
}
diff --git a/ui/app/AppLayouts/Profile/popups/backupseed/Acknowledgements.qml b/ui/app/AppLayouts/Profile/popups/backupseed/Acknowledgements.qml
index 4c8685afac..99e7db24e0 100644
--- a/ui/app/AppLayouts/Profile/popups/backupseed/Acknowledgements.qml
+++ b/ui/app/AppLayouts/Profile/popups/backupseed/Acknowledgements.qml
@@ -3,89 +3,96 @@ import QtQuick.Layouts 1.12
import StatusQ.Controls 0.1
import StatusQ.Core.Theme 0.1
+
import shared.panels 1.0
import utils 1.0
-Item {
- anchors.fill: parent
- objectName: "acknowledgment"
- property bool allAccepted: (havePen.checked && writeDown.checked && storeIt.checked)
- Image {
- id: keysImg
- width: 120
- height: 120
- anchors.horizontalCenter: parent.horizontalCenter
- anchors.top: parent.top
- fillMode: Image.PreserveAspectFit
- source: Style.png("onboarding/keys")
- mipmap: true
- }
+ColumnLayout {
+ id: root
- StyledText {
- id: txtTitle
- text: qsTr("Secure Your Assets and Funds")
- horizontalAlignment: Text.AlignHCenter
- wrapMode: Text.WordWrap
- anchors.right: parent.right
- anchors.left: parent.left
- font.bold: true
- anchors.top: keysImg.bottom
- anchors.topMargin: Style.current.padding
- font.pixelSize: 22
- }
+ readonly property bool allAccepted: havePen.checked && writeDown.checked && storeIt.checked
- StyledText {
- id: txtDesc
- anchors.top: txtTitle.bottom
- anchors.topMargin: Style.current.padding
- anchors.horizontalCenter: parent.horizontalCenter
- font.pixelSize: Style.current.primaryTextFontSize
- font.letterSpacing: -0.2
- text: qsTr("Your seed phrase is a 12-word passcode to your funds.")
- }
+ spacing: Style.current.padding
+ implicitHeight: 520
- StyledText {
- id: secondTxtDesc
- anchors.right: parent.right
- anchors.rightMargin: Style.current.padding
- anchors.leftMargin: Style.current.padding
- anchors.left: parent.left
- anchors.top: txtDesc.bottom
- anchors.topMargin: Style.current.bigPadding
- horizontalAlignment: Text.AlignHCenter
- wrapMode: Text.WordWrap
- textFormat: Text.RichText
- font.pixelSize: Style.current.primaryTextFontSize
- text: qsTr("Your seed phrase cannot be recovered if lost. Therefore, you must back it up. The simplest way is to write it down offline and store it somewhere secure.")
- }
+ Flickable {
+ id: flick
+ clip: true
+ contentHeight: flickLayout.height
+ implicitHeight: flickLayout.implicitHeight
+ interactive: contentHeight > height
+ flickableDirection: Flickable.VerticalFlick
+ Layout.fillWidth: true
+ Layout.fillHeight: true
- ColumnLayout {
- anchors.topMargin: 49
- anchors.horizontalCenter: parent.horizontalCenter
- anchors.top: secondTxtDesc.bottom
- spacing: Style.current.padding
- StatusCheckBox {
- id: havePen
+ ColumnLayout {
+ id: flickLayout
width: parent.width
- text: qsTr("I have a pen and paper")
- }
- StatusCheckBox {
- id: writeDown
- width: parent.width
- text: qsTr("I am ready to write down my seed phrase")
- }
- StatusCheckBox {
- id: storeIt
- width: parent.width
- text: qsTr("I know where I’ll store it")
+ spacing: Style.current.padding
+
+ Image {
+ id: keysImg
+ fillMode: Image.PreserveAspectFit
+ source: Style.png("onboarding/keys")
+ mipmap: true
+ Layout.alignment: Qt.AlignHCenter
+ Layout.preferredWidth: 120
+ Layout.preferredHeight: width
+ }
+
+ StyledText {
+ id: txtTitle
+ text: qsTr("Secure Your Assets and Funds")
+ horizontalAlignment: Text.AlignHCenter
+ wrapMode: Text.WordWrap
+ font.bold: true
+ font.pixelSize: 22
+ Layout.fillWidth: true
+ }
+
+ StyledText {
+ id: txtDesc
+ font.pixelSize: Style.current.primaryTextFontSize
+ font.letterSpacing: -0.2
+ text: qsTr("Your seed phrase is a 12-word passcode to your funds.")
+ Layout.fillWidth: true
+ }
+
+ StyledText {
+ id: secondTxtDesc
+ horizontalAlignment: Text.AlignHCenter
+ wrapMode: Text.WordWrap
+ textFormat: Text.RichText
+ font.pixelSize: Style.current.primaryTextFontSize
+ text: qsTr("Your seed phrase cannot be recovered if lost. Therefore, you must back it up. The simplest way is to write it down offline and store it somewhere secure.")
+ Layout.fillWidth: true
+ }
+
+ StatusCheckBox {
+ id: havePen
+ text: qsTr("I have a pen and paper")
+ Layout.fillWidth: true
+ }
+
+ StatusCheckBox {
+ id: writeDown
+ text: qsTr("I am ready to write down my seed phrase")
+ Layout.fillWidth: true
+ }
+
+ StatusCheckBox {
+ id: storeIt
+ text: qsTr("I know where I’ll store it")
+ Layout.fillWidth: true
+ }
}
}
- Item {
- width: parent.width
- height: 60
- anchors.bottom: parent.bottom
- anchors.horizontalCenter: parent.horizontalCenter
+ Rectangle {
+ color: Theme.palette.statusModal.backgroundColor
+ Layout.fillWidth: true
+ Layout.preferredHeight: 60
+
StyledText {
anchors.fill: parent
anchors.margins: Style.current.halfPadding
@@ -96,6 +103,7 @@ Item {
color: Theme.palette.dangerColor1
text: qsTr("You can only complete this process once. Status will not store your seed phrase and can never help you recover it.")
}
+
Rectangle {
anchors.fill: parent
radius: 8
@@ -103,4 +111,4 @@ Item {
opacity: 0.1
}
}
-}
+}
\ No newline at end of file
diff --git a/ui/app/AppLayouts/Profile/popups/backupseed/Backup.qml b/ui/app/AppLayouts/Profile/popups/backupseed/Backup.qml
deleted file mode 100644
index 71f9853582..0000000000
--- a/ui/app/AppLayouts/Profile/popups/backupseed/Backup.qml
+++ /dev/null
@@ -1,79 +0,0 @@
-import QtQuick 2.12
-import QtQuick.Layouts 1.12
-import QtQuick.Controls 2.12
-import StatusQ.Core.Theme 0.1
-
-import shared.panels 1.0
-import utils 1.0
-
-Item {
- id: root
- property var privacyStore
- property alias bar: bar
- property alias seedHidden: confirmSeedPhrase.hideSeed
- property alias seedStored: confirmStoringSeedPhrase.seedStored
- property int firstRandomNo: Math.floor(Math.random() * 12)
- property alias validFirstSeedWord: confirmFirstWord.inputValid
- property alias validSecondSeedWord: confirmSecondWord.inputValid
- property int secondRandomNo: {
- var num = Math.floor(Math.random() * 12);
- return (num === firstRandomNo) ? Math.floor(Math.random() * 12) : num;
- }
-
- anchors.fill: parent
-
- StyledText {
- id: txtDesc
- anchors.right: parent.right
- anchors.left: parent.left
- horizontalAlignment: Text.AlignHCenter
- wrapMode: Text.WordWrap
- font.pixelSize: Style.current.additionalTextSize
- color: Style.current.secondaryText
- text: qsTr("Step " + (bar.currentIndex+1) + " of " + bar.count)
- }
-
- TabBar {
- id: bar
- width: (59 * count)
- height: 4
- anchors.top: txtDesc.bottom
- anchors.topMargin: Style.current.halfPadding
- anchors.horizontalCenter: parent.horizontalCenter
- spacing: 2
- background: null
- TabBarButton { index: 0; currentIndex: bar.currentIndex }
- TabBarButton { index: 1; currentIndex: bar.currentIndex }
- TabBarButton { index: 2; currentIndex: bar.currentIndex }
- TabBarButton { index: 3; currentIndex: bar.currentIndex }
- }
-
- StackLayout {
- id: stack
- anchors.top: bar.bottom
- anchors.topMargin: Style.current.halfPadding
- anchors.bottom: parent.bottom
- anchors.left: parent.left
- anchors.leftMargin: Style.current.padding
- anchors.right: parent.right
- anchors.rightMargin: Style.current.padding
- currentIndex: bar.currentIndex
- ConfirmSeedPhrasePanel {
- id: confirmSeedPhrase
- seedPhrase: root.privacyStore.getMnemonic().split(" ")
- }
- BackupSeedStepBase {
- id: confirmFirstWord
- titleText: qsTr("Confirm word #" + (root.firstRandomNo+1) + " of your seed phrase")
- wordRandomNumber: root.firstRandomNo
- wordAtRandomNumber: root.privacyStore.getMnemonicWordAtIndex(root.firstRandomNo)
- }
- BackupSeedStepBase {
- id: confirmSecondWord
- titleText: qsTr("Confirm word #" + (root.secondRandomNo+1) + " of your seed phrase")
- wordRandomNumber: root.secondRandomNo
- wordAtRandomNumber: root.privacyStore.getMnemonicWordAtIndex(root.secondRandomNo)
- }
- ConfirmStoringSeedPhrasePanel { id: confirmStoringSeedPhrase }
- }
-}
diff --git a/ui/app/AppLayouts/Profile/popups/backupseed/BackupSeedStepBase.qml b/ui/app/AppLayouts/Profile/popups/backupseed/BackupSeedStepBase.qml
index c885b749ee..8d3667dfb2 100644
--- a/ui/app/AppLayouts/Profile/popups/backupseed/BackupSeedStepBase.qml
+++ b/ui/app/AppLayouts/Profile/popups/backupseed/BackupSeedStepBase.qml
@@ -1,42 +1,58 @@
import QtQuick 2.12
import QtQuick.Controls 2.12
+import QtQuick.Layouts 1.12
+
import StatusQ.Controls 0.1
-import shared.panels 1.0
import StatusQ.Controls.Validators 0.1
+
+import shared.panels 1.0
import utils 1.0
-Item {
+Flickable {
+ id: root
+
property int wordRandomNumber: -1
property string wordAtRandomNumber
property bool secondWordValid: true
property alias titleText: txtTitle.text
property alias inputValid: inputText.valid
- StyledText {
- id: txtTitle
- anchors.right: parent.right
- anchors.left: parent.left
- horizontalAlignment: Text.AlignHCenter
- wrapMode: Text.WordWrap
- font.pixelSize: Style.current.primaryTextFontSize
- }
+ default property alias content: column.children
- StatusInput {
- id: inputText
- visible: (wordRandomNumber > -1)
- implicitWidth: 448
- input.implicitHeight: 44
- anchors.top: parent.top
- anchors.topMargin: 40
- anchors.horizontalCenter: parent.horizontalCenter
- validationMode: StatusInput.ValidationMode.Always
- label: qsTr("Word #" + (wordRandomNumber+1))
- input.placeholderText: qsTr("Enter word")
- validators: [
- StatusValidator {
- validate: function (t) { return (wordAtRandomNumber === inputText.text); }
- errorMessage: (inputText.text.length) > 0 ? qsTr("Wrong word") : ""
- }
- ]
+ clip: true
+ contentHeight: column.height
+ implicitHeight: 520
+ interactive: contentHeight > height
+ flickableDirection: Flickable.VerticalFlick
+
+ ColumnLayout {
+ id: column
+ width: parent.width
+ spacing: Style.current.padding
+
+ StyledText {
+ id: txtTitle
+ horizontalAlignment: Text.AlignHCenter
+ wrapMode: Text.WordWrap
+ font.pixelSize: Style.current.primaryTextFontSize
+ Layout.fillWidth: true
+ }
+
+ StatusInput {
+ id: inputText
+ visible: (wordRandomNumber > -1)
+ implicitWidth: 448
+ input.implicitHeight: 44
+ validationMode: StatusInput.ValidationMode.Always
+ label: qsTr("Word #%1").arg(wordRandomNumber + 1)
+ input.placeholderText: qsTr("Enter word")
+ validators: [
+ StatusValidator {
+ validate: function (t) { return (root.wordAtRandomNumber === inputText.text); }
+ errorMessage: (inputText.text.length) > 0 ? qsTr("Wrong word") : ""
+ }
+ ]
+ Layout.fillWidth: true
+ }
}
}
diff --git a/ui/app/AppLayouts/Profile/popups/backupseed/ConfirmSeedPhrasePanel.qml b/ui/app/AppLayouts/Profile/popups/backupseed/ConfirmSeedPhrasePanel.qml
index 1a51f807c9..7d3b03fa75 100644
--- a/ui/app/AppLayouts/Profile/popups/backupseed/ConfirmSeedPhrasePanel.qml
+++ b/ui/app/AppLayouts/Profile/popups/backupseed/ConfirmSeedPhrasePanel.qml
@@ -1,69 +1,72 @@
import QtQuick 2.12
-import StatusQ.Controls 0.1
+import QtQuick.Layouts 1.12
import QtGraphicalEffects 1.13
+
import StatusQ.Core.Theme 0.1
+import StatusQ.Controls 0.1
import shared.panels 1.0
import utils 1.0
BackupSeedStepBase {
id: root
- property var seedPhrase
+
+ property var seedPhrase: []
property bool hideSeed: true
titleText: qsTr("Write down your 12-word seed phrase to keep offline")
- GridView {
- id: grid
- width: parent.width
- height: 304
- anchors.left: parent.left
- anchors.leftMargin: 2
- anchors.top: parent.top
- anchors.topMargin: 88
- flow: GridView.FlowTopToBottom
- cellWidth: 208
- cellHeight: 48
- interactive: false
- model: 12
- property var wordIndex: ["1", "3", "5", "7", "9", "11", "2", "4", "6", "8", "10", "12"]
- delegate: StatusSeedPhraseInput {
- id: seedWordInput
- width: (grid.cellWidth - 4)
- height: (grid.cellHeight - 4)
- textEdit.input.edit.enabled: false
- text: root.seedPhrase[parseInt(leftComponentText)-1]
- leftComponentText: grid.wordIndex[index]
+ Item {
+ implicitHeight: 304
+ Layout.fillWidth: true
+
+ GridView {
+ id: grid
+ anchors.fill: parent
+ visible: !hideSeed
+ flow: GridView.FlowTopToBottom
+ cellWidth: 208
+ cellHeight: 48
+ interactive: false
+ model: 12
+ property var wordIndex: ["1", "3", "5", "7", "9", "11", "2", "4", "6", "8", "10", "12"]
+ delegate: StatusSeedPhraseInput {
+ id: seedWordInput
+ width: (grid.cellWidth - 4)
+ height: (grid.cellHeight - 4)
+ textEdit.input.edit.enabled: false
+ text: {
+ var index = parseInt(leftComponentText) - 1;
+ if (!root.seedPhrase || index < 0 || index > root.seedPhrase.length - 1)
+ return "";
+ return root.seedPhrase[index];
+ }
+ leftComponentText: grid.wordIndex[index]
+ }
}
- }
- GaussianBlur {
- id: blur
- anchors.fill: grid
- visible: hideSeed
- source: grid
- radius: 16
- samples: 16
- }
+ GaussianBlur {
+ id: blur
+ anchors.fill: grid
+ visible: hideSeed
+ source: grid
+ radius: 16
+ samples: 16
+ }
- StatusButton {
- anchors.centerIn: grid
- visible: hideSeed
- icon.name: "view"
- text: qsTr("Reveal seed phrase")
- onClicked: {
- hideSeed = false;
+ StatusButton {
+ anchors.centerIn: parent
+ visible: hideSeed
+ icon.name: "view"
+ text: qsTr("Reveal seed phrase")
+ onClicked: {
+ hideSeed = false;
+ }
}
}
StyledText {
id: text
- anchors.left: parent.left
- //anchors.leftMargin: Style.current.bigPadding
- anchors.right: parent.right
- //anchors.rightMargin: Style.current.bigPadding
- anchors.top: grid.bottom
- anchors.topMargin: 36
visible: hideSeed
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
@@ -72,5 +75,6 @@ BackupSeedStepBase {
textFormat: Text.RichText
color: Theme.palette.dangerColor1
text: qsTr("The next screen contains your seed phrase.\nAnyone who sees it can use it to access to your funds.")
+ Layout.fillWidth: true
}
}
diff --git a/ui/app/AppLayouts/Profile/popups/backupseed/ConfirmStoringSeedPhrasePanel.qml b/ui/app/AppLayouts/Profile/popups/backupseed/ConfirmStoringSeedPhrasePanel.qml
index 00d56d5575..6b7aaf82c6 100644
--- a/ui/app/AppLayouts/Profile/popups/backupseed/ConfirmStoringSeedPhrasePanel.qml
+++ b/ui/app/AppLayouts/Profile/popups/backupseed/ConfirmStoringSeedPhrasePanel.qml
@@ -1,54 +1,49 @@
import QtQuick 2.12
-import utils 1.0
-import shared.panels 1.0
+import QtQuick.Layouts 1.12
+
import StatusQ.Controls 0.1
+import utils 1.0
+import shared.panels 1.0
+
BackupSeedStepBase {
- titleText: qsTr("Complete back up")
+ id: root
+
property bool seedStored: storeCheck.checked
+ titleText: qsTr("Complete back up")
+
StyledText {
id: txtTitle
- anchors.top: parent.top
- anchors.topMargin: 40
- anchors.right: parent.right
- anchors.left: parent.left
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
font.bold: true
font.pixelSize: 17
text: qsTr("Store Your Phrase Offline and Complete Your Back Up")
+ Layout.fillWidth: true
}
StyledText {
id: txtDesc
- anchors.top: txtTitle.bottom
- anchors.topMargin: Style.current.padding
- anchors.right: parent.right
- anchors.left: parent.left
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
font.pixelSize: Style.current.primaryTextFontSize
text: qsTr("By completing this process, you will remove your seed phrase from this application’s storage. This makes your funds more secure.")
+ Layout.fillWidth: true
}
StyledText {
id: secondTxtDesc
- anchors.right: parent.right
- anchors.left: parent.left
- anchors.top: txtDesc.bottom
- anchors.topMargin: Style.current.bigPadding
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
font.pixelSize: Style.current.primaryTextFontSize
text: qsTr("You will remain logged in, and your seed phrase will be entirely in your hands.")
+ Layout.fillWidth: true
}
StatusCheckBox {
id: storeCheck
- width: parent.width
- anchors.top: secondTxtDesc.bottom
- anchors.topMargin: 48
text: qsTr("I aknowledge that Status will not be able to show me my seed phrase again.")
+ Layout.fillWidth: true
}
}
diff --git a/ui/app/AppLayouts/Profile/popups/backupseed/SubheaderTabBar.qml b/ui/app/AppLayouts/Profile/popups/backupseed/SubheaderTabBar.qml
new file mode 100644
index 0000000000..93eec02432
--- /dev/null
+++ b/ui/app/AppLayouts/Profile/popups/backupseed/SubheaderTabBar.qml
@@ -0,0 +1,43 @@
+import QtQuick 2.12
+import QtQuick.Layouts 1.12
+import QtQuick.Controls 2.12
+
+import StatusQ.Core.Theme 0.1
+import StatusQ.Core 0.1
+
+import shared.panels 1.0
+import utils 1.0
+
+ColumnLayout {
+ id: root
+
+ property int steps: 4
+ property int currentIndex: 0
+
+ spacing: Style.current.halfPadding
+
+ StyledText {
+ id: txtDesc
+ horizontalAlignment: Text.AlignHCenter
+ wrapMode: Text.WordWrap
+ font.pixelSize: Style.current.additionalTextSize
+ color: Style.current.secondaryText
+ text: qsTr("Step %1 of %2").arg(root.currentIndex + 1).arg(steps)
+ Layout.fillWidth: true
+ }
+
+ TabBar {
+ id: bar
+ height: 4
+ spacing: 2
+ background: null
+ Layout.alignment: Qt.AlignHCenter
+ Layout.preferredWidth: 59 * steps
+
+ Repeater {
+ model: steps
+
+ SubheaderTabButton { index: modelData; currentIndex: root.currentIndex}
+ }
+ }
+}
diff --git a/ui/app/AppLayouts/Profile/popups/backupseed/TabBarButton.qml b/ui/app/AppLayouts/Profile/popups/backupseed/SubheaderTabButton.qml
similarity index 100%
rename from ui/app/AppLayouts/Profile/popups/backupseed/TabBarButton.qml
rename to ui/app/AppLayouts/Profile/popups/backupseed/SubheaderTabButton.qml
diff --git a/ui/app/mainui/AppMain.qml b/ui/app/mainui/AppMain.qml
index 29e3cce95f..2efe9b1893 100644
--- a/ui/app/mainui/AppMain.qml
+++ b/ui/app/mainui/AppMain.qml
@@ -100,10 +100,7 @@ Item {
var popup = changeProfilePicComponent.createObject(appMain);
popup.chooseImageToCrop();
}
- onOpenBackUpSeedPopup: {
- var popup = backupSeedModalComponent.createObject(appMain)
- popup.open()
- }
+ onOpenBackUpSeedPopup: Global.openPopup(backupSeedModalComponent)
onDisplayToastMessage: {
appMain.rootStore.mainModuleInst.displayEphemeralNotification(title, subTitle, icon, loading, ephNotifType, url);
}
@@ -153,6 +150,7 @@ Item {
id: backupSeedModal
anchors.centerIn: parent
privacyStore: appMain.rootStore.profileSectionStore.privacyStore
+ onClosed: destroy()
}
property Component displayNamePopupComponent: DisplayNamePopup {