summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/desktop.cpp76
1 files changed, 38 insertions, 38 deletions
diff --git a/core/launcher/desktop.cpp b/core/launcher/desktop.cpp
index 1ec477c..5aba8dd 100644
--- a/core/launcher/desktop.cpp
+++ b/core/launcher/desktop.cpp
@@ -231,576 +231,576 @@ bool DesktopApplication::qwsEventFilter( QWSEvent *e )
231 /* menu key now opens application menu/toolbar 231 /* menu key now opens application menu/toolbar
232 if ( ke->simpleData.keycode == Key_F11 ) { 232 if ( ke->simpleData.keycode == Key_F11 ) {
233 if ( press ) emit menu(); 233 if ( press ) emit menu();
234 return TRUE; 234 return TRUE;
235 } 235 }
236 */ 236 */
237 if ( ke->simpleData.keycode == Key_F12 ) { 237 if ( ke->simpleData.keycode == Key_F12 ) {
238 while( activePopupWidget() ) 238 while( activePopupWidget() )
239 activePopupWidget()->close(); 239 activePopupWidget()->close();
240 if ( press ) emit launch(); 240 if ( press ) emit launch();
241 return TRUE; 241 return TRUE;
242 } 242 }
243 if ( ke->simpleData.keycode == Key_F13 ) { 243 if ( ke->simpleData.keycode == Key_F13 ) {
244 if ( press ) emit email(); 244 if ( press ) emit email();
245 return TRUE; 245 return TRUE;
246 } 246 }
247 } 247 }
248 248
249 if ( ke->simpleData.keycode == Key_F34 ) { 249 if ( ke->simpleData.keycode == Key_F34 ) {
250 if ( press ) emit power(); 250 if ( press ) emit power();
251 return TRUE; 251 return TRUE;
252 } 252 }
253// This was used for the iPAQ PowerButton 253// This was used for the iPAQ PowerButton
254// See main.cpp for new KeyboardFilter 254// See main.cpp for new KeyboardFilter
255// 255//
256// if ( ke->simpleData.keycode == Key_SysReq ) { 256// if ( ke->simpleData.keycode == Key_SysReq ) {
257// if ( press ) emit power(); 257// if ( press ) emit power();
258// return TRUE; 258// return TRUE;
259// } 259// }
260 if ( ke->simpleData.keycode == Key_F35 ) { 260 if ( ke->simpleData.keycode == Key_F35 ) {
261 if ( press ) emit backlight(); 261 if ( press ) emit backlight();
262 return TRUE; 262 return TRUE;
263 } 263 }
264 if ( ke->simpleData.keycode == Key_F32 ) { 264 if ( ke->simpleData.keycode == Key_F32 ) {
265 if ( press ) QCopEnvelope e( "QPE/Desktop", "startSync()" ); 265 if ( press ) QCopEnvelope e( "QPE/Desktop", "startSync()" );
266 return TRUE; 266 return TRUE;
267 } 267 }
268 if ( ke->simpleData.keycode == Key_F31 && !ke->simpleData.modifiers ) { 268 if ( ke->simpleData.keycode == Key_F31 && !ke->simpleData.modifiers ) {
269 if ( press ) emit symbol(); 269 if ( press ) emit symbol();
270 return TRUE; 270 return TRUE;
271 } 271 }
272 if ( ke->simpleData.keycode == Key_NumLock ) { 272 if ( ke->simpleData.keycode == Key_NumLock ) {
273 if ( press ) emit numLockStateToggle(); 273 if ( press ) emit numLockStateToggle();
274 } 274 }
275 if ( ke->simpleData.keycode == Key_CapsLock ) { 275 if ( ke->simpleData.keycode == Key_CapsLock ) {
276 if ( press ) emit capsLockStateToggle(); 276 if ( press ) emit capsLockStateToggle();
277 } 277 }
278 if (( press && !autoRepeat ) || ( !press && autoRepeat )) 278 if (( press && !autoRepeat ) || ( !press && autoRepeat ))
279 qpedesktop->keyClick(); 279 qpedesktop->keyClick();
280 } else { 280 } else {
281 if ( e->type == QWSEvent::Mouse ) { 281 if ( e->type == QWSEvent::Mouse ) {
282 QWSMouseEvent *me = (QWSMouseEvent *)e; 282 QWSMouseEvent *me = (QWSMouseEvent *)e;
283 static bool up = TRUE; 283 static bool up = TRUE;
284 if ( me->simpleData.state&LeftButton ) { 284 if ( me->simpleData.state&LeftButton ) {
285 if ( up ) { 285 if ( up ) {
286 up = FALSE; 286 up = FALSE;
287 qpedesktop->screenClick(); 287 qpedesktop->screenClick();
288 } 288 }
289 } else { 289 } else {
290 up = TRUE; 290 up = TRUE;
291 } 291 }
292 } 292 }
293 } 293 }
294 294
295 return QPEApplication::qwsEventFilter( e ); 295 return QPEApplication::qwsEventFilter( e );
296} 296}
297#endif 297#endif
298 298
299void DesktopApplication::psTimeout() 299void DesktopApplication::psTimeout()
300{ 300{
301 qpedesktop->checkMemory(); // in case no events are being generated 301 qpedesktop->checkMemory(); // in case no events are being generated
302 302
303 *ps = PowerStatusManager::readStatus(); 303 *ps = PowerStatusManager::readStatus();
304 304
305 if ( (ps->batteryStatus() == PowerStatus::VeryLow ) ) { 305 if ( (ps->batteryStatus() == PowerStatus::VeryLow ) ) {
306 pa->alert( tr( "Battery is running very low." ), 6 ); 306 pa->alert( tr( "Battery is running very low." ), 6 );
307 } 307 }
308 308
309 if ( ps->batteryStatus() == PowerStatus::Critical ) { 309 if ( ps->batteryStatus() == PowerStatus::Critical ) {
310 pa->alert( tr( "Battery level is critical!\n" 310 pa->alert( tr( "Battery level is critical!\n"
311 "Keep power off until power restored!" ), 1 ); 311 "Keep power off until power restored!" ), 1 );
312 } 312 }
313 313
314 if ( ps->backupBatteryStatus() == PowerStatus::VeryLow ) { 314 if ( ps->backupBatteryStatus() == PowerStatus::VeryLow ) {
315 pa->alert( tr( "The Back-up battery is very low.\nPlease charge the back-up battery." ), 3 ); 315 pa->alert( tr( "The Back-up battery is very low.\nPlease charge the back-up battery." ), 3 );
316 } 316 }
317} 317}
318 318
319 319
320void DesktopApplication::sendCard() 320void DesktopApplication::sendCard()
321{ 321{
322 delete cardSendTimer; 322 delete cardSendTimer;
323 cardSendTimer = 0; 323 cardSendTimer = 0;
324 QString card = getenv("HOME"); 324 QString card = getenv("HOME");
325 card += "/Applications/addressbook/businesscard.vcf"; 325 card += "/Applications/addressbook/businesscard.vcf";
326 326
327 if ( QFile::exists( card ) ) { 327 if ( QFile::exists( card ) ) {
328 QCopEnvelope e("QPE/Obex", "send(QString,QString,QString)"); 328 QCopEnvelope e("QPE/Obex", "send(QString,QString,QString)");
329 QString mimetype = "text/x-vCard"; 329 QString mimetype = "text/x-vCard";
330 e << tr("business card") << card << mimetype; 330 e << tr("business card") << card << mimetype;
331 } 331 }
332} 332}
333 333
334#if defined(QPE_HAVE_MEMALERTER) 334#if defined(QPE_HAVE_MEMALERTER)
335QPE_MEMALERTER_IMPL 335QPE_MEMALERTER_IMPL
336#endif 336#endif
337 337
338//=========================================================================== 338//===========================================================================
339 339
340Desktop::Desktop() : 340Desktop::Desktop() :
341 QWidget( 0, 0, WStyle_Tool | WStyle_Customize ), 341 QWidget( 0, 0, WStyle_Tool | WStyle_Customize ),
342 qcopBridge( 0 ), 342 qcopBridge( 0 ),
343 transferServer( 0 ), 343 transferServer( 0 ),
344 packageSlave( 0 ) 344 packageSlave( 0 )
345{ 345{
346 qpedesktop = this; 346 qpedesktop = this;
347 347
348// bg = new Info( this ); 348// bg = new Info( this );
349 tb = new TaskBar; 349 tb = new TaskBar;
350 350
351 launcher = new Launcher( 0, 0, WStyle_Customize | QWidget::WGroupLeader ); 351 launcher = new Launcher( 0, 0, WStyle_Customize | QWidget::WGroupLeader );
352 352
353 connect(launcher, SIGNAL(busy()), tb, SLOT(startWait())); 353 connect(launcher, SIGNAL(busy()), tb, SLOT(startWait()));
354 connect(launcher, SIGNAL(notBusy(const QString&)), tb, SLOT(stopWait(const QString&))); 354 connect(launcher, SIGNAL(notBusy(const QString&)), tb, SLOT(stopWait(const QString&)));
355 355
356 int displayw = qApp->desktop()->width(); 356 int displayw = qApp->desktop()->width();
357 int displayh = qApp->desktop()->height(); 357 int displayh = qApp->desktop()->height();
358 358
359 359
360 QSize sz = tb->sizeHint(); 360 QSize sz = tb->sizeHint();
361 361
362 setGeometry( 0, displayh-sz.height(), displayw, sz.height() ); 362 setGeometry( 0, displayh-sz.height(), displayw, sz.height() );
363 tb->setGeometry( 0, displayh-sz.height(), displayw, sz.height() ); 363 tb->setGeometry( 0, displayh-sz.height(), displayw, sz.height() );
364 364
365 tb->show(); 365 tb->show();
366 launcher->showMaximized(); 366 launcher->showMaximized();
367 launcher->show(); 367 launcher->show();
368 launcher->raise(); 368 launcher->raise();
369#if defined(QPE_HAVE_MEMALERTER) 369#if defined(QPE_HAVE_MEMALERTER)
370 initMemalerter(); 370 initMemalerter();
371#endif 371#endif
372 // start services 372 // start services
373 startTransferServer(); 373 startTransferServer();
374 (void) new IrServer( this ); 374 (void) new IrServer( this );
375 rereadVolumes(); 375 rereadVolumes();
376 376
377 packageSlave = new PackageSlave( this ); 377 packageSlave = new PackageSlave( this );
378 connect(qApp, SIGNAL(volumeChanged(bool)), this, SLOT(rereadVolumes())); 378 connect(qApp, SIGNAL(volumeChanged(bool)), this, SLOT(rereadVolumes()));
379 379
380 qApp->installEventFilter( this ); 380 qApp->installEventFilter( this );
381} 381}
382 382
383void Desktop::show() 383void Desktop::show()
384{ 384{
385 login(TRUE); 385 login(TRUE);
386 QWidget::show(); 386 QWidget::show();
387} 387}
388 388
389Desktop::~Desktop() 389Desktop::~Desktop()
390{ 390{
391 delete launcher; 391 delete launcher;
392 delete tb; 392 delete tb;
393 delete qcopBridge; 393 delete qcopBridge;
394 delete transferServer; 394 delete transferServer;
395} 395}
396 396
397bool Desktop::recoverMemory() 397bool Desktop::recoverMemory()
398{ 398{
399 return tb->recoverMemory(); 399 return tb->recoverMemory();
400} 400}
401 401
402void Desktop::checkMemory() 402void Desktop::checkMemory()
403{ 403{
404#if defined(QPE_HAVE_MEMALERTER) 404#if defined(QPE_HAVE_MEMALERTER)
405 static bool ignoreNormal=FALSE; 405 static bool ignoreNormal=FALSE;
406 static bool existingMessage=FALSE; 406 static bool existingMessage=FALSE;
407 407
408 if(existingMessage) 408 if(existingMessage)
409 return; // don't show a second message while still on first 409 return; // don't show a second message while still on first
410 410
411 existingMessage = TRUE; 411 existingMessage = TRUE;
412 switch ( memstate ) { 412 switch ( memstate ) {
413 case Unknown: 413 case Unknown:
414 break; 414 break;
415 case Low: 415 case Low:
416 memstate = Unknown; 416 memstate = Unknown;
417 if ( recoverMemory() ) 417 if ( recoverMemory() )
418 ignoreNormal = TRUE; 418 ignoreNormal = TRUE;
419 else 419 else
420 QMessageBox::warning( 0 , "Memory Status", 420 QMessageBox::warning( 0 , "Memory Status",
421 "The memory smacks of shortage. \n" 421 "The memory smacks of shortage. \n"
422 "Please save data. " ); 422 "Please save data. " );
423 break; 423 break;
424 case Normal: 424 case Normal:
425 memstate = Unknown; 425 memstate = Unknown;
426 if ( ignoreNormal ) 426 if ( ignoreNormal )
427 ignoreNormal = FALSE; 427 ignoreNormal = FALSE;
428 else 428 else
429 QMessageBox::information ( 0 , "Memory Status", 429 QMessageBox::information ( 0 , "Memory Status",
430 "There is enough memory again." ); 430 "There is enough memory again." );
431 break; 431 break;
432 case VeryLow: 432 case VeryLow:
433 memstate = Unknown; 433 memstate = Unknown;
434 QMessageBox::critical( 0 , "Memory Status", 434 QMessageBox::critical( 0 , "Memory Status",
435 "The memory is very low. \n" 435 "The memory is very low. \n"
436 "Please end this application \n" 436 "Please end this application \n"
437 "immediately." ); 437 "immediately." );
438 recoverMemory(); 438 recoverMemory();
439 } 439 }
440 existingMessage = FALSE; 440 existingMessage = FALSE;
441#endif 441#endif
442} 442}
443 443
444static bool isVisibleWindow(int wid) 444static bool isVisibleWindow(int wid)
445{ 445{
446 const QList<QWSWindow> &list = qwsServer->clientWindows(); 446 const QList<QWSWindow> &list = qwsServer->clientWindows();
447 QWSWindow* w; 447 QWSWindow* w;
448 for (QListIterator<QWSWindow> it(list); (w=it.current()); ++it) { 448 for (QListIterator<QWSWindow> it(list); (w=it.current()); ++it) {
449 if ( w->winId() == wid ) 449 if ( w->winId() == wid )
450 return !w->isFullyObscured(); 450 return !w->isFullyObscured();
451 } 451 }
452 return FALSE; 452 return FALSE;
453} 453}
454 454
455static bool hasVisibleWindow(const QString& clientname) 455static bool hasVisibleWindow(const QString& clientname)
456{ 456{
457 const QList<QWSWindow> &list = qwsServer->clientWindows(); 457 const QList<QWSWindow> &list = qwsServer->clientWindows();
458 QWSWindow* w; 458 QWSWindow* w;
459 for (QListIterator<QWSWindow> it(list); (w=it.current()); ++it) { 459 for (QListIterator<QWSWindow> it(list); (w=it.current()); ++it) {
460 if ( w->client()->identity() == clientname && !w->isFullyObscured() ) 460 if ( w->client()->identity() == clientname && !w->isFullyObscured() )
461 return TRUE; 461 return TRUE;
462 } 462 }
463 return FALSE; 463 return FALSE;
464} 464}
465 465
466void Desktop::raiseLauncher() 466void Desktop::raiseLauncher()
467{ 467{
468 Config cfg("qpe"); //F12 'Home' 468 Config cfg("qpe"); //F12 'Home'
469 cfg.setGroup("AppsKey"); 469 cfg.setGroup("AppsKey");
470 QString tempItem; 470 QString tempItem;
471 tempItem = cfg.readEntry("Middle","Home"); 471 tempItem = cfg.readEntry("Middle","Home");
472 if(tempItem == "Home" || tempItem.isEmpty()) { 472 if(tempItem == "Home" || tempItem.isEmpty()) {
473 if ( isVisibleWindow(launcher->winId()) ) 473 if ( isVisibleWindow(launcher->winId()) )
474 launcher->nextView(); 474 launcher->nextView();
475 else 475 else
476 launcher->raise(); 476 launcher->raise();
477 } else { 477 } else {
478 QCopEnvelope e("QPE/System","execute(QString)"); 478 QCopEnvelope e("QPE/System","execute(QString)");
479 e << tempItem; 479 e << tempItem;
480 } 480 }
481} 481}
482 482
483void Desktop::executeOrModify(const QString& appLnkFile) 483void Desktop::executeOrModify(const QString& appLnkFile)
484{ 484{
485 AppLnk lnk(MimeType::appsFolderName() + "/" + appLnkFile); 485 AppLnk lnk(MimeType::appsFolderName() + "/" + appLnkFile);
486 if ( lnk.isValid() ) { 486 if ( lnk.isValid() ) {
487 QCString app = lnk.exec().utf8(); 487 QCString app = lnk.exec().utf8();
488 Global::terminateBuiltin("calibrate"); 488 Global::terminateBuiltin("calibrate");
489 if ( QCopChannel::isRegistered("QPE/Application/" + app) ) { 489 if ( QCopChannel::isRegistered("QPE/Application/" + app) ) {
490 MRUList::addTask(&lnk); 490 MRUList::addTask(&lnk);
491 if ( hasVisibleWindow(app) ) 491 if ( hasVisibleWindow(app) )
492 QCopChannel::send("QPE/Application/" + app, "nextView()"); 492 QCopChannel::send("QPE/Application/" + app, "nextView()");
493 else 493 else
494 QCopChannel::send("QPE/Application/" + app, "raise()"); 494 QCopChannel::send("QPE/Application/" + app, "raise()");
495 } else { 495 } else {
496 lnk.execute(); 496 lnk.execute();
497 } 497 }
498 } 498 }
499} 499}
500 500
501void Desktop::raiseDatebook() 501void Desktop::raiseDatebook()
502{ 502{
503 Config cfg("qpe"); //F9 'Activity' 503 Config cfg( "qpe" ); //F9 'Activity'
504 cfg.setGroup("AppsKey"); 504 cfg.setGroup( "AppsKey" );
505 QString tempItem; 505 QString tempItem;
506 tempItem = cfg.readEntry("LeftEnd","Calender"); 506 tempItem = cfg.readEntry( "LeftEnd" , "Calender" );
507 if(tempItem == "Calender" || tempItem.isEmpty()) executeOrModify("Applications/datebook.desktop"); 507 if ( tempItem == "Calender" || tempItem.isEmpty() ) {
508 else { 508 tempItem = "datebook";
509 QCopEnvelope e("QPE/System","execute(QString)");
510 e << tempItem;
511 } 509 }
510 QCopEnvelope e( "QPE/System", "execute(QString)" );
511 e << tempItem;
512} 512}
513 513
514void Desktop::raiseContacts() 514void Desktop::raiseContacts()
515{ 515{
516 Config cfg("qpe"); //F10, 'Contacts' 516 Config cfg( "qpe" ); //F10, 'Contacts'
517 cfg.setGroup("AppsKey"); 517 cfg.setGroup( "AppsKey" );
518 QString tempItem; 518 QString tempItem;
519 tempItem = cfg.readEntry("Left2nd","Address Book"); 519 tempItem = cfg.readEntry( "Left2nd", "Address Book" );
520 if(tempItem == "Address Book" || tempItem.isEmpty()) executeOrModify("Applications/addressbook.desktop"); 520 if ( tempItem == "Address Book" || tempItem.isEmpty() ) {
521 else { 521 tempItem = "addressbook";
522 QCopEnvelope e("QPE/System","execute(QString)");
523 e << tempItem;
524 } 522 }
523 QCopEnvelope e("QPE/System","execute(QString)");
524 e << tempItem;
525} 525}
526 526
527void Desktop::raiseMenu() 527void Desktop::raiseMenu()
528{ 528{
529 Config cfg("qpe"); //F11, 'Menu' 529 Config cfg( "qpe" ); //F11, 'Menu
530 cfg.setGroup("AppsKey"); 530 cfg.setGroup( "AppsKey" );
531 QString tempItem; 531 QString tempItem;
532 tempItem = cfg.readEntry("Right2nd","Popup Menu"); 532 tempItem = cfg.readEntry( "Right2nd" , "Popup Menu" );
533 if(tempItem == "Popup Menu" || tempItem.isEmpty()) { 533 if ( tempItem == "Popup Menu" || tempItem.isEmpty() ) {
534 Global::terminateBuiltin("calibrate"); 534 Global::terminateBuiltin("calibrate");
535 tb->startMenu()->launch(); 535 tb->startMenu()->launch();
536 } else { 536 } else {
537 QCopEnvelope e("QPE/System","execute(QString)"); 537 QCopEnvelope e("QPE/System","execute(QString)");
538 e << tempItem; 538 e << tempItem;
539 } 539 }
540} 540}
541 541
542void Desktop::raiseEmail() 542void Desktop::raiseEmail()
543{ 543{
544 Config cfg("qpe"); //F13, 'Mail' 544 Config cfg( "qpe" ); //F13, 'Mail'
545 cfg.setGroup("AppsKey"); 545 cfg.setGroup( "AppsKey" );
546 QString tempItem; 546 QString tempItem;
547 tempItem = cfg.readEntry("RightEnd","Mail"); 547 tempItem = cfg.readEntry( "RightEnd", "Mail" );
548 if(tempItem == "Mail" || tempItem == "qtmail" || tempItem.isEmpty()) executeOrModify("Applications/qtmail.desktop"); 548 if ( tempItem == "Mail" || tempItem == "qtmail" || tempItem.isEmpty() ) {
549 else { 549 tempItem = "mail";
550 QCopEnvelope e("QPE/System","execute(QString)");
551 e << tempItem;
552 } 550 }
551 QCopEnvelope e("QPE/System","execute(QString)");
552 e << tempItem;
553} 553}
554 554
555// autoStarts apps on resume and start 555// autoStarts apps on resume and start
556void Desktop::execAutoStart() { 556void Desktop::execAutoStart() {
557 QString appName; 557 QString appName;
558 int delay; 558 int delay;
559 QDateTime now = QDateTime::currentDateTime(); 559 QDateTime now = QDateTime::currentDateTime();
560 Config cfg( "autostart" ); 560 Config cfg( "autostart" );
561 cfg.setGroup( "AutoStart" ); 561 cfg.setGroup( "AutoStart" );
562 appName = cfg.readEntry( "Apps", "" ); 562 appName = cfg.readEntry( "Apps", "" );
563 delay = ( cfg.readEntry( "Delay", "0" ) ).toInt(); 563 delay = ( cfg.readEntry( "Delay", "0" ) ).toInt();
564 // If the time between suspend and resume was longer then the 564 // If the time between suspend and resume was longer then the
565 // value saved as delay, start the app 565 // value saved as delay, start the app
566 if ( suspendTime.secsTo( now ) >= ( delay * 60 ) && !appName.isEmpty() ) { 566 if ( suspendTime.secsTo( now ) >= ( delay * 60 ) && !appName.isEmpty() ) {
567 QCopEnvelope e( "QPE/System", "execute(QString)" ); 567 QCopEnvelope e( "QPE/System", "execute(QString)" );
568 e << QString( appName ); 568 e << QString( appName );
569 } 569 }
570} 570}
571 571
572#if defined(QPE_HAVE_TOGGLELIGHT) 572#if defined(QPE_HAVE_TOGGLELIGHT)
573#include <qpe/config.h> 573#include <qpe/config.h>
574 574
575#include <sys/ioctl.h> 575#include <sys/ioctl.h>
576#include <sys/types.h> 576#include <sys/types.h>
577#include <fcntl.h> 577#include <fcntl.h>
578#include <unistd.h> 578#include <unistd.h>
579#include <errno.h> 579#include <errno.h>
580#include <linux/ioctl.h> 580#include <linux/ioctl.h>
581#include <time.h> 581#include <time.h>
582#endif 582#endif
583 583
584static bool blanked=FALSE; 584static bool blanked=FALSE;
585 585
586static void blankScreen() 586static void blankScreen()
587{ 587{
588 if ( !qt_screen ) return; 588 if ( !qt_screen ) return;
589 /* Should use a big black window instead. 589 /* Should use a big black window instead.
590 QGfx* g = qt_screen->screenGfx(); 590 QGfx* g = qt_screen->screenGfx();
591 g->fillRect(0,0,qt_screen->width(),qt_screen->height()); 591 g->fillRect(0,0,qt_screen->width(),qt_screen->height());
592 delete g; 592 delete g;
593 */ 593 */
594 blanked = TRUE; 594 blanked = TRUE;
595} 595}
596 596
597static void darkScreen() 597static void darkScreen()
598{ 598{
599 extern void qpe_setBacklight(int); 599 extern void qpe_setBacklight(int);
600 qpe_setBacklight(0); // force off 600 qpe_setBacklight(0); // force off
601} 601}
602 602
603 603
604void Desktop::togglePower() 604void Desktop::togglePower()
605{ 605{
606 extern void qpe_setBacklight ( int ); // We need to toggle the LCD fast - no time to send a QCop 606 extern void qpe_setBacklight ( int ); // We need to toggle the LCD fast - no time to send a QCop
607 607
608 static bool excllock = false; 608 static bool excllock = false;
609 609
610 if ( excllock ) 610 if ( excllock )
611 return; 611 return;
612 612
613 excllock = true; 613 excllock = true;
614 614
615 bool wasloggedin = loggedin; 615 bool wasloggedin = loggedin;
616 loggedin=0; 616 loggedin=0;
617 suspendTime = QDateTime::currentDateTime(); 617 suspendTime = QDateTime::currentDateTime();
618 618
619 //qpe_setBacklight ( 0 ); // force LCD off (sandman: why ????) 619 //qpe_setBacklight ( 0 ); // force LCD off (sandman: why ????)
620 620
621 if ( wasloggedin ) 621 if ( wasloggedin )
622 blankScreen(); 622 blankScreen();
623 623
624 ODevice::inst ( )-> suspend ( ); 624 ODevice::inst ( )-> suspend ( );
625 625
626 QWSServer::screenSaverActivate ( false ); 626 QWSServer::screenSaverActivate ( false );
627 627
628 qpe_setBacklight ( -3 ); // force LCD on 628 qpe_setBacklight ( -3 ); // force LCD on
629 629
630 { 630 {
631 QCopEnvelope("QPE/Card", "mtabChanged()" ); // might have changed while asleep 631 QCopEnvelope("QPE/Card", "mtabChanged()" ); // might have changed while asleep
632 } 632 }
633 633
634 if ( wasloggedin ) 634 if ( wasloggedin )
635 login(TRUE); 635 login(TRUE);
636 636
637 execAutoStart(); 637 execAutoStart();
638 //qcopBridge->closeOpenConnections(); 638 //qcopBridge->closeOpenConnections();
639 639
640 excllock = false; 640 excllock = false;
641} 641}
642 642
643void Desktop::toggleLight() 643void Desktop::toggleLight()
644{ 644{
645 QCopEnvelope e("QPE/System", "setBacklight(int)"); 645 QCopEnvelope e("QPE/System", "setBacklight(int)");
646 e << -2; // toggle 646 e << -2; // toggle
647} 647}
648 648
649void Desktop::toggleSymbolInput() 649void Desktop::toggleSymbolInput()
650{ 650{
651 tb->toggleSymbolInput(); 651 tb->toggleSymbolInput();
652} 652}
653 653
654void Desktop::toggleNumLockState() 654void Desktop::toggleNumLockState()
655{ 655{
656 tb->toggleNumLockState(); 656 tb->toggleNumLockState();
657} 657}
658 658
659void Desktop::toggleCapsLockState() 659void Desktop::toggleCapsLockState()
660{ 660{
661 tb->toggleCapsLockState(); 661 tb->toggleCapsLockState();
662} 662}
663 663
664void Desktop::styleChange( QStyle &s ) 664void Desktop::styleChange( QStyle &s )
665{ 665{
666 QWidget::styleChange( s ); 666 QWidget::styleChange( s );
667 int displayw = qApp->desktop()->width(); 667 int displayw = qApp->desktop()->width();
668 int displayh = qApp->desktop()->height(); 668 int displayh = qApp->desktop()->height();
669 669
670 QSize sz = tb->sizeHint(); 670 QSize sz = tb->sizeHint();
671 671
672 tb->setGeometry( 0, displayh-sz.height(), displayw, sz.height() ); 672 tb->setGeometry( 0, displayh-sz.height(), displayw, sz.height() );
673} 673}
674 674
675void DesktopApplication::shutdown() 675void DesktopApplication::shutdown()
676{ 676{
677 if ( type() != GuiServer ) 677 if ( type() != GuiServer )
678 return; 678 return;
679 ShutdownImpl *sd = new ShutdownImpl( 0, 0, WDestructiveClose ); 679 ShutdownImpl *sd = new ShutdownImpl( 0, 0, WDestructiveClose );
680 connect( sd, SIGNAL(shutdown(ShutdownImpl::Type)), 680 connect( sd, SIGNAL(shutdown(ShutdownImpl::Type)),
681 this, SLOT(shutdown(ShutdownImpl::Type)) ); 681 this, SLOT(shutdown(ShutdownImpl::Type)) );
682 sd->showMaximized(); 682 sd->showMaximized();
683} 683}
684 684
685void DesktopApplication::shutdown( ShutdownImpl::Type t ) 685void DesktopApplication::shutdown( ShutdownImpl::Type t )
686{ 686{
687 switch ( t ) { 687 switch ( t ) {
688 case ShutdownImpl::ShutdownSystem: 688 case ShutdownImpl::ShutdownSystem:
689 execlp("shutdown", "shutdown", "-h", "now", (void*)0); 689 execlp("shutdown", "shutdown", "-h", "now", (void*)0);
690 break; 690 break;
691 case ShutdownImpl::RebootSystem: 691 case ShutdownImpl::RebootSystem:
692 execlp("shutdown", "shutdown", "-r", "now", (void*)0); 692 execlp("shutdown", "shutdown", "-r", "now", (void*)0);
693 break; 693 break;
694 case ShutdownImpl::RestartDesktop: 694 case ShutdownImpl::RestartDesktop:
695 restart(); 695 restart();
696 break; 696 break;
697 case ShutdownImpl::TerminateDesktop: 697 case ShutdownImpl::TerminateDesktop:
698 prepareForTermination(FALSE); 698 prepareForTermination(FALSE);
699 699
700 // This is a workaround for a Qt bug 700 // This is a workaround for a Qt bug
701 // clipboard applet has to stop its poll timer, or Qt/E 701 // clipboard applet has to stop its poll timer, or Qt/E
702 // will hang on quit() right before it emits aboutToQuit() 702 // will hang on quit() right before it emits aboutToQuit()
703 emit aboutToQuit ( ); 703 emit aboutToQuit ( );
704 704
705 quit(); 705 quit();
706 break; 706 break;
707 } 707 }
708} 708}
709 709
710void DesktopApplication::restart() 710void DesktopApplication::restart()
711{ 711{
712 prepareForTermination(TRUE); 712 prepareForTermination(TRUE);
713 713
714#ifdef Q_WS_QWS 714#ifdef Q_WS_QWS
715 for ( int fd = 3; fd < 100; fd++ ) 715 for ( int fd = 3; fd < 100; fd++ )
716 close( fd ); 716 close( fd );
717#if defined(QT_DEMO_SINGLE_FLOPPY) 717#if defined(QT_DEMO_SINGLE_FLOPPY)
718 execl( "/sbin/init", "qpe", 0 ); 718 execl( "/sbin/init", "qpe", 0 );
719#elif defined(QT_QWS_CASSIOPEIA) 719#elif defined(QT_QWS_CASSIOPEIA)
720 execl( "/bin/sh", "sh", 0 ); 720 execl( "/bin/sh", "sh", 0 );
721#else 721#else
722 execl( (qpeDir()+"/bin/qpe").latin1(), "qpe", 0 ); 722 execl( (qpeDir()+"/bin/qpe").latin1(), "qpe", 0 );
723#endif 723#endif
724 exit(1); 724 exit(1);
725#endif 725#endif
726} 726}
727 727
728void Desktop::startTransferServer() 728void Desktop::startTransferServer()
729{ 729{
730 // start qcop bridge server 730 // start qcop bridge server
731 qcopBridge = new QCopBridge( 4243 ); 731 qcopBridge = new QCopBridge( 4243 );
732 if ( !qcopBridge->ok() ) { 732 if ( !qcopBridge->ok() ) {
733 delete qcopBridge; 733 delete qcopBridge;
734 qcopBridge = 0; 734 qcopBridge = 0;
735 } 735 }
736 // start transfer server 736 // start transfer server
737 transferServer = new TransferServer( 4242 ); 737 transferServer = new TransferServer( 4242 );
738 if ( !transferServer->ok() ) { 738 if ( !transferServer->ok() ) {
739 delete transferServer; 739 delete transferServer;
740 transferServer = 0; 740 transferServer = 0;
741 } 741 }
742 if ( !transferServer || !qcopBridge ) 742 if ( !transferServer || !qcopBridge )
743 startTimer( 2000 ); 743 startTimer( 2000 );
744} 744}
745 745
746void Desktop::timerEvent( QTimerEvent *e ) 746void Desktop::timerEvent( QTimerEvent *e )
747{ 747{
748 killTimer( e->timerId() ); 748 killTimer( e->timerId() );
749 startTransferServer(); 749 startTransferServer();
750} 750}
751 751
752void Desktop::terminateServers() 752void Desktop::terminateServers()
753{ 753{
754 delete transferServer; 754 delete transferServer;
755 delete qcopBridge; 755 delete qcopBridge;
756 transferServer = 0; 756 transferServer = 0;
757 qcopBridge = 0; 757 qcopBridge = 0;
758} 758}
759 759
760void Desktop::rereadVolumes() 760void Desktop::rereadVolumes()
761{ 761{
762 Config cfg("qpe"); 762 Config cfg("qpe");
763 cfg.setGroup("Volume"); 763 cfg.setGroup("Volume");
764 touchclick = cfg.readBoolEntry("TouchSound"); 764 touchclick = cfg.readBoolEntry("TouchSound");
765 keyclick = cfg.readBoolEntry("KeySound"); 765 keyclick = cfg.readBoolEntry("KeySound");
766 alarmsound = cfg.readBoolEntry("AlarmSound"); 766 alarmsound = cfg.readBoolEntry("AlarmSound");
767// Config cfg("Sound"); 767// Config cfg("Sound");
768// cfg.setGroup("System"); 768// cfg.setGroup("System");
769// touchclick = cfg.readBoolEntry("Touch"); 769// touchclick = cfg.readBoolEntry("Touch");
770// keyclick = cfg.readBoolEntry("Key"); 770// keyclick = cfg.readBoolEntry("Key");
771} 771}
772 772
773void Desktop::keyClick() 773void Desktop::keyClick()
774{ 774{
775 if ( keyclick ) 775 if ( keyclick )
776 ODevice::inst ( )-> keySound ( ); 776 ODevice::inst ( )-> keySound ( );
777} 777}
778 778
779void Desktop::screenClick() 779void Desktop::screenClick()
780{ 780{
781 if ( touchclick ) 781 if ( touchclick )
782 ODevice::inst ( )-> touchSound ( ); 782 ODevice::inst ( )-> touchSound ( );
783} 783}
784 784
785void Desktop::soundAlarm() 785void Desktop::soundAlarm()
786{ 786{
787 if ( qpedesktop-> alarmsound ) 787 if ( qpedesktop-> alarmsound )
788 ODevice::inst ( )-> alarmSound ( ); 788 ODevice::inst ( )-> alarmSound ( );
789} 789}
790 790
791bool Desktop::eventFilter( QObject *, QEvent *ev ) 791bool Desktop::eventFilter( QObject *, QEvent *ev )
792{ 792{
793 if ( ev-> type ( ) == QEvent::KeyPress ) { 793 if ( ev-> type ( ) == QEvent::KeyPress ) {
794 QKeyEvent *ke = (QKeyEvent *) ev; 794 QKeyEvent *ke = (QKeyEvent *) ev;
795 if ( ke-> key ( ) == Qt::Key_F11 ) { // menu key 795 if ( ke-> key ( ) == Qt::Key_F11 ) { // menu key
796 QWidget *active = qApp-> activeWindow ( ); 796 QWidget *active = qApp-> activeWindow ( );
797 797
798 if ( active && active-> isPopup ( )) 798 if ( active && active-> isPopup ( ))
799 active->close(); 799 active->close();
800 800
801 raiseMenu ( ); 801 raiseMenu ( );
802 return true; 802 return true;
803 } 803 }
804 } 804 }
805 return false; 805 return false;
806} 806}