diff options
Diffstat (limited to 'tests/manual/dialogs/filedialogpanel.cpp')
-rw-r--r-- | tests/manual/dialogs/filedialogpanel.cpp | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/tests/manual/dialogs/filedialogpanel.cpp b/tests/manual/dialogs/filedialogpanel.cpp index 64a7bc2d8d..2f47c5ad0a 100644 --- a/tests/manual/dialogs/filedialogpanel.cpp +++ b/tests/manual/dialogs/filedialogpanel.cpp @@ -1,5 +1,7 @@ // Copyright (C) 2021 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only + +#undef QT_NO_FOREACH // this file contains unported legacy Q_FOREACH uses #include "filedialogpanel.h" #include "utils.h" @@ -43,15 +45,6 @@ const FlagData fileModeComboData[] = {"Directory", QFileDialog::Directory} }; -static inline QPushButton *addButton(const QString &description, QGridLayout *layout, - int &row, int column, QObject *receiver, const char *slotFunc) -{ - QPushButton *button = new QPushButton(description); - QObject::connect(button, SIGNAL(clicked()), receiver, slotFunc); - layout->addWidget(button, row++, column); - return button; -} - // A line edit for editing the label fields of the dialog, keeping track of whether it has // been modified by the user to avoid applying Qt's default texts to native dialogs. @@ -93,6 +86,7 @@ FileDialogPanel::FileDialogPanel(QWidget *parent) , m_resolveSymLinks(new QCheckBox(tr("Resolve symlinks"))) , m_native(new QCheckBox(tr("Use native dialog"))) , m_customDirIcons(new QCheckBox(tr("Don't use custom directory icons"))) + , m_noIconProvider(new QCheckBox(tr("Null icon provider"))) , m_acceptMode(createCombo(this, acceptModeComboData, sizeof(acceptModeComboData)/sizeof(FlagData))) , m_fileMode(createCombo(this, fileModeComboData, sizeof(fileModeComboData)/sizeof(FlagData))) , m_viewMode(createCombo(this, viewModeComboData, sizeof(viewModeComboData)/sizeof(FlagData))) @@ -120,6 +114,7 @@ FileDialogPanel::FileDialogPanel(QWidget *parent) optionsLayout->addRow(m_resolveSymLinks); optionsLayout->addRow(m_readOnly); optionsLayout->addRow(m_customDirIcons); + optionsLayout->addRow(m_noIconProvider); // Files QGroupBox *filesGroupBox = new QGroupBox(tr("Files / Filters")); @@ -152,9 +147,12 @@ FileDialogPanel::FileDialogPanel(QWidget *parent) int row = 0; int column = 0; addButton(tr("Exec modal"), buttonLayout, row, column, this, SLOT(execModal())); - addButton(tr("Show modal"), buttonLayout, row, column, this, SLOT(showModal())); - m_deleteModalDialogButton = - addButton(tr("Delete modal"), buttonLayout, row, column, this, SLOT(deleteModalDialog())); + addButton(tr("Show application modal"), buttonLayout, row, column, + [this]() { showModal(Qt::ApplicationModal); }); + addButton(tr("Show window modal"), buttonLayout, row, column, + [this]() { showModal(Qt::WindowModal); }); + m_deleteModalDialogButton = addButton(tr("Delete modal"), buttonLayout, row, column, this, + SLOT(deleteModalDialog())); addButton(tr("Show non-modal"), buttonLayout, row, column, this, SLOT(showNonModal())); m_deleteNonModalDialogButton = addButton(tr("Delete non-modal"), buttonLayout, row, column, this, SLOT(deleteNonModalDialog())); @@ -193,7 +191,7 @@ void FileDialogPanel::execModal() dialog.exec(); } -void FileDialogPanel::showModal() +void FileDialogPanel::showModal(Qt::WindowModality modality) { if (m_modalDialog.isNull()) { static int n = 0; @@ -205,6 +203,7 @@ void FileDialogPanel::showModal() .arg(QLatin1String(QT_VERSION_STR))); enableDeleteModalDialogButton(); } + m_modalDialog->setWindowModality(modality); applySettings(m_modalDialog); m_modalDialog->show(); } @@ -420,12 +419,19 @@ void FileDialogPanel::restoreDefaults() l->restoreDefault(&d); } -void FileDialogPanel::applySettings(QFileDialog *d) const +void FileDialogPanel::applySettings(QFileDialog *d) { d->setAcceptMode(comboBoxValue<QFileDialog::AcceptMode>(m_acceptMode)); d->setViewMode(comboBoxValue<QFileDialog::ViewMode>(m_viewMode)); d->setFileMode(comboBoxValue<QFileDialog::FileMode>(m_fileMode)); d->setOptions(options()); + if (m_noIconProvider->isChecked()) { + m_origIconProvider = d->iconProvider(); + d->setIconProvider(nullptr); + } else if (m_origIconProvider) { + d->setIconProvider(m_origIconProvider); + } + d->setDefaultSuffix(m_defaultSuffix->text().trimmed()); const QString directory = m_directory->text().trimmed(); if (!directory.isEmpty()) |