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