Merge #8012: Qt: Delay user confirmation of send
3902a29
Qt: Delay user confirmation of send (Tyler Hardin)
This commit is contained in:
commit
b33824b76c
|
@ -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),
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
@ -100,4 +102,24 @@ Q_SIGNALS:
|
||||||
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
|
||||||
|
|
Loading…
Reference in New Issue