diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 2606f6d..d03c0a6 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -2,12 +2,15 @@ #include "ui_mainwindow.h" #include "ui_about.h" #include "ui_settings.h" +#include "ui_turnstile.h" +#include "ui_turnstileprogress.h" #include "rpc.h" #include "balancestablemodel.h" #include "settings.h" #include "utils.h" #include "senttxstore.h" + #include "precompiled.h" using json = nlohmann::json; @@ -24,6 +27,38 @@ MainWindow::MainWindow(QWidget *parent) : // Settings editor setupSettingsModal(); + // Turnstile migration + QObject::connect(ui->actionTurnstile_Migration, &QAction::triggered, [=] () { + Ui_Turnstile turnstile; + QDialog d(this); + turnstile.setupUi(&d); + + QIcon icon = QApplication::style()->standardIcon(QStyle::SP_MessageBoxInformation); + turnstile.msgIcon->setPixmap(icon.pixmap(64, 64)); + + turnstile.migrateZaddList->addItem("All Sprout z-Addrs"); + turnstile.migrateTo->addItem("zs1gv64eu0v2wx7raxqxlmj354y9ycznwaau9kduljzczxztvs4qcl00kn2sjxtejvrxnkucw5xx9u"); + turnstile.privLevel->addItem("Good - 3 tx over 3 days"); + turnstile.privLevel->addItem("Excellent - 5 tx over 5 days"); + turnstile.privLevel->addItem("Paranoid - 10 tx over 7 days"); + + turnstile.buttonBox->button(QDialogButtonBox::Ok)->setText("Start"); + + d.exec(); + }); + + QObject::connect(ui->actionProgress, &QAction::triggered, [=] () { + Ui_TurnstileProgress progress; + QDialog d(this); + progress.setupUi(&d); + + QIcon icon = QApplication::style()->standardIcon(QStyle::SP_MessageBoxWarning); + progress.msgIcon->setPixmap(icon.pixmap(64, 64)); + + progress.buttonBox->button(QDialogButtonBox::Cancel)->setText("Abort"); + d.exec(); + }); + // Set up exit action QObject::connect(ui->actionExit, &QAction::triggered, this, &MainWindow::close); diff --git a/src/mainwindow.ui b/src/mainwindow.ui index 4baf922..9e408c4 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -720,6 +720,8 @@ File + + @@ -769,6 +771,16 @@ Check github.com for Updates + + + Turnstile Migration + + + + + Progress + + diff --git a/src/turnstile.ui b/src/turnstile.ui new file mode 100644 index 0000000..a12af05 --- /dev/null +++ b/src/turnstile.ui @@ -0,0 +1,229 @@ + + + Turnstile + + + + 0 + 0 + 565 + 416 + + + + Turnstile Migration + + + + + + Turnstile Migration + + + + + + + + + + + Qt::AlignCenter + + + + + + + Total Fees + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + + Privacy Level + + + + + + + + 0 + 0 + + + + Miner Fee: + + + + + + + + 0 + 0 + + + + From + + + + + + + + 0 + 0 + + + + Dev Fee: + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + 0.0004 ZEC $0.04 + + + + + + + 0.0004 ZEC $0.04 + + + + + + + + 0 + 0 + + + + false + + + + + + + + + + + 0 + 0 + + + + + + + + <html><head/><body><p>Funds from Sprout z-Addresses (which start with &quot;zc&quot;) need to be moved to the upgraded Sapling z-Addresses (which start with &quot;zs&quot;). The funds cannot be moved directly, but need to be sent through intermediate &quot;transparent&quot; addresses in privacy-preserving way.</p><p>This migration can be done automatically for you.</p></body></html> + + + true + + + + + + + + 0 + 0 + + + + To + + + + + + + + + + Qt::Horizontal + + + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + buttonBox + accepted() + Turnstile + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + Turnstile + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/src/turnstileprogress.ui b/src/turnstileprogress.ui new file mode 100644 index 0000000..5b09ebd --- /dev/null +++ b/src/turnstileprogress.ui @@ -0,0 +1,154 @@ + + + TurnstileProgress + + + + 0 + 0 + 400 + 300 + + + + Dialog + + + + + + 33 + + + + + + + + 0 + 0 + + + + Please Ensure you have your wallet.dat backed up! + + + true + + + + + + + Qt::Horizontal + + + + + + + Next Transaction in 4 hours + + + + + + + 4 / 12 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Migration Progress + + + + + + + + 0 + 0 + + + + TextLabel + + + Qt::AlignCenter + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Qt::Horizontal + + + + + + + + + buttonBox + accepted() + TurnstileProgress + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + TurnstileProgress + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/src/ui_mainwindow.h b/src/ui_mainwindow.h index c9a29ea..ac1195a 100644 --- a/src/ui_mainwindow.h +++ b/src/ui_mainwindow.h @@ -47,6 +47,8 @@ public: QAction *actionDonate; QAction *actionImport_Private_Keys; QAction *actionCheck_for_Updates; + QAction *actionTurnstile_Migration; + QAction *actionProgress; QWidget *centralWidget; QGridLayout *gridLayout_3; QTabWidget *tabWidget; @@ -159,6 +161,10 @@ public: actionImport_Private_Keys->setVisible(false); actionCheck_for_Updates = new QAction(MainWindow); actionCheck_for_Updates->setObjectName(QStringLiteral("actionCheck_for_Updates")); + actionTurnstile_Migration = new QAction(MainWindow); + actionTurnstile_Migration->setObjectName(QStringLiteral("actionTurnstile_Migration")); + actionProgress = new QAction(MainWindow); + actionProgress->setObjectName(QStringLiteral("actionProgress")); centralWidget = new QWidget(MainWindow); centralWidget->setObjectName(QStringLiteral("centralWidget")); gridLayout_3 = new QGridLayout(centralWidget); @@ -666,6 +672,8 @@ public: menuBar->addAction(menuBalance->menuAction()); menuBar->addAction(menuHelp->menuAction()); menuBalance->addAction(actionImport_Private_Keys); + menuBalance->addAction(actionTurnstile_Migration); + menuBalance->addAction(actionProgress); menuBalance->addAction(actionSettings); menuBalance->addSeparator(); menuBalance->addAction(actionExit); @@ -690,6 +698,8 @@ public: actionDonate->setText(QApplication::translate("MainWindow", "Donate", nullptr)); actionImport_Private_Keys->setText(QApplication::translate("MainWindow", "Import Private Keys", nullptr)); actionCheck_for_Updates->setText(QApplication::translate("MainWindow", "Check github.com for Updates", nullptr)); + actionTurnstile_Migration->setText(QApplication::translate("MainWindow", "Turnstile Migration", nullptr)); + actionProgress->setText(QApplication::translate("MainWindow", "Progress", nullptr)); groupBox->setTitle(QApplication::translate("MainWindow", "Summary", nullptr)); label->setText(QApplication::translate("MainWindow", "Shielded", nullptr)); balSheilded->setText(QString()); diff --git a/src/ui_turnstile.h b/src/ui_turnstile.h new file mode 100644 index 0000000..8eb3566 --- /dev/null +++ b/src/ui_turnstile.h @@ -0,0 +1,210 @@ +/******************************************************************************** +** Form generated from reading UI file 'turnstile.ui' +** +** Created by: Qt User Interface Compiler version 5.11.2 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_TURNSTILE_H +#define UI_TURNSTILE_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_Turnstile +{ +public: + QVBoxLayout *verticalLayout; + QGroupBox *groupBox; + QVBoxLayout *verticalLayout_2; + QGridLayout *gridLayout; + QLabel *msgIcon; + QLabel *label_3; + QLabel *label_2; + QLabel *label_4; + QLabel *label; + QLabel *label_5; + QSpacerItem *verticalSpacer; + QLabel *label_6; + QLabel *label_7; + QComboBox *migrateZaddList; + QComboBox *privLevel; + QLabel *label_8; + QLabel *label_9; + QComboBox *migrateTo; + QFrame *line; + QDialogButtonBox *buttonBox; + + void setupUi(QDialog *Turnstile) + { + if (Turnstile->objectName().isEmpty()) + Turnstile->setObjectName(QStringLiteral("Turnstile")); + Turnstile->resize(565, 416); + verticalLayout = new QVBoxLayout(Turnstile); + verticalLayout->setObjectName(QStringLiteral("verticalLayout")); + groupBox = new QGroupBox(Turnstile); + groupBox->setObjectName(QStringLiteral("groupBox")); + verticalLayout_2 = new QVBoxLayout(groupBox); + verticalLayout_2->setObjectName(QStringLiteral("verticalLayout_2")); + gridLayout = new QGridLayout(); + gridLayout->setObjectName(QStringLiteral("gridLayout")); + msgIcon = new QLabel(groupBox); + msgIcon->setObjectName(QStringLiteral("msgIcon")); + msgIcon->setAlignment(Qt::AlignCenter); + + gridLayout->addWidget(msgIcon, 0, 0, 1, 1); + + label_3 = new QLabel(groupBox); + label_3->setObjectName(QStringLiteral("label_3")); + label_3->setAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop); + + gridLayout->addWidget(label_3, 5, 0, 2, 1); + + label_2 = new QLabel(groupBox); + label_2->setObjectName(QStringLiteral("label_2")); + + gridLayout->addWidget(label_2, 4, 0, 1, 1); + + label_4 = new QLabel(groupBox); + label_4->setObjectName(QStringLiteral("label_4")); + QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + sizePolicy.setHorizontalStretch(0); + sizePolicy.setVerticalStretch(0); + sizePolicy.setHeightForWidth(label_4->sizePolicy().hasHeightForWidth()); + label_4->setSizePolicy(sizePolicy); + + gridLayout->addWidget(label_4, 5, 1, 1, 1); + + label = new QLabel(groupBox); + label->setObjectName(QStringLiteral("label")); + QSizePolicy sizePolicy1(QSizePolicy::Minimum, QSizePolicy::Preferred); + sizePolicy1.setHorizontalStretch(0); + sizePolicy1.setVerticalStretch(0); + sizePolicy1.setHeightForWidth(label->sizePolicy().hasHeightForWidth()); + label->setSizePolicy(sizePolicy1); + + gridLayout->addWidget(label, 2, 0, 1, 1); + + label_5 = new QLabel(groupBox); + label_5->setObjectName(QStringLiteral("label_5")); + sizePolicy.setHeightForWidth(label_5->sizePolicy().hasHeightForWidth()); + label_5->setSizePolicy(sizePolicy); + + gridLayout->addWidget(label_5, 6, 1, 1, 1); + + verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + gridLayout->addItem(verticalSpacer, 7, 0, 1, 2); + + label_6 = new QLabel(groupBox); + label_6->setObjectName(QStringLiteral("label_6")); + + gridLayout->addWidget(label_6, 5, 2, 1, 1); + + label_7 = new QLabel(groupBox); + label_7->setObjectName(QStringLiteral("label_7")); + + gridLayout->addWidget(label_7, 6, 2, 1, 1); + + migrateZaddList = new QComboBox(groupBox); + migrateZaddList->setObjectName(QStringLiteral("migrateZaddList")); + QSizePolicy sizePolicy2(QSizePolicy::Expanding, QSizePolicy::Fixed); + sizePolicy2.setHorizontalStretch(0); + sizePolicy2.setVerticalStretch(0); + sizePolicy2.setHeightForWidth(migrateZaddList->sizePolicy().hasHeightForWidth()); + migrateZaddList->setSizePolicy(sizePolicy2); + migrateZaddList->setEditable(false); + + gridLayout->addWidget(migrateZaddList, 2, 1, 1, 2); + + privLevel = new QComboBox(groupBox); + privLevel->setObjectName(QStringLiteral("privLevel")); + sizePolicy2.setHeightForWidth(privLevel->sizePolicy().hasHeightForWidth()); + privLevel->setSizePolicy(sizePolicy2); + + gridLayout->addWidget(privLevel, 4, 1, 1, 2); + + label_8 = new QLabel(groupBox); + label_8->setObjectName(QStringLiteral("label_8")); + label_8->setWordWrap(true); + + gridLayout->addWidget(label_8, 0, 1, 1, 2); + + label_9 = new QLabel(groupBox); + label_9->setObjectName(QStringLiteral("label_9")); + sizePolicy1.setHeightForWidth(label_9->sizePolicy().hasHeightForWidth()); + label_9->setSizePolicy(sizePolicy1); + + gridLayout->addWidget(label_9, 3, 0, 1, 1); + + migrateTo = new QComboBox(groupBox); + migrateTo->setObjectName(QStringLiteral("migrateTo")); + + gridLayout->addWidget(migrateTo, 3, 1, 1, 2); + + line = new QFrame(groupBox); + line->setObjectName(QStringLiteral("line")); + line->setFrameShape(QFrame::HLine); + line->setFrameShadow(QFrame::Sunken); + + gridLayout->addWidget(line, 1, 0, 1, 3); + + + verticalLayout_2->addLayout(gridLayout); + + + verticalLayout->addWidget(groupBox); + + buttonBox = new QDialogButtonBox(Turnstile); + buttonBox->setObjectName(QStringLiteral("buttonBox")); + buttonBox->setOrientation(Qt::Horizontal); + buttonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok); + + verticalLayout->addWidget(buttonBox); + + + retranslateUi(Turnstile); + QObject::connect(buttonBox, SIGNAL(accepted()), Turnstile, SLOT(accept())); + QObject::connect(buttonBox, SIGNAL(rejected()), Turnstile, SLOT(reject())); + + QMetaObject::connectSlotsByName(Turnstile); + } // setupUi + + void retranslateUi(QDialog *Turnstile) + { + Turnstile->setWindowTitle(QApplication::translate("Turnstile", "Turnstile Migration", nullptr)); + groupBox->setTitle(QApplication::translate("Turnstile", "Turnstile Migration", nullptr)); + msgIcon->setText(QString()); + label_3->setText(QApplication::translate("Turnstile", "Total Fees", nullptr)); + label_2->setText(QApplication::translate("Turnstile", "Privacy Level", nullptr)); + label_4->setText(QApplication::translate("Turnstile", "Miner Fee:", nullptr)); + label->setText(QApplication::translate("Turnstile", "From", nullptr)); + label_5->setText(QApplication::translate("Turnstile", "Dev Fee: ", nullptr)); + label_6->setText(QApplication::translate("Turnstile", "0.0004 ZEC $0.04", nullptr)); + label_7->setText(QApplication::translate("Turnstile", "0.0004 ZEC $0.04", nullptr)); + migrateZaddList->setCurrentText(QString()); + label_8->setText(QApplication::translate("Turnstile", "

