summaryrefslogtreecommitdiff
authorkergoth <kergoth>2003-03-24 01:24:56 (UTC)
committer kergoth <kergoth>2003-03-24 01:24:56 (UTC)
commit1b4836ba28ca57947d37699fc67cddd74fb29fbe (patch) (unidiff)
treece940472f7ca14c5c7f0c88eebcf95ca953cfef9
parentc8205a610f350b8bde7c5aa0522944f0418f1fc9 (diff)
downloadopie-1b4836ba28ca57947d37699fc67cddd74fb29fbe.zip
opie-1b4836ba28ca57947d37699fc67cddd74fb29fbe.tar.gz
opie-1b4836ba28ca57947d37699fc67cddd74fb29fbe.tar.bz2
Remove ifdefs based on device as the means by which we decide to run calibrate, and instead check if the mouse handler inherits from QCalibratedMouseHandler.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/main.cpp14
-rw-r--r--core/opie-login/main.cpp14
2 files changed, 14 insertions, 14 deletions
diff --git a/core/launcher/main.cpp b/core/launcher/main.cpp
index 8eaea17..64fb968 100644
--- a/core/launcher/main.cpp
+++ b/core/launcher/main.cpp
@@ -1,177 +1,177 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#include "desktop.h" 21#include "desktop.h"
22#include "taskbar.h" 22#include "taskbar.h"
23#include "stabmon.h" 23#include "stabmon.h"
24 24
25#include <qpe/qpeapplication.h> 25#include <qpe/qpeapplication.h>
26#include <qpe/network.h> 26#include <qpe/network.h>
27#include <qpe/config.h> 27#include <qpe/config.h>
28#if defined( QT_QWS_SL5XXX ) || defined( QT_QWS_IPAQ ) 28#if defined( QT_QWS_SL5XXX ) || defined( QT_QWS_IPAQ )
29#include <qpe/custom.h> 29#include <qpe/custom.h>
30#endif 30#endif
31 31
32#include <opie/odevice.h> 32#include <opie/odevice.h>
33 33
34#include <qmessagebox.h> 34#include <qmessagebox.h>
35#include <qfile.h> 35#include <qfile.h>
36#include <qimage.h> 36#include <qimage.h>
37#include <qwindowsystem_qws.h> 37#include <qwindowsystem_qws.h>
38#include <qpe/qcopenvelope_qws.h> 38#include <qpe/qcopenvelope_qws.h>
39#include <qpe/alarmserver.h> 39#include <qpe/alarmserver.h>
40 40
41#include <stdlib.h> 41#include <stdlib.h>
42#include <stdio.h> 42#include <stdio.h>
43#include <signal.h> 43#include <signal.h>
44#include <unistd.h> 44#include <unistd.h>
45 45
46#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) 46#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX)
47#include "../calibrate/calibrate.h" 47#include "../calibrate/calibrate.h"
48#endif 48#endif
49 49
50using namespace Opie; 50using namespace Opie;
51 51
52void initEnvironment() 52void initEnvironment()
53{ 53{
54 Config config("locale"); 54 Config config("locale");
55 config.setGroup( "Location" ); 55 config.setGroup( "Location" );
56 QString tz = config.readEntry( "Timezone", getenv("TZ") ); 56 QString tz = config.readEntry( "Timezone", getenv("TZ") );
57 57
58 // if not timezone set, pick New York 58 // if not timezone set, pick New York
59 if (tz.isNull()) 59 if (tz.isNull())
60 tz = "America/New_York"; 60 tz = "America/New_York";
61 61
62 setenv( "TZ", tz, 1 ); 62 setenv( "TZ", tz, 1 );
63 config.writeEntry( "Timezone", tz); 63 config.writeEntry( "Timezone", tz);
64 64
65 config.setGroup( "Language" ); 65 config.setGroup( "Language" );
66 QString lang = config.readEntry( "Language", getenv("LANG") ); 66 QString lang = config.readEntry( "Language", getenv("LANG") );
67 if ( !lang.isNull() ) 67 if ( !lang.isNull() )
68 setenv( "LANG", lang, 1 ); 68 setenv( "LANG", lang, 1 );
69} 69}
70 70
71 71
72int initApplication( int argc, char ** argv ) 72int initApplication( int argc, char ** argv )
73{ 73{
74 initEnvironment(); 74 initEnvironment();
75 75
76#if !defined(QT_QWS_CASSIOPEIA) && !defined(QT_QWS_IPAQ) && !defined(QT_QWS_SL5XXX) 76#if !defined(QT_QWS_CASSIOPEIA) && !defined(QT_QWS_IPAQ) && !defined(QT_QWS_SL5XXX)
77 setenv( "QWS_SIZE", "240x320", 0 ); 77 setenv( "QWS_SIZE", "240x320", 0 );
78#endif 78#endif
79 79
80 //Don't flicker at startup: 80 //Don't flicker at startup:
81 QWSServer::setDesktopBackground( QImage() ); 81 QWSServer::setDesktopBackground( QImage() );
82 DesktopApplication a( argc, argv, QApplication::GuiServer ); 82 DesktopApplication a( argc, argv, QApplication::GuiServer );
83 83
84 ODevice::inst ( )-> setSoftSuspend ( true ); 84 ODevice::inst ( )-> setSoftSuspend ( true );
85 85
86 { // init backlight 86 { // init backlight
87 QCopEnvelope e("QPE/System", "setBacklight(int)" ); 87 QCopEnvelope e("QPE/System", "setBacklight(int)" );
88 e << -3; // Forced on 88 e << -3; // Forced on
89 } 89 }
90 90
91 AlarmServer::initialize(); 91 AlarmServer::initialize();
92 92
93 Desktop *d = new Desktop(); 93 Desktop *d = new Desktop();
94 94
95 QObject::connect( &a, SIGNAL(power()), d, SLOT(togglePower()) ); 95 QObject::connect( &a, SIGNAL(power()), d, SLOT(togglePower()) );
96 QObject::connect( &a, SIGNAL(backlight()), d, SLOT(toggleLight()) ); 96 QObject::connect( &a, SIGNAL(backlight()), d, SLOT(toggleLight()) );
97 QObject::connect( &a, SIGNAL(symbol()), d, SLOT(toggleSymbolInput()) ); 97 QObject::connect( &a, SIGNAL(symbol()), d, SLOT(toggleSymbolInput()) );
98 QObject::connect( &a, SIGNAL(numLockStateToggle()), d, SLOT(toggleNumLockState()) ); 98 QObject::connect( &a, SIGNAL(numLockStateToggle()), d, SLOT(toggleNumLockState()) );
99 QObject::connect( &a, SIGNAL(capsLockStateToggle()), d, SLOT(toggleCapsLockState()) ); 99 QObject::connect( &a, SIGNAL(capsLockStateToggle()), d, SLOT(toggleCapsLockState()) );
100 QObject::connect( &a, SIGNAL(prepareForRestart()), d, SLOT(terminateServers()) ); 100 QObject::connect( &a, SIGNAL(prepareForRestart()), d, SLOT(terminateServers()) );
101 101
102 (void)new SysFileMonitor(d); 102 (void)new SysFileMonitor(d);
103 Network::createServer(d); 103 Network::createServer(d);
104 104
105#if defined(QT_QWS_CASSIOPEIA) || defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) 105 if ( QWSServer::mouseHandler() ->inherits("QCalibratedMouseHandler") ) {
106 if ( !QFile::exists( "/etc/pointercal" ) ) { 106 if ( !QFile::exists( "/etc/pointercal" ) ) {
107 // Make sure calibration widget starts on top. 107 // Make sure calibration widget starts on top.
108 Calibrate *cal = new Calibrate; 108 Calibrate *cal = new Calibrate;
109 cal->exec(); 109 cal->exec();
110 delete cal; 110 delete cal;
111 }
111 } 112 }
112#endif
113 113
114 d->show(); 114 d->show();
115 115
116 if ( QDate::currentDate ( ). year ( ) < 2000 ) { 116 if ( QDate::currentDate ( ). year ( ) < 2000 ) {
117 if ( QMessageBox::information ( 0, DesktopApplication::tr( "Information" ), DesktopApplication::tr( "<p>The system date doesn't seem to be valid.\n(%1)</p><p>Do you want to correct the clock ?</p>" ). arg( TimeString::dateString ( QDate::currentDate ( ))), QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes ) { 117 if ( QMessageBox::information ( 0, DesktopApplication::tr( "Information" ), DesktopApplication::tr( "<p>The system date doesn't seem to be valid.\n(%1)</p><p>Do you want to correct the clock ?</p>" ). arg( TimeString::dateString ( QDate::currentDate ( ))), QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes ) {
118 QCopEnvelope e ( "QPE/Application/systemtime", "setDocument(QString)" ); 118 QCopEnvelope e ( "QPE/Application/systemtime", "setDocument(QString)" );
119 e << QString ( ); 119 e << QString ( );
120 } 120 }
121 } 121 }
122 122
123 int rv = a.exec(); 123 int rv = a.exec();
124 124
125 delete d; 125 delete d;
126 126
127 ODevice::inst ( )-> setSoftSuspend ( false ); 127 ODevice::inst ( )-> setSoftSuspend ( false );
128 128
129 return rv; 129 return rv;
130} 130}
131 131
132static const char *pidfile_path = "/var/run/opie.pid"; 132static const char *pidfile_path = "/var/run/opie.pid";
133 133
134void create_pidfile ( ) 134void create_pidfile ( )
135{ 135{
136 FILE *f; 136 FILE *f;
137 137
138 if (( f = ::fopen ( pidfile_path, "w" ))) { 138 if (( f = ::fopen ( pidfile_path, "w" ))) {
139 ::fprintf ( f, "%d", getpid ( )); 139 ::fprintf ( f, "%d", getpid ( ));
140 ::fclose ( f ); 140 ::fclose ( f );
141 } 141 }
142} 142}
143 143
144void remove_pidfile ( ) 144void remove_pidfile ( )
145{ 145{
146 ::unlink ( pidfile_path ); 146 ::unlink ( pidfile_path );
147} 147}
148 148
149void handle_sigterm ( int /* sig */ ) 149void handle_sigterm ( int /* sig */ )
150{ 150{
151 if ( qApp ) 151 if ( qApp )
152 qApp-> quit ( ); 152 qApp-> quit ( );
153} 153}
154 154
155int main( int argc, char ** argv ) 155int main( int argc, char ** argv )
156{ 156{
157 ::signal ( SIGCHLD, SIG_IGN ); 157 ::signal ( SIGCHLD, SIG_IGN );
158 158
159 ::signal ( SIGTERM, handle_sigterm ); 159 ::signal ( SIGTERM, handle_sigterm );
160 ::signal ( SIGINT, handle_sigterm ); 160 ::signal ( SIGINT, handle_sigterm );
161 161
162 ::setsid ( ); 162 ::setsid ( );
163 ::setpgid ( 0, 0 ); 163 ::setpgid ( 0, 0 );
164 164
165 ::atexit ( remove_pidfile ); 165 ::atexit ( remove_pidfile );
166 create_pidfile ( ); 166 create_pidfile ( );
167 167
168 int retVal = initApplication ( argc, argv ); 168 int retVal = initApplication ( argc, argv );
169 169
170 // Kill them. Kill them all. 170 // Kill them. Kill them all.
171 ::kill ( 0, SIGTERM ); 171 ::kill ( 0, SIGTERM );
172 ::sleep ( 1 ); 172 ::sleep ( 1 );
173 ::kill ( 0, SIGKILL ); 173 ::kill ( 0, SIGKILL );
174 174
175 return retVal; 175 return retVal;
176} 176}
177 177
diff --git a/core/opie-login/main.cpp b/core/opie-login/main.cpp
index 1800be0..9c40fc4 100644
--- a/core/opie-login/main.cpp
+++ b/core/opie-login/main.cpp
@@ -70,299 +70,299 @@ static struct option long_options [] = {
70 { 0, 0, 0, 0 } 70 { 0, 0, 0, 0 }
71}; 71};
72 72
73 73
74int main ( int argc, char **argv ) 74int main ( int argc, char **argv )
75{ 75{
76 pid_t ppid = ::getpid ( ); 76 pid_t ppid = ::getpid ( );
77 77
78 if ( ::geteuid ( ) != 0 ) { 78 if ( ::geteuid ( ) != 0 ) {
79 ::fprintf ( stderr, "%s can only be executed by root. (or chmod +s)", argv [0] ); 79 ::fprintf ( stderr, "%s can only be executed by root. (or chmod +s)", argv [0] );
80 return 1; 80 return 1;
81 } 81 }
82 if ( ::getuid ( ) != 0 ) // qt doesn't really like SUID and 82 if ( ::getuid ( ) != 0 ) // qt doesn't really like SUID and
83 ::setuid ( 0 ); // messes up things like config files 83 ::setuid ( 0 ); // messes up things like config files
84 84
85 char *autolog = 0; 85 char *autolog = 0;
86 int c; 86 int c;
87 while (( c = ::getopt_long ( argc, argv, "a:", long_options, 0 )) != -1 ) { 87 while (( c = ::getopt_long ( argc, argv, "a:", long_options, 0 )) != -1 ) {
88 switch ( c ) { 88 switch ( c ) {
89 case 'a': 89 case 'a':
90 autolog = optarg; 90 autolog = optarg;
91 break; 91 break;
92 default: 92 default:
93 ::fprintf ( stderr, "Usage: %s [-a|--autologin=<user>]\n", argv [0] ); 93 ::fprintf ( stderr, "Usage: %s [-a|--autologin=<user>]\n", argv [0] );
94 return 2; 94 return 2;
95 } 95 }
96 } 96 }
97 97
98 //struct rlimit rl; 98 //struct rlimit rl;
99 //::getrlimit ( RLIMIT_NOFILE, &rl ); 99 //::getrlimit ( RLIMIT_NOFILE, &rl );
100 100
101 //for ( unsigned int i = 0; i < rl. rlim_cur; i++ ) 101 //for ( unsigned int i = 0; i < rl. rlim_cur; i++ )
102 // ::close ( i ); 102 // ::close ( i );
103 103
104 ::setpgid ( 0, 0 ); 104 ::setpgid ( 0, 0 );
105 ::setsid ( ); 105 ::setsid ( );
106 106
107 ::signal ( SIGTERM, sigterm ); 107 ::signal ( SIGTERM, sigterm );
108 ::signal ( SIGINT, sigterm ); 108 ::signal ( SIGINT, sigterm );
109 109
110 ::openlog ( "opie-login", LOG_CONS, LOG_AUTHPRIV ); 110 ::openlog ( "opie-login", LOG_CONS, LOG_AUTHPRIV );
111 ::atexit ( exit_closelog ); 111 ::atexit ( exit_closelog );
112 112
113 while ( true ) { 113 while ( true ) {
114 pid_t child = ::fork ( ); 114 pid_t child = ::fork ( );
115 115
116 if ( child < 0 ) { 116 if ( child < 0 ) {
117 ::syslog ( LOG_ERR, "Could not fork GUI process\n" ); 117 ::syslog ( LOG_ERR, "Could not fork GUI process\n" );
118 break; 118 break;
119 } 119 }
120 else if ( child > 0 ) { 120 else if ( child > 0 ) {
121 int status = 0; 121 int status = 0;
122 time_t started = ::time ( 0 ); 122 time_t started = ::time ( 0 );
123 123
124 while ( ::waitpid ( child, &status, 0 ) < 0 ) { } 124 while ( ::waitpid ( child, &status, 0 ) < 0 ) { }
125 125
126 LoginApplication::logout ( ); 126 LoginApplication::logout ( );
127 127
128 if (( ::time ( 0 ) - started ) < 3 ) { 128 if (( ::time ( 0 ) - started ) < 3 ) {
129 if ( autolog ) { 129 if ( autolog ) {
130 ::syslog ( LOG_ERR, "Respawning too fast -- disabling auto-login\n" ); 130 ::syslog ( LOG_ERR, "Respawning too fast -- disabling auto-login\n" );
131 autolog = 0; 131 autolog = 0;
132 } 132 }
133 else { 133 else {
134 ::syslog ( LOG_ERR, "Respawning too fast -- going down\n" ); 134 ::syslog ( LOG_ERR, "Respawning too fast -- going down\n" );
135 break; 135 break;
136 } 136 }
137 } 137 }
138 int killedbysig = 0; 138 int killedbysig = 0;
139 139
140 if ( WIFSIGNALED( status )) { 140 if ( WIFSIGNALED( status )) {
141 switch ( WTERMSIG( status )) { 141 switch ( WTERMSIG( status )) {
142 case SIGINT : 142 case SIGINT :
143 case SIGTERM: 143 case SIGTERM:
144 case SIGKILL: 144 case SIGKILL:
145 break; 145 break;
146 146
147 default : 147 default :
148 killedbysig = WTERMSIG( status ); 148 killedbysig = WTERMSIG( status );
149 break; 149 break;
150 } 150 }
151 } 151 }
152 if ( killedbysig ) { // qpe was killed by an uncaught signal 152 if ( killedbysig ) { // qpe was killed by an uncaught signal
153 qApp = 0; 153 qApp = 0;
154 154
155 ::syslog ( LOG_ERR, "Opie was killed by a signal #%d", killedbysig ); 155 ::syslog ( LOG_ERR, "Opie was killed by a signal #%d", killedbysig );
156 156
157 QWSServer::setDesktopBackground ( QImage ( )); 157 QWSServer::setDesktopBackground ( QImage ( ));
158 QApplication *app = new QApplication ( argc, argv, QApplication::GuiServer ); 158 QApplication *app = new QApplication ( argc, argv, QApplication::GuiServer );
159 app-> setFont ( QFont ( "Helvetica", 10 )); 159 app-> setFont ( QFont ( "Helvetica", 10 ));
160 app-> setStyle ( new QPEStyle ( )); 160 app-> setStyle ( new QPEStyle ( ));
161 161
162 const char *sig = ::strsignal ( killedbysig ); 162 const char *sig = ::strsignal ( killedbysig );
163 QLabel *l = new QLabel ( 0, "sig", Qt::WStyle_Customize | Qt::WStyle_NoBorder | Qt::WStyle_Tool ); 163 QLabel *l = new QLabel ( 0, "sig", Qt::WStyle_Customize | Qt::WStyle_NoBorder | Qt::WStyle_Tool );
164 l-> setText ( LoginWindowImpl::tr( "OPIE was terminated\nby an uncaught signal\n(%1)\n" ). arg ( sig )); 164 l-> setText ( LoginWindowImpl::tr( "OPIE was terminated\nby an uncaught signal\n(%1)\n" ). arg ( sig ));
165 l-> setAlignment ( Qt::AlignCenter ); 165 l-> setAlignment ( Qt::AlignCenter );
166 l-> move ( 0, 0 ); 166 l-> move ( 0, 0 );
167 l-> resize ( app-> desktop ( )-> width ( ), app-> desktop ( )-> height ( )); 167 l-> resize ( app-> desktop ( )-> width ( ), app-> desktop ( )-> height ( ));
168 l-> show ( ); 168 l-> show ( );
169 QTimer::singleShot ( 3000, app, SLOT( quit ( ))); 169 QTimer::singleShot ( 3000, app, SLOT( quit ( )));
170 app-> exec ( ); 170 app-> exec ( );
171 delete app; 171 delete app;
172 qApp = 0; 172 qApp = 0;
173 } 173 }
174 } 174 }
175 else { 175 else {
176 if ( !autolog ) { 176 if ( !autolog ) {
177 Config cfg ( "opie-login" ); 177 Config cfg ( "opie-login" );
178 cfg. setGroup ( "General" ); 178 cfg. setGroup ( "General" );
179 QString user = cfg. readEntry ( "AutoLogin" ); 179 QString user = cfg. readEntry ( "AutoLogin" );
180 180
181 if ( !user. isEmpty ( )) 181 if ( !user. isEmpty ( ))
182 autolog = ::strdup ( user. latin1 ( )); 182 autolog = ::strdup ( user. latin1 ( ));
183 } 183 }
184 184
185 if ( autolog ) { 185 if ( autolog ) {
186 LoginApplication::setLoginAs ( autolog ); 186 LoginApplication::setLoginAs ( autolog );
187 187
188 if ( LoginApplication::changeIdentity ( )) 188 if ( LoginApplication::changeIdentity ( ))
189 ::exit ( LoginApplication::login ( )); 189 ::exit ( LoginApplication::login ( ));
190 else 190 else
191 ::exit ( 0 ); 191 ::exit ( 0 );
192 } 192 }
193 else 193 else
194 ::exit ( login_main ( argc, argv, ppid )); 194 ::exit ( login_main ( argc, argv, ppid ));
195 } 195 }
196 } 196 }
197 return 0; 197 return 0;
198} 198}
199 199
200void sigterm ( int /*sig*/ ) 200void sigterm ( int /*sig*/ )
201{ 201{
202 ::exit ( 0 ); 202 ::exit ( 0 );
203} 203}
204 204
205 205
206void exit_closelog ( ) 206void exit_closelog ( )
207{ 207{
208 ::closelog ( ); 208 ::closelog ( );
209} 209}
210 210
211 211
212class LoginScreenSaver : public QWSScreenSaver 212class LoginScreenSaver : public QWSScreenSaver
213{ 213{
214public: 214public:
215 LoginScreenSaver ( ) 215 LoginScreenSaver ( )
216 { 216 {
217 m_lcd_status = true; 217 m_lcd_status = true;
218 218
219 m_backlight_bright = -1; 219 m_backlight_bright = -1;
220 m_backlight_forcedoff = false; 220 m_backlight_forcedoff = false;
221 221
222 // Make sure the LCD is in fact on, (if opie was killed while the LCD is off it would still be off) 222 // Make sure the LCD is in fact on, (if opie was killed while the LCD is off it would still be off)
223 ODevice::inst ( )-> setDisplayStatus ( true ); 223 ODevice::inst ( )-> setDisplayStatus ( true );
224 } 224 }
225 void restore() 225 void restore()
226 { 226 {
227 if ( !m_lcd_status ) // We must have turned it off 227 if ( !m_lcd_status ) // We must have turned it off
228 ODevice::inst ( ) -> setDisplayStatus ( true ); 228 ODevice::inst ( ) -> setDisplayStatus ( true );
229 229
230 setBacklight ( -3 ); 230 setBacklight ( -3 );
231 } 231 }
232 bool save( int level ) 232 bool save( int level )
233 { 233 {
234 switch ( level ) { 234 switch ( level ) {
235 case 0: 235 case 0:
236 if ( backlight() > 1 ) 236 if ( backlight() > 1 )
237 setBacklight( 1 ); // lowest non-off 237 setBacklight( 1 ); // lowest non-off
238 return true; 238 return true;
239 break; 239 break;
240 case 1: 240 case 1:
241 setBacklight( 0 ); // off 241 setBacklight( 0 ); // off
242 return true; 242 return true;
243 break; 243 break;
244 case 2: 244 case 2:
245 // We're going to suspend the whole machine 245 // We're going to suspend the whole machine
246 if ( PowerStatusManager::readStatus().acStatus() != PowerStatus::Online ) { 246 if ( PowerStatusManager::readStatus().acStatus() != PowerStatus::Online ) {
247 QWSServer::sendKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE ); 247 QWSServer::sendKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE );
248 return true; 248 return true;
249 } 249 }
250 break; 250 break;
251 } 251 }
252 return false; 252 return false;
253 } 253 }
254 254
255private: 255private:
256public: 256public:
257 void setIntervals( int i1 = 30, int i2 = 20, int i3 = 60 ) 257 void setIntervals( int i1 = 30, int i2 = 20, int i3 = 60 )
258 { 258 {
259 int v [4]; 259 int v [4];
260 260
261 v [ 0 ] = QMAX( 1000 * i1, 100 ); 261 v [ 0 ] = QMAX( 1000 * i1, 100 );
262 v [ 1 ] = QMAX( 1000 * i2, 100 ); 262 v [ 1 ] = QMAX( 1000 * i2, 100 );
263 v [ 2 ] = QMAX( 1000 * i3, 100 ); 263 v [ 2 ] = QMAX( 1000 * i3, 100 );
264 v [ 3 ] = 0; 264 v [ 3 ] = 0;
265 265
266 if ( !i1 && !i2 && !i3 ) 266 if ( !i1 && !i2 && !i3 )
267 QWSServer::setScreenSaverInterval ( 0 ); 267 QWSServer::setScreenSaverInterval ( 0 );
268 else 268 else
269 QWSServer::setScreenSaverIntervals ( v ); 269 QWSServer::setScreenSaverIntervals ( v );
270 } 270 }
271 271
272 int backlight ( ) 272 int backlight ( )
273 { 273 {
274 if ( m_backlight_bright == -1 ) 274 if ( m_backlight_bright == -1 )
275 m_backlight_bright = 255; 275 m_backlight_bright = 255;
276 276
277 return m_backlight_bright; 277 return m_backlight_bright;
278 } 278 }
279 279
280 void setBacklight ( int bright ) 280 void setBacklight ( int bright )
281 { 281 {
282 if ( bright == -3 ) { 282 if ( bright == -3 ) {
283 // Forced on 283 // Forced on
284 m_backlight_forcedoff = false; 284 m_backlight_forcedoff = false;
285 bright = -1; 285 bright = -1;
286 } 286 }
287 if ( m_backlight_forcedoff && bright != -2 ) 287 if ( m_backlight_forcedoff && bright != -2 )
288 return ; 288 return ;
289 if ( bright == -2 ) { 289 if ( bright == -2 ) {
290 // Toggle between off and on 290 // Toggle between off and on
291 bright = m_backlight_bright ? 0 : -1; 291 bright = m_backlight_bright ? 0 : -1;
292 m_backlight_forcedoff = !bright; 292 m_backlight_forcedoff = !bright;
293 } 293 }
294 294
295 m_backlight_bright = bright; 295 m_backlight_bright = bright;
296 296
297 bright = backlight ( ); 297 bright = backlight ( );
298 ODevice::inst ( ) -> setDisplayBrightness ( bright ); 298 ODevice::inst ( ) -> setDisplayBrightness ( bright );
299 299
300 m_backlight_bright = bright; 300 m_backlight_bright = bright;
301 } 301 }
302 302
303private: 303private:
304 bool m_lcd_status; 304 bool m_lcd_status;
305 305
306 int m_backlight_bright; 306 int m_backlight_bright;
307 bool m_backlight_forcedoff; 307 bool m_backlight_forcedoff;
308}; 308};
309 309
310 310
311namespace Opie { extern int force_appearance; } // HACK to get around the force-style setting 311namespace Opie { extern int force_appearance; } // HACK to get around the force-style setting
312 312
313 313
314int login_main ( int argc, char **argv, pid_t ppid ) 314int login_main ( int argc, char **argv, pid_t ppid )
315{ 315{
316 QWSServer::setDesktopBackground( QImage() ); 316 QWSServer::setDesktopBackground( QImage() );
317 LoginApplication *app = new LoginApplication ( argc, argv, ppid ); 317 LoginApplication *app = new LoginApplication ( argc, argv, ppid );
318 318
319 Opie::force_appearance = 0; 319 Opie::force_appearance = 0;
320 320
321 app-> setFont ( QFont ( "Helvetica", 10 )); 321 app-> setFont ( QFont ( "Helvetica", 10 ));
322 app-> setStyle ( new QPEStyle ( )); 322 app-> setStyle ( new QPEStyle ( ));
323 323
324 ODevice::inst ( )-> setSoftSuspend ( true ); 324 ODevice::inst ( )-> setSoftSuspend ( true );
325 325
326#if defined(QT_QWS_CASSIOPEIA) || defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) 326 if ( QWSServer::mouseHandler() ->inherits("QCalibratedMouseHandler") ) {
327 if ( !QFile::exists ( "/etc/pointercal" )) { 327 if ( !QFile::exists ( "/etc/pointercal" )) {
328 // Make sure calibration widget starts on top. 328 // Make sure calibration widget starts on top.
329 Calibrate *cal = new Calibrate; 329 Calibrate *cal = new Calibrate;
330 cal-> exec ( ); 330 cal-> exec ( );
331 delete cal; 331 delete cal;
332 }
332 } 333 }
333#endif
334 334
335 LoginScreenSaver *saver = new LoginScreenSaver; 335 LoginScreenSaver *saver = new LoginScreenSaver;
336 336
337 saver-> setIntervals ( ); 337 saver-> setIntervals ( );
338 QWSServer::setScreenSaver ( saver ); 338 QWSServer::setScreenSaver ( saver );
339 saver-> restore ( ); 339 saver-> restore ( );
340 340
341 341
342 LoginWindowImpl *lw = new LoginWindowImpl ( ); 342 LoginWindowImpl *lw = new LoginWindowImpl ( );
343 app-> setMainWidget ( lw ); 343 app-> setMainWidget ( lw );
344 lw-> setGeometry ( 0, 0, app-> desktop ( )-> width ( ), app-> desktop ( )-> height ( )); 344 lw-> setGeometry ( 0, 0, app-> desktop ( )-> width ( ), app-> desktop ( )-> height ( ));
345 lw-> show ( ); 345 lw-> show ( );
346 346
347 int rc = app-> exec ( ); 347 int rc = app-> exec ( );
348 348
349 ODevice::inst ( )-> setSoftSuspend ( false ); 349 ODevice::inst ( )-> setSoftSuspend ( false );
350 350
351 if ( app-> loginAs ( )) { 351 if ( app-> loginAs ( )) {
352 if ( app-> changeIdentity ( )) { 352 if ( app-> changeIdentity ( )) {
353 app-> login ( ); 353 app-> login ( );
354 354
355 // if login succeeds, it never comes back 355 // if login succeeds, it never comes back
356 356
357 QMessageBox::critical ( 0, LoginWindowImpl::tr( "Failure" ), LoginWindowImpl::tr( "Could not start OPIE." )); 357 QMessageBox::critical ( 0, LoginWindowImpl::tr( "Failure" ), LoginWindowImpl::tr( "Could not start OPIE." ));
358 rc = 1; 358 rc = 1;
359 } 359 }
360 else { 360 else {
361 QMessageBox::critical ( 0, LoginWindowImpl::tr( "Failure" ), LoginWindowImpl::tr( "Could not switch to new user identity" )); 361 QMessageBox::critical ( 0, LoginWindowImpl::tr( "Failure" ), LoginWindowImpl::tr( "Could not switch to new user identity" ));
362 rc = 2; 362 rc = 2;
363 } 363 }
364 364
365 } 365 }
366 return rc; 366 return rc;
367} 367}
368 368