5 #if defined(HAVE_CONFIG_H)
10 #include <qt/forms/ui_optionsdialog.h>
18 #include <validation.h>
24 #include <QDataWidgetMapper>
26 #include <QIntValidator>
28 #include <QMessageBox>
30 #include <QSystemTrayIcon>
46 ui->pruneWarning->setVisible(
false);
47 ui->pruneWarning->setStyleSheet(
"QLabel { color: red; }");
49 ui->pruneSize->setEnabled(
false);
50 connect(
ui->prune, &QPushButton::toggled,
ui->pruneSize, &QWidget::setEnabled);
54 ui->mapPortUpnp->setEnabled(
false);
57 ui->mapPortNatpmp->setEnabled(
false);
59 connect(
this, &QDialog::accepted, [
this](){
61 model->
node().mapPort(settings.value(
"fUseUPnP").toBool(), settings.value(
"fUseNatpmp").toBool());
64 ui->proxyIp->setEnabled(
false);
65 ui->proxyPort->setEnabled(
false);
66 ui->proxyPort->setValidator(
new QIntValidator(1, 65535,
this));
68 ui->proxyIpTor->setEnabled(
false);
69 ui->proxyPortTor->setEnabled(
false);
70 ui->proxyPortTor->setValidator(
new QIntValidator(1, 65535,
this));
72 connect(
ui->connectSocks, &QPushButton::toggled,
ui->proxyIp, &QWidget::setEnabled);
73 connect(
ui->connectSocks, &QPushButton::toggled,
ui->proxyPort, &QWidget::setEnabled);
76 connect(
ui->connectSocksTor, &QPushButton::toggled,
ui->proxyIpTor, &QWidget::setEnabled);
77 connect(
ui->connectSocksTor, &QPushButton::toggled,
ui->proxyPortTor, &QWidget::setEnabled);
83 ui->tabWidget->removeTab(
ui->tabWidget->indexOf(
ui->tabWindow));
85 ui->bitcoinAtStartup->setVisible(
false);
86 ui->verticalLayout_Main->removeWidget(
ui->bitcoinAtStartup);
87 ui->verticalLayout_Main->removeItem(
ui->horizontalSpacer_0_Main);
92 ui->tabWidget->removeTab(
ui->tabWidget->indexOf(
ui->tabWallet));
93 ui->thirdPartyTxUrlsLabel->setVisible(
false);
94 ui->thirdPartyTxUrls->setVisible(
false);
97 #ifndef ENABLE_EXTERNAL_SIGNER
99 ui->externalSignerPath->setToolTip(tr(
"Compiled without external signing support (required for external signing)"));
100 ui->externalSignerPath->setEnabled(
false);
103 QDir translations(
":translations");
105 ui->bitcoinAtStartup->setToolTip(
ui->bitcoinAtStartup->toolTip().arg(
PACKAGE_NAME));
106 ui->bitcoinAtStartup->setText(
ui->bitcoinAtStartup->text().arg(
PACKAGE_NAME));
108 ui->openBitcoinConfButton->setToolTip(
ui->openBitcoinConfButton->toolTip().arg(
PACKAGE_NAME));
111 ui->lang->addItem(QString(
"(") + tr(
"default") + QString(
")"), QVariant(
""));
112 for (
const QString &langStr : translations.entryList())
114 QLocale locale(langStr);
117 if(langStr.contains(
"_"))
120 ui->lang->addItem(locale.nativeLanguageName() + QString(
" - ") + locale.nativeCountryName() + QString(
" (") + langStr + QString(
")"), QVariant(langStr));
125 ui->lang->addItem(locale.nativeLanguageName() + QString(
" (") + langStr + QString(
")"), QVariant(langStr));
131 mapper =
new QDataWidgetMapper(
this);
132 mapper->setSubmitPolicy(QDataWidgetMapper::ManualSubmit);
133 mapper->setOrientation(Qt::Vertical);
137 mapper->setItemDelegate(delegate);
147 if (!QSystemTrayIcon::isSystemTrayAvailable()) {
148 ui->showTrayIcon->setChecked(
false);
149 ui->showTrayIcon->setEnabled(
false);
150 ui->minimizeToTray->setChecked(
false);
151 ui->minimizeToTray->setEnabled(
false);
155 ui->embeddedFont_radioButton->setText(
ui->embeddedFont_radioButton->text().arg(QFontInfo(embedded_font).family()));
156 embedded_font.setWeight(QFont::Bold);
157 ui->embeddedFont_label_1->setFont(embedded_font);
158 ui->embeddedFont_label_9->setFont(embedded_font);
161 ui->systemFont_radioButton->setText(
ui->systemFont_radioButton->text().arg(QFontInfo(system_font).family()));
162 system_font.setWeight(QFont::Bold);
163 ui->systemFont_label_1->setFont(system_font);
164 ui->systemFont_label_9->setFont(system_font);
166 ui->systemFont_radioButton->setChecked(
true);
178 this->
model = _model;
188 ui->pruneSize->setRange(nMinDiskSpace, std::numeric_limits<int>::max());
191 if (strLabel.isEmpty())
192 strLabel = tr(
"none");
193 ui->overriddenByCommandLineLabel->setText(strLabel);
209 connect(
ui->externalSignerPath, &QLineEdit::textChanged, [
this]{ showRestartWarning(); });
220 connect(
ui->thirdPartyTxUrls, &QLineEdit::textChanged, [
this]{ showRestartWarning(); });
225 QWidget *tab_widget =
nullptr;
226 if (tab == OptionsDialog::Tab::TAB_NETWORK) tab_widget =
ui->tabNetwork;
227 if (tab == OptionsDialog::Tab::TAB_MAIN) tab_widget =
ui->tabMain;
228 if (tab_widget &&
ui->tabWidget->currentWidget() != tab_widget) {
229 ui->tabWidget->setCurrentWidget(tab_widget);
265 if (QSystemTrayIcon::isSystemTrayAvailable()) {
281 ui->okButton->setEnabled(fState);
289 QMessageBox::StandardButton btnRetVal = QMessageBox::question(
this, tr(
"Confirm options reset"),
290 tr(
"Client restart required to activate changes.") +
"<br><br>" + tr(
"Client will be shut down. Do you want to proceed?"),
291 QMessageBox::Yes | QMessageBox::Cancel, QMessageBox::Cancel);
293 if(btnRetVal == QMessageBox::Cancel)
305 QMessageBox config_msgbox(
this);
306 config_msgbox.setIcon(QMessageBox::Information);
308 config_msgbox.setWindowTitle(tr(
"Configuration options"));
311 config_msgbox.setText(tr(
"The configuration file is used to specify advanced user options which override GUI settings. "
312 "Additionally, any command-line options will override this configuration file."));
314 QPushButton* open_button = config_msgbox.addButton(tr(
"Continue"), QMessageBox::ActionRole);
315 config_msgbox.addButton(tr(
"Cancel"), QMessageBox::RejectRole);
316 open_button->setDefault(
true);
318 config_msgbox.exec();
320 if (config_msgbox.clickedButton() != open_button)
return;
324 QMessageBox::critical(
this, tr(
"Error"), tr(
"The configuration file could not be opened."));
341 if (state == Qt::Checked) {
342 ui->minimizeToTray->setEnabled(
true);
344 ui->minimizeToTray->setChecked(
false);
345 ui->minimizeToTray->setEnabled(
false);
351 ui->pruneWarning->setVisible(!
ui->pruneWarning->isVisible());
356 ui->statusLabel->setStyleSheet(
"QLabel { color: red; }");
360 ui->statusLabel->setText(tr(
"Client restart required to activate changes."));
364 ui->statusLabel->setText(tr(
"This change would require a client restart."));
373 ui->statusLabel->clear();
383 if (pUiProxyIp->
isValid() && (!
ui->proxyPort->isEnabled() ||
ui->proxyPort->text().toInt() > 0) && (!
ui->proxyPortTor->isEnabled() ||
ui->proxyPortTor->text().toInt() > 0))
391 ui->statusLabel->setStyleSheet(
"QLabel { color: red; }");
392 ui->statusLabel->setText(tr(
"The supplied proxy address is invalid."));
399 std::string strProxy;
400 QString strDefaultProxyGUI;
404 strDefaultProxyGUI =
ui->proxyIp->text() +
":" +
ui->proxyPort->text();
405 (strProxy == strDefaultProxyGUI.toStdString()) ?
ui->proxyReachIPv4->setChecked(
true) :
ui->proxyReachIPv4->setChecked(
false);
409 strDefaultProxyGUI =
ui->proxyIp->text() +
":" +
ui->proxyPort->text();
410 (strProxy == strDefaultProxyGUI.toStdString()) ?
ui->proxyReachIPv6->setChecked(
true) :
ui->proxyReachIPv6->setChecked(
false);
414 strDefaultProxyGUI =
ui->proxyIp->text() +
":" +
ui->proxyPort->text();
415 (strProxy == strDefaultProxyGUI.toStdString()) ?
ui->proxyReachTor->setChecked(
true) :
ui->proxyReachTor->setChecked(
false);
430 return QValidator::Acceptable;
432 return QValidator::Invalid;