summaryrefslogtreecommitdiff
path: root/core/launcher/main.cpp
Unidiff
Diffstat (limited to 'core/launcher/main.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/main.cpp12
1 files changed, 0 insertions, 12 deletions
diff --git a/core/launcher/main.cpp b/core/launcher/main.cpp
index b3c331b..a19da14 100644
--- a/core/launcher/main.cpp
+++ b/core/launcher/main.cpp
@@ -1,147 +1,143 @@
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_CUSTOM ) || defined( QT_QWS_IPAQ ) 28#if defined( QT_QWS_CUSTOM ) || 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 <qfile.h> 34#include <qfile.h>
35#include <qwindowsystem_qws.h> 35#include <qwindowsystem_qws.h>
36#include <qpe/qcopenvelope_qws.h> 36#include <qpe/qcopenvelope_qws.h>
37#include <qpe/alarmserver.h> 37#include <qpe/alarmserver.h>
38 38
39#include <stdlib.h> 39#include <stdlib.h>
40#include <stdio.h> 40#include <stdio.h>
41#include <signal.h> 41#include <signal.h>
42#include <unistd.h> 42#include <unistd.h>
43 43
44#if defined(QT_QWS_CASSIOPEIA) || defined(QT_QWS_IPAQ) || defined(QT_QWS_EBX) 44#if defined(QT_QWS_CASSIOPEIA) || defined(QT_QWS_IPAQ) || defined(QT_QWS_EBX)
45#include "../calibrate/calibrate.h" 45#include "../calibrate/calibrate.h"
46#endif 46#endif
47 47
48#ifdef QT_QWS_LOGIN
49#include "../login/qdmdialogimpl.h"
50#endif
51
52#ifdef QT_QWS_CASSIOPEIA 48#ifdef QT_QWS_CASSIOPEIA
53static void ignoreMessage( QtMsgType, const char * ) 49static void ignoreMessage( QtMsgType, const char * )
54{ 50{
55} 51}
56#include <sys/mount.h> 52#include <sys/mount.h>
57#include <sys/types.h> 53#include <sys/types.h>
58#include <sys/stat.h> 54#include <sys/stat.h>
59#include <sys/time.h> 55#include <sys/time.h>
60#include <fcntl.h> 56#include <fcntl.h>
61#include <qdatetime.h> 57#include <qdatetime.h>
62 58
63void initCassiopeia() 59void initCassiopeia()
64{ 60{
65 // MIPSEL-specific init - make sure /proc exists for shm 61 // MIPSEL-specific init - make sure /proc exists for shm
66/* 62/*
67 if ( mount("/dev/ram0", "/", "ext2", MS_REMOUNT | MS_MGC_VAL, 0 ) ) { 63 if ( mount("/dev/ram0", "/", "ext2", MS_REMOUNT | MS_MGC_VAL, 0 ) ) {
68 perror("Remounting - / read/write"); 64 perror("Remounting - / read/write");
69 } 65 }
70*/ 66*/
71 if ( mount("none", "/tmp", "ramfs", 0, 0 ) ) { 67 if ( mount("none", "/tmp", "ramfs", 0, 0 ) ) {
72 perror("mounting ramfs /tmp"); 68 perror("mounting ramfs /tmp");
73 } else { 69 } else {
74 fprintf( stderr, "mounted /tmp\n" ); 70 fprintf( stderr, "mounted /tmp\n" );
75 } 71 }
76 if ( mount("none", "/home", "ramfs", 0, 0 ) ) { 72 if ( mount("none", "/home", "ramfs", 0, 0 ) ) {
77 perror("mounting ramfs /home"); 73 perror("mounting ramfs /home");
78 } else { 74 } else {
79 fprintf( stderr, "mounted /home\n" ); 75 fprintf( stderr, "mounted /home\n" );
80 } 76 }
81 if ( mount("none","/proc","proc",0,0) ) { 77 if ( mount("none","/proc","proc",0,0) ) {
82 perror("Mounting - /proc"); 78 perror("Mounting - /proc");
83 } else { 79 } else {
84 fprintf( stderr, "mounted /proc\n" ); 80 fprintf( stderr, "mounted /proc\n" );
85 } 81 }
86 if ( mount("none","/mnt","shm",0,0) ) { 82 if ( mount("none","/mnt","shm",0,0) ) {
87 perror("Mounting - shm"); 83 perror("Mounting - shm");
88 } 84 }
89 setenv( "QTDIR", "/", 1 ); 85 setenv( "QTDIR", "/", 1 );
90 setenv( "OPIEDIR", "/", 1 ); 86 setenv( "OPIEDIR", "/", 1 );
91 setenv( "HOME", "/home", 1 ); 87 setenv( "HOME", "/home", 1 );
92 mkdir( "/home/Documents", 0755 ); 88 mkdir( "/home/Documents", 0755 );
93 89
94 // set a reasonable starting date 90 // set a reasonable starting date
95 QDateTime dt( QDate( 2001, 3, 15 ) ); 91 QDateTime dt( QDate( 2001, 3, 15 ) );
96 QDateTime now = QDateTime::currentDateTime(); 92 QDateTime now = QDateTime::currentDateTime();
97 int change = now.secsTo( dt ); 93 int change = now.secsTo( dt );
98 94
99 time_t t = ::time(0); 95 time_t t = ::time(0);
100 t += change; 96 t += change;
101 stime(&t); 97 stime(&t);
102 98
103 qInstallMsgHandler(ignoreMessage); 99 qInstallMsgHandler(ignoreMessage);
104} 100}
105#endif 101#endif
106 102
107#ifdef QPE_OWNAPM 103#ifdef QPE_OWNAPM
108#include <sys/ioctl.h> 104#include <sys/ioctl.h>
109#include <sys/types.h> 105#include <sys/types.h>
110#include <fcntl.h> 106#include <fcntl.h>
111#include <unistd.h> 107#include <unistd.h>
112#include <errno.h> 108#include <errno.h>
113#include <linux/ioctl.h> 109#include <linux/ioctl.h>
114#include <qpe/global.h> 110#include <qpe/global.h>
115 111
116static void disableAPM() 112static void disableAPM()
117{ 113{
118 114
119 int fd, cur_val, ret; 115 int fd, cur_val, ret;
120 char *device = "/dev/apm_bios"; 116 char *device = "/dev/apm_bios";
121 117
122 fd = open (device, O_WRONLY); 118 fd = open (device, O_WRONLY);
123 119
124 if (fd == -1) { 120 if (fd == -1) {
125 perror(device); 121 perror(device);
126 return; 122 return;
127 } 123 }
128 124
129 cur_val = ioctl(fd, APM_IOCGEVTSRC, 0); 125 cur_val = ioctl(fd, APM_IOCGEVTSRC, 0);
130 if (cur_val == -1) { 126 if (cur_val == -1) {
131 perror("ioctl"); 127 perror("ioctl");
132 exit(errno); 128 exit(errno);
133 } 129 }
134 130
135 ret = ioctl(fd, APM_IOCSEVTSRC, cur_val & ~APM_EVT_POWER_BUTTON); 131 ret = ioctl(fd, APM_IOCSEVTSRC, cur_val & ~APM_EVT_POWER_BUTTON);
136 if (ret == -1) { 132 if (ret == -1) {
137 perror("ioctl"); 133 perror("ioctl");
138 return; 134 return;
139 } 135 }
140 close(fd); 136 close(fd);
141} 137}
142 138
143static void initAPM() 139static void initAPM()
144{ 140{
145 // So that we have to do it ourself, but better. 141 // So that we have to do it ourself, but better.
146 disableAPM(); 142 disableAPM();
147} 143}
@@ -210,157 +206,149 @@ public:
210 206
211 virtual bool filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat ) 207 virtual bool filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat )
212 { 208 {
213 bool kill = false; 209 bool kill = false;
214 210
215 // Rotate cursor keys 180° 211 // Rotate cursor keys 180°
216 switch ( m_model ) { 212 switch ( m_model ) {
217 case OMODEL_iPAQ_H31xx: 213 case OMODEL_iPAQ_H31xx:
218 case OMODEL_iPAQ_H38xx: { 214 case OMODEL_iPAQ_H38xx: {
219 int newkeycode = keycode; 215 int newkeycode = keycode;
220 216
221 switch ( keycode ) { 217 switch ( keycode ) {
222 case Key_Left : newkeycode = Key_Right; break; 218 case Key_Left : newkeycode = Key_Right; break;
223 case Key_Right: newkeycode = Key_Left; break; 219 case Key_Right: newkeycode = Key_Left; break;
224 case Key_Up : newkeycode = Key_Down; break; 220 case Key_Up : newkeycode = Key_Down; break;
225 case Key_Down : newkeycode = Key_Up; break; 221 case Key_Down : newkeycode = Key_Up; break;
226 } 222 }
227 if ( newkeycode != keycode ) { 223 if ( newkeycode != keycode ) {
228 QWSServer::sendKeyEvent ( -1, newkeycode, modifiers, isPress, autoRepeat ); 224 QWSServer::sendKeyEvent ( -1, newkeycode, modifiers, isPress, autoRepeat );
229 kill = true; 225 kill = true;
230 } 226 }
231 break; 227 break;
232 } 228 }
233 default: break; 229 default: break;
234 } 230 }
235 231
236 // map Power Button short/long press to F34/F35 232 // map Power Button short/long press to F34/F35
237 switch ( m_model ) { 233 switch ( m_model ) {
238 case OMODEL_iPAQ_H31xx: 234 case OMODEL_iPAQ_H31xx:
239 case OMODEL_iPAQ_H36xx: 235 case OMODEL_iPAQ_H36xx:
240 case OMODEL_iPAQ_H37xx: 236 case OMODEL_iPAQ_H37xx:
241 case OMODEL_iPAQ_H38xx: { 237 case OMODEL_iPAQ_H38xx: {
242 if ( keycode == Key_SysReq ) { 238 if ( keycode == Key_SysReq ) {
243 if ( isPress ) { 239 if ( isPress ) {
244 m_power_timer = startTimer ( 500 ); 240 m_power_timer = startTimer ( 500 );
245 } 241 }
246 else if ( m_power_timer ) { 242 else if ( m_power_timer ) {
247 killTimer ( m_power_timer ); 243 killTimer ( m_power_timer );
248 m_power_timer = 0; 244 m_power_timer = 0;
249 QWSServer::sendKeyEvent ( -1, Key_F34, 0, true, false ); 245 QWSServer::sendKeyEvent ( -1, Key_F34, 0, true, false );
250 QWSServer::sendKeyEvent ( -1, Key_F34, 0, false, false ); 246 QWSServer::sendKeyEvent ( -1, Key_F34, 0, false, false );
251 } 247 }
252 kill = true; 248 kill = true;
253 } 249 }
254 break; 250 break;
255 } 251 }
256 default: break; 252 default: break;
257 } 253 }
258 return kill; 254 return kill;
259 } 255 }
260 256
261 virtual void timerEvent ( QTimerEvent * ) 257 virtual void timerEvent ( QTimerEvent * )
262 { 258 {
263 killTimer ( m_power_timer ); 259 killTimer ( m_power_timer );
264 m_power_timer = 0; 260 m_power_timer = 0;
265 QWSServer::sendKeyEvent ( -1, Key_F35, 0, true, false ); 261 QWSServer::sendKeyEvent ( -1, Key_F35, 0, true, false );
266 QWSServer::sendKeyEvent ( -1, Key_F35, 0, false, false ); 262 QWSServer::sendKeyEvent ( -1, Key_F35, 0, false, false );
267 } 263 }
268 264
269private: 265private:
270 OModel m_model; 266 OModel m_model;
271 int m_power_timer; 267 int m_power_timer;
272}; 268};
273 269
274 270
275 271
276int initApplication( int argc, char ** argv ) 272int initApplication( int argc, char ** argv )
277{ 273{
278#ifdef QT_QWS_CASSIOPEIA 274#ifdef QT_QWS_CASSIOPEIA
279 initCassiopeia(); 275 initCassiopeia();
280#endif 276#endif
281 277
282#ifdef QPE_OWNAPM 278#ifdef QPE_OWNAPM
283 initAPM(); 279 initAPM();
284#endif 280#endif
285 281
286#ifdef QT_DEMO_SINGLE_FLOPPY 282#ifdef QT_DEMO_SINGLE_FLOPPY
287 initFloppy(); 283 initFloppy();
288#endif 284#endif
289 285
290 initEnvironment(); 286 initEnvironment();
291 287
292#if !defined(QT_QWS_CASSIOPEIA) && !defined(QT_QWS_IPAQ) && !defined(QT_QWS_EBX) 288#if !defined(QT_QWS_CASSIOPEIA) && !defined(QT_QWS_IPAQ) && !defined(QT_QWS_EBX)
293 setenv( "QWS_SIZE", "240x320", 0 ); 289 setenv( "QWS_SIZE", "240x320", 0 );
294#endif 290#endif
295 291
296 //Don't flicker at startup: 292 //Don't flicker at startup:
297 QWSServer::setDesktopBackground( QImage() ); 293 QWSServer::setDesktopBackground( QImage() );
298 DesktopApplication a( argc, argv, QApplication::GuiServer ); 294 DesktopApplication a( argc, argv, QApplication::GuiServer );
299 295
300 (void) new ModelKeyFilter ( ); 296 (void) new ModelKeyFilter ( );
301 297
302 initBacklight(); 298 initBacklight();
303 299
304 AlarmServer::initialize(); 300 AlarmServer::initialize();
305 301
306#if defined(QT_QWS_LOGIN)
307 for( int i=0; i<a.argc(); i++ )
308 if( strcmp( a.argv()[i], "-login" ) == 0 ) {
309 QDMDialogImpl::login( );
310 return 0;
311 }
312#endif
313
314 Desktop *d = new Desktop(); 302 Desktop *d = new Desktop();
315 303
316 QObject::connect( &a, SIGNAL(datebook()), d, SLOT(raiseDatebook()) ); 304 QObject::connect( &a, SIGNAL(datebook()), d, SLOT(raiseDatebook()) );
317 QObject::connect( &a, SIGNAL(contacts()), d, SLOT(raiseContacts()) ); 305 QObject::connect( &a, SIGNAL(contacts()), d, SLOT(raiseContacts()) );
318 QObject::connect( &a, SIGNAL(launch()), d, SLOT(raiseLauncher()) ); 306 QObject::connect( &a, SIGNAL(launch()), d, SLOT(raiseLauncher()) );
319 QObject::connect( &a, SIGNAL(email()), d, SLOT(raiseEmail()) ); 307 QObject::connect( &a, SIGNAL(email()), d, SLOT(raiseEmail()) );
320 QObject::connect( &a, SIGNAL(power()), d, SLOT(togglePower()) ); 308 QObject::connect( &a, SIGNAL(power()), d, SLOT(togglePower()) );
321 QObject::connect( &a, SIGNAL(backlight()), d, SLOT(toggleLight()) ); 309 QObject::connect( &a, SIGNAL(backlight()), d, SLOT(toggleLight()) );
322 QObject::connect( &a, SIGNAL(symbol()), d, SLOT(toggleSymbolInput()) ); 310 QObject::connect( &a, SIGNAL(symbol()), d, SLOT(toggleSymbolInput()) );
323 QObject::connect( &a, SIGNAL(numLockStateToggle()), d, SLOT(toggleNumLockState()) ); 311 QObject::connect( &a, SIGNAL(numLockStateToggle()), d, SLOT(toggleNumLockState()) );
324 QObject::connect( &a, SIGNAL(capsLockStateToggle()), d, SLOT(toggleCapsLockState()) ); 312 QObject::connect( &a, SIGNAL(capsLockStateToggle()), d, SLOT(toggleCapsLockState()) );
325 QObject::connect( &a, SIGNAL(prepareForRestart()), d, SLOT(terminateServers()) ); 313 QObject::connect( &a, SIGNAL(prepareForRestart()), d, SLOT(terminateServers()) );
326 314
327 (void)new SysFileMonitor(d); 315 (void)new SysFileMonitor(d);
328 Network::createServer(d); 316 Network::createServer(d);
329 317
330#if defined(QT_QWS_CASSIOPEIA) || defined(QT_QWS_IPAQ) || defined(QT_QWS_EBX) 318#if defined(QT_QWS_CASSIOPEIA) || defined(QT_QWS_IPAQ) || defined(QT_QWS_EBX)
331 if ( !QFile::exists( "/etc/pointercal" ) ) { 319 if ( !QFile::exists( "/etc/pointercal" ) ) {
332 // Make sure calibration widget starts on top. 320 // Make sure calibration widget starts on top.
333 Calibrate *cal = new Calibrate; 321 Calibrate *cal = new Calibrate;
334 cal->exec(); 322 cal->exec();
335 delete cal; 323 delete cal;
336 } 324 }
337#endif 325#endif
338 326
339 d->show(); 327 d->show();
340 328
341 int rv = a.exec(); 329 int rv = a.exec();
342 330
343 delete d; 331 delete d;
344 332
345 return rv; 333 return rv;
346} 334}
347 335
348int main( int argc, char ** argv ) 336int main( int argc, char ** argv )
349{ 337{
350#ifndef SINGLE_APP 338#ifndef SINGLE_APP
351 signal( SIGCHLD, SIG_IGN ); 339 signal( SIGCHLD, SIG_IGN );
352#endif 340#endif
353 341
354 int retVal = initApplication( argc, argv ); 342 int retVal = initApplication( argc, argv );
355 343
356#ifndef SINGLE_APP 344#ifndef SINGLE_APP
357 // Kill them. Kill them all. 345 // Kill them. Kill them all.
358 setpgid( getpid(), getppid() ); 346 setpgid( getpid(), getppid() );
359 killpg( getpid(), SIGTERM ); 347 killpg( getpid(), SIGTERM );
360 sleep( 1 ); 348 sleep( 1 );
361 killpg( getpid(), SIGKILL ); 349 killpg( getpid(), SIGKILL );
362#endif 350#endif
363 351
364 return retVal; 352 return retVal;
365} 353}
366 354