Skip to content

Commit 9aa97f1

Browse files
committed
[GUI][Model] Settings options, mechanism to discard options that were not saved.
1 parent 8f935d1 commit 9aa97f1

10 files changed

+88
-14
lines changed

src/qt/optionsmodel.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,10 @@ void OptionsModel::Init()
101101
language = settings.value("language").toString();
102102
}
103103

104+
void OptionsModel::refreshDataView(){
105+
emit dataChanged(index(0), index(rowCount(QModelIndex()) - 1));
106+
}
107+
104108
void OptionsModel::setMainDefaultOptions(QSettings& settings, bool reset){
105109
// These are shared with the core or have a command-line parameter
106110
// and we want command-line parameters to overwrite the GUI settings.
@@ -119,6 +123,10 @@ void OptionsModel::setMainDefaultOptions(QSettings& settings, bool reset){
119123
settings.setValue("nThreadsScriptVerif", DEFAULT_SCRIPTCHECK_THREADS);
120124
if (!SoftSetArg("-par", settings.value("nThreadsScriptVerif").toString().toStdString()))
121125
addOverriddenOption("-par");
126+
127+
if(reset){
128+
refreshDataView();
129+
}
122130
}
123131

124132
void OptionsModel::setWalletDefaultOptions(QSettings& settings, bool reset){
@@ -134,7 +142,7 @@ void OptionsModel::setWalletDefaultOptions(QSettings& settings, bool reset){
134142
}
135143

136144
if(reset){
137-
emit dataChanged(index(0), index(rowCount(QModelIndex()) - 1));
145+
refreshDataView();
138146
}
139147
}
140148

@@ -160,7 +168,7 @@ void OptionsModel::setNetworkDefaultOptions(QSettings& settings, bool reset){
160168
addOverriddenOption("-proxy");
161169

162170
if(reset){
163-
emit dataChanged(index(0), index(rowCount(QModelIndex()) - 1));
171+
refreshDataView();
164172
}
165173
}
166174

@@ -174,7 +182,7 @@ void OptionsModel::setWindowDefaultOptions(QSettings& settings, bool reset){
174182
fMinimizeOnClose = settings.value("fMinimizeOnClose").toBool();
175183

176184
if(reset){
177-
emit dataChanged(index(0), index(rowCount(QModelIndex()) - 1));
185+
refreshDataView();
178186
}
179187
}
180188

src/qt/optionsmodel.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ class OptionsModel : public QAbstractListModel
6464
int rowCount(const QModelIndex& parent = QModelIndex()) const;
6565
QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
6666
bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole);
67+
void refreshDataView();
6768
/** Updates current unit in memory, settings and emits displayUnitChanged(newUnit) signal */
6869
void setDisplayUnit(const QVariant& value);
6970
/* Update StakeSplitThreshold's value in wallet */

src/qt/pivx/settings/forms/settingsdisplayoptionswidget.ui

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<rect>
77
<x>0</x>
88
<y>0</y>
9-
<width>428</width>
9+
<width>493</width>
1010
<height>434</height>
1111
</rect>
1212
</property>
@@ -341,11 +341,14 @@
341341
</item>
342342
<item>
343343
<layout class="QHBoxLayout" name="horizontalLayout_7">
344+
<property name="spacing">
345+
<number>12</number>
346+
</property>
344347
<item>
345348
<widget class="QPushButton" name="pushButtonReset">
346349
<property name="minimumSize">
347350
<size>
348-
<width>200</width>
351+
<width>160</width>
349352
<height>50</height>
350353
</size>
351354
</property>
@@ -356,7 +359,20 @@
356359
</size>
357360
</property>
358361
<property name="text">
359-
<string>PushButton</string>
362+
<string>Reset to default</string>
363+
</property>
364+
</widget>
365+
</item>
366+
<item>
367+
<widget class="QPushButton" name="pushButtonClean">
368+
<property name="minimumSize">
369+
<size>
370+
<width>0</width>
371+
<height>50</height>
372+
</size>
373+
</property>
374+
<property name="text">
375+
<string>Discard changes</string>
360376
</property>
361377
</widget>
362378
</item>

src/qt/pivx/settings/forms/settingsmainoptionswidget.ui

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -368,11 +368,14 @@
368368
</item>
369369
<item>
370370
<layout class="QHBoxLayout" name="horizontalLayout_7">
371+
<property name="spacing">
372+
<number>12</number>
373+
</property>
371374
<item>
372375
<widget class="QPushButton" name="pushButtonReset">
373376
<property name="minimumSize">
374377
<size>
375-
<width>200</width>
378+
<width>160</width>
376379
<height>50</height>
377380
</size>
378381
</property>
@@ -383,7 +386,20 @@
383386
</size>
384387
</property>
385388
<property name="text">
386-
<string>PushButton</string>
389+
<string>Reset to default</string>
390+
</property>
391+
</widget>
392+
</item>
393+
<item>
394+
<widget class="QPushButton" name="pushButtonClean">
395+
<property name="minimumSize">
396+
<size>
397+
<width>0</width>
398+
<height>50</height>
399+
</size>
400+
</property>
401+
<property name="text">
402+
<string>Discard changes</string>
387403
</property>
388404
</widget>
389405
</item>
@@ -418,7 +434,7 @@
418434
</size>
419435
</property>
420436
<property name="text">
421-
<string>PushButton</string>
437+
<string>SAVE</string>
422438
</property>
423439
</widget>
424440
</item>

