author | harlekin <harlekin> | 2002-08-15 18:34:42 (UTC) |
---|---|---|
committer | harlekin <harlekin> | 2002-08-15 18:34:42 (UTC) |
commit | 8cd40434c7011022a8e1706698e5c5075681bd1e (patch) (unidiff) | |
tree | 74e8634c40c1b35cdf32620d219d3a98ec3e2ded /library | |
parent | fc0f625393128d47ef4e2baef4dfcdbe48a18ca7 (diff) | |
download | opie-8cd40434c7011022a8e1706698e5c5075681bd1e.zip opie-8cd40434c7011022a8e1706698e5c5075681bd1e.tar.gz opie-8cd40434c7011022a8e1706698e5c5075681bd1e.tar.bz2 |
applied hashs patch
-rw-r--r-- | library/qpeapplication.cpp | 76 |
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 | ||
444 | static int ssi( int interval, Config & config, const QString & enable, const QString & value, int def ) | 444 | static 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 | ||
456 | static void setScreenSaverIntervals( int i1, int i2, int i3 ) | 456 | static 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 | ||
480 | static void setScreenSaverInterval( int interval ) | 480 | static 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 | */ |
549 | QPEApplication::QPEApplication( int & argc, char **argv, Type t ) | 549 | QPEApplication::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 | ||
686 | static QPtrDict<void>* inputMethodDict = 0; | 692 | static QPtrDict<void>* inputMethodDict = 0; |
687 | static void createInputMethodDict() | 693 | static 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 | */ |
699 | QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w ) | 705 | QPEApplication::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 | */ |
720 | void QPEApplication::setInputMethodHint( QWidget * w, InputMethodHint mode ) | 726 | void 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 | ||
732 | class HackDialog : public QDialog | 738 | class HackDialog : public QDialog |
733 | { | 739 | { |
734 | public: | 740 | public: |
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 | ||
746 | void QPEApplication::mapToDefaultAction( QWSKeyEvent * ke, int key ) | 752 | void 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 | ||
761 | class HackWidget : public QWidget | 767 | class HackWidget : public QWidget |
762 | { | 768 | { |
763 | public: | 769 | public: |
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 | ||
1263 | static bool setWidgetCaptionFromAppName( QWidget* /*mw*/, const QString& /*appName*/, const QString& /*appsPath*/ ) | 1269 | static 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 | */ |
1293 | void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize ) | 1299 | void 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 | */ |
1333 | void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize ) | 1339 | void 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 | */ |
1374 | void QPEApplication::setKeepRunning() | 1380 | void 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 | */ |
1388 | bool QPEApplication::keepRunning() const | 1394 | bool 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 | */ |
1396 | void QPEApplication::internalSetStyle( const QString &style ) | 1402 | void 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 ) | |||
1519 | void QPEApplication::prepareForTermination( bool willrestart ) | 1525 | void 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 | */ |
1545 | void QPEApplication::shutdown() | 1551 | void 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 | */ |
1553 | void QPEApplication::restart() | 1559 | void QPEApplication::restart() |
1554 | { | 1560 | { |
1555 | // Implement in server's QPEApplication subclass | 1561 | // Implement in server's QPEApplication subclass |
1556 | } | 1562 | } |
1557 | 1563 | ||
1558 | static QPtrDict<void>* stylusDict = 0; | 1564 | static QPtrDict<void>* stylusDict = 0; |
1559 | static void createDict() | 1565 | static 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 | */ |
1570 | QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget * w ) | 1576 | QPEApplication::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 | */ |
1593 | void QPEApplication::setStylusOperation( QWidget * w, StylusMode mode ) | 1599 | void 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 | */ |
1612 | bool QPEApplication::eventFilter( QObject *o, QEvent *e ) | 1618 | bool 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 | ||
1687 | void QPEApplication::removeSenderFromStylusDict() | 1693 | void 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 | */ |
1698 | bool QPEApplication::keyboardGrabbed() const | 1704 | bool 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 | */ |
1708 | void QPEApplication::ungrabKeyboard() | 1714 | void 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 | */ |
1726 | void QPEApplication::grabKeyboard() | 1732 | void 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 | */ |
1741 | int QPEApplication::exec() | 1747 | int 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 | */ |
1761 | void QPEApplication::tryQuit() | 1767 | void 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(); |