summaryrefslogtreecommitdiffstats
path: root/src/gui/dialogs/qprogressdialog.cpp
diff options
context:
space:
mode:
authorSami Merilä <sami.merila@nokia.com>2009-09-18 16:06:46 (GMT)
committerJason Barron <jbarron@trolltech.com>2009-09-21 08:06:19 (GMT)
commit58b92a951899f74b63048a36c451d3355c0c5a7f (patch)
treefec4e8be5ca11570979e3f0a8de3f6a7407c661f /src/gui/dialogs/qprogressdialog.cpp
parent75c4d11b8260ab74bcbf403c32333b81e5ef30e3 (diff)
downloadQt-58b92a951899f74b63048a36c451d3355c0c5a7f.zip
Qt-58b92a951899f74b63048a36c451d3355c0c5a7f.tar.gz
Qt-58b92a951899f74b63048a36c451d3355c0c5a7f.tar.bz2
S60 native looking dialog support.
Related to QTSSIXTY-63 "Make Qt dialogs look native" S60 dialog support: * Positioning according S60 rules: - in portrait dialogs at the bottom of the screen, - in landscape positioned in the center of the screen [unless device supports bottom softkeys], so that softkeys are not covered by the dialog * If dialog shows extension, then dialog is re-positioned * Dialog size: - in portrait screen wide dialog, height can change - in landscape width is the same size as width in portrait (some dialogs are maximized) * No push buttons or DialogButtonBoxes in internal qt dialogs (QWizard, QInputDialog, QFileDialog, QFontDialog, QColorDialog, QProgressDialog, QErrorMessage, QMessageBox), instead signals are remapped to softkeys. * Globally, dialogbuttonboxes are converted automatically to softkeys. OPEN: * Needs to be re-factored slightly after softkey API refactoring is finished. BUGS: QWizard layout switch is wonky - dialog is not re-sized correctly. QFontDialog will not fit into device screen (too much widgets in it). Some effort needed to be make it smaller. Cannot set one softkey at the time softkeys => Options menu and right softkey cannot be set separately [SoftKey re-factoring will help] Dialogs cannot get touch events to softkeys [SoftKey re-factoring will help] Reviewed-by: Alessandro Portale Reviewed-by: Jason Barron Reviewed-by: mread Reviewed-by: Shane Kearns
Diffstat (limited to 'src/gui/dialogs/qprogressdialog.cpp')
-rw-r--r--src/gui/dialogs/qprogressdialog.cpp26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/gui/dialogs/qprogressdialog.cpp b/src/gui/dialogs/qprogressdialog.cpp
index cf2fae8..0a4c730 100644
--- a/src/gui/dialogs/qprogressdialog.cpp
+++ b/src/gui/dialogs/qprogressdialog.cpp
@@ -57,6 +57,11 @@
#include <private/qdialog_p.h>
#include <limits.h>
+#if defined(Q_WS_S60)
+#include <QtGui/qdesktopwidget.h>
+#include <qaction.h>
+#endif
+
QT_BEGIN_NAMESPACE
// If the operation is expected to take this long (as predicted by
@@ -431,7 +436,16 @@ void QProgressDialog::setCancelButton(QPushButton *cancelButton)
int h = qMax(isVisible() ? height() : 0, sizeHint().height());
resize(w, h);
if (cancelButton)
+#ifndef Q_WS_S60
cancelButton->show();
+#else
+ {
+ QAction *cancelAction = new QAction(cancelButton->text(), this);
+ cancelAction->setSoftKeyRole(QAction::CancelSoftKey);
+ QObject::connect(cancelAction, SIGNAL(triggered()), this, SIGNAL(canceled()));
+ setSoftKey(cancelAction);
+ }
+#endif
}
/*!
@@ -701,7 +715,14 @@ QSize QProgressDialog::sizeHint() const
int h = margin * 2 + bh.height() + sh.height() + spacing;
if (d->cancel)
h += d->cancel->sizeHint().height() + spacing;
+#ifdef Q_WS_S60
+ if (QApplication::desktop()->size().height() > QApplication::desktop()->size().width())
+ return QSize(qMax(QApplication::desktop()->size().width(), sh.width() + 2 * margin), h);
+ else
+ return QSize(qMax(QApplication::desktop()->size().height(), sh.width() + 2 * margin), h);
+#else
return QSize(qMax(200, sh.width() + 2 * margin), h);
+#endif
}
/*!\reimp
@@ -718,10 +739,11 @@ void QProgressDialog::resizeEvent(QResizeEvent *)
void QProgressDialog::changeEvent(QEvent *ev)
{
Q_D(QProgressDialog);
- if (ev->type() == QEvent::StyleChange)
+ if (ev->type() == QEvent::StyleChange) {
d->layout();
- else if (ev->type() == QEvent::LanguageChange)
+ } else if (ev->type() == QEvent::LanguageChange) {
d->retranslateStrings();
+ }
QDialog::changeEvent(ev);
}