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