Skip to content

Commit a589c7d

Browse files
committed
zpiv coin selection dialog connected to send screen + bad coupled code cleanup.
1 parent 24b9e64 commit a589c7d

File tree

8 files changed

+37
-8
lines changed

8 files changed

+37
-8
lines changed

src/Makefile.qt.include

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ QT_FORMS_UI = \
6666
qt/forms/signverifymessagedialog.ui \
6767
qt/forms/transactiondescdialog.ui \
6868
qt/pivx/forms/coincontrolzpivdialog.ui \
69+
qt/forms/zpivcontroldialog.ui \
6970
qt/pivx/forms/snackbar.ui \
7071
qt/pivx/forms/navmenuwidget.ui \
7172
qt/pivx/forms/lockunlock.ui \
@@ -168,6 +169,7 @@ QT_MOC_CPP = \
168169
qt/moc_walletframe.cpp \
169170
qt/moc_walletmodel.cpp \
170171
qt/moc_walletview.cpp \
172+
qt/moc_zpivcontroldialog.cpp \
171173
qt/pivx/moc_pwidget.cpp \
172174
qt/pivx/moc_coincontrolzpivdialog.cpp \
173175
qt/pivx/moc_snackbar.cpp \
@@ -301,6 +303,7 @@ BITCOIN_QT_H = \
301303
qt/walletmodeltransaction.h \
302304
qt/walletview.h \
303305
qt/winshutdownmonitor.h \
306+
qt/zpivcontroldialog.h \
304307
qt/pivx/pwidget.h \
305308
qt/pivx/coincontrolzpivdialog.h \
306309
qt/pivx/snackbar.h \
@@ -635,6 +638,7 @@ BITCOIN_QT_WALLET_CPP = \
635638
qt/walletmodel.cpp \
636639
qt/walletmodeltransaction.cpp \
637640
qt/walletview.cpp \
641+
qt/zpivcontroldialog.cpp \
638642
qt/pivx/pwidget.cpp \
639643
qt/pivx/coincontrolzpivdialog.cpp \
640644
qt/pivx/snackbar.cpp \

src/qt/pivx/send.cpp

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
#include "addresstablemodel.h"
1313
#include "coincontrol.h"
1414
#include "script/standard.h"
15+
#include <primitives/deterministicmint.h>
1516
#include "openuridialog.h"
17+
#include "zpivcontroldialog.h"
1618

1719

1820
#include <iostream>
@@ -358,6 +360,23 @@ bool SendWidget::sendZpiv(QList<SendCoinsRecipient> recipients){
358360
outputs.push_back(std::pair<CBitcoinAddress*, CAmount>(new CBitcoinAddress(rec.address.toStdString()),rec.amount));
359361
}
360362

363+
// TODO: Complete me..
364+
// use mints from zPIV selector if applicable
365+
vector<CMintMeta> vMintsToFetch;
366+
vector<CZerocoinMint> vMintsSelected;
367+
if (!ZPivControlDialog::setSelectedMints.empty()) {
368+
vMintsToFetch = ZPivControlDialog::GetSelectedMints();
369+
370+
for (auto& meta : vMintsToFetch) {
371+
CZerocoinMint mint;
372+
if (!walletModel->getMint(meta.hashSerial, mint)){
373+
inform(tr("Coin control mint not found"));
374+
return false;
375+
}
376+
vMintsSelected.emplace_back(mint);
377+
}
378+
}
379+
361380
// TODO: add confirm dialog..
362381
QString sendBody = outputs.size() == 1 ?
363382
tr("Sending %1 to address %2\n")
@@ -377,7 +396,6 @@ bool SendWidget::sendZpiv(QList<SendCoinsRecipient> recipients){
377396

378397
if(!ret) return false;
379398

380-
vector <CZerocoinMint> vMintsSelected;
381399
CZerocoinSpendReceipt receipt;
382400

383401
std::string changeAddress = "";
@@ -397,6 +415,7 @@ bool SendWidget::sendZpiv(QList<SendCoinsRecipient> recipients){
397415
)
398416
) {
399417
inform(tr("zPIV transaction sent!"));
418+
ZPivControlDialog::setSelectedMints.clear();
400419
clearAll();
401420
return true;
402421
} else {
@@ -563,9 +582,10 @@ void SendWidget::onCoinControlClicked()
563582
coinControlDialog->exec();
564583
ui->btnCoinControl->setActive(CoinControlDialog::coinControl->HasSelected());
565584
}else{
566-
showHideOp(true);
567-
CoinControlZpivDialog* dialog = new CoinControlZpivDialog(window);
568-
openDialogWithOpaqueBackgroundFullScreen(dialog, window);
585+
ZPivControlDialog* zPivControl = new ZPivControlDialog(this);
586+
zPivControl->setModel(walletModel);
587+
zPivControl->exec();
588+
ui->btnCoinControl->setActive(!ZPivControlDialog::setSelectedMints.empty());
569589
}
570590
}
571591

