From edd1d3e8e5581d2cbb20eced0815a7292d340097 Mon Sep 17 00:00:00 2001 From: wmayer Date: Thu, 30 Dec 2021 17:31:00 +0100 Subject: [PATCH] Gui: move options to use native or Qt dialogs to class DialogOptions --- src/Gui/FileDialog.cpp | 17 +++++++++++------ src/Gui/FileDialog.h | 12 ++++++++++++ src/Gui/TaskElementColors.cpp | 11 +++-------- src/Gui/Widgets.cpp | 10 ++-------- 4 files changed, 28 insertions(+), 22 deletions(-) diff --git a/src/Gui/FileDialog.cpp b/src/Gui/FileDialog.cpp index 1047880a50..2778d180e9 100644 --- a/src/Gui/FileDialog.cpp +++ b/src/Gui/FileDialog.cpp @@ -50,8 +50,7 @@ using namespace Gui; -namespace { -bool dontUseNativeDialog() +bool DialogOptions::dontUseNativeFileDialog() { #if defined(USE_QT_FILEDIALOG) bool notNativeDialog = true; @@ -64,6 +63,12 @@ bool dontUseNativeDialog() notNativeDialog = group->GetBool("DontUseNativeDialog", notNativeDialog); return notNativeDialog; } + +bool DialogOptions::dontUseNativeColorDialog() +{ + ParameterGrp::handle group = App::GetApplication().GetUserParameter(). + GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Dialog"); + return group->GetBool("DontUseNativeColorDialog", true); } /* TRANSLATOR Gui::FileDialog */ @@ -177,7 +182,7 @@ QString FileDialog::getSaveFileName (QWidget * parent, const QString & caption, // existing file. Hence we must extract the first matching suffix from the filter list and append it // before showing the file dialog. QString file; - if (dontUseNativeDialog()) { + if (DialogOptions::dontUseNativeFileDialog()) { QList urls; options |= QFileDialog::DontUseNativeDialog; @@ -259,7 +264,7 @@ QString FileDialog::getOpenFileName(QWidget * parent, const QString & caption, c windowTitle = FileDialog::tr("Open"); QString file; - if (dontUseNativeDialog()) { + if (DialogOptions::dontUseNativeFileDialog()) { QList urls; options |= QFileDialog::DontUseNativeDialog; @@ -320,7 +325,7 @@ QStringList FileDialog::getOpenFileNames (QWidget * parent, const QString & capt windowTitle = FileDialog::tr("Open"); QStringList files; - if (dontUseNativeDialog()) { + if (DialogOptions::dontUseNativeFileDialog()) { QList urls; options |= QFileDialog::DontUseNativeDialog; @@ -708,7 +713,7 @@ void FileChooser::chooseFile() } QFileDialog::Options dlgOpt; - if (dontUseNativeDialog()) { + if (DialogOptions::dontUseNativeFileDialog()) { dlgOpt = QFileDialog::DontUseNativeDialog; } diff --git a/src/Gui/FileDialog.h b/src/Gui/FileDialog.h index 7c9ffe6582..c69f68a8ba 100644 --- a/src/Gui/FileDialog.h +++ b/src/Gui/FileDialog.h @@ -29,6 +29,7 @@ #include #include #include +#include class QButtonGroup; class QGridLayout; @@ -39,6 +40,17 @@ class QSpacerItem; namespace Gui { +/*! + * \brief The DialogOptions class + * Helper class to control whether to use native or Qt dialogs. + */ +class GuiExport DialogOptions +{ +public: + static bool dontUseNativeFileDialog(); + static bool dontUseNativeColorDialog(); +}; + /** * The FileDialog class provides dialogs that allow users to select files or directories. * \author Werner Mayer diff --git a/src/Gui/TaskElementColors.cpp b/src/Gui/TaskElementColors.cpp index 5795310f69..0e0b79603d 100644 --- a/src/Gui/TaskElementColors.cpp +++ b/src/Gui/TaskElementColors.cpp @@ -45,6 +45,7 @@ #include "Selection.h" #include "BitmapFactory.h" #include "Command.h" +#include "FileDialog.h" #include #include @@ -237,10 +238,7 @@ public: auto color = item->data(Qt::UserRole).value(); QColorDialog cd(color, parent); cd.setOption(QColorDialog::ShowAlphaChannel); - ParameterGrp::handle group = App::GetApplication().GetUserParameter(). - GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Dialog"); - bool notNativeColorDialog = group->GetBool("DontUseNativeColorDialog", true); - if (notNativeColorDialog) + if (DialogOptions::dontUseNativeColorDialog()) cd.setOptions(QColorDialog::DontUseNativeDialog); if (cd.exec()!=QDialog::Accepted || color==cd.selectedColor()) return; @@ -431,10 +429,7 @@ void ElementColors::on_addSelection_clicked() auto color = d->items.front()->data(Qt::UserRole).value(); QColorDialog cd(color, this); cd.setOption(QColorDialog::ShowAlphaChannel); - ParameterGrp::handle group = App::GetApplication().GetUserParameter(). - GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Dialog"); - bool notNativeColorDialog = group->GetBool("DontUseNativeColorDialog", true); - if (notNativeColorDialog) + if (DialogOptions::dontUseNativeColorDialog()) cd.setOptions(QColorDialog::DontUseNativeDialog); if (cd.exec()!=QDialog::Accepted) return; diff --git a/src/Gui/Widgets.cpp b/src/Gui/Widgets.cpp index 5bfbfd1b4c..9debd6de02 100644 --- a/src/Gui/Widgets.cpp +++ b/src/Gui/Widgets.cpp @@ -782,10 +782,7 @@ void ColorButton::onChooseColor() if (d->modal) { QColor currentColor = d->col; QColorDialog cd(d->col, this); - ParameterGrp::handle group = App::GetApplication().GetUserParameter(). - GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Dialog"); - bool notNativeColorDialog = group->GetBool("DontUseNativeColorDialog", true); - if (notNativeColorDialog) + if (DialogOptions::dontUseNativeColorDialog()) cd.setOptions(QColorDialog::DontUseNativeDialog); cd.setOption(QColorDialog::ColorDialogOption::ShowAlphaChannel, d->allowTransparency); @@ -812,10 +809,7 @@ void ColorButton::onChooseColor() if (d->cd.isNull()) { d->old = d->col; d->cd = new QColorDialog(d->col, this); - ParameterGrp::handle group = App::GetApplication().GetUserParameter(). - GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Dialog"); - bool notNativeColorDialog = group->GetBool("DontUseNativeColorDialog", true); - if (notNativeColorDialog) + if (DialogOptions::dontUseNativeColorDialog()) d->cd->setOptions(QColorDialog::DontUseNativeDialog); d->cd->setOption(QColorDialog::ColorDialogOption::ShowAlphaChannel, d->allowTransparency); d->cd->setAttribute(Qt::WA_DeleteOnClose);