PIVX Core  5.6.99
P2P Digital Currency
walletoptionswidget.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 
6 #include "qt/settings/forms/ui_walletoptionswidget.h"
7 
8 #include "clientmodel.h"
9 #include "optionsmodel.h"
10 #include "qtutils.h"
11 
12 #include <QListView>
13 
15  PWidget(_window, parent),
17 {
18  ui->setupUi(this);
19 
20  this->setStyleSheet(parent->styleSheet());
21 
22  // Containers
23  ui->left->setProperty("cssClass", "container");
24  ui->left->setContentsMargins(10,10,10,10);
25  ui->labelDivider->setProperty("cssClass", "container-divider");
26 
27  // Title
28  setCssTitleScreen(ui->labelTitle);
29  setCssSubtitleScreen(ui->labelSubtitle1);
30 
31  // Combobox
32  ui->labelTitleStake->setProperty("cssClass", "text-main-settings");
33  ui->spinBoxStakeSplitThreshold->setProperty("cssClass", "btn-spin-box");
34  ui->spinBoxStakeSplitThreshold->setAttribute(Qt::WA_MacShowFocusRect, 0);
35  setShadow(ui->spinBoxStakeSplitThreshold);
36 
37  setCssProperty(ui->pushNetEnable, "btn-check-left");
38  ui->pushNetEnable->setChecked(true);
39  setCssProperty(ui->pushNetDisable, "btn-check-right");
40  setCssProperty(ui->labelNetActivity, "text-subtitle");
41 
42 #ifndef USE_UPNP
43  ui->mapPortUpnp->setVisible(false);
44 #endif
45 #ifndef USE_NATPMP
46  ui->mapPortNatpmp->setVisible(false);
47 #endif
48 
49  // Title
50  ui->labelTitleNetwork->setText(tr("Network"));
51  setCssTitleScreen(ui->labelTitleNetwork);
52  setCssSubtitleScreen(ui->labelSubtitleNetwork);
53 
54  // Proxy
55  ui->labelSubtitleProxy->setProperty("cssClass", "text-main-settings");
56  initCssEditLine(ui->lineEditProxy);
57 
58  // Port
59  ui->labelSubtitlePort->setProperty("cssClass", "text-main-settings");
60  initCssEditLine(ui->lineEditPort);
61 
62  // Buttons
63  setCssBtnPrimary(ui->pushButtonSave);
64  setCssBtnSecondary(ui->pushButtonReset);
65  setCssBtnSecondary(ui->pushButtonClean);
66 
67  connect(ui->pushNetEnable, &QPushButton::clicked, [this](){setNetworkActivity(true);});
68  connect(ui->pushNetDisable, &QPushButton::clicked, [this](){setNetworkActivity(false);});
69  connect(ui->pushButtonSave, &QPushButton::clicked, [this] { Q_EMIT saveSettings(); });
70  connect(ui->pushButtonReset, &QPushButton::clicked, this, &SettingsWalletOptionsWidget::onResetClicked);
71  connect(ui->pushButtonClean, &QPushButton::clicked, [this] { Q_EMIT discardSettings(); });
72 }
73 
75 {
76  QSettings settings;
80  inform(tr("Options reset succeed"));
81 }
82 
83 void SettingsWalletOptionsWidget::setMapper(QDataWidgetMapper *mapper)
84 {
85  mapper->addMapping(ui->radioButtonSpend, OptionsModel::SpendZeroConfChange);
86 
87  // Network
88  mapper->addMapping(ui->mapPortUpnp, OptionsModel::MapPortUPnP);
89  mapper->addMapping(ui->mapPortNatpmp, OptionsModel::MapPortNatpmp);
90  mapper->addMapping(ui->checkBoxAllow, OptionsModel::Listen);
91  mapper->addMapping(ui->checkBoxConnect, OptionsModel::ProxyUse);
92  mapper->addMapping(ui->lineEditProxy, OptionsModel::ProxyIP);
93  mapper->addMapping(ui->lineEditPort, OptionsModel::ProxyPort);
94 }
95 
97 {
100 }
101 
103 {
104  connect(clientModel, &ClientModel::networkActiveChanged, [this](bool isActive) {
105  ui->pushNetEnable->setChecked(isActive);
106  ui->pushNetDisable->setChecked(!isActive);
107  });
108 }
109 
111 {
113 }
114 
116 {
117  ui->spinBoxStakeSplitThreshold->setValue(val);
118 }
119 
121 {
122  return ui->spinBoxStakeSplitThreshold->value();
123 }
124 
126 {
127  // stake split threshold
129  const CAmount sstNew = static_cast<CAmount>(getSpinBoxStakeSplitThreshold() * COIN);
130  if (sstNew != sstOld) {
131  const double stakeSplitMinimum = walletModel->getSSTMinimum();
132  if (sstNew != 0 && sstNew < static_cast<CAmount>(stakeSplitMinimum * COIN)) {
133  setSpinBoxStakeSplitThreshold(stakeSplitMinimum);
134  inform(tr("Stake Split too low, it shall be either >= %1 or equal to 0 (to disable stake splitting)").arg(stakeSplitMinimum));
135  return false;
136  }
138  }
139  return true;
140 }
141 
143 {
145 }
146 
148 {
149  clientModel->mapPort(ui->mapPortUpnp->isChecked(), ui->mapPortNatpmp->isChecked());
150 }
151 
153 {
154  if (clientModel->getNetworkActive() == active) return;
155  clientModel->setNetworkActive(active);
156  inform(active ? tr("Network activity enabled") : tr("Network activity disabled"));
157 }
158 
160  delete ui;
161 }
int64_t CAmount
Amount in PIV (Can be negative)
Definition: amount.h:13
void setNetworkActive(bool active)
Toggle network activity state in core.
bool getNetworkActive() const
Return true if network activity in core is enabled.
static void mapPort(bool use_upnp, bool use_natpmp)
Set the automatic port mapping options.
OptionsModel * getOptionsModel()
void networkActiveChanged(bool networkActive)
void setNetworkDefaultOptions(QSettings &settings, bool reset=false)
PIVX GUI main class.
Definition: pivxgui.h:46
void inform(const QString &message)
Definition: pwidget.cpp:45
WalletModel * walletModel
Definition: pwidget.h:61
ClientModel * clientModel
Definition: pwidget.h:60
void setMapper(QDataWidgetMapper *mapper)
Ui::SettingsWalletOptionsWidget * ui
SettingsWalletOptionsWidget(PIVXGUI *_window, QWidget *parent=nullptr)
void setSpinBoxStakeSplitThreshold(double val)
void resetWalletOptions(QSettings &settings)
Definition: walletmodel.cpp:69
CAmount getWalletStakeSplitThreshold() const
double getSSTMinimum() const
void notifySSTChanged(const double sstVal)
notify stake-split threshold changed
void setWalletStakeSplitThreshold(const CAmount nStakeSplitThreshold)
QSettings * settings
Definition: qtutils.cpp:197
void setCssTitleScreen(QLabel *label)
Definition: qtutils.cpp:324
void initCssEditLine(QLineEdit *edit, bool isDialog)
Definition: qtutils.cpp:272
void setShadow(QWidget *edit)
Definition: qtutils.cpp:292
void setCssProperty(std::initializer_list< QWidget * > args, const QString &value)
Definition: qtutils.cpp:334
void setCssSubtitleScreen(QWidget *wid)
Definition: qtutils.cpp:329
void setCssBtnPrimary(QPushButton *btn, bool forceUpdate)
Definition: qtutils.cpp:302
void setCssBtnSecondary(QPushButton *btn, bool forceUpdate)
Definition: qtutils.cpp:307