Bitcoin ABC  0.24.7
P2P Digital Currency
optionsdialog.cpp
Go to the documentation of this file.
1 // Copyright (c) 2011-2016 The Bitcoin 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 #if defined(HAVE_CONFIG_H)
6 #include <config/bitcoin-config.h>
7 #endif
8 
9 #include <qt/forms/ui_optionsdialog.h>
10 #include <qt/optionsdialog.h>
11 
12 #include <interfaces/node.h>
13 #include <netbase.h>
14 #include <qt/bitcoinunits.h>
15 #include <qt/guiconstants.h>
16 #include <qt/guiutil.h>
17 #include <qt/optionsmodel.h>
18 #include <txdb.h> // for -dbcache defaults
19 #include <validation.h> // for DEFAULT_SCRIPTCHECK_THREADS and MAX_SCRIPTCHECK_THREADS
20 
21 #include <QDataWidgetMapper>
22 #include <QDir>
23 #include <QIntValidator>
24 #include <QLocale>
25 #include <QMessageBox>
26 #include <QSystemTrayIcon>
27 #include <QTimer>
28 
29 OptionsDialog::OptionsDialog(QWidget *parent, bool enableWallet)
30  : QDialog(parent), ui(new Ui::OptionsDialog), model(nullptr),
31  mapper(nullptr) {
32  ui->setupUi(this);
33 
34  /* Main elements init */
35  ui->databaseCache->setMinimum(MIN_DB_CACHE_MB);
36  ui->databaseCache->setMaximum(MAX_DB_CACHE_MB);
37  ui->threadsScriptVerif->setMinimum(-GetNumCores());
38  ui->threadsScriptVerif->setMaximum(MAX_SCRIPTCHECK_THREADS);
39  ui->pruneWarning->setVisible(false);
40  ui->pruneWarning->setStyleSheet("QLabel { color: red; }");
41 
42  ui->pruneSize->setEnabled(false);
43  connect(ui->prune, &QPushButton::toggled, ui->pruneSize,
44  &QWidget::setEnabled);
45 
46 /* Network elements init */
47 #ifndef USE_UPNP
48  ui->mapPortUpnp->setEnabled(false);
49 #endif
50 
51  ui->proxyIp->setEnabled(false);
52  ui->proxyPort->setEnabled(false);
53  ui->proxyPort->setValidator(new QIntValidator(1, 65535, this));
54 
55  ui->proxyIpTor->setEnabled(false);
56  ui->proxyPortTor->setEnabled(false);
57  ui->proxyPortTor->setValidator(new QIntValidator(1, 65535, this));
58 
59  connect(ui->connectSocks, &QPushButton::toggled, ui->proxyIp,
60  &QWidget::setEnabled);
61  connect(ui->connectSocks, &QPushButton::toggled, ui->proxyPort,
62  &QWidget::setEnabled);
63  connect(ui->connectSocks, &QPushButton::toggled, this,
65 
66  connect(ui->connectSocksTor, &QPushButton::toggled, ui->proxyIpTor,
67  &QWidget::setEnabled);
68  connect(ui->connectSocksTor, &QPushButton::toggled, ui->proxyPortTor,
69  &QWidget::setEnabled);
70  connect(ui->connectSocksTor, &QPushButton::toggled, this,
72 
73  /* Window elements init */
74 #ifdef Q_OS_MAC
75  /* remove Window tab on Mac */
76  ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->tabWindow));
77  /* hide launch at startup option on macOS */
78  ui->bitcoinAtStartup->setVisible(false);
79  ui->verticalLayout_Main->removeWidget(ui->bitcoinAtStartup);
80  ui->verticalLayout_Main->removeItem(ui->horizontalSpacer_0_Main);
81 #endif
82 
83  /* remove Wallet tab and 3rd party-URL textbox in case of -disablewallet */
84  if (!enableWallet) {
85  ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->tabWallet));
86  ui->thirdPartyTxUrlsLabel->setVisible(false);
87  ui->thirdPartyTxUrls->setVisible(false);
88  }
89 
90  /* Display elements init */
91  QDir translations(":translations");
92 
93  ui->bitcoinAtStartup->setToolTip(
94  ui->bitcoinAtStartup->toolTip().arg(PACKAGE_NAME));
95  ui->bitcoinAtStartup->setText(
96  ui->bitcoinAtStartup->text().arg(PACKAGE_NAME));
97 
98  ui->openBitcoinConfButton->setToolTip(
99  ui->openBitcoinConfButton->toolTip().arg(PACKAGE_NAME));
100 
101  ui->lang->setToolTip(ui->lang->toolTip().arg(PACKAGE_NAME));
102  ui->lang->addItem(QString("(") + tr("default") + QString(")"),
103  QVariant(""));
104  for (const QString &langStr : translations.entryList()) {
105  QLocale locale(langStr);
106 
108  if (langStr.contains("_")) {
111  ui->lang->addItem(locale.nativeLanguageName() + QString(" - ") +
112  locale.nativeCountryName() + QString(" (") +
113  langStr + QString(")"),
114  QVariant(langStr));
115  } else {
118  ui->lang->addItem(locale.nativeLanguageName() + QString(" (") +
119  langStr + QString(")"),
120  QVariant(langStr));
121  }
122  }
123  ui->unit->setModel(new BitcoinUnits(this));
124 
125  /* Widget-to-option mapper */
126  mapper = new QDataWidgetMapper(this);
127  mapper->setSubmitPolicy(QDataWidgetMapper::ManualSubmit);
128  mapper->setOrientation(Qt::Vertical);
129 
131  connect(delegate, &GUIUtil::ItemDelegate::keyEscapePressed, this,
132  &OptionsDialog::reject);
133  mapper->setItemDelegate(delegate);
134 
135  /* setup/change UI elements when proxy IPs are invalid/valid */
136  ui->proxyIp->setCheckValidator(new ProxyAddressValidator(parent));
137  ui->proxyIpTor->setCheckValidator(new ProxyAddressValidator(parent));
138  connect(ui->proxyIp, &QValidatedLineEdit::validationDidChange, this,
140  connect(ui->proxyIpTor, &QValidatedLineEdit::validationDidChange, this,
142  connect(ui->proxyPort, &QLineEdit::textChanged, this,
144  connect(ui->proxyPortTor, &QLineEdit::textChanged, this,
146 
147  /* setup/change UI elements when third party tx URLs are invalid/valid */
148  ui->thirdPartyTxUrls->setCheckValidator(
149  new ThirdPartyTxUrlsValidator(parent));
150  connect(ui->thirdPartyTxUrls, &QValidatedLineEdit::validationDidChange,
152 
153  if (!QSystemTrayIcon::isSystemTrayAvailable()) {
154  ui->hideTrayIcon->setChecked(true);
155  ui->hideTrayIcon->setEnabled(false);
156  ui->minimizeToTray->setChecked(false);
157  ui->minimizeToTray->setEnabled(false);
158  }
159 
161 }
162 
164  delete ui;
165 }
166 
168  this->model = _model;
169 
170  if (_model) {
171  /* check if client restart is needed and show persistent message */
172  if (_model->isRestartRequired()) {
173  showRestartWarning(true);
174  }
175 
176  // Prune values are in GB to be consistent with intro.cpp
177  static constexpr uint64_t nMinDiskSpace =
180  ? 1
181  : 0;
182  ui->pruneSize->setRange(nMinDiskSpace, std::numeric_limits<int>::max());
183 
184  QString strLabel = _model->getOverriddenByCommandLine();
185  if (strLabel.isEmpty()) {
186  strLabel = tr("none");
187  }
188  ui->overriddenByCommandLineLabel->setText(strLabel);
189 
190  mapper->setModel(_model);
191  setMapper();
192  mapper->toFirst();
193 
195  }
196 
197  /* warn when one of the following settings changes by user action (placed
198  * here so init via mapper doesn't trigger them) */
199 
200  /* Main */
201  connect(ui->prune, &QCheckBox::clicked, this,
203  connect(ui->prune, &QCheckBox::clicked, this,
205  connect(ui->pruneSize,
206  static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,
208  connect(ui->databaseCache,
209  static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,
211  connect(ui->threadsScriptVerif,
212  static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,
214  /* Wallet */
215  connect(ui->spendZeroConfChange, &QCheckBox::clicked, this,
217  /* Network */
218  connect(ui->allowIncoming, &QCheckBox::clicked, this,
220  connect(ui->connectSocks, &QCheckBox::clicked, this,
222  connect(ui->connectSocksTor, &QCheckBox::clicked, this,
224  /* Display */
225  connect(
226  ui->lang,
227  static_cast<void (QValueComboBox::*)()>(&QValueComboBox::valueChanged),
228  [this] { showRestartWarning(); });
229  connect(ui->thirdPartyTxUrls, &QLineEdit::textChanged,
230  [this] { showRestartWarning(); });
231 }
232 
234  QWidget *tab_widget = nullptr;
235  if (tab == OptionsDialog::Tab::TAB_NETWORK) {
236  tab_widget = ui->tabNetwork;
237  }
238  if (tab == OptionsDialog::Tab::TAB_MAIN) {
239  tab_widget = ui->tabMain;
240  }
241  if (tab_widget && ui->tabWidget->currentWidget() != tab_widget) {
242  ui->tabWidget->setCurrentWidget(tab_widget);
243  }
244 }
245 
247  /* Main */
248  mapper->addMapping(ui->bitcoinAtStartup, OptionsModel::StartAtStartup);
249  mapper->addMapping(ui->threadsScriptVerif,
251  mapper->addMapping(ui->databaseCache, OptionsModel::DatabaseCache);
252  mapper->addMapping(ui->prune, OptionsModel::Prune);
253  mapper->addMapping(ui->pruneSize, OptionsModel::PruneSize);
254 
255  /* Wallet */
256  mapper->addMapping(ui->spendZeroConfChange,
258  mapper->addMapping(ui->coinControlFeatures,
260 
261  /* Network */
262  mapper->addMapping(ui->mapPortUpnp, OptionsModel::MapPortUPnP);
263  mapper->addMapping(ui->allowIncoming, OptionsModel::Listen);
264 
265  mapper->addMapping(ui->connectSocks, OptionsModel::ProxyUse);
266  mapper->addMapping(ui->proxyIp, OptionsModel::ProxyIP);
267  mapper->addMapping(ui->proxyPort, OptionsModel::ProxyPort);
268 
269  mapper->addMapping(ui->connectSocksTor, OptionsModel::ProxyUseTor);
270  mapper->addMapping(ui->proxyIpTor, OptionsModel::ProxyIPTor);
271  mapper->addMapping(ui->proxyPortTor, OptionsModel::ProxyPortTor);
272 
273 /* Window */
274 #ifndef Q_OS_MAC
275  if (QSystemTrayIcon::isSystemTrayAvailable()) {
276  mapper->addMapping(ui->hideTrayIcon, OptionsModel::HideTrayIcon);
277  mapper->addMapping(ui->minimizeToTray, OptionsModel::MinimizeToTray);
278  }
279  mapper->addMapping(ui->minimizeOnClose, OptionsModel::MinimizeOnClose);
280 #endif
281 
282  /* Display */
283  mapper->addMapping(ui->lang, OptionsModel::Language);
284  mapper->addMapping(ui->unit, OptionsModel::DisplayUnit);
285  mapper->addMapping(ui->thirdPartyTxUrls, OptionsModel::ThirdPartyTxUrls);
286 }
287 
289  ui->okButton->setEnabled(fState);
290 }
291 
293  if (model) {
294  // confirmation dialog
295  QMessageBox::StandardButton btnRetVal = QMessageBox::question(
296  this, tr("Confirm options reset"),
297  tr("Client restart required to activate changes.") + "<br><br>" +
298  tr("Client will be shut down. Do you want to proceed?"),
299  QMessageBox::Yes | QMessageBox::Cancel, QMessageBox::Cancel);
300 
301  if (btnRetVal == QMessageBox::Cancel) {
302  return;
303  }
304 
305  /* reset all options and close GUI */
306  model->Reset();
307  QApplication::quit();
308  }
309 }
310 
312  /* explain the purpose of the config file */
313  QMessageBox::information(
314  this, tr("Configuration options"),
315  tr("The configuration file is used to specify advanced user options "
316  "which override GUI settings. Additionally, any command-line "
317  "options will override this configuration file."));
318 
319  /* show an error if there was some problem opening the file */
320  if (!GUIUtil::openBitcoinConf()) {
321  QMessageBox::critical(
322  this, tr("Error"),
323  tr("The configuration file could not be opened."));
324  }
325 }
326 
328  mapper->submit();
329  accept();
331 }
332 
334  reject();
335 }
336 
338  if (fState) {
339  ui->minimizeToTray->setChecked(false);
340  ui->minimizeToTray->setEnabled(false);
341  } else {
342  ui->minimizeToTray->setEnabled(true);
343  }
344 }
345 
347  ui->pruneWarning->setVisible(!ui->pruneWarning->isVisible());
348 }
349 
350 void OptionsDialog::showRestartWarning(bool fPersistent) {
351  ui->statusLabel->setStyleSheet("QLabel { color: red; }");
352 
353  if (fPersistent) {
354  ui->statusLabel->setText(
355  tr("Client restart required to activate changes."));
356  } else {
357  ui->statusLabel->setText(
358  tr("This change would require a client restart."));
359  // clear non-persistent status label after 10 seconds
360  // TODO: should perhaps be a class attribute, if we extend the use of
361  // statusLabel
362  QTimer::singleShot(10000, this, &OptionsDialog::clearStatusLabel);
363  }
364 }
365 
367  ui->statusLabel->clear();
368  if (model && model->isRestartRequired()) {
369  showRestartWarning(true);
370  }
371 }
372 
374  QValidatedLineEdit *pUiProxyIp = ui->proxyIp;
375  QValidatedLineEdit *otherProxyWidget =
376  (pUiProxyIp == ui->proxyIpTor) ? ui->proxyIp : ui->proxyIpTor;
377  if (pUiProxyIp->isValid() &&
378  (!ui->proxyPort->isEnabled() || ui->proxyPort->text().toInt() > 0) &&
379  (!ui->proxyPortTor->isEnabled() ||
380  ui->proxyPortTor->text().toInt() > 0)) {
381  // Only enable ok button if both proxys are valid
382  setOkButtonState(otherProxyWidget->isValid());
384  } else {
385  setOkButtonState(false);
386  ui->statusLabel->setStyleSheet("QLabel { color: red; }");
387  ui->statusLabel->setText(tr("The supplied proxy address is invalid."));
388  }
389 }
390 
392  proxyType proxy;
393  std::string strProxy;
394  QString strDefaultProxyGUI;
395 
396  model->node().getProxy(NET_IPV4, proxy);
397  strProxy = proxy.proxy.ToStringIP() + ":" + proxy.proxy.ToStringPort();
398  strDefaultProxyGUI = ui->proxyIp->text() + ":" + ui->proxyPort->text();
399  (strProxy == strDefaultProxyGUI.toStdString())
400  ? ui->proxyReachIPv4->setChecked(true)
401  : ui->proxyReachIPv4->setChecked(false);
402 
403  model->node().getProxy(NET_IPV6, proxy);
404  strProxy = proxy.proxy.ToStringIP() + ":" + proxy.proxy.ToStringPort();
405  strDefaultProxyGUI = ui->proxyIp->text() + ":" + ui->proxyPort->text();
406  (strProxy == strDefaultProxyGUI.toStdString())
407  ? ui->proxyReachIPv6->setChecked(true)
408  : ui->proxyReachIPv6->setChecked(false);
409 
410  model->node().getProxy(NET_ONION, proxy);
411  strProxy = proxy.proxy.ToStringIP() + ":" + proxy.proxy.ToStringPort();
412  strDefaultProxyGUI = ui->proxyIp->text() + ":" + ui->proxyPort->text();
413  (strProxy == strDefaultProxyGUI.toStdString())
414  ? ui->proxyReachTor->setChecked(true)
415  : ui->proxyReachTor->setChecked(false);
416 }
417 
419  : QValidator(parent) {}
420 
421 QValidator::State ProxyAddressValidator::validate(QString &input,
422  int &pos) const {
423  Q_UNUSED(pos);
424  // Validate the proxy
425  CService serv(LookupNumeric(input.toStdString(), DEFAULT_GUI_PROXY_PORT));
426  proxyType addrProxy = proxyType(serv, true);
427  if (addrProxy.IsValid()) {
428  return QValidator::Acceptable;
429  }
430 
431  return QValidator::Invalid;
432 }
433 
435  QValidatedLineEdit *thirdPartyTxUrls = ui->thirdPartyTxUrls;
436  if (thirdPartyTxUrls->isValid()) {
437  // Only enable OK button if the third party tx URLS pattern is valid
438  setOkButtonState(true);
440  } else {
441  setOkButtonState(false);
442  ui->statusLabel->setStyleSheet("QLabel { color: red; }");
443  ui->statusLabel->setText(
444  tr("The third party transaction URLs should start with https://."));
445  }
446 }
447 
449  : QValidator(parent) {}
450 
451 QValidator::State ThirdPartyTxUrlsValidator::validate(QString &input,
452  int &pos) const {
453  Q_UNUSED(pos);
454  // Check the URL starts with https. All other schemes are rejected for
455  // security reasons.
456  if (input.isEmpty() || input.startsWith("https://")) {
457  return QValidator::Acceptable;
458  }
459 
460  return QValidator::Invalid;
461 }
MIN_DB_CACHE_MB
static constexpr int64_t MIN_DB_CACHE_MB
min. -dbcache (MiB)
Definition: txdb.h:29
OptionsDialog
Preferences dialog.
Definition: optionsdialog.h:43
CService
A combination of a network address (CNetAddr) and a (TCP) port.
Definition: netaddress.h:514
QValidatedLineEdit::isValid
bool isValid()
Definition: qvalidatedlineedit.cpp:92
OptionsDialog::Tab
Tab
Definition: optionsdialog.h:50
GUIUtil::openBitcoinConf
bool openBitcoinConf()
Definition: guiutil.cpp:411
proxyType::IsValid
bool IsValid() const
Definition: netbase.h:35
OptionsModel::MinimizeOnClose
@ MinimizeOnClose
Definition: optionsmodel.h:61
OptionsDialog::on_okButton_clicked
void on_okButton_clicked()
Definition: optionsdialog.cpp:327
ThirdPartyTxUrlsValidator::validate
State validate(QString &input, int &pos) const override
Definition: optionsdialog.cpp:451
ThirdPartyTxUrlsValidator::ThirdPartyTxUrlsValidator
ThirdPartyTxUrlsValidator(QObject *parent)
Definition: optionsdialog.cpp:448
NET_IPV4
@ NET_IPV4
IPv4.
Definition: netaddress.h:49
interfaces::Node::getProxy
virtual bool getProxy(Network net, proxyType &proxy_info)=0
Get proxy.
OptionsDialog::on_cancelButton_clicked
void on_cancelButton_clicked()
Definition: optionsdialog.cpp:333
OptionsModel::ThreadsScriptVerif
@ ThreadsScriptVerif
Definition: optionsmodel.h:72
OptionsModel::PruneSize
@ PruneSize
Definition: optionsmodel.h:74
OptionsDialog::on_hideTrayIcon_stateChanged
void on_hideTrayIcon_stateChanged(int fState)
Definition: optionsdialog.cpp:337
OptionsModel::DisplayUnit
@ DisplayUnit
Definition: optionsmodel.h:68
OptionsModel::getOverriddenByCommandLine
const QString & getOverriddenByCommandLine()
Definition: optionsmodel.h:101
OptionsModel::Listen
@ Listen
Definition: optionsmodel.h:77
OptionsDialog::updateThirdPartyTxUrlsState
void updateThirdPartyTxUrlsState()
Definition: optionsdialog.cpp:434
MAX_SCRIPTCHECK_THREADS
static const int MAX_SCRIPTCHECK_THREADS
Maximum number of dedicated script-checking threads allowed.
Definition: validation.h:81
OptionsDialog::OptionsDialog
OptionsDialog(QWidget *parent, bool enableWallet)
Definition: optionsdialog.cpp:29
OptionsDialog::model
OptionsModel * model
Definition: optionsdialog.h:82
node.h
OptionsDialog::updateDefaultProxyNets
void updateDefaultProxyNets()
Definition: optionsdialog.cpp:391
DEFAULT_GUI_PROXY_PORT
static constexpr uint16_t DEFAULT_GUI_PROXY_PORT
Definition: optionsmodel.h:25
ThirdPartyTxUrlsValidator
Third party tx URL validator, checks for an https link.
Definition: optionsdialog.h:33
OptionsModel::ProxyPort
@ ProxyPort
Definition: optionsmodel.h:64
OptionsDialog::updateProxyValidationState
void updateProxyValidationState()
Definition: optionsdialog.cpp:373
OptionsModel::DatabaseCache
@ DatabaseCache
Definition: optionsmodel.h:75
OptionsModel::SpendZeroConfChange
@ SpendZeroConfChange
Definition: optionsmodel.h:76
GUIUtil::ItemDelegate
Definition: guiutil.h:316
MAX_DB_CACHE_MB
static constexpr int64_t MAX_DB_CACHE_MB
max. -dbcache (MiB)
Definition: txdb.h:31
GUIUtil::ItemDelegate::keyEscapePressed
void keyEscapePressed()
QValueComboBox::valueChanged
void valueChanged()
proxyType
Definition: netbase.h:28
OptionsModel::MinimizeToTray
@ MinimizeToTray
Definition: optionsmodel.h:59
OptionsModel::Reset
void Reset()
Definition: optionsmodel.cpp:221
OptionsModel::ProxyUse
@ ProxyUse
Definition: optionsmodel.h:62
CNetAddr::ToStringIP
std::string ToStringIP() const
Definition: netaddress.cpp:537
QValueComboBox
Definition: qvaluecombobox.h:13
OptionsModel::node
interfaces::Node & node() const
Definition: optionsmodel.h:113
ProxyAddressValidator
Proxy address widget validator, checks for a valid proxy address.
Definition: optionsdialog.h:23
OptionsModel
Interface from Qt to configuration data structure for Bitcoin client.
Definition: optionsmodel.h:49
OptionsModel::isRestartRequired
bool isRestartRequired() const
Definition: optionsmodel.cpp:555
ProxyAddressValidator::validate
State validate(QString &input, int &pos) const override
Definition: optionsdialog.cpp:421
OptionsDialog::setMapper
void setMapper()
Definition: optionsdialog.cpp:246
CService::ToStringPort
std::string ToStringPort() const
Definition: netaddress.cpp:1008
OptionsModel::StartAtStartup
@ StartAtStartup
Definition: optionsmodel.h:57
BitcoinUnits
Bitcoin unit definitions.
Definition: bitcoinunits.h:32
OptionsDialog::on_resetButton_clicked
void on_resetButton_clicked()
Definition: optionsdialog.cpp:292
QValidatedLineEdit
Line edit that can be marked as "invalid" to show input validation feedback.
Definition: qvalidatedlineedit.h:14
OptionsDialog::setModel
void setModel(OptionsModel *model)
Definition: optionsdialog.cpp:167
guiutil.h
OptionsModel::HideTrayIcon
@ HideTrayIcon
Definition: optionsmodel.h:58
OptionsDialog::ui
Ui::OptionsDialog * ui
Definition: optionsdialog.h:81
optionsdialog.h
OptionsModel::ProxyIPTor
@ ProxyIPTor
Definition: optionsmodel.h:66
OptionsModel::ProxyUseTor
@ ProxyUseTor
Definition: optionsmodel.h:65
GetNumCores
int GetNumCores()
Return the number of cores available on the current system.
Definition: system.cpp:1357
OptionsModel::ProxyPortTor
@ ProxyPortTor
Definition: optionsmodel.h:67
OptionsModel::CoinControlFeatures
@ CoinControlFeatures
Definition: optionsmodel.h:71
GB_BYTES
static constexpr uint64_t GB_BYTES
Definition: guiconstants.h:52
OptionsDialog::clearStatusLabel
void clearStatusLabel()
Definition: optionsdialog.cpp:366
OptionsModel::ProxyIP
@ ProxyIP
Definition: optionsmodel.h:63
QValidatedLineEdit::validationDidChange
void validationDidChange(QValidatedLineEdit *validatedLineEdit)
OptionsModel::Prune
@ Prune
Definition: optionsmodel.h:73
OptionsDialog::showRestartWarning
void showRestartWarning(bool fPersistent=false)
Definition: optionsdialog.cpp:350
OptionsModel::ThirdPartyTxUrls
@ ThirdPartyTxUrls
Definition: optionsmodel.h:69
OptionsModel::MapPortUPnP
@ MapPortUPnP
Definition: optionsmodel.h:60
Ui
Definition: addressbookpage.h:14
MIN_DISK_SPACE_FOR_BLOCK_FILES
static const uint64_t MIN_DISK_SPACE_FOR_BLOCK_FILES
Require that user allocate at least 550 MiB for block & undo files (blk???.dat and rev?...
Definition: validation.h:127
guiconstants.h
ProxyAddressValidator::ProxyAddressValidator
ProxyAddressValidator(QObject *parent)
Definition: optionsdialog.cpp:418
OptionsModel::Language
@ Language
Definition: optionsmodel.h:70
OptionsDialog::mapper
QDataWidgetMapper * mapper
Definition: optionsdialog.h:83
NET_ONION
@ NET_ONION
TOR (v2 or v3)
Definition: netaddress.h:55
bitcoinunits.h
NET_IPV6
@ NET_IPV6
IPv6.
Definition: netaddress.h:52
LookupNumeric
CService LookupNumeric(const std::string &name, int portDefault)
Resolve a service string with a numeric IP to its first corresponding service.
Definition: netbase.cpp:271
OptionsDialog::~OptionsDialog
~OptionsDialog()
Definition: optionsdialog.cpp:163
netbase.h
GUIUtil::handleCloseWindowShortcut
void handleCloseWindowShortcut(QWidget *w)
Definition: guiutil.cpp:396
OptionsDialog::setCurrentTab
void setCurrentTab(OptionsDialog::Tab tab)
Definition: optionsdialog.cpp:233
OptionsDialog::setOkButtonState
void setOkButtonState(bool fState)
Definition: optionsdialog.cpp:288
optionsmodel.h
OptionsDialog::on_openBitcoinConfButton_clicked
void on_openBitcoinConfButton_clicked()
Definition: optionsdialog.cpp:311
txdb.h
OptionsDialog::togglePruneWarning
void togglePruneWarning(bool enabled)
Definition: optionsdialog.cpp:346
proxyType::proxy
CService proxy
Definition: netbase.h:37