psbtoperationsdialog.h raw

   1  // Copyright (c) 2011-present The Bitcoin Core developers
   2  // Distributed under the MIT software license, see the accompanying
   3  // file COPYING or http://www.opensource.org/licenses/mit-license.php.
   4  
   5  #ifndef BITCOIN_QT_PSBTOPERATIONSDIALOG_H
   6  #define BITCOIN_QT_PSBTOPERATIONSDIALOG_H
   7  
   8  #include <QDialog>
   9  #include <QString>
  10  
  11  #include <psbt.h>
  12  #include <qt/clientmodel.h>
  13  #include <qt/walletmodel.h>
  14  
  15  namespace Ui {
  16  class PSBTOperationsDialog;
  17  }
  18  
  19  /** Dialog showing transaction details. */
  20  class PSBTOperationsDialog : public QDialog
  21  {
  22      Q_OBJECT
  23  
  24  public:
  25      explicit PSBTOperationsDialog(QWidget* parent, WalletModel* walletModel, ClientModel* clientModel);
  26      ~PSBTOperationsDialog();
  27  
  28      void openWithPSBT(PartiallySignedTransaction psbtx);
  29  
  30  public Q_SLOTS:
  31      void signTransaction();
  32      void broadcastTransaction();
  33      void copyToClipboard();
  34      void saveTransaction();
  35  
  36  private:
  37      Ui::PSBTOperationsDialog* m_ui;
  38      std::optional<PartiallySignedTransaction> m_transaction_data;
  39      WalletModel* m_wallet_model;
  40      ClientModel* m_client_model;
  41  
  42      enum class StatusLevel {
  43          Info,
  44          Warn,
  45          Error
  46      };
  47  
  48      size_t couldSignInputs(const PartiallySignedTransaction &psbtx);
  49      void updateTransactionDisplay();
  50      QString renderTransaction(const PartiallySignedTransaction &psbtx);
  51      void showStatus(const QString &msg, StatusLevel level);
  52      void showTransactionStatus(const PartiallySignedTransaction &psbtx);
  53  };
  54  
  55  #endif // BITCOIN_QT_PSBTOPERATIONSDIALOG_H
  56