Skip to content

Commit 6a86c24

Browse files
cozzlaanwj
authored andcommitted
Coin Control Features
1 parent 8dfd8c6 commit 6a86c24

23 files changed

+2558
-43
lines changed

src/Makefile.am

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ DIST_SUBDIRS = . qt test
1313
# bitcoin core #
1414
BITCOIN_CORE_H = addrman.h alert.h allocators.h base58.h bignum.h \
1515
bitcoinrpc.h bloom.h chainparams.h checkpoints.h checkqueue.h \
16-
clientversion.h compat.h core.h coins.h crypter.h db.h hash.h init.h \
16+
clientversion.h coincontrol.h compat.h core.h coins.h crypter.h db.h hash.h init.h \
1717
key.h keystore.h leveldbwrapper.h limitedmap.h main.h miner.h mruset.h \
1818
netbase.h net.h noui.h protocol.h script.h serialize.h sync.h threadsafety.h \
1919
txdb.h txmempool.h ui_interface.h uint256.h util.h version.h walletdb.h wallet.h

src/coincontrol.h

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
#ifndef COINCONTROL_H
2+
#define COINCONTROL_H
3+
4+
#include "core.h"
5+
6+
/** Coin Control Features. */
7+
class CCoinControl
8+
{
9+
public:
10+
CTxDestination destChange;
11+
12+
CCoinControl()
13+
{
14+
SetNull();
15+
}
16+
17+
void SetNull()
18+
{
19+
destChange = CNoDestination();
20+
setSelected.clear();
21+
}
22+
23+
bool HasSelected() const
24+
{
25+
return (setSelected.size() > 0);
26+
}
27+
28+
bool IsSelected(const uint256& hash, unsigned int n) const
29+
{
30+
COutPoint outpt(hash, n);
31+
return (setSelected.count(outpt) > 0);
32+
}
33+
34+
void Select(COutPoint& output)
35+
{
36+
setSelected.insert(output);
37+
}
38+
39+
void UnSelect(COutPoint& output)
40+
{
41+
setSelected.erase(output);
42+
}
43+
44+
void UnSelectAll()
45+
{
46+
setSelected.clear();
47+
}
48+
49+
void ListSelected(std::vector<COutPoint>& vOutpoints)
50+
{
51+
vOutpoints.assign(setSelected.begin(), setSelected.end());
52+
}
53+
54+
private:
55+
std::set<COutPoint> setSelected;
56+
57+
};
58+
59+
#endif // COINCONTROL_H

src/qt/Makefile.am

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,10 @@ QT_TS = locale/bitcoin_ach.ts locale/bitcoin_af_ZA.ts locale/bitcoin_ar.ts \
3232
locale/bitcoin_zh_CN.ts locale/bitcoin_zh_TW.ts
3333

3434
QT_FORMS_UI = forms/aboutdialog.ui forms/addressbookpage.ui \
35-
forms/askpassphrasedialog.ui forms/editaddressdialog.ui forms/intro.ui \
35+
forms/askpassphrasedialog.ui \
36+
forms/coincontroldialog.ui \
37+
forms/editaddressdialog.ui \
38+
forms/intro.ui \
3639
forms/openuridialog.ui \
3740
forms/optionsdialog.ui forms/overviewpage.ui forms/receiverequestdialog.ui \
3841
forms/receivecoinsdialog.ui \
@@ -43,6 +46,8 @@ QT_MOC_CPP = moc_aboutdialog.cpp moc_addressbookpage.cpp \
4346
moc_addresstablemodel.cpp moc_askpassphrasedialog.cpp \
4447
moc_bitcoinaddressvalidator.cpp moc_bitcoinamountfield.cpp \
4548
moc_bitcoingui.cpp moc_bitcoinunits.cpp moc_clientmodel.cpp \
49+
moc_coincontroldialog.cpp \
50+
moc_coincontroltreewidget.cpp \
4651
moc_csvmodelwriter.cpp moc_editaddressdialog.cpp moc_guiutil.cpp \
4752
moc_intro.cpp moc_macdockiconhandler.cpp moc_macnotificationhandler.cpp \
4853
moc_monitoreddatamapper.cpp moc_notificator.cpp \
@@ -70,7 +75,7 @@ PROTOBUF_PROTO = paymentrequest.proto
7075

7176
BITCOIN_QT_H = aboutdialog.h addressbookpage.h addresstablemodel.h \
7277
askpassphrasedialog.h bitcoinaddressvalidator.h bitcoinamountfield.h \
73-
bitcoingui.h bitcoinunits.h clientmodel.h csvmodelwriter.h \
78+
bitcoingui.h bitcoinunits.h clientmodel.h coincontroldialog.h coincontroltreewidget.h csvmodelwriter.h \
7479
editaddressdialog.h guiconstants.h guiutil.h intro.h macdockiconhandler.h \
7580
macnotificationhandler.h monitoreddatamapper.h notificator.h \
7681
openuridialog.h \
@@ -103,7 +108,10 @@ RES_ICONS = res/icons/bitcoin.png res/icons/address-book.png \
103108
BITCOIN_QT_CPP = aboutdialog.cpp addressbookpage.cpp \
104109
addresstablemodel.cpp askpassphrasedialog.cpp bitcoinaddressvalidator.cpp \
105110
bitcoinamountfield.cpp bitcoin.cpp bitcoingui.cpp \
106-
bitcoinunits.cpp clientmodel.cpp csvmodelwriter.cpp editaddressdialog.cpp \
111+
bitcoinunits.cpp clientmodel.cpp \
112+
coincontroldialog.cpp \
113+
coincontroltreewidget.cpp \
114+
csvmodelwriter.cpp editaddressdialog.cpp \
107115
guiutil.cpp intro.cpp monitoreddatamapper.cpp notificator.cpp \
108116
openuridialog.cpp \
109117
optionsdialog.cpp optionsmodel.cpp overviewpage.cpp paymentrequestplus.cpp \

0 commit comments

Comments
 (0)