Funds from Sprout z-Addresses (which start with "zc") need to be moved to the upgraded Sapling z-Addresses (which start with "zs"). The funds cannot be moved directly, but need to be sent through intermediate "transparent" addresses in privacy-preserving way.

This migration can be done automatically for you.

", nullptr)); + label_9->setText(QApplication::translate("Turnstile", "To", nullptr)); + } // retranslateUi + +}; + +namespace Ui { + class Turnstile: public Ui_Turnstile {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_TURNSTILE_H diff --git a/src/ui_turnstileprogress.h b/src/ui_turnstileprogress.h new file mode 100644 index 0000000..2d34909 --- /dev/null +++ b/src/ui_turnstileprogress.h @@ -0,0 +1,141 @@ +/******************************************************************************** +** Form generated from reading UI file 'turnstileprogress.ui' +** +** Created by: Qt User Interface Compiler version 5.11.2 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_TURNSTILEPROGRESS_H +#define UI_TURNSTILEPROGRESS_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_TurnstileProgress +{ +public: + QGridLayout *gridLayout; + QProgressBar *progressBar; + QLabel *label_4; + QFrame *line; + QLabel *label; + QLabel *label_3; + QLabel *label_2; + QLabel *msgIcon; + QDialogButtonBox *buttonBox; + QSpacerItem *verticalSpacer; + QFrame *line_2; + + void setupUi(QDialog *TurnstileProgress) + { + if (TurnstileProgress->objectName().isEmpty()) + TurnstileProgress->setObjectName(QStringLiteral("TurnstileProgress")); + TurnstileProgress->resize(400, 300); + gridLayout = new QGridLayout(TurnstileProgress); + gridLayout->setObjectName(QStringLiteral("gridLayout")); + progressBar = new QProgressBar(TurnstileProgress); + progressBar->setObjectName(QStringLiteral("progressBar")); + progressBar->setValue(33); + + gridLayout->addWidget(progressBar, 3, 0, 1, 3); + + label_4 = new QLabel(TurnstileProgress); + label_4->setObjectName(QStringLiteral("label_4")); + QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + sizePolicy.setHorizontalStretch(0); + sizePolicy.setVerticalStretch(0); + sizePolicy.setHeightForWidth(label_4->sizePolicy().hasHeightForWidth()); + label_4->setSizePolicy(sizePolicy); + label_4->setWordWrap(true); + + gridLayout->addWidget(label_4, 7, 1, 1, 2); + + line = new QFrame(TurnstileProgress); + line->setObjectName(QStringLiteral("line")); + line->setFrameShape(QFrame::HLine); + line->setFrameShadow(QFrame::Sunken); + + gridLayout->addWidget(line, 4, 0, 1, 3); + + label = new QLabel(TurnstileProgress); + label->setObjectName(QStringLiteral("label")); + + gridLayout->addWidget(label, 5, 0, 1, 3); + + label_3 = new QLabel(TurnstileProgress); + label_3->setObjectName(QStringLiteral("label_3")); + label_3->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); + + gridLayout->addWidget(label_3, 2, 2, 1, 1); + + label_2 = new QLabel(TurnstileProgress); + label_2->setObjectName(QStringLiteral("label_2")); + + gridLayout->addWidget(label_2, 2, 0, 1, 2); + + msgIcon = new QLabel(TurnstileProgress); + msgIcon->setObjectName(QStringLiteral("msgIcon")); + QSizePolicy sizePolicy1(QSizePolicy::Minimum, QSizePolicy::Preferred); + sizePolicy1.setHorizontalStretch(0); + sizePolicy1.setVerticalStretch(0); + sizePolicy1.setHeightForWidth(msgIcon->sizePolicy().hasHeightForWidth()); + msgIcon->setSizePolicy(sizePolicy1); + msgIcon->setAlignment(Qt::AlignCenter); + + gridLayout->addWidget(msgIcon, 7, 0, 1, 1); + + buttonBox = new QDialogButtonBox(TurnstileProgress); + buttonBox->setObjectName(QStringLiteral("buttonBox")); + buttonBox->setOrientation(Qt::Horizontal); + buttonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok); + + gridLayout->addWidget(buttonBox, 9, 0, 1, 3); + + verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + + gridLayout->addItem(verticalSpacer, 6, 0, 1, 3); + + line_2 = new QFrame(TurnstileProgress); + line_2->setObjectName(QStringLiteral("line_2")); + line_2->setFrameShape(QFrame::HLine); + line_2->setFrameShadow(QFrame::Sunken); + + gridLayout->addWidget(line_2, 8, 0, 1, 3); + + + retranslateUi(TurnstileProgress); + QObject::connect(buttonBox, SIGNAL(accepted()), TurnstileProgress, SLOT(accept())); + QObject::connect(buttonBox, SIGNAL(rejected()), TurnstileProgress, SLOT(reject())); + + QMetaObject::connectSlotsByName(TurnstileProgress); + } // setupUi + + void retranslateUi(QDialog *TurnstileProgress) + { + TurnstileProgress->setWindowTitle(QApplication::translate("TurnstileProgress", "Dialog", nullptr)); + label_4->setText(QApplication::translate("TurnstileProgress", "Please Ensure you have your wallet.dat backed up!", nullptr)); + label->setText(QApplication::translate("TurnstileProgress", "Next Transaction in 4 hours", nullptr)); + label_3->setText(QApplication::translate("TurnstileProgress", "4 / 12", nullptr)); + label_2->setText(QApplication::translate("TurnstileProgress", "Migration Progress", nullptr)); + msgIcon->setText(QApplication::translate("TurnstileProgress", "TextLabel", nullptr)); + } // retranslateUi + +}; + +namespace Ui { + class TurnstileProgress: public Ui_TurnstileProgress {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_TURNSTILEPROGRESS_H diff --git a/zec-qt-wallet.pro b/zec-qt-wallet.pro index c483f19..710aafa 100644 --- a/zec-qt-wallet.pro +++ b/zec-qt-wallet.pro @@ -71,7 +71,9 @@ FORMS += \ src/mainwindow.ui \ src/settings.ui \ src/about.ui \ - src/confirm.ui + src/confirm.ui \ + src/turnstile.ui \ + src/turnstileprogress.ui # Default rules for deployment. qnx: target.path = /tmp/$${TARGET}/bin