mirror of
https://github.com/dashpay/dash.git
synced 2024-12-29 05:49:11 +01:00
9707ca5cea
* Merge #7506: Use CCoinControl selection in CWallet::FundTransactiond6cc6a1
Use CCoinControl selection in CWallet::FundTransaction (João Barbosa) * Merge #7732: [Qt] Debug window: replace "Build date" with "Datadir"fc737d1
[Qt] remove unused formatBuildDate method (Jonas Schnelli)4856f1d
[Qt] Debug window: replace "Build date" with "Datadir" (Jonas Schnelli) * Merge #7707: [RPC][QT] UI support for abandoned transactions8efed3b
[Qt] Support for abandoned/abandoning transactions (Jonas Schnelli) * Merge #7688: List solvability in listunspent output and improve helpc3932b3
List solvability in listunspent output and improve help (Pieter Wuille) * Merge #8006: Qt: Add option to disable the system tray icon8b0e497
Qt: Add option to hide the system tray icon (Tyler Hardin) * Merge #8073: qt: askpassphrasedialog: Clear pass fields on accept02ce2a3
qt: askpassphrasedialog: Clear pass fields on accept (Pavel Vasin) * Merge #8231: [Qt] fix a bug where the SplashScreen will not be hidden during startupb3e1348
[Qt] fix a bug where the SplashScreen will not be hidden during startup (Jonas Schnelli) * Merge #8257: Do not ask a UI question from bitcoind1acf1db
Do not ask a UI question from bitcoind (Pieter Wuille) * Merge #8463: [qt] Remove Priority from coincontrol dialogfa8dd78
[qt] Remove Priority from coincontrol dialog (MarcoFalke) * Merge #8678: [Qt][CoinControl] fix UI bug that could result in paying unexpected fee0480293
[Qt][CoinControl] fix UI bug that could result in paying unexpected fee (Jonas Schnelli) * Merge #8672: Qt: Show transaction size in transaction details windowc015634
qt: Adding transaction size to transaction details window (Hampus Sjöberg) \-- merge fix for s/size/total size/fdf82fb
Adding method GetTotalSize() to CTransaction (Hampus Sjöberg) * Merge #8371: [Qt] Add out-of-sync modal info layer08827df
[Qt] modalinfolayer: removed unused comments, renamed signal, code style overhaul (Jonas Schnelli)d8b062e
[Qt] only update "amount of blocks left" when the header chain is in-sync (Jonas Schnelli)e3245b4
[Qt] add out-of-sync modal info layer (Jonas Schnelli)e47052f
[Qt] ClientModel add method to get the height of the header chain (Jonas Schnelli)a001f18
[Qt] Always pass the numBlocksChanged signal for headers tip changed (Jonas Schnelli)bd44a04
[Qt] make Out-Of-Sync warning icon clickable (Jonas Schnelli)0904c3c
[Refactor] refactor function that forms human readable text out of a timeoffset (Jonas Schnelli) * Merge #8805: Trivial: Grammar and capitalizationc9ce17b
Trivial: Grammar and capitalization (Derek Miller) * Merge #8885: gui: fix ban from qt consolecb78c60
gui: fix ban from qt console (Cory Fields) * Merge #8821: [qt] sync-overlay: Don't block during reindexfa85e86
[qt] sync-overlay: Don't show estimated number of headers left (MarcoFalke)faa4de2
[qt] sync-overlay: Don't block during reindex (MarcoFalke) * Support themes for new transaction_abandoned icon * Fix constructor call to COutput * Merge #7842: RPC: do not print minping time in getpeerinfo when no ping received yet62a6486
RPC: do not print ping info in getpeerinfo when no ping received yet, fix help (Pavel Janík) * Merge #8918: Qt: Add "Copy URI" to payment request context menu21f5a63
Qt: Add "Copy URI" to payment request context menu (Luke Dashjr) * Merge #8925: qt: Display minimum ping in debug window.1724a40
Display minimum ping in debug window. (R E Broadley) * Merge #8972: [Qt] make warnings label selectable (jonasschnelli)ef0c9ee
[Qt] make warnings label selectable (Jonas Schnelli) * Make background of warning icon transparent in modaloverlay * Merge #9088: Reduce ambiguity of warning message77cbbd9
Make warning message about wallet balance possibly being incorrect less ambiguous. (R E Broadley) * Replace Bitcoin with Dash in modal overlay * Remove clicked signals from labelWalletStatus and labelTransactionsStatus As both are really just labels, clicking on those is not possible. This is different in Bitcoin, where these labels are actually buttons. * Pull out modaloverlay show/hide into it's own if/else block and switch to time based check Also don't use masternodeSync.IsBlockchainSynced() for now as it won't report the blockchain being synced before the first block (or other MN data?) arrives. This would otherwise give the impression that sync is being stuck.
154 lines
4.6 KiB
C++
154 lines
4.6 KiB
C++
// Copyright (c) 2011-2013 The Bitcoin Core developers
|
|
// Distributed under the MIT software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#ifndef BITCOIN_QT_TRANSACTIONRECORD_H
|
|
#define BITCOIN_QT_TRANSACTIONRECORD_H
|
|
|
|
#include "amount.h"
|
|
#include "uint256.h"
|
|
|
|
#include <QList>
|
|
#include <QString>
|
|
|
|
class CWallet;
|
|
class CWalletTx;
|
|
|
|
/** UI model for transaction status. The transaction status is the part of a transaction that will change over time.
|
|
*/
|
|
class TransactionStatus
|
|
{
|
|
public:
|
|
TransactionStatus():
|
|
countsForBalance(false), sortKey(""),
|
|
matures_in(0), status(Offline), depth(0), open_for(0), cur_num_blocks(-1)
|
|
{ }
|
|
|
|
enum Status {
|
|
Confirmed, /**< Have 6 or more confirmations (normal tx) or fully mature (mined tx) **/
|
|
/// Normal (sent/received) transactions
|
|
OpenUntilDate, /**< Transaction not yet final, waiting for date */
|
|
OpenUntilBlock, /**< Transaction not yet final, waiting for block */
|
|
Offline, /**< Not sent to any other nodes **/
|
|
Unconfirmed, /**< Not yet mined into a block **/
|
|
Confirming, /**< Confirmed, but waiting for the recommended number of confirmations **/
|
|
Conflicted, /**< Conflicts with other transaction or mempool **/
|
|
Abandoned, /**< Abandoned from the wallet **/
|
|
/// Generated (mined) transactions
|
|
Immature, /**< Mined but waiting for maturity */
|
|
MaturesWarning, /**< Transaction will likely not mature because no nodes have confirmed */
|
|
NotAccepted /**< Mined but not accepted */
|
|
};
|
|
|
|
/// Transaction counts towards available balance
|
|
bool countsForBalance;
|
|
/// Sorting key based on status
|
|
std::string sortKey;
|
|
|
|
/** @name Generated (mined) transactions
|
|
@{*/
|
|
int matures_in;
|
|
/**@}*/
|
|
|
|
/** @name Reported status
|
|
@{*/
|
|
Status status;
|
|
qint64 depth;
|
|
qint64 open_for; /**< Timestamp if status==OpenUntilDate, otherwise number
|
|
of additional blocks that need to be mined before
|
|
finalization */
|
|
/**@}*/
|
|
|
|
/** Current number of blocks (to know whether cached status is still valid) */
|
|
int cur_num_blocks;
|
|
|
|
//** Know when to update transaction for ix locks **/
|
|
int cur_num_ix_locks;
|
|
};
|
|
|
|
/** UI model for a transaction. A core transaction can be represented by multiple UI transactions if it has
|
|
multiple outputs.
|
|
*/
|
|
class TransactionRecord
|
|
{
|
|
public:
|
|
enum Type
|
|
{
|
|
Other,
|
|
Generated,
|
|
SendToAddress,
|
|
SendToOther,
|
|
RecvWithAddress,
|
|
RecvFromOther,
|
|
SendToSelf,
|
|
RecvWithPrivateSend,
|
|
PrivateSendDenominate,
|
|
PrivateSendCollateralPayment,
|
|
PrivateSendMakeCollaterals,
|
|
PrivateSendCreateDenominations,
|
|
PrivateSend
|
|
};
|
|
|
|
/** Number of confirmation recommended for accepting a transaction */
|
|
static const int RecommendedNumConfirmations = 6;
|
|
|
|
TransactionRecord():
|
|
hash(), time(0), type(Other), address(""), debit(0), credit(0), idx(0)
|
|
{
|
|
}
|
|
|
|
TransactionRecord(uint256 hash, qint64 time):
|
|
hash(hash), time(time), type(Other), address(""), debit(0),
|
|
credit(0), idx(0)
|
|
{
|
|
}
|
|
|
|
TransactionRecord(uint256 hash, qint64 time,
|
|
Type type, const std::string &address,
|
|
const CAmount& debit, const CAmount& credit):
|
|
hash(hash), time(time), type(type), address(address), debit(debit), credit(credit),
|
|
idx(0)
|
|
{
|
|
}
|
|
|
|
/** Decompose CWallet transaction to model transaction records.
|
|
*/
|
|
static bool showTransaction(const CWalletTx &wtx);
|
|
static QList<TransactionRecord> decomposeTransaction(const CWallet *wallet, const CWalletTx &wtx);
|
|
|
|
/** @name Immutable transaction attributes
|
|
@{*/
|
|
uint256 hash;
|
|
qint64 time;
|
|
Type type;
|
|
std::string address;
|
|
CAmount debit;
|
|
CAmount credit;
|
|
/**@}*/
|
|
|
|
/** Subtransaction index, for sort key */
|
|
int idx;
|
|
|
|
/** Status: can change with block chain update */
|
|
TransactionStatus status;
|
|
|
|
/** Whether the transaction was sent/received with a watch-only address */
|
|
bool involvesWatchAddress;
|
|
|
|
/** Return the unique identifier for this transaction (part) */
|
|
QString getTxID() const;
|
|
|
|
/** Format subtransaction id */
|
|
static QString formatSubTxId(const uint256 &hash, int vout);
|
|
|
|
/** Update status from core wallet tx.
|
|
*/
|
|
void updateStatus(const CWalletTx &wtx);
|
|
|
|
/** Return whether a status update is needed.
|
|
*/
|
|
bool statusUpdateNeeded();
|
|
};
|
|
|
|
#endif // BITCOIN_QT_TRANSACTIONRECORD_H
|