diff --git a/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.cpp b/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.cpp index 9308f0eca..cc2765626 100644 --- a/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.cpp +++ b/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.cpp @@ -33,7 +33,6 @@ #include #include -#include #include //--------------------------------------------------------------------------------------------------------------------- @@ -121,8 +120,9 @@ PreferencesConfigurationPage::~PreferencesConfigurationPage() } //--------------------------------------------------------------------------------------------------------------------- -void PreferencesConfigurationPage::Apply() +QStringList PreferencesConfigurationPage::Apply() { + QStringList preferences; VSettings *settings = qApp->ValentinaSettings(); settings->SetAutosaveState(ui->autoSaveCheck->isChecked()); settings->SetAutosaveTime(ui->autoTime->value()); @@ -153,9 +153,7 @@ void PreferencesConfigurationPage::Apply() const QString unit = qvariant_cast(ui->unitCombo->currentData()); settings->SetUnit(unit); m_unitChanged = false; - const QString text = tr("The Default unit has been updated and will be used as the default for the next " - "pattern you create."); - QMessageBox::information(this, QCoreApplication::applicationName(), text); + preferences.append(tr("default unit")); } if (m_labelLangChanged) { @@ -163,6 +161,7 @@ void PreferencesConfigurationPage::Apply() settings->SetLabelLanguage(locale); m_labelLangChanged = false; } + return preferences; } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.h b/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.h index 1b922194c..e0db9a2a7 100644 --- a/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.h +++ b/src/app/valentina/dialogs/configpages/preferencesconfigurationpage.h @@ -44,7 +44,7 @@ public: explicit PreferencesConfigurationPage(QWidget *parent = nullptr); virtual ~PreferencesConfigurationPage(); - void Apply(); + QStringList Apply(); protected: virtual void changeEvent(QEvent* event) Q_DECL_OVERRIDE; private: diff --git a/src/app/valentina/dialogs/configpages/preferencespathpage.cpp b/src/app/valentina/dialogs/configpages/preferencespathpage.cpp index 5877e7d6f..d4c6328d8 100644 --- a/src/app/valentina/dialogs/configpages/preferencespathpage.cpp +++ b/src/app/valentina/dialogs/configpages/preferencespathpage.cpp @@ -55,7 +55,7 @@ PreferencesPathPage::~PreferencesPathPage() } //--------------------------------------------------------------------------------------------------------------------- -void PreferencesPathPage::Apply() +QStringList PreferencesPathPage::Apply() { VSettings *settings = qApp->ValentinaSettings(); settings->SetPathIndividualMeasurements(ui->pathTable->item(0, 1)->text()); @@ -64,6 +64,8 @@ void PreferencesPathPage::Apply() settings->SetPathLayout(ui->pathTable->item(3, 1)->text()); settings->SetPathTemplate(ui->pathTable->item(4, 1)->text()); settings->SetPathLabelTemplate(ui->pathTable->item(5, 1)->text()); + + return QStringList(); // No changes those require restart. } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/valentina/dialogs/configpages/preferencespathpage.h b/src/app/valentina/dialogs/configpages/preferencespathpage.h index 2a2fb08bf..92f79dbb6 100644 --- a/src/app/valentina/dialogs/configpages/preferencespathpage.h +++ b/src/app/valentina/dialogs/configpages/preferencespathpage.h @@ -44,7 +44,7 @@ public: explicit PreferencesPathPage(QWidget *parent = nullptr); virtual ~PreferencesPathPage(); - void Apply(); + QStringList Apply(); private slots: void DefaultPath(); diff --git a/src/app/valentina/dialogs/configpages/preferencespatternpage.cpp b/src/app/valentina/dialogs/configpages/preferencespatternpage.cpp index 0b113c7cf..fbfeca4ca 100644 --- a/src/app/valentina/dialogs/configpages/preferencespatternpage.cpp +++ b/src/app/valentina/dialogs/configpages/preferencespatternpage.cpp @@ -113,13 +113,29 @@ PreferencesPatternPage::~PreferencesPatternPage() } //--------------------------------------------------------------------------------------------------------------------- -void PreferencesPatternPage::Apply() +QStringList PreferencesPatternPage::Apply() { + QStringList preferences; + VSettings *settings = qApp->ValentinaSettings(); // Scene antialiasing - settings->SetGraphicalOutput(ui->graphOutputCheck->isChecked()); - settings->SetOpenGLRender(ui->checkBoxOpenGLRender->isChecked()); + if (settings->GetGraphicalOutput() != ui->graphOutputCheck->isChecked()) + { + if (qApp->getSceneView()->IsOpenGLRender()) + { + preferences.append(tr("antialiasing")); + } + + settings->SetGraphicalOutput(ui->graphOutputCheck->isChecked()); + } + + if (settings->IsOpenGLRender() != ui->checkBoxOpenGLRender->isChecked()) + { + preferences.append(tr("scene render")); + settings->SetOpenGLRender(ui->checkBoxOpenGLRender->isChecked()); + } + settings->SetCurveApproximationScale(ui->doubleSpinBoxCurveApproximation->value()); settings->SetLineWidth(UnitConvertor(ui->doubleSpinBoxLineWidth->value(), m_oldLineUnit, Unit::Mm)); qApp->getSceneView()->SetAntialiasing(ui->graphOutputCheck->isChecked()); @@ -149,6 +165,8 @@ void PreferencesPatternPage::Apply() settings->SetKnownMaterials(m_knownMaterials); settings->SetRememberPatternMaterials(ui->checkBoxRemeberPatternMaterials->isChecked()); + + return preferences; } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/valentina/dialogs/configpages/preferencespatternpage.h b/src/app/valentina/dialogs/configpages/preferencespatternpage.h index 5c4c301cd..360012c4d 100644 --- a/src/app/valentina/dialogs/configpages/preferencespatternpage.h +++ b/src/app/valentina/dialogs/configpages/preferencespatternpage.h @@ -47,7 +47,7 @@ public: explicit PreferencesPatternPage(QWidget *parent = nullptr); virtual ~PreferencesPatternPage(); - void Apply(); + QStringList Apply(); void InitDefaultSeamAllowance(); private slots: diff --git a/src/app/valentina/dialogs/dialogpreferences.cpp b/src/app/valentina/dialogs/dialogpreferences.cpp index a4eb0bc8f..849b4dbbb 100644 --- a/src/app/valentina/dialogs/dialogpreferences.cpp +++ b/src/app/valentina/dialogs/dialogpreferences.cpp @@ -33,6 +33,7 @@ #include "configpages/preferencespatternpage.h" #include "configpages/preferencespathpage.h" +#include #include //--------------------------------------------------------------------------------------------------------------------- @@ -122,9 +123,19 @@ void DialogPreferences::PageChanged(QListWidgetItem *current, QListWidgetItem *p //--------------------------------------------------------------------------------------------------------------------- void DialogPreferences::Apply() { - m_configurePage->Apply(); - m_patternPage->Apply(); - m_pathPage->Apply(); + QStringList preferences; + + preferences += m_configurePage->Apply(); + preferences += m_patternPage->Apply(); + preferences += m_pathPage->Apply(); + + if (not preferences.isEmpty()) + { + const QString text = tr("Followed %n option(s) require restart to take effect: %1.", "", + preferences.size()).arg(preferences.join(", ")); + QMessageBox::information(this, QCoreApplication::applicationName(), text); + } + m_patternPage->InitDefaultSeamAllowance(); diff --git a/src/libs/vwidgets/vmaingraphicsview.cpp b/src/libs/vwidgets/vmaingraphicsview.cpp index 9b3f2af4a..fa4ce6629 100644 --- a/src/libs/vwidgets/vmaingraphicsview.cpp +++ b/src/libs/vwidgets/vmaingraphicsview.cpp @@ -376,7 +376,7 @@ VMainGraphicsView::VMainGraphicsView(QWidget *parent) setViewport(viewport); #else setViewport(new QGLWidget(QGLFormat(QGL::DoubleBuffer|QGL::SampleBuffers))); - #endif + #endif } zoom = new GraphicsViewZoom(this); @@ -633,8 +633,24 @@ void VMainGraphicsView::SetAntialiasing(bool value) { setRenderHint(QPainter::Antialiasing, value); setRenderHint(QPainter::SmoothPixmapTransform, value); +} - +//--------------------------------------------------------------------------------------------------------------------- +bool VMainGraphicsView::IsOpenGLRender() const +{ +#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) + QOpenGLWidget *viewport = qobject_cast(this->viewport()); +#else + QGLWidget *viewport = qobject_cast(this->viewport()); +#endif + if (viewport) + { + return true; + } + else + { + return false; + } } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vwidgets/vmaingraphicsview.h b/src/libs/vwidgets/vmaingraphicsview.h index 4fe39d60e..5f781ba47 100644 --- a/src/libs/vwidgets/vmaingraphicsview.h +++ b/src/libs/vwidgets/vmaingraphicsview.h @@ -132,6 +132,8 @@ public: void SetAntialiasing(bool value); + bool IsOpenGLRender() const; + signals: /** * @brief MouseRelease help catch mouse release event.