mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-10 20:03:34 -03:00
Merge #8012: Qt: Delay user confirmation of send
3902a29
Qt: Delay user confirmation of send (Tyler Hardin)
This commit is contained in:
commit
b33824b76c
2 changed files with 71 additions and 4 deletions
|
@ -26,6 +26,9 @@
|
|||
#include <QScrollBar>
|
||||
#include <QSettings>
|
||||
#include <QTextDocument>
|
||||
#include <QTimer>
|
||||
|
||||
#define SEND_CONFIRM_DELAY 3
|
||||
|
||||
SendCoinsDialog::SendCoinsDialog(const PlatformStyle *platformStyle, QWidget *parent) :
|
||||
QDialog(parent),
|
||||
|
@ -311,10 +314,10 @@ void SendCoinsDialog::on_sendButton_clicked()
|
|||
questionString.append(QString("<span style='font-size:10pt;font-weight:normal;'><br />(=%2)</span>")
|
||||
.arg(alternativeUnits.join(" " + tr("or") + "<br />")));
|
||||
|
||||
QMessageBox::StandardButton retval = QMessageBox::question(this, tr("Confirm send coins"),
|
||||
questionString.arg(formatted.join("<br />")),
|
||||
QMessageBox::Yes | QMessageBox::Cancel,
|
||||
QMessageBox::Cancel);
|
||||
SendConfirmationDialog confirmationDialog(tr("Confirm send coins"),
|
||||
questionString.arg(formatted.join("<br />")), SEND_CONFIRM_DELAY, this);
|
||||
confirmationDialog.exec();
|
||||
QMessageBox::StandardButton retval = (QMessageBox::StandardButton)confirmationDialog.result();
|
||||
|
||||
if(retval != QMessageBox::Yes)
|
||||
{
|
||||
|
@ -828,3 +831,45 @@ void SendCoinsDialog::coinControlUpdateLabels()
|
|||
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"));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,9 @@
|
|||
#include "walletmodel.h"
|
||||
|
||||
#include <QDialog>
|
||||
#include <QMessageBox>
|
||||
#include <QString>
|
||||
#include <QTimer>
|
||||
|
||||
class ClientModel;
|
||||
class OptionsModel;
|
||||
|
@ -100,4 +102,24 @@ Q_SIGNALS:
|
|||
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
|
||||
|
|
Loading…
Reference in a new issue