summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/opie-login/loginwindow.ui1
-rw-r--r--core/opie-login/loginwindowimpl.cpp43
-rw-r--r--core/opie-login/loginwindowimpl.h2
3 files changed, 45 insertions, 1 deletions
diff --git a/core/opie-login/loginwindow.ui b/core/opie-login/loginwindow.ui
index 5a35c8d..245e942 100644
--- a/core/opie-login/loginwindow.ui
+++ b/core/opie-login/loginwindow.ui
@@ -69,17 +69,16 @@
</sizepolicy>
</property>
<property stdset="1">
<name>font</name>
<font>
<family>helvetica</family>
<pointsize>18</pointsize>
<bold>1</bold>
- <underline>1</underline>
</font>
</property>
<property stdset="1">
<name>autoMask</name>
<bool>true</bool>
</property>
<property stdset="1">
<name>backgroundOrigin</name>
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
@@ -32,16 +32,20 @@
#include <qlineedit.h>
#include <qtimer.h>
#include <qcombobox.h>
#include <qpixmap.h>
#include <qlabel.h>
#include <qpopupmenu.h>
#include <qmessagebox.h>
#include <qimage.h>
+#if QT_VERSION < 300
+#include <qgfx_qws.h>
+#endif
+#include <qwindowsystem_qws.h>
#include <qpe/resource.h>
#include <qpe/qcopenvelope_qws.h>
#include <qpe/config.h>
#include <opie/odevice.h>
#include <stdio.h>
@@ -56,18 +60,22 @@ using namespace Opie;
LoginWindowImpl::LoginWindowImpl ( ) : LoginWindow ( 0, "LOGIN-WINDOW", WStyle_Customize | WStyle_NoBorder | WDestructiveClose )
{
QPopupMenu *pop = new QPopupMenu ( this );
pop-> insertItem ( tr( "Restart" ), this, SLOT( restart ( )));
pop-> insertItem ( tr( "Quit" ), this, SLOT( quit ( )));
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 );
setActiveWindow ( );
m_password-> setFocus ( );
m_user-> insertStringList ( lApp-> allUsers ( ));
@@ -82,22 +90,57 @@ LoginWindowImpl::LoginWindowImpl ( ) : LoginWindow ( 0, "LOGIN-WINDOW", WStyle_C
m_caption-> setText ( m_caption-> text ( ) + tr( "<center>%1 %2</center>" ). arg ( ODevice::inst ( )-> systemString ( )). arg ( ODevice::inst ( )-> systemVersionString ( )));
Config cfg ( "opie-login" );
cfg. setGroup ( "General" );
QString last = cfg. readEntry ( "LastLogin" );
if ( !last. isEmpty ( ))
m_user-> setEditText ( last );
+
+ calcMaxWindowRect ( );
}
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 )
{
switch ( e-> key ( )) {
case HardKey_Suspend: suspend ( );
break;
case HardKey_Backlight: backlight ( );
break;
default: e-> ignore ( );
diff --git a/core/opie-login/loginwindowimpl.h b/core/opie-login/loginwindowimpl.h
index e769b03..df8dbbb 100644
--- a/core/opie-login/loginwindowimpl.h
+++ b/core/opie-login/loginwindowimpl.h
@@ -42,16 +42,18 @@ public:
protected slots:
void restart ( );
void quit ( );
void showIM ( );
void suspend ( );
void backlight ( );
void login ( );
void toggleEchoMode ( bool );
+ void calcMaxWindowRect ( );
+ void receive ( const QCString &, const QByteArray & );
protected:
virtual void keyPressEvent ( QKeyEvent *e );
QStringList getAllUsers ( );
bool changeIdentity ( const char *user );
private: