author | zecke <zecke> | 2004-09-19 18:48:56 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-09-19 18:48:56 (UTC) |
commit | 4564befecf3df38911d48f216ab216faf93b9c1d (patch) (side-by-side diff) | |
tree | 9d4ec4264de74230e9fba4f9963535be604db90a | |
parent | 84166797fd3caa436d38e312957d5542046f10b0 (diff) | |
download | opie-4564befecf3df38911d48f216ab216faf93b9c1d.zip opie-4564befecf3df38911d48f216ab216faf93b9c1d.tar.gz opie-4564befecf3df38911d48f216ab216faf93b9c1d.tar.bz2 |
Have only one showDialog function.
If the dialog sizeHint is smaller than the width of the desktop
qpe_show_dialog didn't 'maximize' the widget and just showed it.
QPEApplication::showDialog does better in that respect but does not
have custom 'centering' of the dialog. But that doesn't matter
as we save/restore size and position for BigScreen.
-rw-r--r-- | library/qpeapplication.cpp | 60 |
1 files changed, 1 insertions, 59 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp index e1edd4c..df313ce 100644 --- a/library/qpeapplication.cpp +++ b/library/qpeapplication.cpp @@ -213,113 +213,55 @@ public: mw->move(p); } mw->raise(); } else { if ( mw->layout() && mw->inherits("QDialog") ) { if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) { mw->resize(s); mw->move(p); if ( max && !nomaximize ) { mw->showMaximized(); } else { mw->show(); } } else { - qpe_show_dialog((QDialog*)mw,nomaximize); + QPEApplication::showDialog((QDialog*)mw,nomaximize); } } else { if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) { mw->resize(s); mw->move(p); } else { //no stored rectangle, make an estimation int x = (qApp->desktop()->width()-mw->frameGeometry().width())/2; int y = (qApp->desktop()->height()-mw->frameGeometry().height())/2; mw->move( QMAX(x,0), QMAX(y,0) ); #ifdef Q_WS_QWS if ( !nomaximize ) mw->showMaximized(); #endif } if ( max && !nomaximize ) mw->showMaximized(); else mw->show(); } } } -static void qpe_show_dialog( QDialog* d, bool nomax ) -{ - QSize sh = d->sizeHint(); - int w = QMAX(sh.width(),d->width()); - int h = QMAX(sh.height(),d->height()); - - if ( d->parentWidget() && !d->parentWidget()->topLevelWidget()->isMaximized() ) - nomax = TRUE; - -#ifndef Q_WS_QWS - QSize s(qApp->desktop()->width(), qApp->desktop()->height() ); -#else - QSize s(qt_maxWindowRect.width(), qt_maxWindowRect.height() ); -#endif - - int maxX = s.width() - (d->frameGeometry().width() - d->geometry().width()); - int maxY = s.height() - (d->frameGeometry().height() - d->geometry().height()); - - if ( (w >= maxX && h >= maxY) || ( (!nomax) && ( w > s.width()*3/4 || h > s.height()*3/4 ) ) ) { - d->showMaximized(); - } else { - // try centering the dialog around its parent - QPoint p(0,0); - if ( d->parentWidget() ) { - QPoint pp = d->parentWidget()->mapToGlobal( QPoint(0,0) ); - p = QPoint( pp.x() + d->parentWidget()->width()/2, - pp.y() + d->parentWidget()->height()/ 2 ); - } else { - p = QPoint( maxX/2, maxY/2 ); - } - - p = QPoint( p.x() - w/2, p.y() - h/2 ); -// qDebug("p(x,y) is %d %d", p.x(), p.y() ); - - if ( w >= maxX ) { - if ( p.y() < 0 ) - p.setY(0); - if ( p.y() + h > maxY ) - p.setY( maxY - h); - - d->resize(maxX, h); - d->move(0, p.y() ); - } else if ( h >= maxY ) { - if ( p.x() < 0 ) - p.setX(0); - if ( p.x() + w > maxX ) - p.setX( maxX - w); - - d->resize(w, maxY); - d->move(p.x(),0); - } else { - d->resize(w, h); - } - - d->show(); - } -} - static bool read_widget_rect(const QString &app, bool &maximized, QPoint &p, QSize &s) { maximized = TRUE; // 350 is the trigger in qwsdefaultdecoration for providing a resize button if ( qApp->desktop()->width() <= 350 ) return FALSE; Config cfg( "qpe" ); cfg.setGroup("ApplicationPositions"); QString str = cfg.readEntry( app, QString::null ); QStringList l = QStringList::split(",", str); if ( l.count() == 5) { p.setX( l[0].toInt() ); p.setY( l[1].toInt() ); |