PIVX Core  5.6.99
P2P Digital Currency
welcomecontentwidget.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 
5 #if defined(HAVE_CONFIG_H)
6 #include "config/pivx-config.h"
7 #endif
8 
9 #include "welcomecontentwidget.h"
10 #include "ui_welcomecontentwidget.h"
11 
12 #include "guiutil.h"
13 
14 #include <QDir>
15 #include <QFile>
16 #include <QListView>
17 #include <QScreen>
18 #include <QSettings>
19 
21  QDialog(parent, Qt::FramelessWindowHint | Qt::WindowSystemMenuHint),
22  ui(new Ui::WelcomeContentWidget),
23  icConfirm1(new QPushButton()),
24  icConfirm2(new QPushButton()),
25  icConfirm3(new QPushButton()),
26  icConfirm4(new QPushButton()),
27  backButton(new QPushButton()),
28  nextButton(new QPushButton())
29 {
30  ui->setupUi(this);
31 
32  this->setStyleSheet(GUIUtil::loadStyleSheet());
33 
34  ui->frame->setProperty("cssClass", "container-welcome-stack");
35 #ifdef Q_OS_MAC
36  ui->frame_2->load("://bg-welcome");
37  ui->frame_2->setProperty("cssClass", "container-welcome-no-image");
38 #else
39  ui->frame_2->setProperty("cssClass", "container-welcome");
40 #endif
41 
42  backButton = new QPushButton(ui->container);
43  nextButton = new QPushButton(ui->container);
44 
45  backButton->show();
46  backButton->raise();
47  nextButton->show();
48  nextButton->raise();
49 
50  backButton->setProperty("cssClass", "btn-welcome-back");
51  nextButton->setProperty("cssClass", "btn-welcome-next");
52 
53  QSize BUTTON_SIZE = QSize(60, 60);
54  backButton->setMinimumSize(BUTTON_SIZE);
55  backButton->setMaximumSize(BUTTON_SIZE);
56 
57  nextButton->setMinimumSize(BUTTON_SIZE);
58  nextButton->setMaximumSize(BUTTON_SIZE);
59 
60  int backX = 0;
61  int backY = 240;
62  int nextX = 820;
63  int nextY = 240;
64 
65  // position
66  backButton->move(backX, backY);
67  backButton->setStyleSheet("background: url(://ic-arrow-white-left); background-repeat:no-repeat;background-position:center;border: 0;background-color:#5c4b7d;color: #5c4b7d; border-radius:2px;");
68  nextButton->move(nextX, nextY);
69  nextButton->setStyleSheet("background: url(://ic-arrow-white-right);background-repeat:no-repeat;background-position:center;border: 0;background-color:#5c4b7d;color: #5c4b7d; border-radius:2px;");
70 
71  if (pos == 0) {
72  backButton->setVisible(false);
73  }
74 
75  ui->labelLine1->setProperty("cssClass", "line-welcome");
76  ui->labelLine2->setProperty("cssClass", "line-welcome");
77  ui->labelLine3->setProperty("cssClass", "line-welcome");
78 
79  ui->groupBoxName->setProperty("cssClass", "container-welcome-box");
80  ui->groupContainer->setProperty("cssClass", "container-welcome-box");
81 
82  ui->pushNumber1->setProperty("cssClass", "btn-welcome-number-check");
83  ui->pushNumber1->setEnabled(false);
84  ui->pushNumber2->setProperty("cssClass", "btn-welcome-number-check");
85  ui->pushNumber2->setEnabled(false);
86  ui->pushNumber3->setProperty("cssClass", "btn-welcome-number-check");
87  ui->pushNumber3->setEnabled(false);
88  ui->pushNumber4->setProperty("cssClass", "btn-welcome-number-check");
89  ui->pushNumber4->setEnabled(false);
90 
91  ui->pushName1->setProperty("cssClass", "btn-welcome-name-check");
92  ui->pushName1->setEnabled(false);
93  ui->pushName2->setProperty("cssClass", "btn-welcome-name-check");
94  ui->pushName2->setEnabled(false);
95  ui->pushName3->setProperty("cssClass", "btn-welcome-name-check");
96  ui->pushName3->setEnabled(false);
97  ui->pushName4->setProperty("cssClass", "btn-welcome-name-check");
98  ui->pushName4->setEnabled(false);
99 
100  ui->stackedWidget->setCurrentIndex(0);
101 
102  // Frame 1
103  ui->page_1->setProperty("cssClass", "container-welcome-step1");
104  ui->labelTitle1->setProperty("cssClass", "text-title-welcome");
105  ui->comboBoxLanguage->setProperty("cssClass", "btn-combo-welcome");
106  ui->comboBoxLanguage->setView(new QListView());
107 
108  // Frame 2
109  ui->page_2->setProperty("cssClass", "container-welcome-step2");
110  ui->labelTitle2->setProperty("cssClass", "text-title-welcome");
111  ui->labelTitle2->setText(ui->labelTitle2->text().arg(PACKAGE_NAME));
112  ui->labelMessage2->setProperty("cssClass", "text-main-white");
113 
114  // Frame 3
115  ui->page_3->setProperty("cssClass", "container-welcome-step3");
116  ui->labelTitle3->setProperty("cssClass", "text-title-welcome");
117  ui->labelMessage3->setProperty("cssClass", "text-main-white");
118 
119  // Frame 4
120  ui->page_4->setProperty("cssClass", "container-welcome-step4");
121  ui->labelTitle4->setProperty("cssClass", "text-title-welcome");
122  ui->labelMessage4->setProperty("cssClass", "text-main-white");
123 
124  // Confirm icons
125  icConfirm1 = new QPushButton(ui->layoutIcon1_2);
126  icConfirm2 = new QPushButton(ui->layoutIcon2_2);
127  icConfirm3 = new QPushButton(ui->layoutIcon3_2);
128  icConfirm4 = new QPushButton(ui->layoutIcon4_2);
129 
130  QSize BUTTON_CONFIRM_SIZE = QSize(22, 22);
131  int posX = 0;
132  int posY = 0;
133 
134  icConfirm1->setProperty("cssClass", "ic-step-confirm-welcome");
135  icConfirm1->setMinimumSize(BUTTON_CONFIRM_SIZE);
136  icConfirm1->setMaximumSize(BUTTON_CONFIRM_SIZE);
137  icConfirm1->show();
138  icConfirm1->raise();
139  icConfirm1->setVisible(false);
140  icConfirm1->move(posX, posY);
141  icConfirm2->setProperty("cssClass", "ic-step-confirm-welcome");
142  icConfirm2->setMinimumSize(BUTTON_CONFIRM_SIZE);
143  icConfirm2->setMaximumSize(BUTTON_CONFIRM_SIZE);
144  icConfirm2->move(posX, posY);
145  icConfirm2->show();
146  icConfirm2->raise();
147  icConfirm2->setVisible(false);
148  icConfirm3->setProperty("cssClass", "ic-step-confirm-welcome");
149  icConfirm3->setMinimumSize(BUTTON_CONFIRM_SIZE);
150  icConfirm3->setMaximumSize(BUTTON_CONFIRM_SIZE);
151  icConfirm3->move(posX, posY);
152  icConfirm3->show();
153  icConfirm3->raise();
154  icConfirm3->setVisible(false);
155  icConfirm4->setProperty("cssClass", "ic-step-confirm-welcome");
156  icConfirm4->setMinimumSize(BUTTON_CONFIRM_SIZE);
157  icConfirm4->setMaximumSize(BUTTON_CONFIRM_SIZE);
158  icConfirm4->move(posX, posY);
159  icConfirm4->show();
160  icConfirm4->raise();
161  icConfirm4->setVisible(false);
162 
163  ui->pushButtonSkip->setProperty("cssClass", "btn-close-white");
164  onNextClicked();
165 
166  connect(ui->pushButtonSkip, &QPushButton::clicked, this, &WelcomeContentWidget::close);
167  connect(nextButton, &QPushButton::clicked, this, &WelcomeContentWidget::onNextClicked);
168  connect(backButton, &QPushButton::clicked, this, &WelcomeContentWidget::onBackClicked);
169  connect(ui->comboBoxLanguage, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &WelcomeContentWidget::checkLanguage);
170  initLanguages();
171 
172  // Resize window and move to center of desktop, disallow resizing
173  QRect r(QPoint(), size());
174  resize(r.size());
175  setFixedSize(r.size());
176  move(QGuiApplication::primaryScreen()->geometry().center() - r.center());
177 }
178 
180 {
181  /* Language selector */
182  QDir translations(":translations");
183  ui->comboBoxLanguage->addItem(QString("(") + tr("default") + QString(")"), QVariant(""));
184  for (const QString& langStr : translations.entryList()) {
185  QLocale locale(langStr);
186 
188  if (langStr.contains("_")) {
190  ui->comboBoxLanguage->addItem(locale.nativeLanguageName() + QString(" - ") + locale.nativeCountryName() + QString(" (") + langStr + QString(")"), QVariant(langStr));
191  } else {
193  ui->comboBoxLanguage->addItem(locale.nativeLanguageName() + QString(" (") + langStr + QString(")"), QVariant(langStr));
194  }
195  }
196 }
197 
199 {
200  this->model = model;
201 }
202 
204 {
205  QString sel = ui->comboBoxLanguage->currentData().toString();
206  QSettings settings;
207  if (settings.value("language") != sel){
208  settings.setValue("language", sel);
209  settings.sync();
210  Q_EMIT onLanguageSelected();
211  ui->retranslateUi(this);
212  ui->labelTitle2->setText(ui->labelTitle2->text().arg(PACKAGE_NAME));
213  }
214 }
215 
217 {
218  switch(pos) {
219  case 0:{
220  ui->stackedWidget->setCurrentIndex(1);
221  break;
222  }
223  case 1: {
224  backButton->setVisible(true);
225  ui->stackedWidget->setCurrentIndex(2);
226  ui->pushNumber2->setChecked(true);
227  ui->pushName4->setChecked(false);
228  ui->pushName3->setChecked(false);
229  ui->pushName2->setChecked(true);
230  ui->pushName1->setChecked(true);
231  icConfirm1->setVisible(true);
232  break;
233  }
234  case 2: {
235  ui->stackedWidget->setCurrentIndex(3);
236  ui->pushNumber3->setChecked(true);
237  ui->pushName4->setChecked(false);
238  ui->pushName3->setChecked(true);
239  ui->pushName2->setChecked(true);
240  ui->pushName1->setChecked(true);
241  icConfirm2->setVisible(true);
242  break;
243  }
244  case 3:{
245  ui->stackedWidget->setCurrentIndex(4);
246  ui->pushNumber4->setChecked(true);
247  ui->pushName4->setChecked(true);
248  ui->pushName3->setChecked(true);
249  ui->pushName2->setChecked(true);
250  ui->pushName1->setChecked(true);
251  icConfirm3->setVisible(true);
252  break;
253  }
254  case 4:{
255  isOk = true;
256  accept();
257  break;
258  }
259  }
260  pos++;
261 
262 }
263 
265 {
266  if (pos == 0) return;
267  pos--;
268  switch(pos) {
269  case 0:{
270  ui->stackedWidget->setCurrentIndex(0);
271  break;
272  }
273  case 1: {
274  ui->stackedWidget->setCurrentIndex(1);
275  ui->pushNumber1->setChecked(true);
276  ui->pushNumber4->setChecked(false);
277  ui->pushNumber3->setChecked(false);
278  ui->pushNumber2->setChecked(false);
279  ui->pushName4->setChecked(false);
280  ui->pushName3->setChecked(false);
281  ui->pushName2->setChecked(false);
282  ui->pushName1->setChecked(true);
283  icConfirm1->setVisible(false);
284  backButton->setVisible(false);
285 
286  break;
287  }
288  case 2: {
289  ui->stackedWidget->setCurrentIndex(2);
290  ui->pushNumber2->setChecked(true);
291  ui->pushNumber4->setChecked(false);
292  ui->pushNumber3->setChecked(false);
293  ui->pushName4->setChecked(false);
294  ui->pushName3->setChecked(false);
295  ui->pushName2->setChecked(true);
296  ui->pushName1->setChecked(true);
297  icConfirm2->setVisible(false);
298  break;
299  }
300  case 3:{
301  ui->stackedWidget->setCurrentIndex(3);
302  ui->pushNumber3->setChecked(true);
303  ui->pushNumber4->setChecked(false);
304  ui->pushName4->setChecked(false);
305  ui->pushName3->setChecked(true);
306  ui->pushName2->setChecked(true);
307  ui->pushName1->setChecked(true);
308  icConfirm3->setVisible(false);
309  break;
310  }
311 
312  }
313 
314  if (pos == 0) {
315  backButton->setVisible(false);
316  }
317 }
318 
320 {
321  isOk = true;
322  accept();
323 }
324 
326 {
327  delete ui;
328 }
Interface from Qt to configuration data structure for PIVX client.
Definition: optionsmodel.h:22
WelcomeContentWidget(QWidget *parent=nullptr)
void setModel(OptionsModel *model)
Ui::WelcomeContentWidget * ui
QString loadStyleSheet()
Load global CSS theme.
Definition: guiutil.cpp:639
#define PACKAGE_NAME
Definition: pivx-config.h:366
QSettings * settings
Definition: qtutils.cpp:197