summaryrefslogtreecommitdiff
path: root/library
authorharlekin <harlekin>2002-08-15 18:34:42 (UTC)
committer harlekin <harlekin>2002-08-15 18:34:42 (UTC)
commit8cd40434c7011022a8e1706698e5c5075681bd1e (patch) (unidiff)
tree74e8634c40c1b35cdf32620d219d3a98ec3e2ded /library
parentfc0f625393128d47ef4e2baef4dfcdbe48a18ca7 (diff)
downloadopie-8cd40434c7011022a8e1706698e5c5075681bd1e.zip
opie-8cd40434c7011022a8e1706698e5c5075681bd1e.tar.gz
opie-8cd40434c7011022a8e1706698e5c5075681bd1e.tar.bz2
applied hashs patch
Diffstat (limited to 'library') (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpeapplication.cpp76
1 files changed, 41 insertions, 35 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index 187a7e2..8448352 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -442,148 +442,148 @@ public:
442}; 442};
443 443
444static int ssi( int interval, Config & config, const QString & enable, const QString & value, int def ) 444static int ssi( int interval, Config & config, const QString & enable, const QString & value, int def )
445{ 445{
446 if ( !enable.isEmpty() && config.readNumEntry( enable, 0 ) == 0 ) 446 if ( !enable.isEmpty() && config.readNumEntry( enable, 0 ) == 0 )
447 return 0; 447 return 0;
448 448
449 if ( interval < 0 ) { 449 if ( interval < 0 ) {
450 // Restore screen blanking and power saving state 450 // Restore screen blanking and power saving state
451 interval = config.readNumEntry( value, def ); 451 interval = config.readNumEntry( value, def );
452 } 452 }
453 return interval; 453 return interval;
454} 454}
455 455
456static void setScreenSaverIntervals( int i1, int i2, int i3 ) 456static void setScreenSaverIntervals( int i1, int i2, int i3 )
457{ 457{
458 Config config( "qpe" ); 458 Config config( "qpe" );
459 config.setGroup( "Screensaver" ); 459 config.setGroup( "Screensaver" );
460 460
461 int v[ 4 ]; 461 int v[ 4 ];
462 i1 = ssi( i1, config, "Dim", "Interval_Dim", 30 ); 462 i1 = ssi( i1, config, "Dim", "Interval_Dim", 30 );
463 i2 = ssi( i2, config, "LightOff", "Interval_LightOff", 20 ); 463 i2 = ssi( i2, config, "LightOff", "Interval_LightOff", 20 );
464 i3 = ssi( i3, config, "", "Interval", 60 ); 464 i3 = ssi( i3, config, "", "Interval", 60 );
465 465
466 //qDebug("screen saver intervals: %d %d %d", i1, i2, i3); 466 //qDebug("screen saver intervals: %d %d %d", i1, i2, i3);
467 467
468 v[ 0 ] = QMAX( 1000 * i1, 100 ); 468 v[ 0 ] = QMAX( 1000 * i1, 100 );
469 v[ 1 ] = QMAX( 1000 * i2, 100 ); 469 v[ 1 ] = QMAX( 1000 * i2, 100 );
470 v[ 2 ] = QMAX( 1000 * i3, 100 ); 470 v[ 2 ] = QMAX( 1000 * i3, 100 );
471 v[ 3 ] = 0; 471 v[ 3 ] = 0;
472 dim_on = ( ( i1 != 0 ) ? config.readNumEntry( "Dim", 1 ) : FALSE ); 472 dim_on = ( ( i1 != 0 ) ? config.readNumEntry( "Dim", 1 ) : FALSE );
473 lightoff_on = ( ( i2 != 0 ) ? config.readNumEntry( "LightOff", 1 ) : FALSE ); 473 lightoff_on = ( ( i2 != 0 ) ? config.readNumEntry( "LightOff", 1 ) : FALSE );
474 if ( !i1 && !i2 && !i3 ) 474 if ( !i1 && !i2 && !i3 )
475 QWSServer::setScreenSaverInterval( 0 ); 475 QWSServer::setScreenSaverInterval( 0 );
476 else 476 else
477 QWSServer::setScreenSaverIntervals( v ); 477 QWSServer::setScreenSaverIntervals( v );
478} 478}
479 479
480static void setScreenSaverInterval( int interval ) 480static void setScreenSaverInterval( int interval )
481{ 481{
482 setScreenSaverIntervals( -1, -1, interval ); 482 setScreenSaverIntervals( -1, -1, interval );
483} 483}
484 484
485 485
486/*! 486/*!
487 \class QPEApplication qpeapplication.h 487 \class QPEApplication qpeapplication.h
488 \brief The QPEApplication class implements various system services 488 \brief The QPEApplication class implements various system services
489 that are available to all Qtopia applications. 489 that are available to all Qtopia applications.
490 490
491 Simply by using QPEApplication instead of QApplication, a plain Qt 491 Simply by using QPEApplication instead of QApplication, a plain Qt
492 application becomes a Qtopia application. It automatically follows 492 application becomes a Qtopia application. It automatically follows
493 style changes, quits and raises, and in the 493 style changes, quits and raises, and in the
494 case of \link docwidget.html document-oriented\endlink applications, 494 case of \link docwidget.html document-oriented\endlink applications,
495 changes the current displayed document in response to the environment. 495 changes the current displayed document in response to the environment.
496*/ 496*/
497 497
498/*! 498/*!
499 \fn void QPEApplication::clientMoused() 499 \fn void QPEApplication::clientMoused()
500 500
501 \internal 501 \internal
502*/ 502*/
503 503
504/*! 504/*!
505 \fn void QPEApplication::timeChanged(); 505 \fn void QPEApplication::timeChanged();
506 506
507 This signal is emitted when the time jumps forward or backwards 507 This signal is emitted when the time jumps forward or backwards
508 by more than the normal passage of time. 508 by more than the normal passage of time.
509*/ 509*/
510 510
511/*! 511/*!
512 \fn void QPEApplication::clockChanged( bool ampm ); 512 \fn void QPEApplication::clockChanged( bool ampm );
513 513
514 This signal is emitted when the user changes the style 514 This signal is emitted when the user changes the style
515 of clock. If \a ampm is TRUE, the user wants a 12-hour 515 of clock. If \a ampm is TRUE, the user wants a 12-hour
516 AM/PM close, otherwise, they want a 24-hour clock. 516 AM/PM close, otherwise, they want a 24-hour clock.
517*/ 517*/
518 518
519/*! 519/*!
520 \fn void QPEApplication::appMessage( const QCString& msg, const QByteArray& data ) 520 \fn void QPEApplication::appMessage( const QCString& msg, const QByteArray& data )
521 521
522 This signal is emitted when a message is received on the 522 This signal is emitted when a message is received on the
523 QPE/Application/<i>appname</i> QCop channel for this application. 523 QPE/Application/<i>appname</i> QCop channel for this application.
524 524
525 The slot to which you connect this signal uses \a msg and \a data 525 The slot to which you connect this signal uses \a msg and \a data
526 in the following way: 526 in the following way:
527 527
528\code 528\code
529 void MyWidget::receive( const QCString& msg, const QByteArray& data ) 529 void MyWidget::receive( const QCString& msg, const QByteArray& data )
530 { 530 {
531 QDataStream stream( data, IO_ReadOnly ); 531 QDataStream stream( data, IO_ReadOnly );
532 if ( msg == "someMessage(int,int,int)" ) { 532 if ( msg == "someMessage(int,int,int)" ) {
533 int a,b,c; 533 int a,b,c;
534 stream >> a >> b >> c; 534 stream >> a >> b >> c;
535 ... 535 ...
536 } else if ( msg == "otherMessage(QString)" ) { 536 } else if ( msg == "otherMessage(QString)" ) {
537 ... 537 ...
538 } 538 }
539 } 539 }
540\endcode 540\endcode
541 541
542 \sa qcop.html 542 \sa qcop.html
543*/ 543*/
544 544
545/*! 545/*!
546 Constructs a QPEApplication just as you would construct 546 Constructs a QPEApplication just as you would construct
547 a QApplication, passing \a argc, \a argv, and \a t. 547 a QApplication, passing \a argc, \a argv, and \a t.
548*/ 548*/
549QPEApplication::QPEApplication( int & argc, char **argv, Type t ) 549QPEApplication::QPEApplication( int & argc, char **argv, Type t )
550 : QApplication( hack( argc ), argv, t ) 550 : QApplication( hack( argc ), argv, t )
551{ 551{
552 int dw = desktop() ->width(); 552 int dw = desktop() ->width();
553 if ( dw < 200 ) { 553 if ( dw < 200 ) {
554 // setFont( QFont( "helvetica", 8 ) ); 554 // setFont( QFont( "helvetica", 8 ) );
555 AppLnk::setSmallIconSize( 10 ); 555 AppLnk::setSmallIconSize( 10 );
556 AppLnk::setBigIconSize( 28 ); 556 AppLnk::setBigIconSize( 28 );
557 } 557 }
558 558
559 d = new QPEApplicationData; 559 d = new QPEApplicationData;
560 QMimeSourceFactory::setDefaultFactory( new ResourceMimeFactory ); 560 QMimeSourceFactory::setDefaultFactory( new ResourceMimeFactory );
561 561
562 connect( this, SIGNAL( lastWindowClosed() ), this, SLOT( hideOrQuit() ) ); 562 connect( this, SIGNAL( lastWindowClosed() ), this, SLOT( hideOrQuit() ) );
563#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 563#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
564 564
565 QString qcopfn( "/tmp/qcop-msg-" ); 565 QString qcopfn( "/tmp/qcop-msg-" );
566 qcopfn += QString( argv[ 0 ] ); // append command name 566 qcopfn += QString( argv[ 0 ] ); // append command name
567 567
568 QFile f( qcopfn ); 568 QFile f( qcopfn );
569 if ( f.open( IO_ReadOnly ) ) { 569 if ( f.open( IO_ReadOnly ) ) {
570 flock( f.handle(), LOCK_EX ); 570 flock( f.handle(), LOCK_EX );
571 } 571 }
572 572
573 sysChannel = new QCopChannel( "QPE/System", this ); 573 sysChannel = new QCopChannel( "QPE/System", this );
574 connect( sysChannel, SIGNAL( received( const QCString &, const QByteArray & ) ), 574 connect( sysChannel, SIGNAL( received( const QCString &, const QByteArray & ) ),
575 this, SLOT( systemMessage( const QCString &, const QByteArray & ) ) ); 575 this, SLOT( systemMessage( const QCString &, const QByteArray & ) ) );
576 576
577 QCString channel = QCString( argv[ 0 ] ); 577 QCString channel = QCString( argv[ 0 ] );
578 channel.replace( QRegExp( ".*/" ), "" ); 578 channel.replace( QRegExp( ".*/" ), "" );
579 d->appName = channel; 579 d->appName = channel;
580 channel = "QPE/Application/" + channel; 580 channel = "QPE/Application/" + channel;
581 pidChannel = new QCopChannel( channel, this ); 581 pidChannel = new QCopChannel( channel, this );
582 connect( pidChannel, SIGNAL( received( const QCString &, const QByteArray & ) ), 582 connect( pidChannel, SIGNAL( received( const QCString &, const QByteArray & ) ),
583 this, SLOT( pidMessage( const QCString &, const QByteArray & ) ) ); 583 this, SLOT( pidMessage( const QCString &, const QByteArray & ) ) );
584 584
585 if ( f.isOpen() ) { 585 if ( f.isOpen() ) {
586 d->keep_running = FALSE; 586 d->keep_running = FALSE;
587 QDataStream ds( &f ); 587 QDataStream ds( &f );
588 QCString channel, message; 588 QCString channel, message;
589 QByteArray data; 589 QByteArray data;
@@ -598,168 +598,174 @@ QPEApplication::QPEApplication( int & argc, char **argv, Type t )
598 } 598 }
599 599
600 for ( int a = 0; a < argc; a++ ) { 600 for ( int a = 0; a < argc; a++ ) {
601 if ( qstrcmp( argv[ a ], "-preload" ) == 0 ) { 601 if ( qstrcmp( argv[ a ], "-preload" ) == 0 ) {
602 argv[ a ] = argv[ a + 1 ]; 602 argv[ a ] = argv[ a + 1 ];
603 a++; 603 a++;
604 d->preloaded = TRUE; 604 d->preloaded = TRUE;
605 argc -= 1; 605 argc -= 1;
606 } 606 }
607 else if ( qstrcmp( argv[ a ], "-preload-show" ) == 0 ) { 607 else if ( qstrcmp( argv[ a ], "-preload-show" ) == 0 ) {
608 argv[ a ] = argv[ a + 1 ]; 608 argv[ a ] = argv[ a + 1 ];
609 a++; 609 a++;
610 d->preloaded = TRUE; 610 d->preloaded = TRUE;
611 d->forceshow = TRUE; 611 d->forceshow = TRUE;
612 argc -= 1; 612 argc -= 1;
613 } 613 }
614 } 614 }
615 615
616 /* overide stored arguments */ 616 /* overide stored arguments */
617 setArgs( argc, argv ); 617 setArgs( argc, argv );
618 618
619#endif 619#endif
620 620
621 qwsSetDecoration( new QPEDecoration() ); 621 qwsSetDecoration( new QPEDecoration() );
622 622
623#ifndef QT_NO_TRANSLATION 623#ifndef QT_NO_TRANSLATION
624 624
625 QStringList langs = Global::languageList(); 625 QStringList langs = Global::languageList();
626 for ( QStringList::ConstIterator it = langs.begin(); it != langs.end(); ++it ) { 626 for ( QStringList::ConstIterator it = langs.begin(); it != langs.end(); ++it ) {
627 QString lang = *it; 627 QString lang = *it;
628 628
629 QTranslator * trans; 629 QTranslator * trans;
630 QString tfn; 630 QString tfn;
631 631
632 trans = new QTranslator( this ); 632 trans = new QTranslator( this );
633 tfn = qpeDir() + "/i18n/" + lang + "/libqpe.qm"; 633 tfn = qpeDir() + "/i18n/" + lang + "/libqpe.qm";
634 if ( trans->load( tfn ) ) 634 if ( trans->load( tfn ) )
635 installTranslator( trans ); 635 installTranslator( trans );
636 else 636 else
637 delete trans; 637 delete trans;
638 638
639 trans = new QTranslator( this ); 639 trans = new QTranslator( this );
640 tfn = qpeDir() + "/i18n/" + lang + "/" + d->appName + ".qm"; 640 tfn = qpeDir() + "/i18n/" + lang + "/" + d->appName + ".qm";
641 if ( trans->load( tfn ) ) 641 if ( trans->load( tfn ) )
642 installTranslator( trans ); 642 installTranslator( trans );
643 else 643 else
644 delete trans; 644 delete trans;
645 645
646 //###language/font hack; should look it up somewhere 646 /*
647 if ( lang == "ja" || lang == "zh_CN" || lang == "zh_TW" || lang == "ko" ) { 647 * not required. if using one of these languages, you might as well install
648 QFont fn = FontManager::unicodeFont( FontManager::Proportional ); 648 * a custom font.
649 setFont( fn ); 649
650 } 650 //###language/font hack; should look it up somewhere
651 else { 651 if ( lang == "ja" || lang == "zh_CN" || lang == "zh_TW" || lang == "ko" ) {
652 Config config( "qpe" ); 652 QFont fn = FontManager::unicodeFont( FontManager::Proportional );
653 setFont( fn );
654 }
655
656 else {
657 */
658 Config config( "qpe" );
653 config.setGroup( "Appearance" ); 659 config.setGroup( "Appearance" );
654 QString familyStr = config.readEntry( "FontFamily", "helvetica" ); 660 QString familyStr = config.readEntry( "FontFamily", "helvetica" );
655 QString styleStr = config.readEntry( "FontStyle", "Regular" ); 661 QString styleStr = config.readEntry( "FontStyle", "Regular" );
656 QString sizeStr = config.readEntry( "FontSize", "10" ); 662 QString sizeStr = config.readEntry( "FontSize", "10" );
657 QString charSetStr = config.readEntry( "FontCharSet", QString::null ); 663 QString charSetStr = config.readEntry( "FontCharSet", QString::null );
658 bool ok; 664 bool ok;
659 int i_size = sizeStr.toInt( &ok, 10 ); 665 int i_size = sizeStr.toInt( &ok, 10 );
660 FontDatabase fdb; 666 FontDatabase fdb;
661 QFont selectedFont = fdb.font( familyStr, styleStr, i_size, charSetStr ); 667 QFont selectedFont = fdb.font( familyStr, styleStr, i_size, charSetStr );
662 setFont( selectedFont ); 668 setFont( selectedFont );
663 } 669 //}
664 } 670 }
665 671
666#endif 672#endif
667 673
668 applyStyle(); 674 applyStyle();
669 675
670 if ( type() == GuiServer ) { 676 if ( type() == GuiServer ) {
671 setScreenSaverInterval( -1 ); 677 setScreenSaverInterval( -1 );
672 setVolume(); 678 setVolume();
673 QWSServer::setScreenSaver( new QPEScreenSaver ); 679 QWSServer::setScreenSaver( new QPEScreenSaver );
674 } 680 }
675 681
676 installEventFilter( this ); 682 installEventFilter( this );
677 683
678 QPEMenuToolFocusManager::initialize(); 684 QPEMenuToolFocusManager::initialize();
679 685
680#ifdef QT_NO_QWS_CURSOR 686#ifdef QT_NO_QWS_CURSOR
681 // if we have no cursor, probably don't want tooltips 687 // if we have no cursor, probably don't want tooltips
682 QToolTip::setEnabled( FALSE ); 688 QToolTip::setEnabled( FALSE );
683#endif 689#endif
684} 690}
685 691
686static QPtrDict<void>* inputMethodDict = 0; 692static QPtrDict<void>* inputMethodDict = 0;
687static void createInputMethodDict() 693static void createInputMethodDict()
688{ 694{
689 if ( !inputMethodDict ) 695 if ( !inputMethodDict )
690 inputMethodDict = new QPtrDict<void>; 696 inputMethodDict = new QPtrDict<void>;
691} 697}
692 698
693/*! 699/*!
694 Returns the currently set hint to the system as to whether 700 Returns the currently set hint to the system as to whether
695 \a w has any use for text input methods. 701 \a w has any use for text input methods.
696 702
697 \sa setInputMethodHint() 703 \sa setInputMethodHint()
698*/ 704*/
699QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w ) 705QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w )
700{ 706{
701 if ( inputMethodDict && w ) 707 if ( inputMethodDict && w )
702 return ( InputMethodHint ) ( int ) inputMethodDict->find( w ); 708 return ( InputMethodHint ) ( int ) inputMethodDict->find( w );
703 return Normal; 709 return Normal;
704} 710}
705 711
706/*! 712/*!
707 \enum QPEApplication::InputMethodHint 713 \enum QPEApplication::InputMethodHint
708 714
709 \value Normal the application sometimes needs text input (the default). 715 \value Normal the application sometimes needs text input (the default).
710 \value AlwaysOff the application never needs text input. 716 \value AlwaysOff the application never needs text input.
711 \value AlwaysOn the application always needs text input. 717 \value AlwaysOn the application always needs text input.
712*/ 718*/
713 719
714/*! 720/*!
715 Hints to the system that \a w has use for text input methods 721 Hints to the system that \a w has use for text input methods
716 as specified by \a mode. 722 as specified by \a mode.
717 723
718 \sa inputMethodHint() 724 \sa inputMethodHint()
719*/ 725*/
720void QPEApplication::setInputMethodHint( QWidget * w, InputMethodHint mode ) 726void QPEApplication::setInputMethodHint( QWidget * w, InputMethodHint mode )
721{ 727{
722 createInputMethodDict(); 728 createInputMethodDict();
723 if ( mode == Normal ) { 729 if ( mode == Normal ) {
724 inputMethodDict->remove 730 inputMethodDict->remove
725 ( w ); 731 ( w );
726 } 732 }
727 else { 733 else {
728 inputMethodDict->insert( w, ( void* ) mode ); 734 inputMethodDict->insert( w, ( void* ) mode );
729 } 735 }
730} 736}
731 737
732class HackDialog : public QDialog 738class HackDialog : public QDialog
733{ 739{
734public: 740public:
735 void acceptIt() 741 void acceptIt()
736 { 742 {
737 accept(); 743 accept();
738 } 744 }
739 void rejectIt() 745 void rejectIt()
740 { 746 {
741 reject(); 747 reject();
742 } 748 }
743}; 749};
744 750
745 751
746void QPEApplication::mapToDefaultAction( QWSKeyEvent * ke, int key ) 752void QPEApplication::mapToDefaultAction( QWSKeyEvent * ke, int key )
747{ 753{
748 // specialised actions for certain widgets. May want to 754 // specialised actions for certain widgets. May want to
749 // add more stuff here. 755 // add more stuff here.
750 if ( activePopupWidget() && activePopupWidget() ->inherits( "QListBox" ) 756 if ( activePopupWidget() && activePopupWidget() ->inherits( "QListBox" )
751 && activePopupWidget() ->parentWidget() 757 && activePopupWidget() ->parentWidget()
752 && activePopupWidget() ->parentWidget() ->inherits( "QComboBox" ) ) 758 && activePopupWidget() ->parentWidget() ->inherits( "QComboBox" ) )
753 key = Qt::Key_Return; 759 key = Qt::Key_Return;
754 760
755 if ( activePopupWidget() && activePopupWidget() ->inherits( "QPopupMenu" ) ) 761 if ( activePopupWidget() && activePopupWidget() ->inherits( "QPopupMenu" ) )
756 key = Qt::Key_Return; 762 key = Qt::Key_Return;
757 763
758 ke->simpleData.keycode = key; 764 ke->simpleData.keycode = key;
759} 765}
760 766
761class HackWidget : public QWidget 767class HackWidget : public QWidget
762{ 768{
763public: 769public:
764 bool needsOk() 770 bool needsOk()
765 { 771 {
@@ -1224,292 +1230,292 @@ void QPEApplication::pidMessage( const QCString &msg, const QByteArray & data )
1224 d->keep_running = TRUE; 1230 d->keep_running = TRUE;
1225 /* so next quit won't quit */ 1231 /* so next quit won't quit */
1226 } 1232 }
1227 else if ( msg == "raise()" ) { 1233 else if ( msg == "raise()" ) {
1228 d->keep_running = TRUE; 1234 d->keep_running = TRUE;
1229 d->notbusysent = FALSE; 1235 d->notbusysent = FALSE;
1230 raiseAppropriateWindow(); 1236 raiseAppropriateWindow();
1231 } 1237 }
1232 else if ( msg == "flush()" ) { 1238 else if ( msg == "flush()" ) {
1233 emit flush(); 1239 emit flush();
1234 // we need to tell the desktop 1240 // we need to tell the desktop
1235 QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" ); 1241 QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" );
1236 e << d->appName; 1242 e << d->appName;
1237 } 1243 }
1238 else if ( msg == "reload()" ) { 1244 else if ( msg == "reload()" ) {
1239 emit reload(); 1245 emit reload();
1240 } 1246 }
1241 else if ( msg == "setDocument(QString)" ) { 1247 else if ( msg == "setDocument(QString)" ) {
1242 d->keep_running = TRUE; 1248 d->keep_running = TRUE;
1243 QDataStream stream( data, IO_ReadOnly ); 1249 QDataStream stream( data, IO_ReadOnly );
1244 QString doc; 1250 QString doc;
1245 stream >> doc; 1251 stream >> doc;
1246 QWidget *mw = mainWidget(); 1252 QWidget *mw = mainWidget();
1247 if ( !mw ) 1253 if ( !mw )
1248 mw = d->qpe_main_widget; 1254 mw = d->qpe_main_widget;
1249 if ( mw ) 1255 if ( mw )
1250 Global::setDocument( mw, doc ); 1256 Global::setDocument( mw, doc );
1251 } 1257 }
1252 else if ( msg == "nextView()" ) { 1258 else if ( msg == "nextView()" ) {
1253 if ( raiseAppropriateWindow() ) 1259 if ( raiseAppropriateWindow() )
1254 emit appMessage( msg, data ); 1260 emit appMessage( msg, data );
1255 } 1261 }
1256 else { 1262 else {
1257 emit appMessage( msg, data ); 1263 emit appMessage( msg, data );
1258 } 1264 }
1259#endif 1265#endif
1260} 1266}
1261 1267
1262 1268
1263static bool setWidgetCaptionFromAppName( QWidget* /*mw*/, const QString& /*appName*/, const QString& /*appsPath*/ ) 1269static bool setWidgetCaptionFromAppName( QWidget* /*mw*/, const QString& /*appName*/, const QString& /*appsPath*/ )
1264{ 1270{
1265 /* 1271 /*
1266 // This works but disable it for now until it is safe to apply 1272 // This works but disable it for now until it is safe to apply
1267 // What is does is scan the .desktop files of all the apps for 1273 // What is does is scan the .desktop files of all the apps for
1268 // the applnk that has the corresponding argv[0] as this program 1274 // the applnk that has the corresponding argv[0] as this program
1269 // then it uses the name stored in the .desktop file as the caption 1275 // then it uses the name stored in the .desktop file as the caption
1270 // for the main widget. This saves duplicating translations for 1276 // for the main widget. This saves duplicating translations for
1271 // the app name in the program and in the .desktop files. 1277 // the app name in the program and in the .desktop files.
1272 1278
1273 AppLnkSet apps( appsPath ); 1279 AppLnkSet apps( appsPath );
1274 1280
1275 QList<AppLnk> appsList = apps.children(); 1281 QList<AppLnk> appsList = apps.children();
1276 for ( QListIterator<AppLnk> it(appsList); it.current(); ++it ) { 1282 for ( QListIterator<AppLnk> it(appsList); it.current(); ++it ) {
1277 if ( (*it)->exec() == appName ) { 1283 if ( (*it)->exec() == appName ) {
1278 mw->setCaption( (*it)->name() ); 1284 mw->setCaption( (*it)->name() );
1279 return TRUE; 1285 return TRUE;
1280 } 1286 }
1281 } 1287 }
1282 */ 1288 */
1283 return FALSE; 1289 return FALSE;
1284} 1290}
1285 1291
1286 1292
1287/*! 1293/*!
1288 Sets \a mw as the mainWidget() and shows it. For small windows, 1294 Sets \a mw as the mainWidget() and shows it. For small windows,
1289 consider passing TRUE for \a nomaximize rather than the default FALSE. 1295 consider passing TRUE for \a nomaximize rather than the default FALSE.
1290 1296
1291 \sa showMainDocumentWidget() 1297 \sa showMainDocumentWidget()
1292*/ 1298*/
1293void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize ) 1299void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize )
1294{ 1300{
1295 setWidgetCaptionFromAppName( mw, d->appName, qpeDir() + "apps" ); 1301 setWidgetCaptionFromAppName( mw, d->appName, qpeDir() + "apps" );
1296 1302
1297 d->nomaximize = nomaximize; 1303 d->nomaximize = nomaximize;
1298 d->qpe_main_widget = mw; 1304 d->qpe_main_widget = mw;
1299 d->sendQCopQ(); 1305 d->sendQCopQ();
1300 if ( d->preloaded ) { 1306 if ( d->preloaded ) {
1301 if ( d->forceshow ) { 1307 if ( d->forceshow ) {
1302#ifdef Q_WS_QWS 1308#ifdef Q_WS_QWS
1303 if ( !nomaximize ) 1309 if ( !nomaximize )
1304 mw->showMaximized(); 1310 mw->showMaximized();
1305 else 1311 else
1306#endif 1312#endif
1307 1313
1308 mw->show(); 1314 mw->show();
1309 } 1315 }
1310 } 1316 }
1311 else if ( d->keep_running ) { 1317 else if ( d->keep_running ) {
1312#ifdef Q_WS_QWS 1318#ifdef Q_WS_QWS
1313 if ( !nomaximize ) 1319 if ( !nomaximize )
1314 mw->showMaximized(); 1320 mw->showMaximized();
1315 else 1321 else
1316#endif 1322#endif
1317 1323
1318 mw->show(); 1324 mw->show();
1319 } 1325 }
1320} 1326}
1321 1327
1322/*! 1328/*!
1323 Sets \a mw as the mainWidget() and shows it. For small windows, 1329 Sets \a mw as the mainWidget() and shows it. For small windows,
1324 consider passing TRUE for \a nomaximize rather than the default FALSE. 1330 consider passing TRUE for \a nomaximize rather than the default FALSE.
1325 1331
1326 This calls designates the application as 1332 This calls designates the application as
1327 a \link docwidget.html document-oriented\endlink application. 1333 a \link docwidget.html document-oriented\endlink application.
1328 1334
1329 The \a mw widget must have a slot: setDocument(const QString&). 1335 The \a mw widget must have a slot: setDocument(const QString&).
1330 1336
1331 \sa showMainWidget() 1337 \sa showMainWidget()
1332*/ 1338*/
1333void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize ) 1339void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize )
1334{ 1340{
1335 setWidgetCaptionFromAppName( mw, d->appName, qpeDir() + "apps" ); 1341 setWidgetCaptionFromAppName( mw, d->appName, qpeDir() + "apps" );
1336 1342
1337 if ( mw && argc() == 2 ) 1343 if ( mw && argc() == 2 )
1338 Global::setDocument( mw, QString::fromUtf8( argv() [ 1 ] ) ); 1344 Global::setDocument( mw, QString::fromUtf8( argv() [ 1 ] ) );
1339 d->nomaximize = nomaximize; 1345 d->nomaximize = nomaximize;
1340 d->qpe_main_widget = mw; 1346 d->qpe_main_widget = mw;
1341 d->sendQCopQ(); 1347 d->sendQCopQ();
1342 if ( d->preloaded ) { 1348 if ( d->preloaded ) {
1343 if ( d->forceshow ) { 1349 if ( d->forceshow ) {
1344#ifdef Q_WS_QWS 1350#ifdef Q_WS_QWS
1345 if ( !nomaximize ) 1351 if ( !nomaximize )
1346 mw->showMaximized(); 1352 mw->showMaximized();
1347 else 1353 else
1348#endif 1354#endif
1349 1355
1350 mw->show(); 1356 mw->show();
1351 } 1357 }
1352 } 1358 }
1353 else if ( d->keep_running ) { 1359 else if ( d->keep_running ) {
1354#ifdef Q_WS_QWS 1360#ifdef Q_WS_QWS
1355 if ( !nomaximize ) 1361 if ( !nomaximize )
1356 mw->showMaximized(); 1362 mw->showMaximized();
1357 else 1363 else
1358#endif 1364#endif
1359 1365
1360 mw->show(); 1366 mw->show();
1361 } 1367 }
1362} 1368}
1363 1369
1364 1370
1365/*! 1371/*!
1366 Sets that the application should continue running after processing 1372 Sets that the application should continue running after processing
1367 qcop messages. Normally if an application is started via a qcop message, 1373 qcop messages. Normally if an application is started via a qcop message,
1368 the application will process the qcop message and then quit. If while 1374 the application will process the qcop message and then quit. If while
1369 processing the qcop message it calls this function, then the application 1375 processing the qcop message it calls this function, then the application
1370 will show and start proper once it has finished processing qcop messages. 1376 will show and start proper once it has finished processing qcop messages.
1371 1377
1372 \sa keepRunning() 1378 \sa keepRunning()
1373*/ 1379*/
1374void QPEApplication::setKeepRunning() 1380void QPEApplication::setKeepRunning()
1375{ 1381{
1376 if ( qApp && qApp->inherits( "QPEApplication" ) ) { 1382 if ( qApp && qApp->inherits( "QPEApplication" ) ) {
1377 QPEApplication * qpeApp = ( QPEApplication* ) qApp; 1383 QPEApplication * qpeApp = ( QPEApplication* ) qApp;
1378 qpeApp->d->keep_running = TRUE; 1384 qpeApp->d->keep_running = TRUE;
1379 } 1385 }
1380} 1386}
1381 1387
1382/*! 1388/*!
1383 Returns whether the application will quit after processing the current 1389 Returns whether the application will quit after processing the current
1384 list of qcop messages. 1390 list of qcop messages.
1385 1391
1386 \sa setKeepRunning() 1392 \sa setKeepRunning()
1387*/ 1393*/
1388bool QPEApplication::keepRunning() const 1394bool QPEApplication::keepRunning() const
1389{ 1395{
1390 return d->keep_running; 1396 return d->keep_running;
1391} 1397}
1392 1398
1393/*! 1399/*!
1394 \internal 1400 \internal
1395*/ 1401*/
1396void QPEApplication::internalSetStyle( const QString &style ) 1402void QPEApplication::internalSetStyle( const QString &style )
1397{ 1403{
1398#if QT_VERSION >= 300 1404#if QT_VERSION >= 300
1399 if ( style == "QPE" ) { 1405 if ( style == "QPE" ) {
1400 setStyle( new QPEStyle ); 1406 setStyle( new QPEStyle );
1401 } 1407 }
1402 else { 1408 else {
1403 QStyle *s = QStyleFactory::create( style ); 1409 QStyle *s = QStyleFactory::create( style );
1404 if ( s ) 1410 if ( s )
1405 setStyle( s ); 1411 setStyle( s );
1406 } 1412 }
1407#else 1413#else
1408 if ( style == "Windows" ) { 1414 if ( style == "Windows" ) {
1409 setStyle( new QWindowsStyle ); 1415 setStyle( new QWindowsStyle );
1410 } 1416 }
1411 else if ( style == "QPE" ) { 1417 else if ( style == "QPE" ) {
1412 setStyle( new QPEStyle ); 1418 setStyle( new QPEStyle );
1413 } 1419 }
1414 else if ( style == "Light" ) { 1420 else if ( style == "Light" ) {
1415 setStyle( new LightStyle ); 1421 setStyle( new LightStyle );
1416 } 1422 }
1417#ifndef QT_NO_STYLE_PLATINUM 1423#ifndef QT_NO_STYLE_PLATINUM
1418 else if ( style == "Platinum" ) { 1424 else if ( style == "Platinum" ) {
1419 setStyle( new QPlatinumStyle ); 1425 setStyle( new QPlatinumStyle );
1420 } 1426 }
1421#endif 1427#endif
1422#ifndef QT_NO_STYLE_MOTIF 1428#ifndef QT_NO_STYLE_MOTIF
1423 else if ( style == "Motif" ) { 1429 else if ( style == "Motif" ) {
1424 setStyle( new QMotifStyle ); 1430 setStyle( new QMotifStyle );
1425 } 1431 }
1426#endif 1432#endif
1427#ifndef QT_NO_STYLE_MOTIFPLUS 1433#ifndef QT_NO_STYLE_MOTIFPLUS
1428 else if ( style == "MotifPlus" ) { 1434 else if ( style == "MotifPlus" ) {
1429 setStyle( new QMotifPlusStyle ); 1435 setStyle( new QMotifPlusStyle );
1430 } 1436 }
1431#endif 1437#endif
1432 1438
1433 // HACK for Qt2 only 1439 // HACK for Qt2 only
1434 else { 1440 else {
1435 QStyle *sty = 0; 1441 QStyle *sty = 0;
1436 QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/lib" + style. lower ( ) + ".so"; 1442 QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/lib" + style. lower ( ) + ".so";
1437 1443
1438 static QLibrary *lastlib = 0; 1444 static QLibrary *lastlib = 0;
1439 static StyleInterface *lastiface = 0; 1445 static StyleInterface *lastiface = 0;
1440 1446
1441 QLibrary *lib = new QLibrary ( path ); 1447 QLibrary *lib = new QLibrary ( path );
1442 StyleInterface *iface = 0; 1448 StyleInterface *iface = 0;
1443 1449
1444 if ( lib-> queryInterface ( IID_Style, ( QUnknownInterface ** ) &iface ) == QS_OK ) 1450 if ( lib-> queryInterface ( IID_Style, ( QUnknownInterface ** ) &iface ) == QS_OK )
1445 sty = iface-> create ( ); 1451 sty = iface-> create ( );
1446 1452
1447 if ( sty ) { 1453 if ( sty ) {
1448 setStyle ( sty ); 1454 setStyle ( sty );
1449 1455
1450 qDebug ( "Got Style: %p -- iface: %p, lib: %p\n", sty, iface, lib ); 1456 qDebug ( "Got Style: %p -- iface: %p, lib: %p\n", sty, iface, lib );
1451 1457
1452 if ( lastiface ) 1458 if ( lastiface )
1453 lastiface-> release ( ); 1459 lastiface-> release ( );
1454 lastiface = iface; 1460 lastiface = iface;
1455 1461
1456 1462
1457 if ( lastlib ) { 1463 if ( lastlib ) {
1458 lastlib-> unload ( ); 1464 lastlib-> unload ( );
1459 delete lastlib; 1465 delete lastlib;
1460 } 1466 }
1461 lastlib = lib; 1467 lastlib = lib;
1462 } 1468 }
1463 else { 1469 else {
1464 if ( iface ) 1470 if ( iface )
1465 iface-> release ( ); 1471 iface-> release ( );
1466 delete lib; 1472 delete lib;
1467 1473
1468 setStyle ( new QPEStyle ( )); 1474 setStyle ( new QPEStyle ( ));
1469 } 1475 }
1470 1476
1471#if 0 1477#if 0
1472 // style == "Liquid Style (libliquid.so)" (or "Windows XP (libxp.so)" 1478 // style == "Liquid Style (libliquid.so)" (or "Windows XP (libxp.so)"
1473 1479
1474 int p2 = style. findRev ( ']' ); 1480 int p2 = style. findRev ( ']' );
1475 int p1 = style. findRev ( '[' ); 1481 int p1 = style. findRev ( '[' );
1476 QString style2; 1482 QString style2;
1477 1483
1478 if ( ( p1 > 0 ) && ( p2 > 0 ) && ( ( p1 + 1 ) < p2 ) ) 1484 if ( ( p1 > 0 ) && ( p2 > 0 ) && ( ( p1 + 1 ) < p2 ) )
1479 style2 = "lib" + style. mid ( p1 + 1, p2 - p1 - 1 ). lower ( ) + ".so"; 1485 style2 = "lib" + style. mid ( p1 + 1, p2 - p1 - 1 ). lower ( ) + ".so";
1480 else 1486 else
1481 style2 = "lib" + style. lower ( ) + ".so"; 1487 style2 = "lib" + style. lower ( ) + ".so";
1482 1488
1483 static QLibrary *currentlib = 0; 1489 static QLibrary *currentlib = 0;
1484 1490
1485 QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/" + style2; 1491 QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/" + style2;
1486 1492
1487 do { // try/catch simulation 1493 do { // try/catch simulation
1488 QLibrary *lib = new QLibrary ( path, QLibrary::Immediately ); 1494 QLibrary *lib = new QLibrary ( path, QLibrary::Immediately );
1489 1495
1490 if ( lib ) { 1496 if ( lib ) {
1491 QStyle * ( *fpa ) ( ) = ( QStyle * ( * ) ( ) ) lib-> resolve ( "allocate" ); 1497 QStyle * ( *fpa ) ( ) = ( QStyle * ( * ) ( ) ) lib-> resolve ( "allocate" );
1492 1498
1493 if ( fpa ) { 1499 if ( fpa ) {
1494 QStyle * sty = ( *fpa ) ( ); 1500 QStyle * sty = ( *fpa ) ( );
1495 1501
1496 if ( sty ) { 1502 if ( sty ) {
1497 setStyle ( sty ); 1503 setStyle ( sty );
1498 1504
1499 if ( currentlib ) 1505 if ( currentlib )
1500 delete currentlib; 1506 delete currentlib;
1501 currentlib = lib; 1507 currentlib = lib;
1502 1508
1503 break; 1509 break;
1504 } 1510 }
1505 } 1511 }
1506 delete lib; 1512 delete lib;
1507 } 1513 }
1508 } 1514 }
1509 while ( false ); 1515 while ( false );
1510 // HACK for Qt2 only 1516 // HACK for Qt2 only
1511#endif 1517#endif
1512 } 1518 }
1513#endif 1519#endif
1514} 1520}
1515 1521
@@ -1519,120 +1525,120 @@ void QPEApplication::internalSetStyle( const QString &style )
1519void QPEApplication::prepareForTermination( bool willrestart ) 1525void QPEApplication::prepareForTermination( bool willrestart )
1520{ 1526{
1521 if ( willrestart ) { 1527 if ( willrestart ) {
1522 // Draw a big wait icon, the image can be altered in later revisions 1528 // Draw a big wait icon, the image can be altered in later revisions
1523 // QWidget *d = QApplication::desktop(); 1529 // QWidget *d = QApplication::desktop();
1524 QImage img = Resource::loadImage( "launcher/new_wait" ); 1530 QImage img = Resource::loadImage( "launcher/new_wait" );
1525 QPixmap pix; 1531 QPixmap pix;
1526 pix.convertFromImage( img.smoothScale( 1 * img.width(), 1 * img.height() ) ); 1532 pix.convertFromImage( img.smoothScale( 1 * img.width(), 1 * img.height() ) );
1527 QLabel *lblWait = new QLabel( 0, "wait hack!", QWidget::WStyle_Customize | 1533 QLabel *lblWait = new QLabel( 0, "wait hack!", QWidget::WStyle_Customize |
1528 QWidget::WStyle_NoBorder | QWidget::WStyle_Tool ); 1534 QWidget::WStyle_NoBorder | QWidget::WStyle_Tool );
1529 lblWait->setPixmap( pix ); 1535 lblWait->setPixmap( pix );
1530 lblWait->setAlignment( QWidget::AlignCenter ); 1536 lblWait->setAlignment( QWidget::AlignCenter );
1531 lblWait->show(); 1537 lblWait->show();
1532 lblWait->showMaximized(); 1538 lblWait->showMaximized();
1533 } 1539 }
1534#ifndef SINGLE_APP 1540#ifndef SINGLE_APP
1535 { QCopEnvelope envelope( "QPE/System", "forceQuit()" ); 1541 { QCopEnvelope envelope( "QPE/System", "forceQuit()" );
1536 } 1542 }
1537 processEvents(); // ensure the message goes out. 1543 processEvents(); // ensure the message goes out.
1538 sleep( 1 ); // You have 1 second to comply. 1544 sleep( 1 ); // You have 1 second to comply.
1539#endif 1545#endif
1540} 1546}
1541 1547
1542/*! 1548/*!
1543 \internal 1549 \internal
1544*/ 1550*/
1545void QPEApplication::shutdown() 1551void QPEApplication::shutdown()
1546{ 1552{
1547 // Implement in server's QPEApplication subclass 1553 // Implement in server's QPEApplication subclass
1548} 1554}
1549 1555
1550/*! 1556/*!
1551 \internal 1557 \internal
1552*/ 1558*/
1553void QPEApplication::restart() 1559void QPEApplication::restart()
1554{ 1560{
1555 // Implement in server's QPEApplication subclass 1561 // Implement in server's QPEApplication subclass
1556} 1562}
1557 1563
1558static QPtrDict<void>* stylusDict = 0; 1564static QPtrDict<void>* stylusDict = 0;
1559static void createDict() 1565static void createDict()
1560{ 1566{
1561 if ( !stylusDict ) 1567 if ( !stylusDict )
1562 stylusDict = new QPtrDict<void>; 1568 stylusDict = new QPtrDict<void>;
1563} 1569}
1564 1570
1565/*! 1571/*!
1566 Returns the current StylusMode for \a w. 1572 Returns the current StylusMode for \a w.
1567 1573
1568 \sa setStylusOperation() 1574 \sa setStylusOperation()
1569*/ 1575*/
1570QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget * w ) 1576QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget * w )
1571{ 1577{
1572 if ( stylusDict ) 1578 if ( stylusDict )
1573 return ( StylusMode ) ( int ) stylusDict->find( w ); 1579 return ( StylusMode ) ( int ) stylusDict->find( w );
1574 return LeftOnly; 1580 return LeftOnly;
1575} 1581}
1576 1582
1577/*! 1583/*!
1578 \enum QPEApplication::StylusMode 1584 \enum QPEApplication::StylusMode
1579 1585
1580 \value LeftOnly the stylus only generates LeftButton 1586 \value LeftOnly the stylus only generates LeftButton
1581 events (the default). 1587 events (the default).
1582 \value RightOnHold the stylus generates RightButton events 1588 \value RightOnHold the stylus generates RightButton events
1583 if the user uses the press-and-hold gesture. 1589 if the user uses the press-and-hold gesture.
1584 1590
1585 See setStylusOperation(). 1591 See setStylusOperation().
1586*/ 1592*/
1587 1593
1588/*! 1594/*!
1589 Causes \a w to receive mouse events according to \a mode. 1595 Causes \a w to receive mouse events according to \a mode.
1590 1596
1591 \sa stylusOperation() 1597 \sa stylusOperation()
1592*/ 1598*/
1593void QPEApplication::setStylusOperation( QWidget * w, StylusMode mode ) 1599void QPEApplication::setStylusOperation( QWidget * w, StylusMode mode )
1594{ 1600{
1595 createDict(); 1601 createDict();
1596 if ( mode == LeftOnly ) { 1602 if ( mode == LeftOnly ) {
1597 stylusDict->remove 1603 stylusDict->remove
1598 ( w ); 1604 ( w );
1599 w->removeEventFilter( qApp ); 1605 w->removeEventFilter( qApp );
1600 } 1606 }
1601 else { 1607 else {
1602 stylusDict->insert( w, ( void* ) mode ); 1608 stylusDict->insert( w, ( void* ) mode );
1603 connect( w, SIGNAL( destroyed() ), qApp, SLOT( removeSenderFromStylusDict() ) ); 1609 connect( w, SIGNAL( destroyed() ), qApp, SLOT( removeSenderFromStylusDict() ) );
1604 w->installEventFilter( qApp ); 1610 w->installEventFilter( qApp );
1605 } 1611 }
1606} 1612}
1607 1613
1608 1614
1609/*! 1615/*!
1610 \reimp 1616 \reimp
1611*/ 1617*/
1612bool QPEApplication::eventFilter( QObject *o, QEvent *e ) 1618bool QPEApplication::eventFilter( QObject *o, QEvent *e )
1613{ 1619{
1614 if ( stylusDict && e->type() >= QEvent::MouseButtonPress && e->type() <= QEvent::MouseMove ) { 1620 if ( stylusDict && e->type() >= QEvent::MouseButtonPress && e->type() <= QEvent::MouseMove ) {
1615 QMouseEvent * me = ( QMouseEvent* ) e; 1621 QMouseEvent * me = ( QMouseEvent* ) e;
1616 if ( me->button() == LeftButton ) { 1622 if ( me->button() == LeftButton ) {
1617 StylusMode mode = ( StylusMode ) ( int ) stylusDict->find( o ); 1623 StylusMode mode = ( StylusMode ) ( int ) stylusDict->find( o );
1618 switch ( mode ) { 1624 switch ( mode ) {
1619 case RightOnHold: 1625 case RightOnHold:
1620 switch ( me->type() ) { 1626 switch ( me->type() ) {
1621 case QEvent::MouseButtonPress: 1627 case QEvent::MouseButtonPress:
1622 d->presstimer = startTimer( 500 ); // #### pref. 1628 d->presstimer = startTimer( 500 ); // #### pref.
1623 d->presswidget = ( QWidget* ) o; 1629 d->presswidget = ( QWidget* ) o;
1624 d->presspos = me->pos(); 1630 d->presspos = me->pos();
1625 d->rightpressed = FALSE; 1631 d->rightpressed = FALSE;
1626 break; 1632 break;
1627 case QEvent::MouseButtonRelease: 1633 case QEvent::MouseButtonRelease:
1628 if ( d->presstimer ) { 1634 if ( d->presstimer ) {
1629 killTimer( d->presstimer ); 1635 killTimer( d->presstimer );
1630 d->presstimer = 0; 1636 d->presstimer = 0;
1631 } 1637 }
1632 if ( d->rightpressed && d->presswidget ) { 1638 if ( d->rightpressed && d->presswidget ) {
1633 // Right released 1639 // Right released
1634 postEvent( d->presswidget, 1640 postEvent( d->presswidget,
1635 new QMouseEvent( QEvent::MouseButtonRelease, me->pos(), 1641 new QMouseEvent( QEvent::MouseButtonRelease, me->pos(),
1636 RightButton, LeftButton + RightButton ) ); 1642 RightButton, LeftButton + RightButton ) );
1637 // Left released, off-widget 1643 // Left released, off-widget
1638 postEvent( d->presswidget, 1644 postEvent( d->presswidget,
@@ -1675,97 +1681,97 @@ void QPEApplication::timerEvent( QTimerEvent *e )
1675{ 1681{
1676 if ( e->timerId() == d->presstimer && d->presswidget ) { 1682 if ( e->timerId() == d->presstimer && d->presswidget ) {
1677 // Right pressed 1683 // Right pressed
1678 postEvent( d->presswidget, 1684 postEvent( d->presswidget,
1679 new QMouseEvent( QEvent::MouseButtonPress, d->presspos, 1685 new QMouseEvent( QEvent::MouseButtonPress, d->presspos,
1680 RightButton, LeftButton ) ); 1686 RightButton, LeftButton ) );
1681 killTimer( d->presstimer ); 1687 killTimer( d->presstimer );
1682 d->presstimer = 0; 1688 d->presstimer = 0;
1683 d->rightpressed = TRUE; 1689 d->rightpressed = TRUE;
1684 } 1690 }
1685} 1691}
1686 1692
1687void QPEApplication::removeSenderFromStylusDict() 1693void QPEApplication::removeSenderFromStylusDict()
1688{ 1694{
1689 stylusDict->remove 1695 stylusDict->remove
1690 ( ( void* ) sender() ); 1696 ( ( void* ) sender() );
1691 if ( d->presswidget == sender() ) 1697 if ( d->presswidget == sender() )
1692 d->presswidget = 0; 1698 d->presswidget = 0;
1693} 1699}
1694 1700
1695/*! 1701/*!
1696 \internal 1702 \internal
1697*/ 1703*/
1698bool QPEApplication::keyboardGrabbed() const 1704bool QPEApplication::keyboardGrabbed() const
1699{ 1705{
1700 return d->kbgrabber; 1706 return d->kbgrabber;
1701} 1707}
1702 1708
1703 1709
1704/*! 1710/*!
1705 Reverses the effect of grabKeyboard(). This is called automatically 1711 Reverses the effect of grabKeyboard(). This is called automatically
1706 on program exit. 1712 on program exit.
1707*/ 1713*/
1708void QPEApplication::ungrabKeyboard() 1714void QPEApplication::ungrabKeyboard()
1709{ 1715{
1710 QPEApplicationData * d = ( ( QPEApplication* ) qApp ) ->d; 1716 QPEApplicationData * d = ( ( QPEApplication* ) qApp ) ->d;
1711 if ( d->kbgrabber == 2 ) { 1717 if ( d->kbgrabber == 2 ) {
1712 QCopEnvelope e( "QPE/System", "grabKeyboard(QString)" ); 1718 QCopEnvelope e( "QPE/System", "grabKeyboard(QString)" );
1713 e << QString::null; 1719 e << QString::null;
1714 d->kbregrab = FALSE; 1720 d->kbregrab = FALSE;
1715 d->kbgrabber = 0; 1721 d->kbgrabber = 0;
1716 } 1722 }
1717} 1723}
1718 1724
1719/*! 1725/*!
1720 Grabs the keyboard such that the system's application launching 1726 Grabs the keyboard such that the system's application launching
1721 keys no longer work, and instead they are receivable by this 1727 keys no longer work, and instead they are receivable by this
1722 application. 1728 application.
1723 1729
1724 \sa ungrabKeyboard() 1730 \sa ungrabKeyboard()
1725*/ 1731*/
1726void QPEApplication::grabKeyboard() 1732void QPEApplication::grabKeyboard()
1727{ 1733{
1728 QPEApplicationData * d = ( ( QPEApplication* ) qApp ) ->d; 1734 QPEApplicationData * d = ( ( QPEApplication* ) qApp ) ->d;
1729 if ( qApp->type() == QApplication::GuiServer ) 1735 if ( qApp->type() == QApplication::GuiServer )
1730 d->kbgrabber = 0; 1736 d->kbgrabber = 0;
1731 else { 1737 else {
1732 QCopEnvelope e( "QPE/System", "grabKeyboard(QString)" ); 1738 QCopEnvelope e( "QPE/System", "grabKeyboard(QString)" );
1733 e << d->appName; 1739 e << d->appName;
1734 d->kbgrabber = 2; // me 1740 d->kbgrabber = 2; // me
1735 } 1741 }
1736} 1742}
1737 1743
1738/*! 1744/*!
1739 \reimp 1745 \reimp
1740*/ 1746*/
1741int QPEApplication::exec() 1747int QPEApplication::exec()
1742{ 1748{
1743 d->sendQCopQ(); 1749 d->sendQCopQ();
1744 if ( d->keep_running ) 1750 if ( d->keep_running )
1745 //|| d->qpe_main_widget && d->qpe_main_widget->isVisible() ) 1751 //|| d->qpe_main_widget && d->qpe_main_widget->isVisible() )
1746 return QApplication::exec(); 1752 return QApplication::exec();
1747 1753
1748 { 1754 {
1749 QCopEnvelope e( "QPE/System", "closing(QString)" ); 1755 QCopEnvelope e( "QPE/System", "closing(QString)" );
1750 e << d->appName; 1756 e << d->appName;
1751 } 1757 }
1752 processEvents(); 1758 processEvents();
1753 return 0; 1759 return 0;
1754} 1760}
1755 1761
1756/*! 1762/*!
1757 \internal 1763 \internal
1758 External request for application to quit. Quits if possible without 1764 External request for application to quit. Quits if possible without
1759 loosing state. 1765 loosing state.
1760*/ 1766*/
1761void QPEApplication::tryQuit() 1767void QPEApplication::tryQuit()
1762{ 1768{
1763 if ( activeModalWidget() || strcmp( argv() [ 0 ], "embeddedkonsole" ) == 0 ) 1769 if ( activeModalWidget() || strcmp( argv() [ 0 ], "embeddedkonsole" ) == 0 )
1764 return ; // Inside modal loop or konsole. Too hard to save state. 1770 return ; // Inside modal loop or konsole. Too hard to save state.
1765 { 1771 {
1766 QCopEnvelope e( "QPE/System", "closing(QString)" ); 1772 QCopEnvelope e( "QPE/System", "closing(QString)" );
1767 e << d->appName; 1773 e << d->appName;
1768 } 1774 }
1769 processEvents(); 1775 processEvents();
1770 1776
1771 quit(); 1777 quit();