Manual file dialog test: Add showModal().
Modal dialogs can now tested by just showing or running exec(). Remove connection of accept() from applySettings(). Change-Id: I5e3c0e6405ce5682f39d10a9c06b9d61be10ed3f Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
This commit is contained in:
parent
4807f70f89
commit
9c6a91d07b
@ -44,6 +44,7 @@
|
|||||||
#include <QGridLayout>
|
#include <QGridLayout>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
#include <QHBoxLayout>
|
#include <QHBoxLayout>
|
||||||
|
#include <QGridLayout>
|
||||||
#include <QFormLayout>
|
#include <QFormLayout>
|
||||||
#include <QSpacerItem>
|
#include <QSpacerItem>
|
||||||
#include <QGroupBox>
|
#include <QGroupBox>
|
||||||
@ -105,11 +106,12 @@ inline void setComboBoxValue(QComboBox *c, int v)
|
|||||||
c->setCurrentIndex(c->findData(QVariant(v)));
|
c->setCurrentIndex(c->findData(QVariant(v)));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline QPushButton *addButton(const QString &description, QBoxLayout *layout, QObject *receiver, const char *slotFunc)
|
static inline QPushButton *addButton(const QString &description, QGridLayout *layout,
|
||||||
|
int &row, int column, QObject *receiver, const char *slotFunc)
|
||||||
{
|
{
|
||||||
QPushButton *button = new QPushButton(description);
|
QPushButton *button = new QPushButton(description);
|
||||||
QObject::connect(button, SIGNAL(clicked()), receiver, slotFunc);
|
QObject::connect(button, SIGNAL(clicked()), receiver, slotFunc);
|
||||||
layout->addWidget(button);
|
layout->addWidget(button, row++, column);
|
||||||
return button;
|
return button;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -161,6 +163,7 @@ FileDialogPanel::FileDialogPanel(QWidget *parent)
|
|||||||
, m_nameFilters(new QPlainTextEdit)
|
, m_nameFilters(new QPlainTextEdit)
|
||||||
, m_selectedNameFilter(new QLineEdit(this))
|
, m_selectedNameFilter(new QLineEdit(this))
|
||||||
, m_deleteNonModalDialogButton(0)
|
, m_deleteNonModalDialogButton(0)
|
||||||
|
, m_deleteModalDialogButton(0)
|
||||||
{
|
{
|
||||||
// Options
|
// Options
|
||||||
QGroupBox *optionsGroupBox = new QGroupBox(tr("Options"));
|
QGroupBox *optionsGroupBox = new QGroupBox(tr("Options"));
|
||||||
@ -199,21 +202,24 @@ FileDialogPanel::FileDialogPanel(QWidget *parent)
|
|||||||
labelsLayout->addRow(tr("Reject label:"), m_labelLineEdits.back());
|
labelsLayout->addRow(tr("Reject label:"), m_labelLineEdits.back());
|
||||||
|
|
||||||
// Buttons
|
// Buttons
|
||||||
QVBoxLayout *buttonLayout = new QVBoxLayout;
|
|
||||||
buttonLayout->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Ignored, QSizePolicy::MinimumExpanding));
|
|
||||||
addButton(tr("Show modal"), buttonLayout, this, SLOT(showModal()));
|
|
||||||
addButton(tr("Show non-modal"), buttonLayout, this, SLOT(showNonModal()));
|
|
||||||
m_deleteNonModalDialogButton =
|
|
||||||
addButton(tr("Delete non-modal"), buttonLayout, this, SLOT(deleteNonModalDialog()));
|
|
||||||
addButton(tr("getOpenFileName"), buttonLayout, this, SLOT(getOpenFileName()));
|
|
||||||
addButton(tr("getOpenFileNames"), buttonLayout, this, SLOT(getOpenFileNames()));
|
|
||||||
addButton(tr("getSaveFileName"), buttonLayout, this, SLOT(getSaveFileName()));
|
|
||||||
addButton(tr("getExistingDirectory"), buttonLayout, this, SLOT(getExistingDirectory()));
|
|
||||||
addButton(tr("Restore defaults"), buttonLayout, this, SLOT(restoreDefaults()));
|
|
||||||
QGroupBox *buttonsGroupBox = new QGroupBox(tr("Show"));
|
QGroupBox *buttonsGroupBox = new QGroupBox(tr("Show"));
|
||||||
QHBoxLayout *buttonsGroupLayout = new QHBoxLayout(buttonsGroupBox);
|
QGridLayout *buttonLayout = new QGridLayout(buttonsGroupBox);
|
||||||
buttonsGroupLayout->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::MinimumExpanding, QSizePolicy::Ignored));
|
int row = 0;
|
||||||
buttonsGroupLayout->addLayout(buttonLayout);
|
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 non-modal"), buttonLayout, row, column, this, SLOT(showNonModal()));
|
||||||
|
m_deleteNonModalDialogButton =
|
||||||
|
addButton(tr("Delete non-modal"), buttonLayout, row, column, this, SLOT(deleteNonModalDialog()));
|
||||||
|
row = 0;
|
||||||
|
column++;
|
||||||
|
addButton(tr("getOpenFileName"), buttonLayout, row, column, this, SLOT(getOpenFileName()));
|
||||||
|
addButton(tr("getOpenFileNames"), buttonLayout, row, column, this, SLOT(getOpenFileNames()));
|
||||||
|
addButton(tr("getSaveFileName"), buttonLayout, row, column, this, SLOT(getSaveFileName()));
|
||||||
|
addButton(tr("getExistingDirectory"), buttonLayout, row, column, this, SLOT(getExistingDirectory()));
|
||||||
|
addButton(tr("Restore defaults"), buttonLayout, row, column, this, SLOT(restoreDefaults()));
|
||||||
|
|
||||||
// Main layout
|
// Main layout
|
||||||
QGridLayout *gridLayout = new QGridLayout(this);
|
QGridLayout *gridLayout = new QGridLayout(this);
|
||||||
@ -226,19 +232,36 @@ FileDialogPanel::FileDialogPanel(QWidget *parent)
|
|||||||
restoreDefaults();
|
restoreDefaults();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FileDialogPanel::showModal()
|
void FileDialogPanel::execModal()
|
||||||
{
|
{
|
||||||
QFileDialog dialog(this);
|
QFileDialog dialog(this);
|
||||||
applySettings(&dialog);
|
applySettings(&dialog);
|
||||||
|
connect(&dialog, SIGNAL(accepted()), this, SLOT(accepted()));
|
||||||
dialog.setWindowTitle(tr("Modal File Dialog Qt %1").arg(QLatin1String(QT_VERSION_STR)));
|
dialog.setWindowTitle(tr("Modal File Dialog Qt %1").arg(QLatin1String(QT_VERSION_STR)));
|
||||||
dialog.exec();
|
dialog.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FileDialogPanel::showModal()
|
||||||
|
{
|
||||||
|
if (m_modalDialog.isNull()) {
|
||||||
|
static int n = 0;
|
||||||
|
m_modalDialog = new QFileDialog(this);
|
||||||
|
m_modalDialog->setModal(true);
|
||||||
|
connect(m_modalDialog.data(), SIGNAL(accepted()), this, SLOT(accepted()));
|
||||||
|
m_modalDialog->setWindowTitle(tr("Modal File Dialog #%1 Qt %2")
|
||||||
|
.arg(++n)
|
||||||
|
.arg(QLatin1String(QT_VERSION_STR)));
|
||||||
|
}
|
||||||
|
applySettings(m_modalDialog);
|
||||||
|
m_modalDialog->show();
|
||||||
|
}
|
||||||
|
|
||||||
void FileDialogPanel::showNonModal()
|
void FileDialogPanel::showNonModal()
|
||||||
{
|
{
|
||||||
if (m_nonModalDialog.isNull()) {
|
if (m_nonModalDialog.isNull()) {
|
||||||
static int n = 0;
|
static int n = 0;
|
||||||
m_nonModalDialog = new QFileDialog(this);
|
m_nonModalDialog = new QFileDialog(this);
|
||||||
|
connect(m_nonModalDialog.data(), SIGNAL(accepted()), this, SLOT(accepted()));
|
||||||
m_nonModalDialog->setWindowTitle(tr("Non-Modal File Dialog #%1 Qt %2")
|
m_nonModalDialog->setWindowTitle(tr("Non-Modal File Dialog #%1 Qt %2")
|
||||||
.arg(++n)
|
.arg(++n)
|
||||||
.arg(QLatin1String(QT_VERSION_STR)));
|
.arg(QLatin1String(QT_VERSION_STR)));
|
||||||
@ -255,11 +278,24 @@ void FileDialogPanel::deleteNonModalDialog()
|
|||||||
enableDeleteNonModalDialogButton();
|
enableDeleteNonModalDialogButton();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FileDialogPanel::deleteModalDialog()
|
||||||
|
{
|
||||||
|
if (!m_modalDialog.isNull())
|
||||||
|
delete m_modalDialog;
|
||||||
|
enableDeleteModalDialogButton();
|
||||||
|
}
|
||||||
|
|
||||||
void FileDialogPanel::enableDeleteNonModalDialogButton()
|
void FileDialogPanel::enableDeleteNonModalDialogButton()
|
||||||
{
|
{
|
||||||
m_deleteNonModalDialogButton->setEnabled(!m_nonModalDialog.isNull());
|
m_deleteNonModalDialogButton->setEnabled(!m_nonModalDialog.isNull());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FileDialogPanel::enableDeleteModalDialogButton()
|
||||||
|
{
|
||||||
|
m_deleteModalDialogButton->setEnabled(!m_modalDialog.isNull());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
QString FileDialogPanel::filterString() const
|
QString FileDialogPanel::filterString() const
|
||||||
{
|
{
|
||||||
return m_nameFilters->toPlainText().trimmed().replace(QLatin1String("\n"), QLatin1String(";;"));
|
return m_nameFilters->toPlainText().trimmed().replace(QLatin1String("\n"), QLatin1String(";;"));
|
||||||
@ -372,7 +408,6 @@ void FileDialogPanel::applySettings(QFileDialog *d) const
|
|||||||
d->selectNameFilter(filter);
|
d->selectNameFilter(filter);
|
||||||
foreach (LabelLineEdit *l, m_labelLineEdits)
|
foreach (LabelLineEdit *l, m_labelLineEdits)
|
||||||
l->apply(d);
|
l->apply(d);
|
||||||
connect(d, SIGNAL(accepted()), this, SLOT(accepted()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FileDialogPanel::accepted()
|
void FileDialogPanel::accepted()
|
||||||
|
@ -60,9 +60,11 @@ public:
|
|||||||
explicit FileDialogPanel(QWidget *parent = 0);
|
explicit FileDialogPanel(QWidget *parent = 0);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
void execModal();
|
||||||
void showModal();
|
void showModal();
|
||||||
void showNonModal();
|
void showNonModal();
|
||||||
void deleteNonModalDialog();
|
void deleteNonModalDialog();
|
||||||
|
void deleteModalDialog();
|
||||||
void getOpenFileNames();
|
void getOpenFileNames();
|
||||||
void getOpenFileName();
|
void getOpenFileName();
|
||||||
void getSaveFileName();
|
void getSaveFileName();
|
||||||
@ -73,6 +75,7 @@ public slots:
|
|||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void enableDeleteNonModalDialogButton();
|
void enableDeleteNonModalDialogButton();
|
||||||
|
void enableDeleteModalDialogButton();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString filterString() const;
|
QString filterString() const;
|
||||||
@ -94,7 +97,9 @@ private:
|
|||||||
QPlainTextEdit *m_nameFilters;
|
QPlainTextEdit *m_nameFilters;
|
||||||
QLineEdit *m_selectedNameFilter;
|
QLineEdit *m_selectedNameFilter;
|
||||||
QPushButton *m_deleteNonModalDialogButton;
|
QPushButton *m_deleteNonModalDialogButton;
|
||||||
|
QPushButton *m_deleteModalDialogButton;
|
||||||
QString m_result;
|
QString m_result;
|
||||||
|
QPointer<QFileDialog> m_modalDialog;
|
||||||
QPointer<QFileDialog> m_nonModalDialog;
|
QPointer<QFileDialog> m_nonModalDialog;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user