src/settingseditor/settingseditor.cpp

changeset 357
66c75604f5b8
parent 356
65b4741b302d
equal deleted inserted replaced
356:65b4741b302d 357:66c75604f5b8
1 #include <QSettings> 1 #include <QSettings>
2 #include <QMdiArea> 2 #include <QMdiArea>
3 #include <QFileDialog>
3 #include <ui_settingseditor.h> 4 #include <ui_settingseditor.h>
4 #include "src/settings.h" 5 #include "src/settings.h"
5 #include "src/gl/common.h" 6 #include "src/gl/common.h"
6 #include "src/settingseditor/keyboardshortcutseditor.h" 7 #include "src/settingseditor/keyboardshortcutseditor.h"
7 #include "src/settingseditor/settingseditor.h" 8 #include "src/settingseditor/settingseditor.h"
85 default: 86 default:
86 break; 87 break;
87 } 88 }
88 } 89 }
89 ); 90 );
91 connect(
92 this->ui.exportSettingsButton,
93 &QAbstractButton::clicked,
94 [&]
95 {
96 const QString defaultName = QStringLiteral(CMAKE_PROJECT_NAME ".conf");
97 QString filename = QFileDialog::getSaveFileName(this, "", defaultName, "*.conf");
98 if (not filename.isEmpty())
99 {
100 QSettings settings;
101 QSettings exportSettings{filename, QSettings::IniFormat};
102 for (const QString& key : settings.allKeys())
103 {
104 exportSettings.setValue(key, settings.value(key));
105 }
106 exportSettings.sync();
107 }
108 }
109 );
110 connect(
111 this->ui.importSettingsButton,
112 &QAbstractButton::clicked,
113 [&]
114 {
115 QString filename = QFileDialog::getOpenFileName(this, "", "", "*.ini");
116 if (not filename.isEmpty())
117 {
118 QSettings settings;
119 const QSettings importSettings{filename};
120 settings.clear();
121 for (const QString& key : importSettings.allKeys())
122 {
123 settings.setValue(key, importSettings.value(key));
124 }
125 settings.sync();
126 this->loadSettings();
127 }
128 }
129 );
90 for (auto* widget : this->findChildren<QAbstractButton*>()) { 130 for (auto* widget : this->findChildren<QAbstractButton*>()) {
91 connect(widget, &QAbstractButton::clicked, this, &SettingsEditor::saveSettings); 131 connect(widget, &QAbstractButton::clicked, this, &SettingsEditor::saveSettings);
92 } 132 }
93 for (auto* widget : this->findChildren<QSpinBox*>()) { 133 for (auto* widget : this->findChildren<QSpinBox*>()) {
94 connect(widget, qOverload<int>(&QSpinBox::valueChanged), this, &SettingsEditor::saveSettings); 134 connect(widget, qOverload<int>(&QSpinBox::valueChanged), this, &SettingsEditor::saveSettings);
106 delete &this->ui; 146 delete &this->ui;
107 } 147 }
108 148
109 void SettingsEditor::saveSettings() 149 void SettingsEditor::saveSettings()
110 { 150 {
111 setSetting<Setting::MainColor>(this->ui.mainColorButton->color()); 151 if (not disableSettingsAutoSave)
112 setSetting<Setting::BackgroundColor>(this->ui.backgroundColorButton->color()); 152 {
113 setSetting<Setting::SelectedColor>(this->ui.selectedColorButton->color()); 153 setSetting<Setting::MainColor>(this->ui.mainColorButton->color());
114 setSetting<Setting::LineThickness>(static_cast<GLfloat>(this->ui.lineThickness->value())); 154 setSetting<Setting::BackgroundColor>(this->ui.backgroundColorButton->color());
115 setSetting<Setting::LineAntiAliasing>(this->ui.lineAntiAliasing->isChecked()); 155 setSetting<Setting::SelectedColor>(this->ui.selectedColorButton->color());
116 setSetting<Setting::LogOpenGLDebugMessages>(this->ui.logOpenGLDebugMessages->isChecked()); 156 setSetting<Setting::LineThickness>(static_cast<GLfloat>(this->ui.lineThickness->value()));
117 setSetting<Setting::CodeEditorUseSystemFont>(this->ui.codeEditorSystemFont->isChecked()); 157 setSetting<Setting::LineAntiAliasing>(this->ui.lineAntiAliasing->isChecked());
118 setSetting<Setting::CodeEditorFontFamily>(this->ui.codeEditorFontFamily->currentText()); 158 setSetting<Setting::LogOpenGLDebugMessages>(this->ui.logOpenGLDebugMessages->isChecked());
119 setSetting<Setting::CodeEditorFontSize>(this->ui.codeEditorFontSize->value()); 159 setSetting<Setting::CodeEditorUseSystemFont>(this->ui.codeEditorSystemFont->isChecked());
120 const int viewMode = this->ui.viewModeButtonGroup->checkedId(); 160 setSetting<Setting::CodeEditorFontFamily>(this->ui.codeEditorFontFamily->currentText());
121 if (viewMode != -1) { 161 setSetting<Setting::CodeEditorFontSize>(this->ui.codeEditorFontSize->value());
122 setSetting<Setting::ViewMode>(static_cast<QMdiArea::ViewMode>(viewMode)); 162 const int viewMode = this->ui.viewModeButtonGroup->checkedId();
163 if (viewMode != -1) {
164 setSetting<Setting::ViewMode>(static_cast<QMdiArea::ViewMode>(viewMode));
165 }
166 const QVariant toolButtonStyle = this->ui.toolButtonStyle->currentData();
167 if (toolButtonStyle.isValid()) {
168 setSetting<Setting::ToolButtonStyle>(
169 static_cast<Qt::ToolButtonStyle>(toolButtonStyle.toInt()));
170 }
171 this->librariesEditor.saveSettings();
172 Q_EMIT this->settingsChanged();
123 } 173 }
124 const QVariant toolButtonStyle = this->ui.toolButtonStyle->currentData();
125 if (toolButtonStyle.isValid()) {
126 setSetting<Setting::ToolButtonStyle>(
127 static_cast<Qt::ToolButtonStyle>(toolButtonStyle.toInt()));
128 }
129 this->librariesEditor.saveSettings();
130 Q_EMIT this->settingsChanged();
131 } 174 }
132 175
133 void SettingsEditor::loadSettings() 176 void SettingsEditor::loadSettings()
134 { 177 {
178 this->disableSettingsAutoSave = true;
135 this->libraries.restoreFromSettings(); 179 this->libraries.restoreFromSettings();
136 this->ui.mainColorButton->setColor(setting<Setting::MainColor>()); 180 this->ui.mainColorButton->setColor(setting<Setting::MainColor>());
137 this->ui.backgroundColorButton->setColor(setting<Setting::BackgroundColor>()); 181 this->ui.backgroundColorButton->setColor(setting<Setting::BackgroundColor>());
138 this->ui.selectedColorButton->setColor(setting<Setting::SelectedColor>()); 182 this->ui.selectedColorButton->setColor(setting<Setting::SelectedColor>());
139 this->ui.lineThickness->setValue(double_cast(setting<Setting::LineThickness>())); 183 this->ui.lineThickness->setValue(double_cast(setting<Setting::LineThickness>()));
149 int toolButtonStyleIndex = this->ui.toolButtonStyle->findData( 193 int toolButtonStyleIndex = this->ui.toolButtonStyle->findData(
150 setting<Setting::ToolButtonStyle>()); 194 setting<Setting::ToolButtonStyle>());
151 if (toolButtonStyleIndex != -1) { 195 if (toolButtonStyleIndex != -1) {
152 this->ui.toolButtonStyle->setCurrentIndex(toolButtonStyleIndex); 196 this->ui.toolButtonStyle->setCurrentIndex(toolButtonStyleIndex);
153 } 197 }
198 this->disableSettingsAutoSave = false;
154 } 199 }

mercurial