Skip to content

Commit ca834b0

Browse files
committed
create/update contact from the send multi screen fully functional.
1 parent 3b97499 commit ca834b0

File tree

7 files changed

+81
-35
lines changed

7 files changed

+81
-35
lines changed

src/qt/pivx/addnewcontactdialog.cpp

Lines changed: 23 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,60 @@
11
#include "qt/pivx/addnewcontactdialog.h"
22
#include "qt/pivx/forms/ui_addnewcontactdialog.h"
3-
#include "QGraphicsDropShadowEffect"
4-
#include "QFile"
3+
#include "qt/pivx/qtutils.h"
54

65
AddNewContactDialog::AddNewContactDialog(QWidget *parent) :
76
QDialog(parent),
87
ui(new Ui::AddNewContactDialog)
98
{
109
ui->setupUi(this);
1110

12-
1311
// Stylesheet
1412
this->setStyleSheet(parent->styleSheet());
1513

16-
// Container
17-
1814
ui->frame->setProperty("cssClass", "container-dialog");
19-
2015
// Title
21-
2216
ui->labelTitle->setText(tr("Edit Contact"));
2317
ui->labelTitle->setProperty("cssClass", "text-title-dialog");
2418

2519
ui->labelMessage->setText(tr("Set a label for the selected address"));
2620
ui->labelMessage->setProperty("cssClass", "text-main-grey");
2721

28-
29-
QGraphicsDropShadowEffect* shadowEffect2 = new QGraphicsDropShadowEffect();
30-
shadowEffect2->setColor(QColor(0, 0, 0, 22));
31-
shadowEffect2->setXOffset(0);
32-
shadowEffect2->setYOffset(3);
33-
shadowEffect2->setBlurRadius(6);
34-
35-
3622
// Address
37-
38-
ui->lineEditName->setPlaceholderText("Enter a name address (e.g Only Exchages)");
39-
ui->lineEditName->setProperty("cssClass", "edit-primary-dialog");
40-
ui->lineEditName->setAttribute(Qt::WA_MacShowFocusRect, 0);
41-
ui->lineEditName->setGraphicsEffect(shadowEffect2);
42-
23+
ui->lineEditName->setPlaceholderText(tr("Enter a name for the address (e.g Exchange)"));
24+
initCssEditLine(ui->lineEditName, true);
4325

4426
// Buttons
45-
4627
ui->btnEsc->setText("");
4728
ui->btnEsc->setProperty("cssClass", "ic-close");
4829

4930
ui->btnCancel->setProperty("cssClass", "btn-dialog-cancel");
50-
ui->btnOk->setText("SAVE");
31+
ui->btnOk->setText(tr("SAVE"));
5132
ui->btnOk->setProperty("cssClass", "btn-primary");
5233

5334
connect(ui->btnEsc, SIGNAL(clicked()), this, SLOT(close()));
5435
connect(ui->btnCancel, SIGNAL(clicked()), this, SLOT(close()));
55-
connect(ui->btnOk, SIGNAL(clicked()), this, SLOT(accept()));
36+
connect(ui->btnOk, SIGNAL(clicked()), this, SLOT(ok()));
37+
}
38+
39+
void AddNewContactDialog::setTexts(QString title, const char* message) {
40+
ui->labelTitle->setText(title);
41+
this->message = message;
5642
}
5743

5844
void AddNewContactDialog::setData(QString address, QString label){
59-
ui->labelMessage->setText(tr("Edit label for the selected address:\n%1").arg(address.toUtf8().constData()));
60-
ui->lineEditName->setText(label);
45+
ui->labelMessage->setText(
46+
(
47+
!message ?
48+
tr("Edit label for the selected address:\n%1").arg(address.toUtf8().constData()) :
49+
tr(message).arg(address.toUtf8().constData())
50+
)
51+
);
52+
if (!label.isEmpty()) ui->lineEditName->setText(label);
53+
}
54+
55+
void AddNewContactDialog::ok() {
56+
this->res = true;
57+
accept();
6158
}
6259

6360
QString AddNewContactDialog::getLabel(){

src/qt/pivx/addnewcontactdialog.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,17 @@ class AddNewContactDialog : public QDialog
1515
explicit AddNewContactDialog(QWidget *parent = nullptr);
1616
~AddNewContactDialog();
1717

18+
void setTexts(QString title, const char* message);
1819
void setData(QString address, QString label);
1920
QString getLabel();
2021

22+
bool res = false;
23+
24+
public slots:
25+
void ok();
2126
private:
2227
Ui::AddNewContactDialog *ui;
28+
const char* message = nullptr;
2329
};
2430

2531
#endif // ADDNEWCONTACTDIALOG_H

src/qt/pivx/qtutils.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,9 @@ QColor getRowColor(bool isLightTheme, bool isHovered, bool isSelected){
168168
}
169169
}
170170

