summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Barron <jbarron@trolltech.com>2009-09-19 17:21:36 (GMT)
committerJason Barron <jbarron@trolltech.com>2009-09-21 08:07:44 (GMT)
commit63b38ba77b4a5603bec9f8e6d63425eb8a8f5d15 (patch)
treea9b98415612c952ea24e29526461043dcd3c2a29
parentdb96727a9f890aa86a4ffb7093623c8236c566a5 (diff)
downloadQt-63b38ba77b4a5603bec9f8e6d63425eb8a8f5d15.zip
Qt-63b38ba77b4a5603bec9f8e6d63425eb8a8f5d15.tar.gz
Qt-63b38ba77b4a5603bec9f8e6d63425eb8a8f5d15.tar.bz2
Change QProgressDialog to use the new soft key API.
The previous version created a new QAction every time setCancelButton was called without deleting the previous instance. This version stores the action pointer in the d-ptr, but still recreates it everytime the button is changed. Also, make sure the text is updated if setCancelText is called by the user. Reviewed-by: Alessandro Portale
-rw-r--r--src/gui/dialogs/qprogressdialog.cpp35
1 files changed, 26 insertions, 9 deletions
diff --git a/src/gui/dialogs/qprogressdialog.cpp b/src/gui/dialogs/qprogressdialog.cpp
index 0a4c730..292e950 100644
--- a/src/gui/dialogs/qprogressdialog.cpp
+++ b/src/gui/dialogs/qprogressdialog.cpp
@@ -57,10 +57,13 @@
#include <private/qdialog_p.h>
#include <limits.h>
-#if defined(Q_WS_S60)
-#include <QtGui/qdesktopwidget.h>
+#if defined(QT_SOFTKEYS_ENABLED)
#include <qaction.h>
#endif
+#ifdef Q_WS_S60
+#include <QtGui/qdesktopwidget.h>
+#endif
+
QT_BEGIN_NAMESPACE
@@ -82,6 +85,9 @@ public:
#ifndef QT_NO_SHORTCUT
escapeShortcut(0),
#endif
+#ifdef QT_SOFTKEYS_ENABLED
+ cancelAction(0),
+#endif
useDefaultCancelText(false)
{
}
@@ -108,6 +114,9 @@ public:
#ifndef QT_NO_SHORTCUT
QShortcut *escapeShortcut;
#endif
+#ifdef QT_SOFTKEYS_ENABLED
+ QAction *cancelAction;
+#endif
bool useDefaultCancelText;
QPointer<QObject> receiverToDisconnectOnClose;
QByteArray memberToDisconnectOnClose;
@@ -415,6 +424,10 @@ void QProgressDialog::setCancelButton(QPushButton *cancelButton)
{
Q_D(QProgressDialog);
delete d->cancel;
+#ifdef QT_SOFTKEYS_ENABLED
+ delete d->cancelAction;
+ d->cancelAction = 0;
+#endif
d->cancel = cancelButton;
if (cancelButton) {
if (cancelButton->parentWidget() == this) {
@@ -436,14 +449,14 @@ void QProgressDialog::setCancelButton(QPushButton *cancelButton)
int h = qMax(isVisible() ? height() : 0, sizeHint().height());
resize(w, h);
if (cancelButton)
-#ifndef Q_WS_S60
+#if !defined(QT_SOFTKEYS_ENABLED)
cancelButton->show();
#else
{
- QAction *cancelAction = new QAction(cancelButton->text(), this);
- cancelAction->setSoftKeyRole(QAction::CancelSoftKey);
- QObject::connect(cancelAction, SIGNAL(triggered()), this, SIGNAL(canceled()));
- setSoftKey(cancelAction);
+ d->cancelAction = new QAction(cancelButton->text(), this);
+ d->cancelAction->setSoftKeyRole(QAction::CancelSoftKey);
+ connect(d->cancelAction, SIGNAL(triggered()), this, SIGNAL(canceled()));
+ addAction(d->cancelAction);
}
#endif
}
@@ -462,10 +475,14 @@ void QProgressDialog::setCancelButtonText(const QString &cancelButtonText)
d->useDefaultCancelText = false;
if (!cancelButtonText.isNull()) {
- if (d->cancel)
+ if (d->cancel) {
d->cancel->setText(cancelButtonText);
- else
+#ifdef QT_SOFTKEYS_ENABLED
+ d->cancelAction->setText(cancelButtonText);
+#endif
+ } else {
setCancelButton(new QPushButton(cancelButtonText, this));
+ }
} else {
setCancelButton(0);
}