summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpedialog.cpp28
1 files changed, 19 insertions, 9 deletions
diff --git a/library/qpedialog.cpp b/library/qpedialog.cpp
index da461b7..87d61e3 100644
--- a/library/qpedialog.cpp
+++ b/library/qpedialog.cpp
@@ -13,40 +13,47 @@
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
-#define protected public
+#include "qpedialog.h"
+
#include <qdialog.h>
-#undef protected
-#include "qpedialog.h"
-#include <qpe/qpeapplication.h>
+#include "qpeapplication.h"
+
+
+// Allow access to nornally protected accept and reject functions
+class HackedPrivateQDialog : public QDialog{
+public:
+ void accept() { QDialog::accept();}
+ void reject() { QDialog::reject();}
+};
/**
- * \brief This is the only c'tor.
- *
+ * \brief This is the only c'tor.
+ *
* The parent of this Listener is the Dialog you pass. This means once
* the dialog is deleted this listener will be deleted too.
* This Listener listens on QPEApplication::appMessage signal and implements
* accept() and reject().
*
* \code
* QDialog *dialog = new YourDialog();
(void)new QPEDialogListener(dialog);
if( QPEApplication::execDialog(dialog) == QDialog::Accept ){
// do some stuff
}
delete dialog;
-
+
* \endcode
*
* @param di The dialog to handle
*/
QPEDialogListener::QPEDialogListener(QDialog *di ) : QObject(di)
{
dialog = di;
connect(qApp, SIGNAL(appMessage(const QCString&,const QByteArray&)),
@@ -61,14 +68,17 @@ QPEDialogListener::~QPEDialogListener() {}
/**
* \internal
*/
void QPEDialogListener::appMessage( const QCString &msg, const QByteArray & )
{
if (!dialog)
return;
+
+ HackedPrivateQDialog *hackedDialog = static_cast<HackedPrivateQDialog*>(dialog);
+
if (msg == "accept()") {
- dialog->accept();
+ hackedDialog->accept();
} else if (msg == "reject()") {
- dialog->reject();
+ hackedDialog->reject();
}
}