Skip to content

Commit 4cec67e

Browse files
committed
send multi outputs, tooltip menu + delete row connected.
1 parent 4bc2b59 commit 4cec67e

File tree

7 files changed

+98
-9
lines changed

7 files changed

+98
-9
lines changed

src/qt/pivx/addresseswidget.h

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

44
#include "qt/pivx/pwidget.h"
55
#include "addresstablemodel.h"
6-
#include "tooltipmenu.h"
6+
#include "qt/pivx/tooltipmenu.h"
77
#include "furabstractlistitemdelegate.h"
88
#include "qt/pivx/AddressFilterProxyModel.h"
99

src/qt/pivx/send.cpp

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,7 @@ SendMultiRow* SendWidget::createEntry(){
238238
entries.append(sendMultiRow);
239239
ui->scrollAreaWidgetContents->layout()->addWidget(sendMultiRow);
240240
connect(sendMultiRow, &SendMultiRow::onContactsClicked, this, &SendWidget::onContactsClicked);
241+
connect(sendMultiRow, &SendMultiRow::onMenuClicked, this, &SendWidget::onMenuClicked);
241242
return sendMultiRow;
242243
}
243244

@@ -598,6 +599,9 @@ void SendWidget::onPIVSelected(bool _isPIV){
598599

599600
void SendWidget::onContactsClicked(SendMultiRow* entry){
600601
focusedEntry = entry;
602+
if(menu && menu->isVisible()){
603+
menu->hide();
604+
}
601605
int height = entry->getEditHeight() * 8;
602606
int width = entry->getEditWidth();
603607

@@ -639,6 +643,55 @@ void SendWidget::onContactsClicked(SendMultiRow* entry){
639643
menuContacts->show();
640644
}
641645

646+
void SendWidget::onMenuClicked(SendMultiRow* entry){
647+
focusedEntry = entry;
648+
if(menuContacts && menuContacts->isVisible()){
649+
menuContacts->hide();
650+
}
651+
QPoint pos = entry->pos();
652+
pos.setX(pos.x() + (entry->width() - entry->getMenuBtnWidth()));
653+
pos.setY(pos.y() + entry->height() + (entry->getMenuBtnWidth()));
654+
655+
if(!this->menu){
656+
this->menu = new TooltipMenu(window, this);
657+
this->menu->setCopyBtnVisible(false);
658+
this->menu->setEditBtnText(tr("Contacts"));
659+
this->menu->adjustSize();
660+
connect(this->menu, &TooltipMenu::message, this, &AddressesWidget::message);
661+
connect(this->menu, SIGNAL(onEditClicked()), this, SLOT(onContactMultiClicked()));
662+
connect(this->menu, SIGNAL(onDeleteClicked()), this, SLOT(onDeleteClicked()));
663+
}else {
664+
this->menu->hide();
665+
}
666+
menu->move(pos);
667+
menu->show();
668+
}
669+
670+
void SendWidget::onContactMultiClicked(){
671+
// show the contacts dialog.
672+
}
673+
674+
void SendWidget::onDeleteClicked(){
675+
if (focusedEntry) {
676+
focusedEntry->hide();
677+
focusedEntry->deleteLater();
678+
int entryNumber = focusedEntry->getNumber();
679+
680+
// Refresh amount total + rest of rows numbers.
681+
QMutableListIterator<SendMultiRow*> it(entries);
682+
while (it.hasNext()) {
683+
SendMultiRow* entry = it.next();
684+
if (focusedEntry == entry){
685+
it.remove();
686+
} else if (focusedEntry && entry->getNumber() > entryNumber){
687+
entry->setNumber(entry->getNumber() - 1);
688+
}
689+
}
690+
691+
focusedEntry = nullptr;
692+
}
693+
}
694+
642695
void SendWidget::resizeMenu(){
643696
if(menuContacts && menuContacts->isVisible() && focusedEntry){
644697
int width = focusedEntry->getEditWidth();

src/qt/pivx/send.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include "walletmodel.h"
1111
#include "coincontroldialog.h"
1212
#include "zpivcontroldialog.h"
13+
#include "qt/pivx/tooltipmenu.h"
1314

1415
static const int MAX_SEND_POPUP_ENTRIES = 8;
1516

@@ -54,10 +55,13 @@ private slots:
5455
void onSendClicked();
5556
void changeTheme(bool isLightTheme, QString& theme);
5657
void onContactsClicked(SendMultiRow* entry);
58+
void onMenuClicked(SendMultiRow* entry);
5759
void onAddEntryClicked();
5860
void clearEntries();
5961
void clearAll();
6062
void refreshView();
63+
void onContactMultiClicked();
64+
void onDeleteClicked();
6165
private:
6266
Ui::send *ui;
6367
QPushButton *coinIcon;
@@ -67,7 +71,8 @@ private slots:
6771
CoinControlDialog *coinControlDialog = nullptr;
6872

6973
ContactsDropdown *menuContacts = nullptr;
70-
SendMultiRow *sendMultiRow;
74+
TooltipMenu *menu = nullptr;
75+
SendMultiRow *sendMultiRow = nullptr;
7176
// Current focus entry
7277
SendMultiRow* focusedEntry = nullptr;
7378

src/qt/pivx/sendmultirow.cpp

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ SendMultiRow::SendMultiRow(QWidget *parent) :
2222
ui->lineEditAddress->setAttribute(Qt::WA_MacShowFocusRect, 0);
2323
setShadow(ui->stackedAddress);
2424

25-
ui->lineEditAmount->setPlaceholderText("0.00 zPIV ");
25+
ui->lineEditAmount->setPlaceholderText("0.00 PIV ");
2626
initCssEditLine(ui->lineEditAmount);
2727
ui->lineEditAmount->setValidator(new QDoubleValidator(0, 100000000000, 7, this) );
2828

@@ -35,6 +35,7 @@ SendMultiRow::SendMultiRow(QWidget *parent) :
3535

3636
// Button menu
3737
ui->btnMenu->setProperty("cssClass", "btn-menu");
38+
ui->btnMenu->setVisible(false);
3839

3940
// Button Contact
4041
btnContact = ui->lineEditAddress->addAction(QIcon("://ic-contact-arrow-down"), QLineEdit::TrailingPosition);
@@ -60,14 +61,13 @@ SendMultiRow::SendMultiRow(QWidget *parent) :
6061
connect(ui->lineEditAmount, SIGNAL(textChanged(const QString&)), this, SLOT(amountChanged(const QString&)));
6162
connect(ui->lineEditAddress, SIGNAL(textChanged(const QString&)), this, SLOT(addressChanged(const QString&)));
6263
connect(btnContact, &QAction::triggered, [this](){emit onContactsClicked(this);});
63-
64+
connect(ui->btnMenu, &QPushButton::clicked, [this](){emit onMenuClicked(this);});
6465
}
6566

6667
void SendMultiRow::amountChanged(const QString& amount){
6768
if(!amount.isEmpty()) {
6869
CAmount value = getAmountValue(amount);
6970
if (value > 0) {
70-
// BitcoinUnits::format(displayUnit, value, false, BitcoinUnits::separatorAlways);
7171
ui->lineEditAmount->setText(amount);
7272
}
7373
}
@@ -175,8 +175,6 @@ SendCoinsRecipient SendMultiRow::getValue() {
175175
// todo: Notificate user..
176176
}
177177
recipient.amount = value;
178-
//recipient.message = ui->messageTextLabel->text();
179-
180178
return recipient;
181179
}
182180

@@ -233,6 +231,24 @@ void SendMultiRow::resizeEvent(QResizeEvent *event) {
233231
QWidget::resizeEvent(event);
234232
}
235233

234+
void SendMultiRow::enterEvent(QEvent *) {
235+
if(!this->isExpanded && iconNumber->isVisible()){
236+
isExpanded = true;
237+
ui->btnMenu->setVisible(isExpanded);
238+
}
239+
}
240+
241+
void SendMultiRow::leaveEvent(QEvent *) {
242+
if(isExpanded){
243+
isExpanded = false;
244+
ui->btnMenu->setVisible(isExpanded);
245+
}
246+
}
247+
248+
int SendMultiRow::getMenuBtnWidth(){
249+
return ui->btnMenu->width();
250+
}
251+
236252
SendMultiRow::~SendMultiRow()
237253
{
238254
delete ui;

src/qt/pivx/sendmultirow.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,17 +43,21 @@ class SendMultiRow : public QWidget
4343
QRect getEditLineRect();
4444
int getEditHeight();
4545
int getEditWidth();
46+
int getMenuBtnWidth();
4647

4748
public slots:
4849
void clear();
4950

5051
signals:
5152
void removeEntry(SendMultiRow* entry);
5253
void onContactsClicked(SendMultiRow* entry);
54+
void onMenuClicked(SendMultiRow* entry);
5355
//void payAmountChanged();
5456

5557
protected:
5658
void resizeEvent(QResizeEvent *event) override;
59+
virtual void enterEvent(QEvent *);
60+
virtual void leaveEvent(QEvent *);
5761

5862
private slots:
5963
void amountChanged(const QString&);
@@ -65,12 +69,12 @@ private slots:
6569
private:
6670
Ui::SendMultiRow *ui;
6771
QPushButton *iconNumber;
72+
QAction *btnContact;
6873

6974
WalletModel *model;
7075
int displayUnit;
7176
int number = 0;
72-
73-
QAction *btnContact;
77+
bool isExpanded = false;
7478

7579
SendCoinsRecipient recipient;
7680

src/qt/pivx/tooltipmenu.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,14 @@ TooltipMenu::TooltipMenu(PIVXGUI *_window, QWidget *parent) :
2525
connect(ui->btnEdit, SIGNAL(clicked()), this, SLOT(editClicked()));
2626
}
2727

28+
void TooltipMenu::setEditBtnText(QString btnText){
29+
ui->btnEdit->setText(btnText);
30+
}
31+
32+
void TooltipMenu::setCopyBtnVisible(bool visible){
33+
ui->btnCopy->setVisible(visible);
34+
}
35+
2836
void TooltipMenu::deleteClicked(){
2937
hide();
3038
emit onDeleteClicked();

src/qt/pivx/tooltipmenu.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ class TooltipMenu : public PWidget
2727
void setIndex(const QModelIndex &index);
2828
virtual void showEvent(QShowEvent *event) override;
2929

30+
void setEditBtnText(QString btnText);
31+
void setCopyBtnVisible(bool visible);
32+
3033
signals:
3134
void onDeleteClicked();
3235
void onCopyClicked();

0 commit comments

Comments
 (0)