22
33#include " ../Logger.hpp"
44#include " ../NameOfExt.hpp"
5+ #include " ../ProgramConstants.hpp"
6+ #include " ../Unsorted.hpp"
7+ #include " WindowManager.hpp"
58#include " SettingsWindow.hpp"
69
710SettingsWindow::SettingsWindow (QWidget* parent) : QWidget(parent)
811{
9- ltMain = new QVBoxLayout (this );
12+ ltMain = new QVBoxLayout ();
1013 ltButtons = new QHBoxLayout ();
11- ltSettings = new QVBoxLayout ();
12- btnBack = new QPushButton (this );
13- btnSave = new QPushButton (this );
14- btnResetAll = new QPushButton (this );
15- chkEnableDebugConsole = new QCheckBox (this );
16- chkEnableDiscordRPC = new QCheckBox (this );
17- chkForceSystemLanguage = new QCheckBox (this );
14+ ltSettings = new QHBoxLayout ();
15+ ltLeftColumn = new QVBoxLayout ();
16+ ltRightColumn = new QVBoxLayout ();
17+ ltLanguage = new QHBoxLayout ();
18+ btnBack = new QPushButton ();
19+ btnSave = new QPushButton ();
20+ btnResetAll = new QPushButton ();
21+ chkEnableDebugConsole = new QCheckBox ();
22+ chkEnableDiscordRPC = new QCheckBox ();
23+ chkForceSystemLanguage = new QCheckBox ();
24+ lblLanguage = new QLabel ();
25+ cmbLanguage = new QComboBox ();
1826
1927 chkEnableDebugConsole->setText (tr (" Enable debug console" ));
2028 chkEnableDebugConsole->setObjectName (nameof (chkEnableDebugConsole));
21- if (settings. IsConsoleEnabled ())
29+ if (PROGRAM_CONSTANTS-> pSettingsFile -> IsConsoleEnabled ())
2230 chkEnableDebugConsole->setCheckState (Qt::CheckState::Checked);
2331 else
2432 chkEnableDebugConsole->setCheckState (Qt::CheckState::Unchecked);
2533
2634 chkEnableDiscordRPC->setText (tr (" Enable Discord RPC (WIP)" ));
2735 chkEnableDiscordRPC->setObjectName (nameof (chkEnableDiscordRPC));
28- if (settings. IsDiscordRPCEnabled ())
36+ if (PROGRAM_CONSTANTS-> pSettingsFile -> IsDiscordRPCEnabled ())
2937 chkEnableDiscordRPC->setCheckState (Qt::CheckState::Checked);
3038 else
3139 chkEnableDiscordRPC->setCheckState (Qt::CheckState::Unchecked);
3240
33- // TODO: Make it work later.
34- chkForceSystemLanguage->setVisible ( false );
41+ chkForceSystemLanguage-> setText ( tr ( " Force editor use system language " ));
42+ chkForceSystemLanguage->setObjectName ( nameof (chkForceSystemLanguage) );
3543
36- ltSettings->addWidget (chkEnableDebugConsole);
37- ltSettings->addWidget (chkEnableDiscordRPC);
44+ lblLanguage->setText (tr (" Language:" ));
45+ lblLanguage->setObjectName (nameof (lblLanguage));
46+
47+ for (int i = 0 ; i < static_cast <int >(Languages::Count); ++i)
48+ cmbLanguage->addItem (Unsorted::GetLanguageFullName (static_cast <Languages>(i)));
49+ cmbLanguage->setCurrentIndex (static_cast <int >(PROGRAM_CONSTANTS->pSettingsFile ->GetLanguage ()));
50+ cmbLanguage->setCurrentText (PROGRAM_CONSTANTS->LANGUAGES_STRINGS .value (PROGRAM_CONSTANTS->pSettingsFile ->GetLanguage ()).second );
51+
52+ ltLanguage->setAlignment (Qt::AlignLeading);
53+ ltLanguage->addWidget (lblLanguage);
54+ ltLanguage->addWidget (cmbLanguage);
55+
56+ ltLeftColumn->addWidget (chkEnableDebugConsole);
57+ ltLeftColumn->addWidget (chkEnableDiscordRPC);
58+ ltLeftColumn->addWidget (chkForceSystemLanguage);
59+ ltLeftColumn->addLayout (ltLanguage);
3860
3961 btnSave->setText (tr (" SAVE" ));
4062 btnSave->setObjectName (nameof (btnSave));
@@ -48,6 +70,9 @@ SettingsWindow::SettingsWindow(QWidget* parent) : QWidget(parent)
4870 btnBack->setObjectName (nameof (btnBack));
4971 connect (btnBack, &QPushButton::clicked, this , &SettingsWindow::btnBackClicked);
5072
73+ ltSettings->addLayout (ltLeftColumn);
74+ ltSettings->addLayout (ltRightColumn);
75+
5176 ltButtons->addWidget (btnSave);
5277 ltButtons->addWidget (btnResetAll);
5378 ltButtons->addWidget (btnBack);
@@ -62,25 +87,30 @@ SettingsWindow::SettingsWindow(QWidget* parent) : QWidget(parent)
6287
6388void SettingsWindow::BtnSave_Clicked ()
6489{
65- settings. SetConsoleStatus (chkEnableDebugConsole->checkState ());
90+ PROGRAM_CONSTANTS-> pSettingsFile -> SetConsoleStatus (chkEnableDebugConsole->checkState ());
6691 ConsoleWindowStateUpdate (chkEnableDebugConsole->checkState ());
6792
68- settings. SetDiscordRPCStatus (chkEnableDiscordRPC->checkState ());
93+ PROGRAM_CONSTANTS-> pSettingsFile -> SetDiscordRPCStatus (chkEnableDiscordRPC->checkState ());
6994 DiscordRPCStateUpdate (chkEnableDiscordRPC->checkState ());
7095
71- settings.Save ();
96+ PROGRAM_CONSTANTS->pSettingsFile ->SetLanguage (static_cast <Languages>(cmbLanguage->currentIndex ()));
97+ emit languageChanged ();
98+
99+ PROGRAM_CONSTANTS->pSettingsFile ->Save ();
72100}
73101
74102void SettingsWindow::BtnResetAll_Clicked ()
75103{
76- settings. SetToDefault ();
104+ PROGRAM_CONSTANTS-> pSettingsFile -> SetToDefault ();
77105
78- if (settings. IsConsoleEnabled ())
106+ if (PROGRAM_CONSTANTS-> pSettingsFile -> IsConsoleEnabled ())
79107 chkEnableDebugConsole->setCheckState (Qt::CheckState::Checked);
80108 else
81109 chkEnableDebugConsole->setCheckState (Qt::CheckState::Unchecked);
82110
83111 chkEnableDebugConsole->update ();
112+ chkEnableDiscordRPC->update ();
113+ chkForceSystemLanguage->update ();
84114}
85115
86116void SettingsWindow::ConsoleWindowStateUpdate (const Qt::CheckState& state)
0 commit comments