# HG changeset patch # User Teemu Piippo # Date 1656407880 -10800 # Node ID f2dc3bbecbfa50cd89b971ae24968999a1a9f235 # Parent afed72b544f0a0c052e41dfe42b16cbd7fcebb96 Make settings editor a sub window instead of a dialog diff -r afed72b544f0 -r f2dc3bbecbfa src/main.cpp --- a/src/main.cpp Tue Jun 28 11:51:17 2022 +0300 +++ b/src/main.cpp Tue Jun 28 12:18:00 2022 +0300 @@ -566,6 +566,7 @@ QObject::connect(data->canvas.get(), &PartRenderer::message, &messageLog, &MessageLog::addMessage); const QFileInfo fileInfo{*documents.modelPath(modelId)}; ModelSubWindow* subWindow = new ModelSubWindow{modelId, ui.mdiArea}; + subWindow->setMinimumSize({96, 96}); subWindow->setWidget(data->canvas.get()); subWindow->setWindowTitle(tabName(fileInfo)); subWindow->show(); @@ -586,12 +587,13 @@ } }); QObject::connect(ui.actionSettingsEditor, &QAction::triggered, [&]{ - SettingsEditor settingsEditor{defaultKeyboardShortcuts, &mainWindow}; - const int result = settingsEditor.exec(); - if (result == QDialog::Accepted) - { - restoreSettings(); - } + SettingsEditor* settingsEditor = new SettingsEditor{defaultKeyboardShortcuts, &mainWindow}; + QObject::connect(&settingsChanged, &Signal::triggered, settingsEditor, &SettingsEditor::loadSettings); + QObject::connect(settingsEditor, &SettingsEditor::settingsChanged, restoreSettings); + auto subwindow = new QMdiSubWindow{ui.mdiArea}; + subwindow->setAttribute(Qt::WA_DeleteOnClose); + subwindow->setWidget(settingsEditor); + subwindow->show(); }); QObject::connect(ui.actionQuit, &QAction::triggered, &mainWindow, &QMainWindow::close); #if 0 @@ -715,6 +717,9 @@ } } } + else { + checkEditingModeAction(EditingMode::SelectMode); + } updateTitle(); }); ui.messageLog->setModel(&messageLog); diff -r afed72b544f0 -r f2dc3bbecbfa src/settingseditor/settingseditor.cpp --- a/src/settingseditor/settingseditor.cpp Tue Jun 28 11:51:17 2022 +0300 +++ b/src/settingseditor/settingseditor.cpp Tue Jun 28 12:18:00 2022 +0300 @@ -21,16 +21,19 @@ this->ui.viewModeButtonGroup->setId(this->ui.viewModeTabs, int{QMdiArea::TabbedView}); this->ui.viewModeButtonGroup->setId(this->ui.viewModeSubWindows, int{QMdiArea::SubWindowView}); this->loadLocales(); - this->setDefaults(); + this->loadSettings(); + this->setWindowTitle(tr("Settings")); this->librariesEditor.setModel(&libraries); QVBoxLayout* layout = new QVBoxLayout{this}; layout->addWidget(&librariesEditor); this->ui.tabLdrawLibraries->setLayout(layout); - connect( - this, - &SettingsEditor::accepted, - this, - &SettingsEditor::handleAccepted); + connect(this->ui.buttonBox, &QDialogButtonBox::clicked, + [&](QAbstractButton* button) { + const auto role = this->ui.buttonBox->buttonRole(button); + if (role == QDialogButtonBox::ApplyRole) { + this->saveSettings(); + } + }); } SettingsEditor::~SettingsEditor() @@ -38,7 +41,7 @@ delete &this->ui; } -void SettingsEditor::handleAccepted() +void SettingsEditor::saveSettings() { setSetting(this->ui.language->currentData().toString()); setSetting(this->ui.mainColorButton->color()); @@ -52,6 +55,7 @@ setSetting(static_cast(viewMode)); } this->librariesEditor.saveSettings(); + Q_EMIT this->settingsChanged(); } void SettingsEditor::loadLocales() @@ -76,7 +80,7 @@ } } -void SettingsEditor::setDefaults() +void SettingsEditor::loadSettings() { this->libraries.restoreFromSettings(); this->setCurrentLanguage(setting()); diff -r afed72b544f0 -r f2dc3bbecbfa src/settingseditor/settingseditor.h --- a/src/settingseditor/settingseditor.h Tue Jun 28 11:51:17 2022 +0300 +++ b/src/settingseditor/settingseditor.h Tue Jun 28 12:18:00 2022 +0300 @@ -12,14 +12,15 @@ SettingsEditor(const uiutilities::KeySequenceMap& defaultKeyboardShortcuts = {}, QWidget* parent = nullptr); ~SettingsEditor(); -private Q_SLOTS: - void handleAccepted(); + Q_SLOT void saveSettings(); + Q_SLOT void loadSettings(); +Q_SIGNALS: + void settingsChanged(); private: class Ui_SettingsEditor& ui; LibrariesModel libraries; LibrariesEditor librariesEditor; const uiutilities::KeySequenceMap defaultKeyboardShortcuts; void loadLocales(); - void setDefaults(); void setCurrentLanguage(const QString& localeCode); }; diff -r afed72b544f0 -r f2dc3bbecbfa src/settingseditor/settingseditor.ui --- a/src/settingseditor/settingseditor.ui Tue Jun 28 11:51:17 2022 +0300 +++ b/src/settingseditor/settingseditor.ui Tue Jun 28 12:18:00 2022 +0300 @@ -6,8 +6,8 @@ 0 0 - 716 - 472 + 645 + 523 @@ -271,7 +271,7 @@ Qt::Horizontal - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::Apply