/ src / qt / walletmodeltransaction.cpp
walletmodeltransaction.cpp
 1  // Copyright (c) 2011-2021 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  #include <qt/walletmodeltransaction.h>
 6  
 7  #include <policy/policy.h>
 8  
 9  WalletModelTransaction::WalletModelTransaction(const QList<SendCoinsRecipient>& _recipients)
10      : recipients(_recipients)
11  {
12  }
13  
14  QList<SendCoinsRecipient> WalletModelTransaction::getRecipients() const
15  {
16      return recipients;
17  }
18  
19  CTransactionRef& WalletModelTransaction::getWtx()
20  {
21      return wtx;
22  }
23  
24  void WalletModelTransaction::setWtx(const CTransactionRef& newTx)
25  {
26      wtx = newTx;
27  }
28  
29  unsigned int WalletModelTransaction::getTransactionSize()
30  {
31      return wtx ? GetVirtualTransactionSize(*wtx) : 0;
32  }
33  
34  CAmount WalletModelTransaction::getTransactionFee() const
35  {
36      return fee;
37  }
38  
39  void WalletModelTransaction::setTransactionFee(const CAmount& newFee)
40  {
41      fee = newFee;
42  }
43  
44  void WalletModelTransaction::reassignAmounts(int nChangePosRet)
45  {
46      const CTransaction* walletTransaction = wtx.get();
47      int i = 0;
48      for (QList<SendCoinsRecipient>::iterator it = recipients.begin(); it != recipients.end(); ++it)
49      {
50          SendCoinsRecipient& rcp = (*it);
51          {
52              if (i == nChangePosRet)
53                  i++;
54              rcp.amount = walletTransaction->vout[i].nValue;
55              i++;
56          }
57      }
58  }
59  
60  CAmount WalletModelTransaction::getTotalTransactionAmount() const
61  {
62      CAmount totalTransactionAmount = 0;
63      for (const SendCoinsRecipient &rcp : recipients)
64      {
65          totalTransactionAmount += rcp.amount;
66      }
67      return totalTransactionAmount;
68  }