]> Nutra Git (v1) - gamesguru/feather.git/commitdiff
OfflineTxSigning: UI improvements
authortobtoht <thotbot@protonmail.com>
Wed, 13 Oct 2021 21:02:21 +0000 (23:02 +0200)
committertobtoht <thotbot@protonmail.com>
Wed, 13 Oct 2021 21:02:21 +0000 (23:02 +0200)
src/MainWindow.cpp
src/dialog/TxConfAdvDialog.cpp
src/dialog/TxConfAdvDialog.h

index 64c61c7e3d9dbe91876d8fa719a943668ea2e417..3f830a3291e6572f894b1b08e6b23770d8459e04 100644 (file)
@@ -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;
     }
index 8261849f614a1f273f2bafd9536a6f02ec0fb833..3ddb412fc78824dde02bfe73b5479d16bb991e4b 100644 (file)
@@ -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);
index 9122261b26d99842e48c40aebbd60b251a8212c8..c4df71618d719d8cf546ec332b1a7e3c4b3d075e 100644 (file)
@@ -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: