From 3d47b453a821456ea6e2e42d50be6de88aed3776 Mon Sep 17 00:00:00 2001 From: tobtoht <thotbot@protonmail.com> Date: Sun, 24 Jan 2021 15:13:46 +0100 Subject: [PATCH] Wizard: copy seed to clipboard --- src/wizard/createwalletseed.cpp | 24 +- src/wizard/createwalletseed.h | 2 + src/wizard/createwalletseed.ui | 778 ++++++++++++++++---------------- 3 files changed, 408 insertions(+), 396 deletions(-) diff --git a/src/wizard/createwalletseed.cpp b/src/wizard/createwalletseed.cpp index 1375529..1e538b5 100644 --- a/src/wizard/createwalletseed.cpp +++ b/src/wizard/createwalletseed.cpp @@ -27,26 +27,36 @@ CreateWalletSeedPage::CreateWalletSeedPage(AppContext *ctx, QWidget *parent) : connect(ui->btnRoulette, &QPushButton::clicked, [=]{ this->seedRoulette(0); }); + connect(ui->btnCopy, &QPushButton::clicked, [this]{ + Utils::copyToClipboard(m_mnemonic); + }); this->setButtonText(QWizard::FinishButton, "Create/Open wallet"); +} - // generate new seed - this->seedRoulette(m_rouletteSpin - 1); +void CreateWalletSeedPage::initializePage() { + this->generateSeed(); } void CreateWalletSeedPage::seedRoulette(int count) { count += 1; - if(count > m_rouletteSpin) return; - FeatherSeed seed = FeatherSeed(m_ctx->restoreHeights[m_ctx->networkType], m_ctx->coinName, m_ctx->seedLanguage); - m_mnemonic = seed.mnemonic.join(" "); - m_restoreHeight = seed.restoreHeight; + if (count > m_rouletteSpin) + return; + + this->generateSeed(); - this->displaySeed(m_mnemonic); QTimer::singleShot(10, [=] { this->seedRoulette(count); }); } +void CreateWalletSeedPage::generateSeed() { + FeatherSeed seed = FeatherSeed(m_ctx->restoreHeights[m_ctx->networkType], m_ctx->coinName, m_ctx->seedLanguage); + m_mnemonic = seed.mnemonic.join(" "); + m_restoreHeight = seed.restoreHeight; + this->displaySeed(m_mnemonic); +} + void CreateWalletSeedPage::displaySeed(const QString &seed){ QStringList seedSplit = seed.split(" "); diff --git a/src/wizard/createwalletseed.h b/src/wizard/createwalletseed.h index 7f4f9a5..986068d 100644 --- a/src/wizard/createwalletseed.h +++ b/src/wizard/createwalletseed.h @@ -21,6 +21,7 @@ class CreateWalletSeedPage : public QWizardPage public: explicit CreateWalletSeedPage(AppContext *ctx, QWidget *parent = nullptr); + void initializePage() override; bool validatePage() override; int nextId() const override; @@ -29,6 +30,7 @@ public slots: private: void seedRoulette(int count); + void generateSeed(); signals: void createWallet(); diff --git a/src/wizard/createwalletseed.ui b/src/wizard/createwalletseed.ui index ec98325..7ab57fb 100644 --- a/src/wizard/createwalletseed.ui +++ b/src/wizard/createwalletseed.ui @@ -7,371 +7,29 @@ <x>0</x> <y>0</y> <width>775</width> - <height>571</height> + <height>529</height> </rect> </property> <property name="windowTitle"> <string>WizardPage</string> </property> <layout class="QVBoxLayout" name="verticalLayout"> + <property name="topMargin"> + <number>0</number> + </property> <item> - <layout class="QHBoxLayout" name="horizontalLayout_3"> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <property name="spacing"> + <number>2</number> + </property> <item> - <widget class="QGroupBox" name="groupBox"> - <property name="title"> - <string>1</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout_2"> - <property name="leftMargin"> - <number>5</number> - </property> - <property name="topMargin"> - <number>6</number> - </property> - <property name="rightMargin"> - <number>5</number> - </property> - <property name="bottomMargin"> - <number>5</number> - </property> - <item> - <widget class="QLabel" name="seedWord1"> - <property name="text"> - <string>TextLabel</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_2"> - <property name="title"> - <string>2</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout_6"> - <property name="leftMargin"> - <number>5</number> - </property> - <property name="topMargin"> - <number>6</number> - </property> - <property name="rightMargin"> - <number>5</number> - </property> - <property name="bottomMargin"> - <number>5</number> - </property> - <item> - <widget class="HelpLabel" name="seedWord2"> - <property name="text"> - <string>TextLabel</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_3"> - <property name="title"> - <string>3</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout_5"> - <property name="leftMargin"> - <number>5</number> - </property> - <property name="topMargin"> - <number>6</number> - </property> - <property name="rightMargin"> - <number>5</number> - </property> - <property name="bottomMargin"> - <number>5</number> - </property> - <item> - <widget class="QLabel" name="seedWord3"> - <property name="text"> - <string>TextLabel</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_4"> - <property name="title"> - <string>4</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout_4"> - <property name="leftMargin"> - <number>5</number> - </property> - <property name="topMargin"> - <number>6</number> - </property> - <property name="rightMargin"> - <number>5</number> - </property> - <property name="bottomMargin"> - <number>5</number> - </property> - <item> - <widget class="QLabel" name="seedWord4"> - <property name="text"> - <string>TextLabel</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_7"> - <item> - <widget class="QGroupBox" name="groupBox_5"> - <property name="title"> - <string>5</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout_8"> - <property name="leftMargin"> - <number>5</number> - </property> - <property name="topMargin"> - <number>6</number> - </property> - <property name="rightMargin"> - <number>5</number> - </property> - <property name="bottomMargin"> - <number>5</number> - </property> - <item> - <widget class="QLabel" name="seedWord5"> - <property name="text"> - <string>TextLabel</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_6"> - <property name="title"> - <string>6</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout_9"> - <property name="leftMargin"> - <number>5</number> - </property> - <property name="topMargin"> - <number>6</number> - </property> - <property name="rightMargin"> - <number>5</number> - </property> - <property name="bottomMargin"> - <number>5</number> - </property> - <item> - <widget class="QLabel" name="seedWord6"> - <property name="text"> - <string>TextLabel</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_7"> - <property name="title"> - <string>7</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout_10"> - <property name="leftMargin"> - <number>5</number> - </property> - <property name="topMargin"> - <number>6</number> - </property> - <property name="rightMargin"> - <number>5</number> - </property> - <property name="bottomMargin"> - <number>5</number> - </property> - <item> - <widget class="QLabel" name="seedWord7"> - <property name="text"> - <string>TextLabel</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_8"> - <property name="title"> - <string>8</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout_11"> - <property name="leftMargin"> - <number>5</number> - </property> - <property name="topMargin"> - <number>6</number> - </property> - <property name="rightMargin"> - <number>5</number> - </property> - <property name="bottomMargin"> - <number>5</number> - </property> - <item> - <widget class="QLabel" name="seedWord8"> - <property name="text"> - <string>TextLabel</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_12"> - <item> - <widget class="QGroupBox" name="groupBox_9"> - <property name="title"> - <string>9</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout_16"> - <property name="leftMargin"> - <number>5</number> - </property> - <property name="topMargin"> - <number>6</number> - </property> - <property name="rightMargin"> - <number>5</number> - </property> - <property name="bottomMargin"> - <number>5</number> - </property> - <item> - <widget class="QLabel" name="seedWord9"> - <property name="text"> - <string>TextLabel</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_10"> - <property name="title"> - <string>10</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout_15"> - <property name="leftMargin"> - <number>5</number> - </property> - <property name="topMargin"> - <number>6</number> - </property> - <property name="rightMargin"> - <number>5</number> - </property> - <property name="bottomMargin"> - <number>5</number> - </property> - <item> - <widget class="QLabel" name="seedWord10"> - <property name="text"> - <string>TextLabel</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_11"> - <property name="title"> - <string>11</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout_14"> - <property name="leftMargin"> - <number>5</number> - </property> - <property name="topMargin"> - <number>6</number> - </property> - <property name="rightMargin"> - <number>5</number> - </property> - <property name="bottomMargin"> - <number>5</number> - </property> - <item> - <widget class="QLabel" name="seedWord11"> - <property name="text"> - <string>TextLabel</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_12"> - <property name="title"> - <string>12</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout_13"> - <property name="leftMargin"> - <number>5</number> - </property> - <property name="topMargin"> - <number>6</number> - </property> - <property name="rightMargin"> - <number>5</number> - </property> - <property name="bottomMargin"> - <number>5</number> - </property> - <item> - <widget class="QLabel" name="seedWord12"> - <property name="text"> - <string>TextLabel</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_17"> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_18"> + <layout class="QHBoxLayout" name="horizontalLayout_3"> <item> - <widget class="QGroupBox" name="groupBox_13"> + <widget class="QGroupBox" name="groupBox"> <property name="title"> - <string>13</string> + <string>1</string> </property> - <layout class="QHBoxLayout" name="horizontalLayout_21"> + <layout class="QHBoxLayout" name="horizontalLayout_2"> <property name="leftMargin"> <number>5</number> </property> @@ -385,7 +43,7 @@ <number>5</number> </property> <item> - <widget class="QLabel" name="seedWord13"> + <widget class="QLabel" name="seedWord1"> <property name="text"> <string>TextLabel</string> </property> @@ -395,11 +53,11 @@ </widget> </item> <item> - <widget class="QGroupBox" name="groupBox_14"> + <widget class="QGroupBox" name="groupBox_2"> <property name="title"> - <string>14</string> + <string>2</string> </property> - <layout class="QHBoxLayout" name="horizontalLayout_20"> + <layout class="QHBoxLayout" name="horizontalLayout_6"> <property name="leftMargin"> <number>5</number> </property> @@ -413,7 +71,63 @@ <number>5</number> </property> <item> - <widget class="QLabel" name="seedWord14"> + <widget class="HelpLabel" name="seedWord2"> + <property name="text"> + <string>TextLabel</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_3"> + <property name="title"> + <string>3</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_5"> + <property name="leftMargin"> + <number>5</number> + </property> + <property name="topMargin"> + <number>6</number> + </property> + <property name="rightMargin"> + <number>5</number> + </property> + <property name="bottomMargin"> + <number>5</number> + </property> + <item> + <widget class="QLabel" name="seedWord3"> + <property name="text"> + <string>TextLabel</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_4"> + <property name="title"> + <string>4</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_4"> + <property name="leftMargin"> + <number>5</number> + </property> + <property name="topMargin"> + <number>6</number> + </property> + <property name="rightMargin"> + <number>5</number> + </property> + <property name="bottomMargin"> + <number>5</number> + </property> + <item> + <widget class="QLabel" name="seedWord4"> <property name="text"> <string>TextLabel</string> </property> @@ -425,39 +139,305 @@ </layout> </item> <item> - <layout class="QHBoxLayout" name="horizontalLayout_19"> + <layout class="QHBoxLayout" name="horizontalLayout_7"> <item> - <widget class="QLabel" name="label_2"> - <property name="text"> - <string> </string> + <widget class="QGroupBox" name="groupBox_5"> + <property name="title"> + <string>5</string> </property> + <layout class="QHBoxLayout" name="horizontalLayout_8"> + <property name="leftMargin"> + <number>5</number> + </property> + <property name="topMargin"> + <number>6</number> + </property> + <property name="rightMargin"> + <number>5</number> + </property> + <property name="bottomMargin"> + <number>5</number> + </property> + <item> + <widget class="QLabel" name="seedWord5"> + <property name="text"> + <string>TextLabel</string> + </property> + </widget> + </item> + </layout> </widget> </item> <item> - <layout class="QVBoxLayout" name="verticalLayout_2"> + <widget class="QGroupBox" name="groupBox_6"> + <property name="title"> + <string>6</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_9"> + <property name="leftMargin"> + <number>5</number> + </property> + <property name="topMargin"> + <number>6</number> + </property> + <property name="rightMargin"> + <number>5</number> + </property> + <property name="bottomMargin"> + <number>5</number> + </property> + <item> + <widget class="QLabel" name="seedWord6"> + <property name="text"> + <string>TextLabel</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_7"> + <property name="title"> + <string>7</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_10"> + <property name="leftMargin"> + <number>5</number> + </property> + <property name="topMargin"> + <number>6</number> + </property> + <property name="rightMargin"> + <number>5</number> + </property> + <property name="bottomMargin"> + <number>5</number> + </property> + <item> + <widget class="QLabel" name="seedWord7"> + <property name="text"> + <string>TextLabel</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_8"> + <property name="title"> + <string>8</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_11"> + <property name="leftMargin"> + <number>5</number> + </property> + <property name="topMargin"> + <number>6</number> + </property> + <property name="rightMargin"> + <number>5</number> + </property> + <property name="bottomMargin"> + <number>5</number> + </property> + <item> + <widget class="QLabel" name="seedWord8"> + <property name="text"> + <string>TextLabel</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_12"> + <item> + <widget class="QGroupBox" name="groupBox_9"> + <property name="title"> + <string>9</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_16"> + <property name="leftMargin"> + <number>5</number> + </property> + <property name="topMargin"> + <number>6</number> + </property> + <property name="rightMargin"> + <number>5</number> + </property> + <property name="bottomMargin"> + <number>5</number> + </property> + <item> + <widget class="QLabel" name="seedWord9"> + <property name="text"> + <string>TextLabel</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_10"> + <property name="title"> + <string>10</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_15"> + <property name="leftMargin"> + <number>5</number> + </property> + <property name="topMargin"> + <number>6</number> + </property> + <property name="rightMargin"> + <number>5</number> + </property> + <property name="bottomMargin"> + <number>5</number> + </property> + <item> + <widget class="QLabel" name="seedWord10"> + <property name="text"> + <string>TextLabel</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_11"> + <property name="title"> + <string>11</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_14"> + <property name="leftMargin"> + <number>5</number> + </property> + <property name="topMargin"> + <number>6</number> + </property> + <property name="rightMargin"> + <number>5</number> + </property> + <property name="bottomMargin"> + <number>5</number> + </property> + <item> + <widget class="QLabel" name="seedWord11"> + <property name="text"> + <string>TextLabel</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_12"> + <property name="title"> + <string>12</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_13"> + <property name="leftMargin"> + <number>5</number> + </property> + <property name="topMargin"> + <number>6</number> + </property> + <property name="rightMargin"> + <number>5</number> + </property> + <property name="bottomMargin"> + <number>5</number> + </property> + <item> + <widget class="QLabel" name="seedWord12"> + <property name="text"> + <string>TextLabel</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_17"> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_18"> <item> - <spacer name="verticalSpacer_2"> - <property name="orientation"> - <enum>Qt::Vertical</enum> + <widget class="QGroupBox" name="groupBox_13"> + <property name="title"> + <string>13</string> </property> - <property name="sizeType"> - <enum>QSizePolicy::Expanding</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>0</height> - </size> - </property> - </spacer> + <layout class="QHBoxLayout" name="horizontalLayout_21"> + <property name="leftMargin"> + <number>5</number> + </property> + <property name="topMargin"> + <number>6</number> + </property> + <property name="rightMargin"> + <number>5</number> + </property> + <property name="bottomMargin"> + <number>5</number> + </property> + <item> + <widget class="QLabel" name="seedWord13"> + <property name="text"> + <string>TextLabel</string> + </property> + </widget> + </item> + </layout> + </widget> </item> <item> - <widget class="QPushButton" name="btnRoulette"> - <property name="focusPolicy"> - <enum>Qt::NoFocus</enum> + <widget class="QGroupBox" name="groupBox_14"> + <property name="title"> + <string>14</string> </property> + <layout class="QHBoxLayout" name="horizontalLayout_20"> + <property name="leftMargin"> + <number>5</number> + </property> + <property name="topMargin"> + <number>6</number> + </property> + <property name="rightMargin"> + <number>5</number> + </property> + <property name="bottomMargin"> + <number>5</number> + </property> + <item> + <widget class="QLabel" name="seedWord14"> + <property name="text"> + <string>TextLabel</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_19"> + <item> + <widget class="QLabel" name="label"> <property name="text"> - <string>Generate</string> + <string/> </property> </widget> </item> @@ -467,13 +447,6 @@ </item> </layout> </item> - <item> - <widget class="QLineEdit" name="hiddenMnemonicSeed"> - <property name="focusPolicy"> - <enum>Qt::NoFocus</enum> - </property> - </widget> - </item> <item> <layout class="QHBoxLayout" name="horizontalLayout"> <item> @@ -489,8 +462,35 @@ </property> </spacer> </item> + <item> + <widget class="QPushButton" name="btnCopy"> + <property name="focusPolicy"> + <enum>Qt::NoFocus</enum> + </property> + <property name="text"> + <string>Copy</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="btnRoulette"> + <property name="focusPolicy"> + <enum>Qt::NoFocus</enum> + </property> + <property name="text"> + <string>Generate</string> + </property> + </widget> + </item> </layout> </item> + <item> + <widget class="QLineEdit" name="hiddenMnemonicSeed"> + <property name="focusPolicy"> + <enum>Qt::NoFocus</enum> + </property> + </widget> + </item> <item> <widget class="QLabel" name="label_4"> <property name="sizePolicy"> @@ -500,7 +500,7 @@ </sizepolicy> </property> <property name="text"> - <string>Please save these 14 words on paper (order is important). This seed will allow you to recover your wallet in case of computer failure.</string> + <string>Please save these 14 words on paper. This seed will allow you to recover your wallet in case of computer failure.</string> </property> <property name="wordWrap"> <bool>true</bool>