src/qt/pivx/send.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include "qt/pivx/sendmultirow.h"
1010
#include "walletmodel.h"
1111
#include "coincontroldialog.h"
12+
#include "zpivcontroldialog.h"
1213

1314
static const int MAX_SEND_POPUP_ENTRIES = 8;
1415

src/qt/pivx/txviewholder.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
#include "transactiontablemodel.h"
55
#include "transactionrecord.h"
6-
#include "bitcoingui.h"
76
#include <QModelIndex>
87
#include <iostream>
98

src/qt/walletmodel.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,10 @@ void WalletModel::updateMultiSigFlag(bool fHaveMultiSig)
248248
emit notifyMultiSigChanged(fHaveMultiSig);
249249
}
250250

251+
bool WalletModel::getMint(const uint256& hashSerial, CZerocoinMint& mint){
252+
return wallet->GetMint(hashSerial, mint);
253+
}
254+
251255
bool WalletModel::validateAddress(const QString& address)
252256
{
253257
CBitcoinAddress addressParsed(address.toStdString());

src/qt/walletmodel.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,9 @@ class WalletModel : public QObject
151151
void decryptKey(const std::vector<unsigned char>& crypted, const std::string& slt, const std::string& pwd, CKey& key);
152152
void emitBalanceChanged(); // Force update of UI-elements even when no values have changed
153153

154+
// return minted zPIV
155+
bool getMint(const uint256& hashSerial, CZerocoinMint& mint);
156+
154157
// Check address for validity
155158
bool validateAddress(const QString& address);
156159

src/qt/zpivcontroldialog.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ ZPivControlDialog::ZPivControlDialog(QWidget *parent) :
2828
{
2929
ui->setupUi(this);
3030
setMints.clear();
31-
privacyDialog = (PrivacyDialog*)parent;
3231

3332
// click on checkbox
3433
connect(ui->treeWidget, SIGNAL(itemChanged(QTreeWidgetItem*, int)), this, SLOT(updateSelection(QTreeWidgetItem*, int)));
@@ -192,7 +191,7 @@ void ZPivControlDialog::updateLabels()
192191
ui->labelQuantity_int->setText(QString::number(setSelectedMints.size()));
193192

194193
//update PrivacyDialog labels
195-
privacyDialog->setZPivControlLabels(nAmount, setSelectedMints.size());
194+
//privacyDialog->setZPivControlLabels(nAmount, setSelectedMints.size());
196195
}
197196

198197
std::vector<CMintMeta> ZPivControlDialog::GetSelectedMints()

src/qt/zpivcontroldialog.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ class ZPivControlDialog : public QDialog
4444
private:
4545
Ui::ZPivControlDialog *ui;
4646
WalletModel* model;
47-
PrivacyDialog* privacyDialog;
4847

4948
void updateList();
5049
void updateLabels();

0 commit comments

Comments
 (0)