| 3 #include <ui_settingseditor.h> |
3 #include <ui_settingseditor.h> |
| 4 #include "src/settings.h" |
4 #include "src/settings.h" |
| 5 #include "src/gl/common.h" |
5 #include "src/gl/common.h" |
| 6 #include "src/settingseditor/keyboardshortcutseditor.h" |
6 #include "src/settingseditor/keyboardshortcutseditor.h" |
| 7 #include "src/settingseditor/settingseditor.h" |
7 #include "src/settingseditor/settingseditor.h" |
| |
8 |
| |
9 static QVariantMap storeSettings() |
| |
10 { |
| |
11 QVariantMap result; |
| |
12 QSettings settingsObject; |
| |
13 for (const QString& key : settingsObject.allKeys()) { |
| |
14 result[key] = settingsObject.value(key); |
| |
15 } |
| |
16 return result; |
| |
17 } |
| |
18 |
| |
19 static void restoreSettings(const QVariantMap& storedValues) |
| |
20 { |
| |
21 QSettings settingsObject; |
| |
22 settingsObject.clear(); |
| |
23 for (const QString& key : storedValues.keys()) { |
| |
24 settingsObject.setValue(key, storedValues[key]); |
| |
25 } |
| |
26 } |
| 8 |
27 |
| 9 SettingsEditor::SettingsEditor( |
28 SettingsEditor::SettingsEditor( |
| 10 const uiutilities::KeySequenceMap& defaultKeyboardShortcuts, |
29 const uiutilities::KeySequenceMap& defaultKeyboardShortcuts, |
| 11 QWidget* parent |
30 QWidget* parent |
| 12 ) : |
31 ) : |
| 14 ui{*new Ui_SettingsEditor}, |
33 ui{*new Ui_SettingsEditor}, |
| 15 libraries{this}, |
34 libraries{this}, |
| 16 librariesEditor{this}, |
35 librariesEditor{this}, |
| 17 defaultKeyboardShortcuts{defaultKeyboardShortcuts} |
36 defaultKeyboardShortcuts{defaultKeyboardShortcuts} |
| 18 { |
37 { |
| 19 QWidget* widget = new QWidget{this}; |
38 QWidget* centralWidget = new QWidget{this}; |
| 20 this->ui.setupUi(widget); |
39 this->ui.setupUi(centralWidget); |
| 21 this->setWidget(widget); |
40 this->setWidget(centralWidget); |
| 22 this->ui.keyboardShortcutsView->setModel(new KeyboardShortcutsEditor{parent, this}); |
41 this->ui.keyboardShortcutsView->setModel(new KeyboardShortcutsEditor{parent, this}); |
| 23 this->ui.viewModeButtonGroup->setId(this->ui.viewModeTabs, int{QMdiArea::TabbedView}); |
42 this->ui.viewModeButtonGroup->setId(this->ui.viewModeTabs, int{QMdiArea::TabbedView}); |
| 24 this->ui.viewModeButtonGroup->setId(this->ui.viewModeSubWindows, int{QMdiArea::SubWindowView}); |
43 this->ui.viewModeButtonGroup->setId(this->ui.viewModeSubWindows, int{QMdiArea::SubWindowView}); |
| 25 this->ui.toolButtonStyle->addItem(tr("Icons only"), Qt::ToolButtonIconOnly); |
44 this->ui.toolButtonStyle->addItem(tr("Icons only"), Qt::ToolButtonIconOnly); |
| 26 this->ui.toolButtonStyle->addItem(tr("Text only"), Qt::ToolButtonTextOnly); |
45 this->ui.toolButtonStyle->addItem(tr("Text only"), Qt::ToolButtonTextOnly); |
| 32 this->setWindowIcon(QIcon{":/icons/settings-outline.png"}); |
51 this->setWindowIcon(QIcon{":/icons/settings-outline.png"}); |
| 33 this->librariesEditor.setModel(&libraries); |
52 this->librariesEditor.setModel(&libraries); |
| 34 QVBoxLayout* layout = new QVBoxLayout{this}; |
53 QVBoxLayout* layout = new QVBoxLayout{this}; |
| 35 layout->addWidget(&librariesEditor); |
54 layout->addWidget(&librariesEditor); |
| 36 this->ui.tabLdrawLibraries->setLayout(layout); |
55 this->ui.tabLdrawLibraries->setLayout(layout); |
| 37 connect(this->ui.buttonBox, &QDialogButtonBox::clicked, |
56 QSettings settingsObject; |
| 38 [&](QAbstractButton* button) { |
57 connect( |
| |
58 this->ui.buttonBox, &QDialogButtonBox::clicked, |
| |
59 [this, previousSettings = storeSettings()](QAbstractButton* button) |
| |
60 { |
| 39 const auto role = this->ui.buttonBox->buttonRole(button); |
61 const auto role = this->ui.buttonBox->buttonRole(button); |
| 40 if (role == QDialogButtonBox::ApplyRole) { |
62 switch (role) |
| 41 this->saveSettings(); |
63 { |
| |
64 case QDialogButtonBox::AcceptRole: |
| |
65 this->close(); |
| |
66 break; |
| |
67 case QDialogButtonBox::RejectRole: |
| |
68 restoreSettings(previousSettings); |
| |
69 Q_EMIT this->settingsChanged(); |
| |
70 this->close(); |
| |
71 break; |
| |
72 case QDialogButtonBox::ResetRole: |
| |
73 restoreSettings(previousSettings); |
| |
74 Q_EMIT this->settingsChanged(); |
| |
75 break; |
| |
76 default: |
| |
77 break; |
| 42 } |
78 } |
| 43 }); |
79 } |
| |
80 ); |
| |
81 for (auto* widget : this->findChildren<QAbstractButton*>()) { |
| |
82 connect(widget, &QAbstractButton::clicked, this, &SettingsEditor::saveSettings); |
| |
83 } |
| |
84 for (auto* widget : this->findChildren<QSpinBox*>()) { |
| |
85 connect(widget, qOverload<int>(&QSpinBox::valueChanged), this, &SettingsEditor::saveSettings); |
| |
86 } |
| |
87 for (auto* widget : this->findChildren<ColorButton*>()) { |
| |
88 connect(widget, &ColorButton::colorChanged, this, &SettingsEditor::saveSettings); |
| |
89 } |
| |
90 for (auto* widget : this->findChildren<QComboBox*>()) { |
| |
91 connect(widget, qOverload<int>(&QComboBox::currentIndexChanged), this, &SettingsEditor::saveSettings); |
| |
92 } |
| 44 } |
93 } |
| 45 |
94 |
| 46 SettingsEditor::~SettingsEditor() |
95 SettingsEditor::~SettingsEditor() |
| 47 { |
96 { |
| 48 delete &this->ui; |
97 delete &this->ui; |