PIVX Core  5.6.99
P2P Digital Currency
proposalinfodialog.cpp
Go to the documentation of this file.
1 // Copyright (c) 2019-2021 The PIVX Core developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4 
5 #include "proposalinfodialog.h"
6 #include "ui_proposalinfodialog.h"
7 
8 #include "guiutil.h"
9 #include "qtutils.h"
10 #include "snackbar.h"
11 
12 #include <QDateTime>
13 
15  FocusedDialog(parent),
16  ui(new Ui::ProposalInfoDialog)
17 {
18  ui->setupUi(this);
19  this->setStyleSheet(parent->styleSheet());
20  setCssProperty(ui->frame, "container-dialog");
21  setCssProperty(ui->labelTitle, "text-title-dialog");
22  setCssProperty({ui->labelAmount, ui->labelName, ui->labelUrl, ui->labelRecipient, ui->labelPosVotes, ui->labelId, ui->labelNegVotes, ui->labelEndDate, ui->labelDate, ui->labelStatus}, "text-subtitle");
23  setCssProperty({ui->labelDividerID, ui->labelDividerName, ui->labelDividerRecipient, ui->labelDividerChange, ui->labelDividerMemo}, "container-divider");
24  setCssProperty({ui->textAmount, ui->textName, ui->textUrl, ui->textRecipient, ui->textPosVotes, ui->textId, ui->textNegVotes, ui->textEndDate, ui->textDate, ui->textStatus} , "text-body3-dialog");
25  setCssProperty({ui->pushCopy, ui->btnUrlCopy, ui->btnNameCopy, ui->btnRecipientCopy}, "ic-copy-big");
26  setCssProperty(ui->btnEsc, "ic-close");
27  connect(ui->btnEsc, &QPushButton::clicked, this, &ProposalInfoDialog::close);
28  connect(ui->pushCopy, &QPushButton::clicked, [this](){
29  GUIUtil::setClipboard(QString::fromStdString(info.id.GetHex()));
30  inform(tr("ID copied to clipboard"));
31  });
32  connect(ui->btnUrlCopy, &QPushButton::clicked, [this](){
33  GUIUtil::setClipboard(QString::fromStdString(info.url));
34  inform(tr("URL copied to clipboard"));
35  });
36  connect(ui->btnNameCopy, &QPushButton::clicked, [this](){
37  GUIUtil::setClipboard(QString::fromStdString(info.name));
38  inform(tr("Proposal name copied to clipboard"));
39  });
40  connect(ui->btnRecipientCopy, &QPushButton::clicked, [this]() {
41  GUIUtil::setClipboard(QString::fromStdString(info.recipientAdd));
42  inform(tr("Recipient copied to clipboard"));
43  });
44 }
45 
47 {
48  info = _info;
49  QString id{QString::fromStdString(info.id.GetHex())};
50  ui->textId->setText(id.left(20)+"..."+id.right(20));
51  ui->textName->setText(QString::fromStdString(info.name));
52  ui->textUrl->setText(QString::fromStdString(info.url));
53  ui->textRecipient->setText(QString::fromStdString(info.recipientAdd));
54  ui->textNegVotes->setText(QString::number(info.votesNo));
55  ui->textPosVotes->setText(QString::number(info.votesYes));
56  ui->textAmount->setText(GUIUtil::formatBalance(info.amount));
57  ui->textDate->setText(QString::number(info.startBlock));
58  ui->textEndDate->setText(QString::number(info.endBlock));
59  ui->textStatus->setText(info.statusToStr().c_str());
60 }
61 
63 {
64  if (snackBar && snackBar->isVisible()) snackBar->hide();
65  QDialog::accept();
66 }
67 
69 {
70  if (snackBar && snackBar->isVisible()) snackBar->hide();
71  QDialog::reject();
72 }
73 
74 void ProposalInfoDialog::inform(const QString& msg)
75 {
76  if (!snackBar) snackBar = new SnackBar(nullptr, this);
77  snackBar->setText(msg);
78  snackBar->resize(this->width(), snackBar->height());
79  openDialog(snackBar, this);
80 }
81 
83 {
84  delete snackBar;
85  delete ui;
86 }
void inform(const QString &msg)
Ui::ProposalInfoDialog * ui
void accept() override
void reject() override
ProposalInfoDialog(QWidget *parent=nullptr)
void setProposal(const ProposalInfo &info)
void setText(const QString &text)
Definition: snackbar.cpp:51
std::string GetHex() const
Definition: uint256.cpp:21
QString formatBalance(CAmount amount, int nDisplayUnit, bool isZpiv)
Definition: guiutil.cpp:119
void setCssProperty(std::initializer_list< QWidget * > args, const QString &value)
Definition: qtutils.cpp:334
bool openDialog(QDialog *widget, QWidget *gui)
Definition: qtutils.cpp:23
std::string recipientAdd
Payment script destination.
std::string url
int endBlock
End superblock height.
CAmount amount
Amount of PIV paid per month.
uint256 id
Proposal hash.
std::string statusToStr() const
std::string name
int startBlock
Start superblock height.