PIVX Core  5.6.99
P2P Digital Currency
mainoptionswidget.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_mainoptionswidget.h"
7 
8 #if defined(HAVE_CONFIG_H)
9 #include "config/pivx-config.h"
10 #endif
11 
12 #include "bitcoinunits.h"
13 #include "clientmodel.h"
14 #include "guiutil.h"
15 #include "optionsmodel.h"
16 #include "qtutils.h"
17 
18 #include "netbase.h"
19 #include "txdb.h" // for -dbcache defaults
20 
21 #ifdef ENABLE_WALLET
22 #include "wallet/wallet.h" // for CWallet::minTxFee
23 #endif
24 
25 #include <QDataWidgetMapper>
26 #include <QIntValidator>
27 #include <QLocale>
28 #include <QTimer>
29 
30 
32  PWidget(_window, parent),
34 {
35  ui->setupUi(this);
36 
37  this->setStyleSheet(parent->styleSheet());
38 
39  // Containers
40  ui->left->setProperty("cssClass", "container");
41  ui->left->setContentsMargins(10,10,10,10);
42  ui->labelDivider->setProperty("cssClass", "container-divider");
43 
44  // Title - Subtitle
45  setCssTitleScreen(ui->labelTitle);
46  setCssSubtitleScreen(ui->labelSubtitle1);
47  setCssTitleScreen(ui->labelTitleDown);
48  setCssSubtitleScreen(ui->labelSubtitleDown);
49 
50  setCssProperty({ui->labelTitleSizeDb, ui->labelTitleThreads}, "text-main-settings");
51 
52  // Switch
53  ui->pushSwitchStart->setText(tr("Start %1 on system login").arg(PACKAGE_NAME));
54  ui->pushSwitchStart->setProperty("cssClass", "btn-switch");
55 
56 #ifdef Q_OS_MAC
57  /* hide launch at startup option on macOS */
58  ui->pushSwitchStart->setVisible(false);
59 #endif
60 
61  // Combobox
62  ui->databaseCache->setProperty("cssClass", "btn-spin-box");
63  ui->databaseCache->setAttribute(Qt::WA_MacShowFocusRect, 0);
64  setShadow(ui->databaseCache);
65  ui->threadsScriptVerif->setProperty("cssClass", "btn-spin-box");
66  ui->threadsScriptVerif->setAttribute(Qt::WA_MacShowFocusRect, 0);
67  setShadow(ui->threadsScriptVerif);
68 
69  // Buttons
70  setCssBtnPrimary(ui->pushButtonSave);
71  setCssBtnSecondary(ui->pushButtonReset);
72  setCssBtnSecondary(ui->pushButtonClean);
73 
74  /* Main elements init */
75  ui->databaseCache->setMinimum(nMinDbCache);
76  ui->databaseCache->setMaximum(nMaxDbCache);
77  ui->threadsScriptVerif->setMinimum(-GetNumCores());
78  ui->threadsScriptVerif->setMaximum(MAX_SCRIPTCHECK_THREADS);
79 
80  connect(ui->pushButtonSave, &QPushButton::clicked, [this] { Q_EMIT saveSettings(); });
81  connect(ui->pushButtonReset, &QPushButton::clicked, this, &SettingsMainOptionsWidget::onResetClicked);
82  connect(ui->pushButtonClean, &QPushButton::clicked, [this] { Q_EMIT discardSettings(); });
83 }
84 
86 {
87  if (clientModel) {
88  if (!ask(tr("Reset Options"), tr("You are just about to reset the app\'s options to the default values.\n\nAre you sure?\n")))
89  return;
90  OptionsModel *optionsModel = clientModel->getOptionsModel();
91  QSettings settings;
92  // default setting for OptionsModel::StartAtStartup - disabled
95  optionsModel->setMainDefaultOptions(settings, true);
96  optionsModel->setWindowDefaultOptions(settings, true);
97  inform(tr("Options reset succeed"));
98  }
99 }
100 
101 void SettingsMainOptionsWidget::setMapper(QDataWidgetMapper *mapper)
102 {
103  mapper->addMapping(ui->pushSwitchStart, OptionsModel::StartAtStartup);
104  mapper->addMapping(ui->threadsScriptVerif, OptionsModel::ThreadsScriptVerif);
105  mapper->addMapping(ui->databaseCache, OptionsModel::DatabaseCache);
106  /* Window */
107 #ifndef Q_OS_MAC
108  mapper->addMapping(ui->checkBoxMinTaskbar, OptionsModel::MinimizeToTray);
109  mapper->addMapping(ui->checkBoxMinClose, OptionsModel::MinimizeOnClose);
110 #endif
111 }
112 
114 {
115  delete ui;
116 }
OptionsModel * getOptionsModel()
Interface from Qt to configuration data structure for PIVX client.
Definition: optionsmodel.h:22
void setMainDefaultOptions(QSettings &settings, bool reset=false)
void setWindowDefaultOptions(QSettings &settings, bool reset=false)
PIVX GUI main class.
Definition: pivxgui.h:46
void inform(const QString &message)
Definition: pwidget.cpp:45
ClientModel * clientModel
Definition: pwidget.h:60
bool ask(const QString &title, const QString &message)
Definition: pwidget.cpp:55
void setMapper(QDataWidgetMapper *mapper)
Ui::SettingsMainOptionsWidget * ui
SettingsMainOptionsWidget(PIVXGUI *_window, QWidget *parent=nullptr)
bool SetStartOnSystemStartup(bool fAutoStart)
Definition: guiutil.cpp:602
bool GetStartOnSystemStartup()
Definition: guiutil.cpp:598
#define PACKAGE_NAME
Definition: pivx-config.h:366
QSettings * settings
Definition: qtutils.cpp:197
void setCssTitleScreen(QLabel *label)
Definition: qtutils.cpp:324
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
int GetNumCores()
Return the number of cores available on the current system.
Definition: system.cpp:1095