From 12ed154b43359ad91d26c8f310542852c428d30b Mon Sep 17 00:00:00 2001 From: Francis Alec Yap Date: Thu, 9 May 2019 19:51:24 +0800 Subject: [PATCH] Added password prompt for CFund payment/proposal dialogs --- ...ommunityfundcreatepaymentrequestdialog.cpp | 44 +++++++--------- .../communityfundcreatepaymentrequestdialog.h | 7 ++- src/qt/communityfundcreateproposaldialog.cpp | 51 +++++++++---------- src/qt/communityfundcreateproposaldialog.h | 8 ++- src/qt/communityfundpage.cpp | 2 + 5 files changed, 56 insertions(+), 56 deletions(-) diff --git a/src/qt/communityfundcreatepaymentrequestdialog.cpp b/src/qt/communityfundcreatepaymentrequestdialog.cpp index 8bd8b17fc..b8d800ea3 100644 --- a/src/qt/communityfundcreatepaymentrequestdialog.cpp +++ b/src/qt/communityfundcreatepaymentrequestdialog.cpp @@ -1,19 +1,21 @@ #include "communityfundcreatepaymentrequestdialog.h" -#include "ui_communityfundcreatepaymentrequestdialog.h" #include "communityfundsuccessdialog.h" #include "sendcommunityfunddialog.h" +#include "ui_communityfundcreatepaymentrequestdialog.h" #include +#include + +#include "base58.h" #include "consensus/cfund.h" -#include "main.h" -#include "main.cpp" #include "guiconstants.h" -#include "skinize.h" #include "guiutil.h" +#include "main.cpp" +#include "main.h" +#include "skinize.h" #include "sync.h" #include "wallet/wallet.h" -#include "base58.h" -#include +#include "walletmodel.h" std::string random_str(size_t length) { @@ -33,7 +35,8 @@ std::string random_str(size_t length) CommunityFundCreatePaymentRequestDialog::CommunityFundCreatePaymentRequestDialog(QWidget *parent) : QDialog(parent), - ui(new Ui::CommunityFundCreatePaymentRequestDialog) + ui(new Ui::CommunityFundCreatePaymentRequestDialog), + model(0) { ui->setupUi(this); @@ -41,6 +44,11 @@ CommunityFundCreatePaymentRequestDialog::CommunityFundCreatePaymentRequestDialog connect(ui->pushButtonSubmitPaymentRequest, SIGNAL(clicked()), SLOT(click_pushButtonSubmitPaymentRequest())); } +void CommunityFundCreatePaymentRequestDialog::setModel(WalletModel *model) +{ + this->model = model; +} + bool CommunityFundCreatePaymentRequestDialog::validate() { bool isValid = true; @@ -131,24 +139,10 @@ void CommunityFundCreatePaymentRequestDialog::click_pushButtonSubmitPaymentReque } // Ensure wallet is unlocked - if (pwalletMain->IsLocked()) { - QMessageBox msgBox(this); - std::string str = "Please unlock the wallet\n"; - msgBox.setText(tr(str.c_str())); - msgBox.addButton(tr("Ok"), QMessageBox::AcceptRole); - msgBox.setIcon(QMessageBox::Warning); - msgBox.setWindowTitle("Error"); - msgBox.exec(); - return; - } - if (fWalletUnlockStakingOnly) { - QMessageBox msgBox(this); - std::string str = "Wallet is unlocked for staking only\n"; - msgBox.setText(tr(str.c_str())); - msgBox.addButton(tr("Ok"), QMessageBox::AcceptRole); - msgBox.setIcon(QMessageBox::Warning); - msgBox.setWindowTitle("Error"); - msgBox.exec(); + WalletModel::UnlockContext ctx(model->requestUnlock()); + if(!ctx.isValid()) + { + // Unlock wallet was cancelled return; } diff --git a/src/qt/communityfundcreatepaymentrequestdialog.h b/src/qt/communityfundcreatepaymentrequestdialog.h index 541f7b02a..f56e90adb 100644 --- a/src/qt/communityfundcreatepaymentrequestdialog.h +++ b/src/qt/communityfundcreatepaymentrequestdialog.h @@ -1,9 +1,11 @@ #ifndef COMMUNITYFUNDCREATEPAYMENTREQUESTDIALOG_H #define COMMUNITYFUNDCREATEPAYMENTREQUESTDIALOG_H -#include #include "../qvalidatedplaintextedit.h" #include "uint256.h" +#include "walletmodel.h" + +#include namespace Ui { class CommunityFundCreatePaymentRequestDialog; @@ -17,8 +19,11 @@ class CommunityFundCreatePaymentRequestDialog : public QDialog explicit CommunityFundCreatePaymentRequestDialog(QWidget *parent = 0); ~CommunityFundCreatePaymentRequestDialog(); + void setModel(WalletModel *model); + private: Ui::CommunityFundCreatePaymentRequestDialog *ui; + WalletModel *model; bool validate(); bool isActiveProposal(uint256 hash); diff --git a/src/qt/communityfundcreateproposaldialog.cpp b/src/qt/communityfundcreateproposaldialog.cpp index 319a086ef..627e6b2d6 100644 --- a/src/qt/communityfundcreateproposaldialog.cpp +++ b/src/qt/communityfundcreateproposaldialog.cpp @@ -1,25 +1,27 @@ #include "communityfundcreateproposaldialog.h" -#include "ui_communityfundcreateproposaldialog.h" -#include "sendcommunityfunddialog.h" #include "communityfundsuccessdialog.h" +#include "sendcommunityfunddialog.h" +#include "ui_communityfundcreateproposaldialog.h" -#include -#include #include +#include #include +#include +#include +#include "base58.h" #include "guiconstants.h" #include "guiutil.h" -#include "sync.h" -#include "wallet/wallet.h" -#include "base58.h" #include "main.h" -#include #include "qvalidatedspinbox.h" +#include "sync.h" +#include "wallet/wallet.h" +#include "walletmodel.h" CommunityFundCreateProposalDialog::CommunityFundCreateProposalDialog(QWidget *parent) : QDialog(parent), - ui(new Ui::CommunityFundCreateProposalDialog) + ui(new Ui::CommunityFundCreateProposalDialog), + model(0) { ui->setupUi(this); GUIUtil::setupAddressWidget(ui->lineEditNavcoinAddress, this); @@ -57,6 +59,11 @@ CommunityFundCreateProposalDialog::CommunityFundCreateProposalDialog(QWidget *pa ui->labelWarning->setText(QString::fromStdString(warning)); } +void CommunityFundCreateProposalDialog::setModel(WalletModel *model) +{ + this->model = model; +} + // Validate input fields bool CommunityFundCreateProposalDialog::validate() { @@ -103,6 +110,9 @@ void CommunityFundCreateProposalDialog::click_spinBox() { void CommunityFundCreateProposalDialog::click_pushButtonCreateProposal() { + if(!model) + return; + if(this->validate()) { LOCK2(cs_main, pwalletMain->cs_wallet); @@ -147,24 +157,10 @@ void CommunityFundCreateProposalDialog::click_pushButtonCreateProposal() } // Ensure wallet is unlocked - if (pwalletMain->IsLocked()) { - QMessageBox msgBox(this); - std::string str = "Please unlock the wallet\n"; - msgBox.setText(tr(str.c_str())); - msgBox.addButton(tr("Ok"), QMessageBox::AcceptRole); - msgBox.setIcon(QMessageBox::Warning); - msgBox.setWindowTitle("Error"); - msgBox.exec(); - return; - } - if (fWalletUnlockStakingOnly) { - QMessageBox msgBox(this); - std::string str = "Wallet is unlocked for staking only\n"; - msgBox.setText(tr(str.c_str())); - msgBox.addButton(tr("Ok"), QMessageBox::AcceptRole); - msgBox.setIcon(QMessageBox::Warning); - msgBox.setWindowTitle("Error"); - msgBox.exec(); + WalletModel::UnlockContext ctx(model->requestUnlock()); + if(!ctx.isValid()) + { + // Unlock wallet was cancelled return; } @@ -197,7 +193,6 @@ void CommunityFundCreateProposalDialog::click_pushButtonCreateProposal() return; } else { - // User accepted making the proposal // Parse NavCoin address CScript CFContributionScript; diff --git a/src/qt/communityfundcreateproposaldialog.h b/src/qt/communityfundcreateproposaldialog.h index 874687e52..94e1f1932 100644 --- a/src/qt/communityfundcreateproposaldialog.h +++ b/src/qt/communityfundcreateproposaldialog.h @@ -1,8 +1,10 @@ #ifndef COMMUNITYFUNDCREATEPROPOSALDIALOG_H #define COMMUNITYFUNDCREATEPROPOSALDIALOG_H -#include #include "qvalidatedspinbox.h" +#include "walletmodel.h" + +#include namespace Ui { class CommunityFundCreateProposalDialog; @@ -16,14 +18,16 @@ class CommunityFundCreateProposalDialog : public QDialog explicit CommunityFundCreateProposalDialog(QWidget *parent = 0); ~CommunityFundCreateProposalDialog(); + void setModel(WalletModel *model); + private: Ui::CommunityFundCreateProposalDialog *ui; + WalletModel *model; bool validate(); private Q_SLOTS: void click_pushButtonCreateProposal(); void click_spinBox(); - }; #endif // COMMUNITYFUNDCREATEPROPOSALDIALOG_H diff --git a/src/qt/communityfundpage.cpp b/src/qt/communityfundpage.cpp index b35ef8bdf..233da57b9 100644 --- a/src/qt/communityfundpage.cpp +++ b/src/qt/communityfundpage.cpp @@ -374,6 +374,7 @@ void CommunityFundPage::click_radioButtonExpired() void CommunityFundPage::click_pushButtonCreateProposal() { CommunityFundCreateProposalDialog dlg(this); + dlg.setModel(walletModel); dlg.exec(); refresh(ui->radioButtonAll->isChecked(), viewing_proposals); } @@ -381,6 +382,7 @@ void CommunityFundPage::click_pushButtonCreateProposal() void CommunityFundPage::click_pushButtonCreatePaymentRequest() { CommunityFundCreatePaymentRequestDialog dlg(this); + dlg.setModel(walletModel); dlg.exec(); refresh(ui->radioButtonAll->isChecked(), viewing_proposals); }