src/qt/pivx/settings/forms/settingswalletoptionswidget.ui

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<rect>
77
<x>0</x>
88
<y>0</y>
9-
<width>418</width>
9+
<width>493</width>
1010
<height>654</height>
1111
</rect>
1212
</property>
@@ -418,22 +418,38 @@
418418
</item>
419419
<item>
420420
<layout class="QHBoxLayout" name="horizontalLayout_7">
421+
<property name="spacing">
422+
<number>12</number>
423+
</property>
421424
<item>
422425
<widget class="QPushButton" name="pushButtonReset">
423426
<property name="minimumSize">
424427
<size>
425-
<width>200</width>
428+
<width>160</width>
426429
<height>50</height>
427430
</size>
428431
</property>
429432
<property name="maximumSize">
430433
<size>
431-
<width>200</width>
434+
<width>50</width>
435+
<height>16777215</height>
436+
</size>
437+
</property>
438+
<property name="text">
439+
<string>Reset to default</string>
440+
</property>
441+
</widget>
442+
</item>
443+
<item>
444+
<widget class="QPushButton" name="pushButtonClean">
445+
<property name="minimumSize">
446+
<size>
447+
<width>0</width>
432448
<height>50</height>
433449
</size>
434450
</property>
435451
<property name="text">
436-
<string>PushButton</string>
452+
<string>Discard changes</string>
437453
</property>
438454
</widget>
439455
</item>

src/qt/pivx/settings/settingsdisplayoptionswidget.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ SettingsDisplayOptionsWidget::SettingsDisplayOptionsWidget(PIVXGUI* _window, QWi
8383
digits.setNum(index);
8484
ui->comboBoxDigits->addItem(digits, digits);
8585
}
86-
setShadow(ui->comboBoxDigits);
8786

8887
// Urls
8988
ui->lineEditUrl->setPlaceholderText("e.g. https://example.com/tx/%s");
@@ -94,11 +93,13 @@ SettingsDisplayOptionsWidget::SettingsDisplayOptionsWidget(PIVXGUI* _window, QWi
9493
ui->pushButtonReset->setText(tr("Reset to default"));
9594
setCssBtnPrimary(ui->pushButtonSave);
9695
setCssBtnSecondary(ui->pushButtonReset);
96+
setCssBtnSecondary(ui->pushButtonClean);
9797

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&)));
101101
connect(ui->pushButtonReset, SIGNAL(clicked()), this, SLOT(onResetClicked()));
102+
connect(ui->pushButtonClean, SIGNAL(clicked()), parent, SLOT(onDiscardChanges()));
102103
}
103104

104105
void SettingsDisplayOptionsWidget::initLanguages(){

src/qt/pivx/settings/settingsmainoptionswidget.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ SettingsMainOptionsWidget::SettingsMainOptionsWidget(PIVXGUI* _window, QWidget *
8181
ui->pushButtonReset->setText(tr("Reset to default"));
8282
setCssBtnPrimary(ui->pushButtonSave);
8383
setCssBtnSecondary(ui->pushButtonReset);
84+
setCssBtnSecondary(ui->pushButtonClean);
8485

8586
/* Main elements init */
8687
ui->databaseCache->setMinimum(nMinDbCache);
@@ -90,10 +91,13 @@ SettingsMainOptionsWidget::SettingsMainOptionsWidget(PIVXGUI* _window, QWidget *
9091

9192
connect(ui->pushButtonSave, SIGNAL(clicked()), parent, SLOT(onSaveOptionsClicked()));
9293
connect(ui->pushButtonReset, SIGNAL(clicked()), this, SLOT(onResetClicked()));
94+
connect(ui->pushButtonClean, SIGNAL(clicked()), parent, SLOT(onDiscardChanges()));
9395
}
9496

9597
void SettingsMainOptionsWidget::onResetClicked(){
9698
if(clientModel) {
99+
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")))
100+
return;
97101
OptionsModel *optionsModel = clientModel->getOptionsModel();
98102
QSettings settings;
99103
// default setting for OptionsModel::StartAtStartup - disabled

src/qt/pivx/settings/settingswalletoptionswidget.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,11 @@ SettingsWalletOptionsWidget::SettingsWalletOptionsWidget(PIVXGUI* _window, QWidg
6969
ui->pushButtonReset->setText(tr("Reset to default"));
7070
setCssBtnPrimary(ui->pushButtonSave);
7171
setCssBtnSecondary(ui->pushButtonReset);
72+
setCssBtnSecondary(ui->pushButtonClean);
7273

7374
connect(ui->pushButtonSave, SIGNAL(clicked()), parent, SLOT(onSaveOptionsClicked()));
7475
connect(ui->pushButtonReset, SIGNAL(clicked()), this, SLOT(onResetClicked()));
76+
connect(ui->pushButtonClean, SIGNAL(clicked()), parent, SLOT(onDiscardChanges()));
7577
}
7678

7779
void SettingsWalletOptionsWidget::onResetClicked(){

src/qt/pivx/settings/settingswidget.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,14 @@ void SettingsWidget::selectOption(QPushButton* option){
370370
}
371371
}
372372

373+
void SettingsWidget::onDiscardChanges(){
374+
if(clientModel) {
375+
if (!ask(tr("Discard Unsaved Changes"), tr("You are just about to discard all of your unsaved options.\n\nAre you sure?\n")))
376+
return;
377+
clientModel->getOptionsModel()->refreshDataView();
378+
}
379+
}
380+
373381
void SettingsWidget::setMapper(){
374382
settingsMainOptionsWidget->setMapper(mapper);
375383
settingsWalletOptionsWidget->setMapper(mapper);

src/qt/pivx/settings/settingswidget.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ private slots:
6262
void onWalletOptionsClicked();
6363
void onDisplayOptionsClicked();
6464

65+
void onDiscardChanges();
66+
6567
// Tools
6668
void onToolsClicked();
6769
void onInformationClicked();

0 commit comments

Comments
 (0)