2020-10-07 10:36:04 +00:00
|
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
2020-12-26 19:56:06 +00:00
|
|
|
// Copyright (c) 2020-2021, The Monero Project.
|
2020-10-07 10:36:04 +00:00
|
|
|
|
|
|
|
#include "txconfdialog.h"
|
|
|
|
#include "ui_txconfdialog.h"
|
|
|
|
#include "model/ModelUtils.h"
|
2020-10-16 03:05:05 +00:00
|
|
|
#include "txconfadvdialog.h"
|
2020-10-21 14:52:34 +00:00
|
|
|
#include "globals.h"
|
2021-01-28 22:48:14 +00:00
|
|
|
#include "utils/ColorScheme.h"
|
2020-10-07 10:36:04 +00:00
|
|
|
|
|
|
|
#include <QMessageBox>
|
|
|
|
|
2021-01-26 23:55:27 +00:00
|
|
|
TxConfDialog::TxConfDialog(AppContext *ctx, PendingTransaction *tx, const QString &address, const QString &description, QWidget *parent)
|
2020-10-07 10:36:04 +00:00
|
|
|
: QDialog(parent)
|
|
|
|
, ui(new Ui::TxConfDialog)
|
2020-10-16 03:05:05 +00:00
|
|
|
, m_ctx(ctx)
|
2020-10-07 10:36:04 +00:00
|
|
|
, m_tx(tx)
|
|
|
|
, m_address(address)
|
|
|
|
, m_description(description)
|
|
|
|
{
|
|
|
|
ui->setupUi(this);
|
|
|
|
|
|
|
|
ui->label_warning->setText("You are about to send a transaction.\nVerify the information below.");
|
2021-01-21 03:10:46 +00:00
|
|
|
ui->label_note->hide();
|
2020-10-07 10:36:04 +00:00
|
|
|
|
|
|
|
QString preferredCur = config()->get(Config::preferredFiatCurrency).toString();
|
|
|
|
|
|
|
|
auto convert = [preferredCur](double amount){
|
|
|
|
return QString::number(AppContext::prices->convert("XMR", preferredCur, amount), 'f', 2);
|
|
|
|
};
|
|
|
|
|
|
|
|
QString amount = WalletManager::displayAmount(tx->amount());
|
|
|
|
QString fee = WalletManager::displayAmount(tx->fee());
|
|
|
|
QString total = WalletManager::displayAmount(tx->amount() + tx->fee());
|
2020-12-16 16:31:25 +00:00
|
|
|
QVector<QString> amounts = {amount, fee, total};
|
|
|
|
int maxLength = Utils::maxLength(amounts);
|
|
|
|
std::for_each(amounts.begin(), amounts.end(), [maxLength](QString& amount){amount = amount.rightJustified(maxLength, ' ');});
|
|
|
|
|
|
|
|
QString amount_fiat = convert(tx->amount() / globals::cdiv);
|
|
|
|
QString fee_fiat = convert(tx->fee() / globals::cdiv);
|
2020-10-21 14:52:34 +00:00
|
|
|
QString total_fiat = convert((tx->amount() + tx->fee()) / globals::cdiv);
|
2020-12-16 16:31:25 +00:00
|
|
|
QVector<QString> amounts_fiat = {amount_fiat, fee_fiat, total_fiat};
|
|
|
|
int maxLengthFiat = Utils::maxLength(amounts_fiat);
|
|
|
|
std::for_each(amounts_fiat.begin(), amounts_fiat.end(), [maxLengthFiat](QString& amount){amount = amount.rightJustified(maxLengthFiat, ' ');});
|
|
|
|
|
2021-01-28 22:48:14 +00:00
|
|
|
ui->label_amount->setFont(ModelUtils::getMonospaceFont());
|
|
|
|
ui->label_fee->setFont(ModelUtils::getMonospaceFont());
|
|
|
|
ui->label_total->setFont(ModelUtils::getMonospaceFont());
|
|
|
|
|
2020-12-16 16:31:25 +00:00
|
|
|
ui->label_amount->setText(QString("%1 (%2 %3)").arg(amounts[0], amounts_fiat[0], preferredCur));
|
|
|
|
ui->label_fee->setText(QString("%1 (%2 %3)").arg(amounts[1], amounts_fiat[1], preferredCur));
|
|
|
|
ui->label_total->setText(QString("%1 (%2 %3)").arg(amounts[2], amounts_fiat[2], preferredCur));
|
2020-10-07 10:36:04 +00:00
|
|
|
|
2021-01-21 03:10:46 +00:00
|
|
|
auto subaddressIndex = m_ctx->currentWallet->subaddressIndex(address);
|
|
|
|
QString addressExtra;
|
2021-01-28 22:48:14 +00:00
|
|
|
|
|
|
|
ui->label_address->setText(ModelUtils::displayAddress(address, 2));
|
|
|
|
ui->label_address->setFont(ModelUtils::getMonospaceFont());
|
|
|
|
ui->label_address->setToolTip(address);
|
|
|
|
|
2021-01-29 14:51:59 +00:00
|
|
|
if (subaddressIndex.isValid()) {
|
2021-01-21 03:10:46 +00:00
|
|
|
ui->label_note->setText("Note: this is a churn transaction.");
|
|
|
|
ui->label_note->show();
|
2021-01-28 22:48:14 +00:00
|
|
|
ui->label_address->setStyleSheet(ColorScheme::GREEN.asStylesheet(true));
|
|
|
|
ui->label_address->setToolTip("Wallet receive address");
|
2021-01-21 03:10:46 +00:00
|
|
|
}
|
|
|
|
|
2021-01-29 14:51:59 +00:00
|
|
|
if (subaddressIndex.isPrimary()) {
|
2021-01-28 22:48:14 +00:00
|
|
|
ui->label_address->setStyleSheet(ColorScheme::YELLOW.asStylesheet(true));
|
|
|
|
ui->label_address->setToolTip("Wallet change/primary address");
|
|
|
|
}
|
2020-10-07 10:36:04 +00:00
|
|
|
|
2021-01-21 03:10:46 +00:00
|
|
|
|
2020-10-16 03:05:05 +00:00
|
|
|
ui->buttonBox->button(QDialogButtonBox::Ok)->setText("Send");
|
|
|
|
|
|
|
|
connect(ui->btn_Advanced, &QPushButton::clicked, this, &TxConfDialog::setShowAdvanced);
|
2020-10-07 10:36:04 +00:00
|
|
|
|
2020-12-14 22:07:23 +00:00
|
|
|
AppContext::txCache[tx->txid()[0]] = tx->signedTxToHex(0);
|
2020-10-07 10:36:04 +00:00
|
|
|
this->adjustSize();
|
|
|
|
}
|
|
|
|
|
2020-10-16 03:05:05 +00:00
|
|
|
void TxConfDialog::setShowAdvanced() {
|
|
|
|
this->showAdvanced = true;
|
|
|
|
QDialog::reject();
|
2020-10-07 10:36:04 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
TxConfDialog::~TxConfDialog() {
|
|
|
|
delete ui;
|
|
|
|
}
|