171-
void initCssEditLine(QLineEdit *edit){
172-
setCssEditLine(edit, true, false);
171+
void initCssEditLine(QLineEdit *edit, bool isDialog){
172+
if (isDialog) setCssEditLineDialog(edit, true, false);
173+
else setCssEditLine(edit, true, false);
173174
setShadow(edit);
174175
edit->setAttribute(Qt::WA_MacShowFocusRect, 0);
175176
}

src/qt/pivx/qtutils.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ void setupSettings(QSettings *settings);
4646
bool isLightTheme();
4747
void setTheme(bool isLight);
4848

49-
void initCssEditLine(QLineEdit *edit);
49+
void initCssEditLine(QLineEdit *edit, bool isDialog = false);
5050
void setCssEditLine(QLineEdit *edit, bool isValid, bool forceUpdate = false);
5151
void setCssEditLineDialog(QLineEdit *edit, bool isValid, bool forceUpdate = false);
5252
void setShadow(QWidget *edit);

src/qt/pivx/send.cpp

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "qt/pivx/send.h"
22
#include "qt/pivx/forms/ui_send.h"
33

4+
#include "qt/pivx/addnewcontactdialog.h"
45
#include "qt/pivx/qtutils.h"
56
#include "qt/pivx/sendchangeaddressdialog.h"
67
#include "qt/pivx/optionbutton.h"
@@ -660,7 +661,7 @@ void SendWidget::onMenuClicked(SendMultiRow* entry){
660661
if(!this->menu){
661662
this->menu = new TooltipMenu(window, this);
662663
this->menu->setCopyBtnVisible(false);
663-
this->menu->setEditBtnText(tr("Contacts"));
664+
this->menu->setEditBtnText(tr("Save contact"));
664665
this->menu->adjustSize();
665666
connect(this->menu, &TooltipMenu::message, this, &AddressesWidget::message);
666667
connect(this->menu, SIGNAL(onEditClicked()), this, SLOT(onContactMultiClicked()));
@@ -673,7 +674,45 @@ void SendWidget::onMenuClicked(SendMultiRow* entry){
673674
}
674675

675676
void SendWidget::onContactMultiClicked(){
676-
// show the contacts dialog.
677+
if(focusedEntry) {
678+
QString address = focusedEntry->getAddress();
679+
if (address.isEmpty()) {
680+
inform(tr("Address field is empty"));
681+
return;
682+
}
683+
if (!walletModel->validateAddress(address)) {
684+
inform(tr("Invalid address"));
685+
return;
686+
}
687+
CBitcoinAddress pivAdd = CBitcoinAddress(address.toStdString());
688+
if (walletModel->isMine(pivAdd)) {
689+
inform(tr("Cannot store your own address as contact"));
690+
return;
691+
}
692+
693+
showHideOp(true);
694+
AddNewContactDialog *dialog = new AddNewContactDialog(window);
695+
QString label = walletModel->getAddressTableModel()->labelForAddress(address);
696+
if (!label.isNull()){
697+
dialog->setTexts(tr("Update Contact"), "Edit label for the selected address:\n%1");
698+
dialog->setData(address, label);
699+
} else {
700+
dialog->setTexts(tr("Create New Contact"), "Save label for the selected address:\n%1");
701+
dialog->setData(address, "");
702+
}
703+
openDialogWithOpaqueBackgroundY(dialog, window, 3, 5);
704+
if (dialog->res) {
705+
if (label == dialog->getLabel()) {
706+
return;
707+
}
708+
if (walletModel->updateAddressBookLabels(pivAdd.Get(), dialog->getLabel().toStdString(), "send")) {
709+
inform(tr("New Contact Stored"));
710+
} else {
711+
inform(tr("Error Storing Contact"));
712+
}
713+
}
714+
}
715+
677716
}
678717

679718
void SendWidget::onDeleteClicked(){

src/qt/pivx/sendmultirow.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -163,9 +163,7 @@ SendCoinsRecipient SendMultiRow::getValue() {
163163
return recipient;
164164

165165
// Normal payment
166-
QString addressStr = ui->lineEditAddress->text();
167-
QString trimmedStr = addressStr.trimmed();
168-
recipient.address = trimmedStr;
166+
recipient.address = getAddress();
169167
recipient.label = ui->lineEditDescription->text();
170168

171169
// TODO: Convert this into a value..
@@ -178,6 +176,10 @@ SendCoinsRecipient SendMultiRow::getValue() {
178176
return recipient;
179177
}
180178

179+
QString SendMultiRow::getAddress() {
180+
return ui->lineEditAddress->text().trimmed();
181+
}
182+
181183
QRect SendMultiRow::getEditLineRect(){
182184
return ui->lineEditAddress->rect();
183185
}

src/qt/pivx/sendmultirow.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class SendMultiRow : public PWidget
3232
void setModel(WalletModel* model);
3333
bool validate();
3434
SendCoinsRecipient getValue();
35+
QString getAddress();
3536

3637
/** Return whether the entry is still empty and unedited */
3738
bool isClear();
@@ -72,7 +73,7 @@ private slots:
7273
QPushButton *iconNumber;
7374
QAction *btnContact;
7475

75-
WalletModel *model;
76+
WalletModel *model = nullptr;
7677
int displayUnit;
7778
int number = 0;
7879
bool isExpanded = false;

0 commit comments

Comments
 (0)