File indexing completed on 2024-05-12 16:06:01

0001 #include "closedialoghelper.h"
0002 
0003 #include <QApplication>
0004 #include <QDialog>
0005 #include <QPushButton>
0006 #include <QTest>
0007 #include <QTimer>
0008 
0009 namespace TestingUtils
0010 {
0011 CloseDialogHelper::CloseDialogHelper(Okular::Part *p, QDialogButtonBox::StandardButton b)
0012     : m_widget(p->widget())
0013     , m_button(b)
0014     , m_clicked(false)
0015 {
0016     QTimer::singleShot(0, this, &CloseDialogHelper::closeDialog);
0017 }
0018 
0019 CloseDialogHelper::CloseDialogHelper(QWidget *w, QDialogButtonBox::StandardButton b)
0020     : m_widget(w)
0021     , m_button(b)
0022     , m_clicked(false)
0023 {
0024     QTimer::singleShot(0, this, &CloseDialogHelper::closeDialog);
0025 }
0026 
0027 CloseDialogHelper::CloseDialogHelper(QDialogButtonBox::StandardButton b)
0028     : m_widget(nullptr)
0029     , m_button(b)
0030     , m_clicked(false)
0031 {
0032     QTimer::singleShot(0, this, &CloseDialogHelper::closeDialog);
0033 }
0034 
0035 CloseDialogHelper::~CloseDialogHelper()
0036 {
0037     QVERIFY(m_clicked);
0038 }
0039 
0040 void CloseDialogHelper::closeDialog()
0041 {
0042     QWidget *dialog = (m_widget) ? m_widget->findChild<QDialog *>() : qApp->activeModalWidget();
0043     if (!dialog || !QTest::qWaitForWindowExposed(dialog)) {
0044         QTimer::singleShot(0, this, &CloseDialogHelper::closeDialog);
0045         return;
0046     }
0047     QDialogButtonBox *buttonBox = dialog->findChild<QDialogButtonBox *>();
0048     buttonBox->button(m_button)->click();
0049     m_clicked = true;
0050 }
0051 }