diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 64c61c7..3f830a3 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -628,7 +628,7 @@ void MainWindow::onCreateTransactionSuccess(PendingTransaction *tx, const QVecto // Show advanced dialog on multi-destination transactions if (address.size() > 1 || m_ctx->wallet->viewOnly()) { TxConfAdvDialog dialog_adv{m_ctx, m_ctx->tmpTxDescription, this}; - dialog_adv.setTransaction(tx); + dialog_adv.setTransaction(tx, !m_ctx->wallet->viewOnly()); dialog_adv.exec(); return; } diff --git a/src/dialog/TxConfAdvDialog.cpp b/src/dialog/TxConfAdvDialog.cpp index 8261849..3ddb412 100644 --- a/src/dialog/TxConfAdvDialog.cpp +++ b/src/dialog/TxConfAdvDialog.cpp @@ -35,11 +35,6 @@ TxConfAdvDialog::TxConfAdvDialog(QSharedPointer<AppContext> ctx, const QString & m_exportTxKeyMenu->addAction("Copy to clipboard", this, &TxConfAdvDialog::txKeyCopy); ui->btn_exportTxKey->setMenu(m_exportTxKeyMenu); - if (m_ctx->wallet->viewOnly()) { - ui->btn_exportSigned->hide(); - ui->btn_send->hide(); - } - ui->label_description->setText(QString("Description: %1").arg(description)); connect(ui->btn_sign, &QPushButton::clicked, this, &TxConfAdvDialog::signTransaction); @@ -52,25 +47,36 @@ TxConfAdvDialog::TxConfAdvDialog(QSharedPointer<AppContext> ctx, const QString & this->adjustSize(); } -void TxConfAdvDialog::setTransaction(PendingTransaction *tx) { +void TxConfAdvDialog::setTransaction(PendingTransaction *tx, bool isSigned) { ui->btn_sign->hide(); + if (!isSigned) { + ui->btn_exportSigned->hide(); + ui->btn_send->hide(); + } + m_tx = tx; m_tx->refresh(); PendingTransactionInfo *ptx = m_tx->transaction(0); //Todo: support split transactions + // TODO: implement hasTxKey() + if (!m_ctx->wallet->isHwBacked() && m_tx->transaction(0)->txKey() == "0100000000000000000000000000000000000000000000000000000000000000") { + ui->btn_exportTxKey->hide(); + } + ui->txid->setText(tx->txid().first()); ui->amount->setText(WalletManager::displayAmount(tx->amount())); ui->fee->setText(WalletManager::displayAmount(ptx->fee())); ui->total->setText(WalletManager::displayAmount(tx->amount() + ptx->fee())); - auto size_str = [this]{ - if (m_ctx->wallet->viewOnly()) { - return QString("Size: %1 bytes (unsigned)").arg(QString::number(m_tx->unsignedTxToBin().size())); - } else { + auto size_str = [this, isSigned]{ + if (isSigned) { auto size = m_tx->signedTxToHex(0).size() / 2; return QString("Size: %1 bytes (%2 bytes unsigned)").arg(QString::number(size), QString::number(m_tx->unsignedTxToBin().size())); + } else { + + return QString("Size: %1 bytes (unsigned)").arg(QString::number(m_tx->unsignedTxToBin().size())); } }(); ui->label_size->setText(size_str); diff --git a/src/dialog/TxConfAdvDialog.h b/src/dialog/TxConfAdvDialog.h index 9122261..c4df716 100644 --- a/src/dialog/TxConfAdvDialog.h +++ b/src/dialog/TxConfAdvDialog.h @@ -24,7 +24,7 @@ public: explicit TxConfAdvDialog(QSharedPointer<AppContext> ctx, const QString &description, QWidget *parent = nullptr); ~TxConfAdvDialog() override; - void setTransaction(PendingTransaction *tx); + void setTransaction(PendingTransaction *tx, bool isSigned = true); // #TODO: have libwallet return a UnsignedTransaction, this is just dumb void setUnsignedTransaction(UnsignedTransaction *utx); private: