Skip to content

Commit 239b599

Browse files
committed
[GUI][Model] Settings options reset.
1 parent 173a833 commit 239b599

9 files changed

+139
-52
lines changed

src/qt/optionsmodel.cpp

Lines changed: 77 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
#endif
2828

2929
#include <QNetworkProxy>
30-
#include <QSettings>
3130
#include <QStringList>
3231

3332
OptionsModel::OptionsModel(QObject* parent) : QAbstractListModel(parent)
@@ -52,29 +51,15 @@ void OptionsModel::Init()
5251
// These are Qt-only settings:
5352

5453
// Window
55-
if (!settings.contains("fMinimizeToTray"))
56-
settings.setValue("fMinimizeToTray", false);
57-
fMinimizeToTray = settings.value("fMinimizeToTray").toBool();
58-
59-
if (!settings.contains("fMinimizeOnClose"))
60-
settings.setValue("fMinimizeOnClose", false);
61-
fMinimizeOnClose = settings.value("fMinimizeOnClose").toBool();
54+
setWindowDefaultOptions(settings);
6255

6356
// Display
64-
if (!settings.contains("nDisplayUnit"))
65-
settings.setValue("nDisplayUnit", BitcoinUnits::PIV);
66-
nDisplayUnit = settings.value("nDisplayUnit").toInt();
67-
68-
if (!settings.contains("strThirdPartyTxUrls"))
69-
settings.setValue("strThirdPartyTxUrls", "");
70-
strThirdPartyTxUrls = settings.value("strThirdPartyTxUrls", "").toString();
71-
7257
if (!settings.contains("fHideZeroBalances"))
7358
settings.setValue("fHideZeroBalances", true);
7459
fHideZeroBalances = settings.value("fHideZeroBalances").toBool();
7560

7661
if (!settings.contains("fHideOrphans"))
77-
settings.setValue("fHideOrphans", false);
62+
settings.setValue("fHideOrphans", true);
7863
fHideOrphans = settings.value("fHideOrphans").toBool();
7964

8065
if (!settings.contains("fCoinControlFeatures"))
@@ -100,81 +85,132 @@ void OptionsModel::Init()
10085
if (!settings.contains("fShowMasternodesTab"))
10186
settings.setValue("fShowMasternodesTab", masternodeConfig.getCount());
10287

88+
// Main
89+
setMainDefaultOptions(settings);
90+
91+
// Wallet
92+
#ifdef ENABLE_WALLET
93+
setWalletDefaultOptions(settings);
94+
#endif
95+
96+
// Network
97+
setNetworkDefaultOptions(settings);
98+
// Display
99+
setDisplayDefaultOptions(settings);
100+
101+
language = settings.value("language").toString();
102+
}
103+
104+
void OptionsModel::setMainDefaultOptions(QSettings& settings, bool reset){
103105
// These are shared with the core or have a command-line parameter
104106
// and we want command-line parameters to overwrite the GUI settings.
105107
//
106108
// If setting doesn't exist create it with defaults.
107109
//
108110
// If SoftSetArg() or SoftSetBoolArg() return false we were overridden
109111
// by command-line and show this in the UI.
110-
111112
// Main
112-
if (!settings.contains("nDatabaseCache"))
113+
if (!settings.contains("nDatabaseCache") || reset)
113114
settings.setValue("nDatabaseCache", (qint64)nDefaultDbCache);
114115
if (!SoftSetArg("-dbcache", settings.value("nDatabaseCache").toString().toStdString()))
115116
addOverriddenOption("-dbcache");
116117

117-
if (!settings.contains("nThreadsScriptVerif"))
118+
if (!settings.contains("nThreadsScriptVerif") || reset)
118119
settings.setValue("nThreadsScriptVerif", DEFAULT_SCRIPTCHECK_THREADS);
119120
if (!SoftSetArg("-par", settings.value("nThreadsScriptVerif").toString().toStdString()))
120121
addOverriddenOption("-par");
122+
}
121123

122-
// Wallet
123-
#ifdef ENABLE_WALLET
124-
if (!settings.contains("bSpendZeroConfChange"))
124+
void OptionsModel::setWalletDefaultOptions(QSettings& settings, bool reset){
125+
if (!settings.contains("bSpendZeroConfChange") || reset)
125126
settings.setValue("bSpendZeroConfChange", false);
126127
if (!SoftSetBoolArg("-spendzeroconfchange", settings.value("bSpendZeroConfChange").toBool()))
127128
addOverriddenOption("-spendzeroconfchange");
128-
#endif
129-
if (!settings.contains("nStakeSplitThreshold"))
129+
130+
if (!settings.contains("nStakeSplitThreshold") || reset)
130131
settings.setValue("nStakeSplitThreshold", 1);
132+
if (reset){
133+
setStakeSplitThreshold(1);
134+
}
131135

136+
if(reset){
137+
emit dataChanged(index(0), index(rowCount(QModelIndex()) - 1));
138+
}
139+
}
132140

133-
// Network
134-
if (!settings.contains("fUseUPnP"))
141+
void OptionsModel::setNetworkDefaultOptions(QSettings& settings, bool reset){
142+
if (!settings.contains("fUseUPnP") || reset)
135143
settings.setValue("fUseUPnP", DEFAULT_UPNP);
136144
if (!SoftSetBoolArg("-upnp", settings.value("fUseUPnP").toBool()))
137145
addOverriddenOption("-upnp");
138146

139-
if (!settings.contains("fListen"))
147+
if (!settings.contains("fListen") || reset)
140148
settings.setValue("fListen", DEFAULT_LISTEN);
141149
if (!SoftSetBoolArg("-listen", settings.value("fListen").toBool()))
142150
addOverriddenOption("-listen");
143151

144-
if (!settings.contains("fUseProxy"))
152+
if (!settings.contains("fUseProxy") || reset)
145153
settings.setValue("fUseProxy", false);
146-
if (!settings.contains("addrProxy"))
154+
if (!settings.contains("addrProxy") || reset)
147155
settings.setValue("addrProxy", "127.0.0.1:9050");
148156
// Only try to set -proxy, if user has enabled fUseProxy
149157
if (settings.value("fUseProxy").toBool() && !SoftSetArg("-proxy", settings.value("addrProxy").toString().toStdString()))
150158
addOverriddenOption("-proxy");
151159
else if (!settings.value("fUseProxy").toBool() && !GetArg("-proxy", "").empty())
152160
addOverriddenOption("-proxy");
153161

154-
// Display
155-
if (!settings.contains("digits"))
162+
if(reset){
163+
emit dataChanged(index(0), index(rowCount(QModelIndex()) - 1));
164+
}
165+
}
166+
167+
void OptionsModel::setWindowDefaultOptions(QSettings& settings, bool reset){
168+
if (!settings.contains("fMinimizeToTray") || reset)
169+
settings.setValue("fMinimizeToTray", false);
170+
fMinimizeToTray = settings.value("fMinimizeToTray").toBool();
171+
172+
if (!settings.contains("fMinimizeOnClose") || reset)
173+
settings.setValue("fMinimizeOnClose", false);
174+
fMinimizeOnClose = settings.value("fMinimizeOnClose").toBool();
175+
176+
if(reset){
177+
emit dataChanged(index(0), index(rowCount(QModelIndex()) - 1));
178+
}
179+
}
180+
181+
void OptionsModel::setDisplayDefaultOptions(QSettings& settings, bool reset){
182+
if (!settings.contains("nDisplayUnit") || reset)
183+
settings.setValue("nDisplayUnit", BitcoinUnits::PIV);
184+
nDisplayUnit = settings.value("nDisplayUnit").toInt();
185+
if (!settings.contains("digits") || reset)
156186
settings.setValue("digits", "2");
157-
if (!settings.contains("theme"))
187+
if (!settings.contains("theme") || reset)
158188
settings.setValue("theme", "");
159-
if (!settings.contains("fCSSexternal"))
189+
if (!settings.contains("fCSSexternal") || reset)
160190
settings.setValue("fCSSexternal", false);
161-
if (!settings.contains("language"))
191+
if (!settings.contains("language") || reset)
162192
settings.setValue("language", "");
163193
if (!SoftSetArg("-lang", settings.value("language").toString().toStdString()))
164194
addOverriddenOption("-lang");
165195

166-
if (settings.contains("fZeromintEnable"))
196+
if (settings.contains("fZeromintEnable") || reset)
167197
SoftSetBoolArg("-enablezeromint", settings.value("fZeromintEnable").toBool());
168-
if (settings.contains("fEnableAutoConvert"))
198+
if (settings.contains("fEnableAutoConvert") || reset)
169199
SoftSetBoolArg("-enableautoconvertaddress", settings.value("fEnableAutoConvert").toBool());
170-
if (settings.contains("nZeromintPercentage"))
200+
if (settings.contains("nZeromintPercentage") || reset)
171201
SoftSetArg("-zeromintpercentage", settings.value("nZeromintPercentage").toString().toStdString());
172-
if (settings.contains("nPreferredDenom"))
202+
if (settings.contains("nPreferredDenom") || reset)
173203
SoftSetArg("-preferredDenom", settings.value("nPreferredDenom").toString().toStdString());
174-
if (settings.contains("nAnonymizePivxAmount"))
204+
if (settings.contains("nAnonymizePivxAmount") || reset)
175205
SoftSetArg("-anonymizepivxamount", settings.value("nAnonymizePivxAmount").toString().toStdString());
176206

177-
language = settings.value("language").toString();
207+
if (!settings.contains("strThirdPartyTxUrls") || reset)
208+
settings.setValue("strThirdPartyTxUrls", "");
209+
strThirdPartyTxUrls = settings.value("strThirdPartyTxUrls", "").toString();
210+
211+
if(reset){
212+
emit dataChanged(index(0), index(rowCount(QModelIndex()) - 1));
213+
}
178214
}
179215

180216
void OptionsModel::Reset()

src/qt/optionsmodel.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,13 @@
99
#include "amount.h"
1010

1111
#include <QAbstractListModel>
12+
#include <QSettings>
1213

1314
QT_BEGIN_NAMESPACE
1415
class QNetworkProxy;
1516
QT_END_NAMESPACE
1617

17-
/** Interface from Qt to configuration data structure for Bitcoin client.
18+
/** Interface from Qt to configuration data structure for PIVX client.
1819
To Qt, the options are presented as a list with the different options
1920
laid out vertically.
2021
This can be changed to a tree once the settings become sufficiently
@@ -82,6 +83,13 @@ class OptionsModel : public QAbstractListModel
8283
bool isRestartRequired();
8384
bool resetSettings;
8485

86+
// Reset
87+
void setMainDefaultOptions(QSettings& settings, bool reset = false);
88+
void setWalletDefaultOptions(QSettings& settings, bool reset = false);
89+
void setNetworkDefaultOptions(QSettings& settings, bool reset = false);
90+
void setWindowDefaultOptions(QSettings& settings, bool reset = false);
91+
void setDisplayDefaultOptions(QSettings& settings, bool reset = false);
92+
8593
private:
8694
/* Qt-only settings */
8795
bool fMinimizeToTray;

src/qt/pivx/settings/settingsdisplayoptionswidget.cpp

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ SettingsDisplayOptionsWidget::SettingsDisplayOptionsWidget(PIVXGUI* _window, QWi
9898
initLanguages();
9999
connect(ui->comboBoxLanguage, SIGNAL(currentIndexChanged()), this, SLOT(showRestartWarning(bool)));
100100
connect(ui->comboBoxLanguage ,SIGNAL(currentIndexChanged(const QString&)),this, SLOT(languageChanged(const QString&)));
101+
connect(ui->pushButtonReset, SIGNAL(clicked()), this, SLOT(onResetClicked()));
101102
}
102103

103104
void SettingsDisplayOptionsWidget::initLanguages(){
@@ -146,13 +147,20 @@ void SettingsDisplayOptionsWidget::showRestartWarning(bool fPersistent){
146147
*/
147148
}
148149

150+
void SettingsDisplayOptionsWidget::onResetClicked() {
151+
if (clientModel) {
152+
OptionsModel *optionsModel = clientModel->getOptionsModel();
153+
QSettings settings;
154+
optionsModel->setDisplayDefaultOptions(settings, true);
155+
inform(tr("Options reset succeed"));
156+
}
157+
}
158+
149159
void SettingsDisplayOptionsWidget::setMapper(QDataWidgetMapper *mapper){
150160
mapper->addMapping(ui->comboBoxDigits, OptionsModel::Digits);
151161
mapper->addMapping(ui->comboBoxLanguage, OptionsModel::Language);
152162
mapper->addMapping(ui->comboBoxUnit, OptionsModel::DisplayUnit);
153-
//mapper->addMapping(ui->thirdPartyTxUrls, OptionsModel::ThirdPartyTxUrls);
154163
mapper->addMapping(ui->pushButtonSwitchBalance, OptionsModel::HideZeroBalances);
155-
//mapper->addMapping(ui->checkBoxHideOrphans, OptionsModel::HideOrphans);
156164
}
157165

158166
void SettingsDisplayOptionsWidget::loadClientModel(){
@@ -161,7 +169,6 @@ void SettingsDisplayOptionsWidget::loadClientModel(){
161169
}
162170
}
163171

164-
SettingsDisplayOptionsWidget::~SettingsDisplayOptionsWidget()
165-
{
172+
SettingsDisplayOptionsWidget::~SettingsDisplayOptionsWidget(){
166173
delete ui;
167174
}

src/qt/pivx/settings/settingsdisplayoptionswidget.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class SettingsDisplayOptionsWidget : public PWidget
2828
public slots:
2929
void showRestartWarning(bool fPersistent);
3030
void languageChanged(const QString& newValue);
31+
void onResetClicked();
3132

3233
private:
3334
Ui::SettingsDisplayOptionsWidget *ui;

src/qt/pivx/settings/settingsmainoptionswidget.cpp

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include "bitcoinunits.h"
1414
#include "guiutil.h"
1515
#include "optionsmodel.h"
16+
#include "clientmodel.h"
1617
#include "qt/pivx/qtutils.h"
1718

1819
#include "main.h" // for MAX_SCRIPTCHECK_THREADS
@@ -88,6 +89,20 @@ SettingsMainOptionsWidget::SettingsMainOptionsWidget(PIVXGUI* _window, QWidget *
8889
ui->threadsScriptVerif->setMaximum(MAX_SCRIPTCHECK_THREADS);
8990

9091
connect(ui->pushButtonSave, SIGNAL(clicked()), parent, SLOT(onSaveOptionsClicked()));
92+
connect(ui->pushButtonReset, SIGNAL(clicked()), this, SLOT(onResetClicked()));
93+
}
94+
95+
void SettingsMainOptionsWidget::onResetClicked(){
96+
if(clientModel) {
97+
OptionsModel *optionsModel = clientModel->getOptionsModel();
98+
QSettings settings;
99+
// default setting for OptionsModel::StartAtStartup - disabled
100+
if (GUIUtil::GetStartOnSystemStartup())
101+
GUIUtil::SetStartOnSystemStartup(false);
102+
optionsModel->setMainDefaultOptions(settings, true);
103+
optionsModel->setWindowDefaultOptions(settings, true);
104+
inform(tr("Options reset succeed"));
105+
}
91106
}
92107

93108
void SettingsMainOptionsWidget::setMapper(QDataWidgetMapper *mapper){
@@ -101,7 +116,6 @@ void SettingsMainOptionsWidget::setMapper(QDataWidgetMapper *mapper){
101116
#endif
102117
}
103118

104-
SettingsMainOptionsWidget::~SettingsMainOptionsWidget()
105-
{
119+
SettingsMainOptionsWidget::~SettingsMainOptionsWidget(){
106120
delete ui;
107121
}

src/qt/pivx/settings/settingsmainoptionswidget.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ class SettingsMainOptionsWidget : public PWidget
2727

2828
void setMapper(QDataWidgetMapper *mapper);
2929

30+
public slots:
31+
void onResetClicked();
32+
3033
private:
3134
Ui::SettingsMainOptionsWidget *ui;
3235
};

src/qt/pivx/settings/settingswalletoptionswidget.cpp

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include "qt/pivx/settings/forms/ui_settingswalletoptionswidget.h"
77
#include <QListView>
88
#include "optionsmodel.h"
9+
#include "clientmodel.h"
910
#include "qt/pivx/qtutils.h"
1011

1112
SettingsWalletOptionsWidget::SettingsWalletOptionsWidget(PIVXGUI* _window, QWidget *parent) :
@@ -70,6 +71,17 @@ SettingsWalletOptionsWidget::SettingsWalletOptionsWidget(PIVXGUI* _window, QWidg
7071
setCssBtnSecondary(ui->pushButtonReset);
7172

7273
connect(ui->pushButtonSave, SIGNAL(clicked()), parent, SLOT(onSaveOptionsClicked()));
74+
connect(ui->pushButtonReset, SIGNAL(clicked()), this, SLOT(onResetClicked()));
75+
}
76+
77+
void SettingsWalletOptionsWidget::onResetClicked(){
78+
if (clientModel) {
79+
OptionsModel *optionsModel = clientModel->getOptionsModel();
80+
QSettings settings;
81+
optionsModel->setWalletDefaultOptions(settings, true);
82+
optionsModel->setNetworkDefaultOptions(settings, true);
83+
inform(tr("Options reset succeed"));
84+
}
7385
}
7486

7587
void SettingsWalletOptionsWidget::setMapper(QDataWidgetMapper *mapper){
@@ -79,13 +91,11 @@ void SettingsWalletOptionsWidget::setMapper(QDataWidgetMapper *mapper){
7991
// Network
8092
mapper->addMapping(ui->checkBoxMap, OptionsModel::MapPortUPnP);
8193
mapper->addMapping(ui->checkBoxAllow, OptionsModel::Listen);
82-
8394
mapper->addMapping(ui->checkBoxConnect, OptionsModel::ProxyUse);
8495
mapper->addMapping(ui->lineEditProxy, OptionsModel::ProxyIP);
8596
mapper->addMapping(ui->lineEditPort, OptionsModel::ProxyPort);
8697
}
8798

88-
SettingsWalletOptionsWidget::~SettingsWalletOptionsWidget()
89-
{
99+
SettingsWalletOptionsWidget::~SettingsWalletOptionsWidget(){
90100
delete ui;
91101
}

src/qt/pivx/settings/settingswalletoptionswidget.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ class SettingsWalletOptionsWidget : public PWidget
2222

2323
void setMapper(QDataWidgetMapper *mapper);
2424

25+
public slots:
26+
void onResetClicked();
27+
2528
private:
2629
Ui::SettingsWalletOptionsWidget *ui;
2730
};

src/qt/pivx/settings/settingswidget.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,10 @@ SettingsWidget::SettingsWidget(PIVXGUI* parent) :
150150
connect(settingsBackupWallet, &SettingsBackupWallet::showHide, this, &SettingsWidget::showHide);
151151
connect(settingsBackupWallet, &SettingsBackupWallet::execDialog, this, &SettingsWidget::execDialog);
152152
connect(settingsMultisendWidget, &SettingsMultisendWidget::showHide, this, &SettingsWidget::showHide);
153-
connect(settingsMultisendWidget,&SettingsMultisendWidget::message,this, &SettingsWidget::message);
153+
connect(settingsMultisendWidget, &SettingsMultisendWidget::message, this, &SettingsWidget::message);
154+
connect(settingsMainOptionsWidget, &SettingsMainOptionsWidget::message, this, &SettingsWidget::message);
155+
connect(settingsDisplayOptionsWidget, &SettingsDisplayOptionsWidget::message, this, &SettingsWidget::message);
156+
connect(settingsWalletOptionsWidget, &SettingsWalletOptionsWidget::message, this, &SettingsWidget::message);
154157

155158
/* Widget-to-option mapper */
156159
mapper = new QDataWidgetMapper(this);
@@ -168,7 +171,9 @@ void SettingsWidget::loadClientModel(){
168171
mapper->setModel(optionsModel);
169172
setMapper();
170173
mapper->toFirst();
174+
settingsMainOptionsWidget->setClientModel(clientModel);
171175
settingsDisplayOptionsWidget->setClientModel(clientModel);
176+
settingsWalletOptionsWidget->setClientModel(clientModel);
172177
/* keep consistency for action triggered elsewhere */
173178
connect(optionsModel, SIGNAL(hideOrphansChanged(bool)), this, SLOT(updateHideOrphans(bool)));
174179

0 commit comments

Comments
 (0)