/ src / qt / psbtoperationsdialog.h
psbtoperationsdialog.h
 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      PartiallySignedTransaction m_transaction_data;
39      WalletModel* m_wallet_model;
40      ClientModel* m_client_model;
41  
42      enum class StatusLevel {
43          INFO,
44          WARN,
45          ERR
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