| |
1 #include <QSettings> |
| |
2 #include "settingseditor.h" |
| |
3 #include "ui_settingseditor.h" |
| |
4 |
| |
5 SettingsEditor::SettingsEditor(QSettings* settings, QWidget* parent) : |
| |
6 QDialog{parent}, |
| |
7 ui{*new Ui_SettingsEditor}, |
| |
8 settings{settings}, |
| |
9 libraries{settings, this}, |
| |
10 librariesEditor{settings, this} |
| |
11 { |
| |
12 this->ui.setupUi(this); |
| |
13 this->loadLocales(); |
| |
14 this->setDefaults(); |
| |
15 QVBoxLayout* layout = new QVBoxLayout{this}; |
| |
16 layout->addWidget(&librariesEditor); |
| |
17 this->ui.tabLdrawLibraries->setLayout(layout); |
| |
18 connect( |
| |
19 this, |
| |
20 &SettingsEditor::accepted, |
| |
21 this, |
| |
22 &SettingsEditor::handleAccepted); |
| |
23 } |
| |
24 |
| |
25 SettingsEditor::~SettingsEditor() |
| |
26 { |
| |
27 delete &this->ui; |
| |
28 } |
| |
29 |
| |
30 void SettingsEditor::handleAccepted() |
| |
31 { |
| |
32 this->settings->setValue("locale", this->ui.language->currentData().toString()); |
| |
33 this->librariesEditor.saveSettings(this->settings); |
| |
34 } |
| |
35 |
| |
36 void SettingsEditor::loadLocales() |
| |
37 { |
| |
38 this->ui.language->clear(); |
| |
39 QDir dir{":/locale"}; |
| |
40 // Collect translation files in built-in resources |
| |
41 QVector<QString> localeCodes = {"en"}; // English is the default locale |
| |
42 for (const QFileInfo& file : dir.entryInfoList(QDir::Files)) |
| |
43 { |
| |
44 localeCodes.append(file.baseName()); |
| |
45 } |
| |
46 std::sort(localeCodes.begin(), localeCodes.end()); |
| |
47 this->ui.language->addItem(tr("System language"), "system"); |
| |
48 for (const QString& localeCode : localeCodes) |
| |
49 { |
| |
50 const QLocale locale{localeCode}; |
| |
51 const QString languageName = QLocale::languageToString(locale.language()); |
| |
52 const QIcon flag{":/flags/" + localeCode + ".png"}; |
| |
53 this->ui.language->addItem(languageName, localeCode); |
| |
54 this->ui.language->setItemIcon(this->ui.language->count() - 1, flag); |
| |
55 } |
| |
56 } |
| |
57 |
| |
58 void SettingsEditor::setDefaults() |
| |
59 { |
| |
60 this->setCurrentLanguage(this->settings->value("locale", QLocale::system().name()).toString()); |
| |
61 } |
| |
62 |
| |
63 void SettingsEditor::setCurrentLanguage(const QString& localeCode) |
| |
64 { |
| |
65 for (int i = 0; i < this->ui.language->count(); i += 1) |
| |
66 { |
| |
67 if (this->ui.language->itemData(i) == localeCode) |
| |
68 { |
| |
69 this->ui.language->setCurrentIndex(i); |
| |
70 break; |
| |
71 } |
| |
72 } |
| |
73 } |