PIVX Core  5.6.99
P2P Digital Currency
displayoptionswidget.cpp
Go to the documentation of this file.
1 // Copyright (c) 2019-2020 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_displayoptionswidget.h"
7 
8 #include "bitcoinunits.h"
9 #include "clientmodel.h"
10 #include "guiutil.h"
11 #include "optionsmodel.h"
12 #include "qtutils.h"
13 
14 #include <QDir>
15 #include <QListView>
16 #include <QSettings>
17 
19  PWidget(_window,parent),
21 {
22  ui->setupUi(this);
23 
24  this->setStyleSheet(parent->styleSheet());
25 
26  // Containers
27  ui->left->setProperty("cssClass", "container");
28  ui->left->setContentsMargins(10,10,10,10);
29 
30  // Title - Subtitle
31  setCssTitleScreen(ui->labelTitle);
32  setCssSubtitleScreen(ui->labelSubtitle1);
33 
34  ui->labelTitleLanguage->setProperty("cssClass", "text-main-settings");
35  ui->labelTitleUnit->setProperty("cssClass", "text-main-settings");
36  ui->labelTitleDigits->setProperty("cssClass", "text-main-settings");
37  ui->labelTitleUrl->setProperty("cssClass", "text-main-settings");
38 
39  // TODO: Reconnect this option to an action. Hide it for now
40  ui->labelTitleUrl->hide();
41 
42  // Switch Balance (hide for now)
43  ui->pushButtonSwitchBalance->setProperty("cssClass", "btn-switch");
44  ui->pushButtonSwitchBalance->setVisible(false);
45 
46  // Hide checkbox if qtcharts not used
47 #ifndef USE_QTCHARTS
48  ui->checkBoxHideCharts->setVisible(false);
49 #endif
50 
51  // Combobox
52  ui->comboBoxLanguage->setProperty("cssClass", "btn-combo");
53  ui->comboBoxLanguage->setView(new QListView());
54  ui->comboBoxLanguage->setEditable(true);
55  QLineEdit* LanguageEdit = new QLineEdit(ui->comboBoxLanguage);
56  LanguageEdit->setReadOnly(true);
57  LanguageEdit->setAlignment(Qt::AlignRight);
58  ui->comboBoxLanguage->setLineEdit(LanguageEdit);
59 
60  ui->comboBoxUnit->setProperty("cssClass", "btn-combo");
61  ui->comboBoxUnit->setView(new QListView());
62  ui->comboBoxUnit->setModel(new BitcoinUnits(this));
63  ui->comboBoxUnit->setModelColumn(Qt::DisplayRole);
64  ui->comboBoxUnit->setEditable(true);
65  QLineEdit* UnitEdit = new QLineEdit(ui->comboBoxUnit);
66  UnitEdit->setReadOnly(true);
67  UnitEdit->setAlignment(Qt::AlignRight);
68  ui->comboBoxUnit->setLineEdit(UnitEdit);
69 
70  ui->comboBoxDigits->setProperty("cssClass", "btn-combo-options");
71 
72  ui->comboBoxDigits->setView(new QListView());
73  ui->comboBoxDigits->setEditable(true);
74  QLineEdit* DigitsEdit = new QLineEdit(ui->comboBoxDigits);
75  DigitsEdit->setReadOnly(true);
76  DigitsEdit->setAlignment(Qt::AlignRight);
77  ui->comboBoxDigits->setLineEdit(DigitsEdit);
78 
79  /* Number of displayed decimal digits selector */
80  QString digits;
81  for (int index = 2; index <= 8; index++) {
82  digits.setNum(index);
83  ui->comboBoxDigits->addItem(digits, digits);
84  }
85 
86  // Urls
87  ui->lineEditUrl->setPlaceholderText("e.g. https://example.com/tx/%s");
88  initCssEditLine(ui->lineEditUrl);
89  // TODO: Reconnect this option to an action. Hide it for now
90  ui->lineEditUrl->hide();
91 
92  // Buttons
93  ui->pushButtonSave->setText(tr("SAVE"));
94  ui->pushButtonReset->setText(tr("Reset to default"));
95  setCssBtnPrimary(ui->pushButtonSave);
96  setCssBtnSecondary(ui->pushButtonReset);
97  setCssBtnSecondary(ui->pushButtonClean);
98 
99  connect(ui->pushButtonSave, &QPushButton::clicked, [this] { Q_EMIT saveSettings(); });
100  connect(ui->pushButtonReset, &QPushButton::clicked, this, &SettingsDisplayOptionsWidget::onResetClicked);
101  connect(ui->pushButtonClean, &QPushButton::clicked, [this] { Q_EMIT discardSettings(); });
102 }
103 
105 {
106  const QString& selectedLang = this->clientModel->getOptionsModel()->getLang();
107  /* Language selector */
108  QDir translations(":translations");
109  QString defaultStr = QString("(") + tr("default") + QString(")");
110  ui->comboBoxLanguage->addItem(defaultStr, QVariant(""));
111  QStringList list = translations.entryList();
112  int selectedIndex = 0;
113  for (int i = 0; i < list.size(); ++i) {
114  const QString& langStr = list[i];
115  QLocale locale(langStr);
116 
118  if (langStr.contains("_")) {
120  ui->comboBoxLanguage->addItem(locale.nativeLanguageName() + QString(" - ") + locale.nativeCountryName() + QString(" (") + langStr + QString(")"), QVariant(langStr));
121  } else {
123  ui->comboBoxLanguage->addItem(locale.nativeLanguageName() + QString(" (") + langStr + QString(")"), QVariant(langStr));
124  }
125  // Save selected index
126  if (langStr == selectedLang) {
127  selectedIndex = i + 1;
128  }
129  }
130  ui->comboBoxLanguage->setCurrentIndex(selectedIndex);
131 }
132 
134 {
135  if (clientModel) {
136  OptionsModel *optionsModel = clientModel->getOptionsModel();
137  QSettings settings;
138  optionsModel->setDisplayDefaultOptions(settings, true);
139  inform(tr("Options reset succeed"));
140  }
141 }
142 
143 void SettingsDisplayOptionsWidget::setMapper(QDataWidgetMapper *mapper)
144 {
145  mapper->addMapping(ui->comboBoxDigits, OptionsModel::Digits);
146  mapper->addMapping(ui->comboBoxLanguage, OptionsModel::Language, "currentData");
147  mapper->addMapping(ui->comboBoxUnit, OptionsModel::DisplayUnit);
148  mapper->addMapping(ui->pushButtonSwitchBalance, OptionsModel::HideZeroBalances);
149 #ifdef USE_QTCHARTS
150  mapper->addMapping(ui->checkBoxHideCharts, OptionsModel::HideCharts);
151 #endif
152 }
153 
155 {
156  if (clientModel) {
157  ui->comboBoxUnit->setCurrentIndex(this->clientModel->getOptionsModel()->getDisplayUnit());
158  initLanguages();
159  }
160 }
161 
163 {
164  delete ui;
165 }
PIVX unit definitions.
Definition: bitcoinunits.h:54
OptionsModel * getOptionsModel()
Interface from Qt to configuration data structure for PIVX client.
Definition: optionsmodel.h:22
int getDisplayUnit()
Definition: optionsmodel.h:74
const QString & getLang()
Definition: optionsmodel.h:78
void setDisplayDefaultOptions(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
Ui::SettingsDisplayOptionsWidget * ui
void setMapper(QDataWidgetMapper *mapper)
SettingsDisplayOptionsWidget(PIVXGUI *_window=nullptr, QWidget *parent=nullptr)
QSettings * settings
Definition: qtutils.cpp:197
void setCssTitleScreen(QLabel *label)
Definition: qtutils.cpp:324
void initCssEditLine(QLineEdit *edit, bool isDialog)
Definition: qtutils.cpp:272
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