Skip to content

Commit

Permalink
Merge #8012: Qt: Delay user confirmation of send
Browse files Browse the repository at this point in the history
3902a29 Qt: Delay user confirmation of send (Tyler Hardin)
  • Loading branch information
jonasschnelli committed May 10, 2016
2 parents 4e14afe + 3902a29 commit b33824b
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 4 deletions.
53 changes: 49 additions & 4 deletions src/qt/sendcoinsdialog.cpp
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@
#include <QScrollBar> #include <QScrollBar>
#include <QSettings> #include <QSettings>
#include <QTextDocument> #include <QTextDocument>
#include <QTimer>

#define SEND_CONFIRM_DELAY 3


SendCoinsDialog::SendCoinsDialog(const PlatformStyle *platformStyle, QWidget *parent) : SendCoinsDialog::SendCoinsDialog(const PlatformStyle *platformStyle, QWidget *parent) :
QDialog(parent), QDialog(parent),
Expand Down Expand Up @@ -311,10 +314,10 @@ void SendCoinsDialog::on_sendButton_clicked()
questionString.append(QString("<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span>") questionString.append(QString("<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span>")
.arg(alternativeUnits.join(" " + tr("or") + "<br />"))); .arg(alternativeUnits.join(" " + tr("or") + "<br />")));


QMessageBox::StandardButton retval = QMessageBox::question(this, tr("Confirm send coins"), SendConfirmationDialog confirmationDialog(tr("Confirm send coins"),
questionString.arg(formatted.join("<br />")), questionString.arg(formatted.join("<br />")), SEND_CONFIRM_DELAY, this);
QMessageBox::Yes | QMessageBox::Cancel, confirmationDialog.exec();
QMessageBox::Cancel); QMessageBox::StandardButton retval = (QMessageBox::StandardButton)confirmationDialog.result();


if(retval != QMessageBox::Yes) if(retval != QMessageBox::Yes)
{ {
Expand Down Expand Up @@ -828,3 +831,45 @@ void SendCoinsDialog::coinControlUpdateLabels()
ui->labelCoinControlInsuffFunds->hide(); ui->labelCoinControlInsuffFunds->hide();
} }
} }

SendConfirmationDialog::SendConfirmationDialog(const QString &title, const QString &text, int secDelay,
QWidget *parent) :
QMessageBox(QMessageBox::Question, title, text, QMessageBox::Yes | QMessageBox::Cancel, parent), secDelay(secDelay)
{
setDefaultButton(QMessageBox::Cancel);
yesButton = button(QMessageBox::Yes);
updateYesButton();
connect(&countDownTimer, SIGNAL(timeout()), this, SLOT(countDown()));
}

int SendConfirmationDialog::exec()
{
updateYesButton();
countDownTimer.start(1000);
return QMessageBox::exec();
}

void SendConfirmationDialog::countDown()
{
secDelay--;
updateYesButton();

if(secDelay <= 0)
{
countDownTimer.stop();
}
}

void SendConfirmationDialog::updateYesButton()
{
if(secDelay > 0)
{
yesButton->setEnabled(false);
yesButton->setText(tr("Yes") + " (" + QString::number(secDelay) + ")");
}
else
{
yesButton->setEnabled(true);
yesButton->setText(tr("Yes"));
}
}
22 changes: 22 additions & 0 deletions src/qt/sendcoinsdialog.h
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@
#include "walletmodel.h" #include "walletmodel.h"


#include <QDialog> #include <QDialog>
#include <QMessageBox>
#include <QString> #include <QString>
#include <QTimer>


class ClientModel; class ClientModel;
class OptionsModel; class OptionsModel;
Expand Down Expand Up @@ -100,4 +102,24 @@ private Q_SLOTS:
void message(const QString &title, const QString &message, unsigned int style); void message(const QString &title, const QString &message, unsigned int style);
}; };




class SendConfirmationDialog : public QMessageBox
{
Q_OBJECT

public:
SendConfirmationDialog(const QString &title, const QString &text, int secDelay = 0, QWidget *parent = 0);
int exec();

private Q_SLOTS:
void countDown();
void updateYesButton();

private:
QAbstractButton *yesButton;
QTimer countDownTimer;
int secDelay;
};

#endif // BITCOIN_QT_SENDCOINSDIALOG_H #endif // BITCOIN_QT_SENDCOINSDIALOG_H

0 comments on commit b33824b

Please sign in to comment.