Diffstat (limited to 'core/opie-login/loginwindowimpl.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | core/opie-login/loginwindowimpl.cpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/core/opie-login/loginwindowimpl.cpp b/core/opie-login/loginwindowimpl.cpp index fe2906a..577cb41 100644 --- a/core/opie-login/loginwindowimpl.cpp +++ b/core/opie-login/loginwindowimpl.cpp @@ -38,4 +38,8 @@ #include <qmessagebox.h> #include <qimage.h> +#if QT_VERSION < 300 +#include <qgfx_qws.h> +#endif +#include <qwindowsystem_qws.h> #include <qpe/resource.h> @@ -62,6 +66,10 @@ LoginWindowImpl::LoginWindowImpl ( ) : LoginWindow ( 0, "LOGIN-WINDOW", WStyle_C m_menu-> setPopup ( pop ); + QCopChannel *channel = new QCopChannel ( "QPE/TaskBar", this ); + connect ( channel, SIGNAL( received ( const QCString &, const QByteArray & )), this, SLOT( receive ( const QCString &, const QByteArray & ))); + QHBoxLayout *lay = new QHBoxLayout ( m_taskbar, 4, 4 ); m_input = new InputMethods ( m_taskbar ); + connect ( m_input, SIGNAL( inputToggled ( bool )), this, SLOT( calcMaxWindowRect ( ))); lay-> addWidget ( m_input ); lay-> addStretch ( 10 ); @@ -88,4 +96,6 @@ LoginWindowImpl::LoginWindowImpl ( ) : LoginWindow ( 0, "LOGIN-WINDOW", WStyle_C if ( !last. isEmpty ( )) m_user-> setEditText ( last ); + + calcMaxWindowRect ( ); } @@ -94,4 +104,37 @@ LoginWindowImpl::~LoginWindowImpl ( ) } + +void LoginWindowImpl::receive ( const QCString &msg, const QByteArray &data ) +{ + QDataStream stream ( data, IO_ReadOnly ); + + if ( msg == "hideInputMethod()" ) + m_input-> hideInputMethod ( ); + else if ( msg == "showInputMethod()" ) + m_input-> showInputMethod ( ); + else if ( msg == "reloadInputMethods()" ) + m_input-> loadInputMethods ( ); +} + +void LoginWindowImpl::calcMaxWindowRect ( ) +{ +#ifdef Q_WS_QWS + QRect wr; + int displayWidth = qApp-> desktop ( )-> width ( ); + QRect ir = m_input-> inputRect ( ); + if ( ir.isValid() ) + wr.setCoords( 0, 0, displayWidth-1, ir.top()-1 ); + else + wr.setCoords( 0, 0, displayWidth-1, m_taskbar->y()-1 ); + +#if QT_VERSION < 300 + wr = qt_screen-> mapToDevice ( wr, QSize ( qt_screen-> width ( ), qt_screen-> height ( ))); +#endif + + QWSServer::setMaxWindowRect( wr ); +#endif +} + + void LoginWindowImpl::keyPressEvent ( QKeyEvent *e ) { |