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 }