summaryrefslogtreecommitdiff
path: root/library
Unidiff
Diffstat (limited to 'library') (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpeapplication.cpp2
-rw-r--r--library/qpeapplication.h11
-rw-r--r--library/qt_override.cpp3
-rw-r--r--library/qt_override_p.h10
4 files changed, 19 insertions, 7 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index f4db1ab..19adb00 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -580,840 +580,842 @@ QPEApplication::QPEApplication( int & argc, char **argv, Type t )
580 a++; 580 a++;
581 d->preloaded = TRUE; 581 d->preloaded = TRUE;
582 argc -= 1; 582 argc -= 1;
583 } 583 }
584 else if ( qstrcmp( argv[ a ], "-preload-show" ) == 0 ) { 584 else if ( qstrcmp( argv[ a ], "-preload-show" ) == 0 ) {
585 argv[ a ] = argv[ a + 1 ]; 585 argv[ a ] = argv[ a + 1 ];
586 a++; 586 a++;
587 d->preloaded = TRUE; 587 d->preloaded = TRUE;
588 d->forceshow = TRUE; 588 d->forceshow = TRUE;
589 argc -= 1; 589 argc -= 1;
590 } 590 }
591 } 591 }
592 592
593 /* overide stored arguments */ 593 /* overide stored arguments */
594 setArgs( argc, argv ); 594 setArgs( argc, argv );
595 595
596#endif 596#endif
597 597
598 // qwsSetDecoration( new QPEDecoration() ); 598 // qwsSetDecoration( new QPEDecoration() );
599 599
600#ifndef QT_NO_TRANSLATION 600#ifndef QT_NO_TRANSLATION
601 601
602 QStringList langs = Global::languageList(); 602 QStringList langs = Global::languageList();
603 for ( QStringList::ConstIterator it = langs.begin(); it != langs.end(); ++it ) { 603 for ( QStringList::ConstIterator it = langs.begin(); it != langs.end(); ++it ) {
604 QString lang = *it; 604 QString lang = *it;
605 605
606 installTranslation( lang + "/libopie.qm"); 606 installTranslation( lang + "/libopie.qm");
607 installTranslation( lang + "/libqpe.qm" ); 607 installTranslation( lang + "/libqpe.qm" );
608 installTranslation( lang + "/" + d->appName + ".qm" ); 608 installTranslation( lang + "/" + d->appName + ".qm" );
609 609
610 610
611 //###language/font hack; should look it up somewhere 611 //###language/font hack; should look it up somewhere
612#ifdef QWS 612#ifdef QWS
613 613
614 if ( lang == "ja" || lang == "zh_CN" || lang == "zh_TW" || lang == "ko" ) { 614 if ( lang == "ja" || lang == "zh_CN" || lang == "zh_TW" || lang == "ko" ) {
615 QFont fn = FontManager::unicodeFont( FontManager::Proportional ); 615 QFont fn = FontManager::unicodeFont( FontManager::Proportional );
616 setFont( fn ); 616 setFont( fn );
617 } 617 }
618#endif 618#endif
619 619
620 } 620 }
621#endif 621#endif
622 622
623 applyStyle(); 623 applyStyle();
624 624
625 if ( type() == GuiServer ) { 625 if ( type() == GuiServer ) {
626 setVolume(); 626 setVolume();
627 } 627 }
628 628
629 installEventFilter( this ); 629 installEventFilter( this );
630 630
631 QPEMenuToolFocusManager::initialize(); 631 QPEMenuToolFocusManager::initialize();
632 632
633#ifdef QT_NO_QWS_CURSOR 633#ifdef QT_NO_QWS_CURSOR
634 // if we have no cursor, probably don't want tooltips 634 // if we have no cursor, probably don't want tooltips
635 QToolTip::setEnabled( FALSE ); 635 QToolTip::setEnabled( FALSE );
636#endif 636#endif
637} 637}
638 638
639static QPtrDict<void>* inputMethodDict = 0; 639static QPtrDict<void>* inputMethodDict = 0;
640static void createInputMethodDict() 640static void createInputMethodDict()
641{ 641{
642 if ( !inputMethodDict ) 642 if ( !inputMethodDict )
643 inputMethodDict = new QPtrDict<void>; 643 inputMethodDict = new QPtrDict<void>;
644} 644}
645 645
646/*! 646/*!
647 Returns the currently set hint to the system as to whether 647 Returns the currently set hint to the system as to whether
648 widget \a w has any use for text input methods. 648 widget \a w has any use for text input methods.
649 649
650 650
651 \sa setInputMethodHint() InputMethodHint 651 \sa setInputMethodHint() InputMethodHint
652*/ 652*/
653QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w ) 653QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w )
654{ 654{
655 if ( inputMethodDict && w ) 655 if ( inputMethodDict && w )
656 return ( InputMethodHint ) ( int ) inputMethodDict->find( w ); 656 return ( InputMethodHint ) ( int ) inputMethodDict->find( w );
657 return Normal; 657 return Normal;
658} 658}
659 659
660/*! 660/*!
661 \enum QPEApplication::InputMethodHint 661 \enum QPEApplication::InputMethodHint
662 662
663 \value Normal the application sometimes needs text input (the default). 663 \value Normal the application sometimes needs text input (the default).
664 \value AlwaysOff the application never needs text input. 664 \value AlwaysOff the application never needs text input.
665 \value AlwaysOn the application always needs text input. 665 \value AlwaysOn the application always needs text input.
666*/ 666*/
667 667
668/*! 668/*!
669 Hints to the system that widget \a w has use for text input methods 669 Hints to the system that widget \a w has use for text input methods
670 as specified by \a mode. 670 as specified by \a mode.
671 671
672 \sa inputMethodHint() InputMethodHint 672 \sa inputMethodHint() InputMethodHint
673*/ 673*/
674void QPEApplication::setInputMethodHint( QWidget * w, InputMethodHint mode ) 674void QPEApplication::setInputMethodHint( QWidget * w, InputMethodHint mode )
675{ 675{
676 createInputMethodDict(); 676 createInputMethodDict();
677 if ( mode == Normal ) { 677 if ( mode == Normal ) {
678 inputMethodDict->remove 678 inputMethodDict->remove
679 ( w ); 679 ( w );
680 } 680 }
681 else { 681 else {
682 inputMethodDict->insert( w, ( void* ) mode ); 682 inputMethodDict->insert( w, ( void* ) mode );
683 } 683 }
684} 684}
685 685
686class HackDialog : public QDialog 686class HackDialog : public QDialog
687{ 687{
688public: 688public:
689 void acceptIt() 689 void acceptIt()
690 { 690 {
691 accept(); 691 accept();
692 } 692 }
693 void rejectIt() 693 void rejectIt()
694 { 694 {
695 reject(); 695 reject();
696 } 696 }
697}; 697};
698 698
699 699
700void QPEApplication::mapToDefaultAction( QWSKeyEvent * ke, int key ) 700void QPEApplication::mapToDefaultAction( QWSKeyEvent * ke, int key )
701{ 701{
702 // specialised actions for certain widgets. May want to 702 // specialised actions for certain widgets. May want to
703 // add more stuff here. 703 // add more stuff here.
704 if ( activePopupWidget() && activePopupWidget() ->inherits( "QListBox" ) 704 if ( activePopupWidget() && activePopupWidget() ->inherits( "QListBox" )
705 && activePopupWidget() ->parentWidget() 705 && activePopupWidget() ->parentWidget()
706 && activePopupWidget() ->parentWidget() ->inherits( "QComboBox" ) ) 706 && activePopupWidget() ->parentWidget() ->inherits( "QComboBox" ) )
707 key = Qt::Key_Return; 707 key = Qt::Key_Return;
708 708
709 if ( activePopupWidget() && activePopupWidget() ->inherits( "QPopupMenu" ) ) 709 if ( activePopupWidget() && activePopupWidget() ->inherits( "QPopupMenu" ) )
710 key = Qt::Key_Return; 710 key = Qt::Key_Return;
711 711
712#ifdef QWS 712#ifdef QWS
713 713
714 ke->simpleData.keycode = key; 714 ke->simpleData.keycode = key;
715#endif 715#endif
716} 716}
717 717
718class HackWidget : public QWidget 718class HackWidget : public QWidget
719{ 719{
720public: 720public:
721 bool needsOk() 721 bool needsOk()
722 { 722 {
723 return ( getWState() & WState_Reserved1 ); 723 return ( getWState() & WState_Reserved1 );
724 } 724 }
725}; 725};
726 726
727/*! 727/*!
728 \internal 728 \internal
729*/ 729*/
730 730
731#ifdef QWS 731#ifdef QWS
732bool QPEApplication::qwsEventFilter( QWSEvent * e ) 732bool QPEApplication::qwsEventFilter( QWSEvent * e )
733{ 733{
734 if ( !d->notbusysent && e->type == QWSEvent::Focus ) { 734 if ( !d->notbusysent && e->type == QWSEvent::Focus ) {
735 if ( qApp->type() != QApplication::GuiServer ) { 735 if ( qApp->type() != QApplication::GuiServer ) {
736 QCopEnvelope e( "QPE/System", "notBusy(QString)" ); 736 QCopEnvelope e( "QPE/System", "notBusy(QString)" );
737 e << d->appName; 737 e << d->appName;
738 } 738 }
739 d->notbusysent = TRUE; 739 d->notbusysent = TRUE;
740 } 740 }
741 if ( type() == GuiServer ) { 741 if ( type() == GuiServer ) {
742 switch ( e->type ) { 742 switch ( e->type ) {
743 case QWSEvent::Mouse: 743 case QWSEvent::Mouse:
744 if ( e->asMouse() ->simpleData.state && !QWidget::find( e->window() ) ) 744 if ( e->asMouse() ->simpleData.state && !QWidget::find( e->window() ) )
745 emit clientMoused(); 745 emit clientMoused();
746 break; 746 break;
747 default: 747 default:
748 break; 748 break;
749 } 749 }
750 } 750 }
751 if ( e->type == QWSEvent::Key ) { 751 if ( e->type == QWSEvent::Key ) {
752 QWSKeyEvent *ke = ( QWSKeyEvent * ) e; 752 QWSKeyEvent *ke = ( QWSKeyEvent * ) e;
753 if ( ke->simpleData.keycode == Qt::Key_F33 ) { 753 if ( ke->simpleData.keycode == Qt::Key_F33 ) {
754 // Use special "OK" key to press "OK" on top level widgets 754 // Use special "OK" key to press "OK" on top level widgets
755 QWidget * active = activeWindow(); 755 QWidget * active = activeWindow();
756 QWidget *popup = 0; 756 QWidget *popup = 0;
757 if ( active && active->isPopup() ) { 757 if ( active && active->isPopup() ) {
758 popup = active; 758 popup = active;
759 active = active->parentWidget(); 759 active = active->parentWidget();
760 } 760 }
761 if ( active && ( int ) active->winId() == ke->simpleData.window && 761 if ( active && ( int ) active->winId() == ke->simpleData.window &&
762 !active->testWFlags( WStyle_Customize | WType_Popup | WType_Desktop ) ) { 762 !active->testWFlags( WStyle_Customize | WType_Popup | WType_Desktop ) ) {
763 if ( ke->simpleData.is_press ) { 763 if ( ke->simpleData.is_press ) {
764 if ( popup ) 764 if ( popup )
765 popup->close(); 765 popup->close();
766 if ( active->inherits( "QDialog" ) ) { 766 if ( active->inherits( "QDialog" ) ) {
767 HackDialog * d = ( HackDialog * ) active; 767 HackDialog * d = ( HackDialog * ) active;
768 d->acceptIt(); 768 d->acceptIt();
769 return TRUE; 769 return TRUE;
770 } 770 }
771 else if ( ( ( HackWidget * ) active ) ->needsOk() ) { 771 else if ( ( ( HackWidget * ) active ) ->needsOk() ) {
772 QSignal s; 772 QSignal s;
773 s.connect( active, SLOT( accept() ) ); 773 s.connect( active, SLOT( accept() ) );
774 s.activate(); 774 s.activate();
775 } 775 }
776 else { 776 else {
777 // do the same as with the select key: Map to the default action of the widget: 777 // do the same as with the select key: Map to the default action of the widget:
778 mapToDefaultAction( ke, Qt::Key_Return ); 778 mapToDefaultAction( ke, Qt::Key_Return );
779 } 779 }
780 } 780 }
781 } 781 }
782 } 782 }
783 else if ( ke->simpleData.keycode == Qt::Key_F30 ) { 783 else if ( ke->simpleData.keycode == Qt::Key_F30 ) {
784 // Use special "select" key to do whatever default action a widget has 784 // Use special "select" key to do whatever default action a widget has
785 mapToDefaultAction( ke, Qt::Key_Space ); 785 mapToDefaultAction( ke, Qt::Key_Space );
786 } 786 }
787 else if ( ke->simpleData.keycode == Qt::Key_Escape && 787 else if ( ke->simpleData.keycode == Qt::Key_Escape &&
788 ke->simpleData.is_press ) { 788 ke->simpleData.is_press ) {
789 // Escape key closes app if focus on toplevel 789 // Escape key closes app if focus on toplevel
790 QWidget * active = activeWindow(); 790 QWidget * active = activeWindow();
791 if ( active && active->testWFlags( WType_TopLevel ) && 791 if ( active && active->testWFlags( WType_TopLevel ) &&
792 ( int ) active->winId() == ke->simpleData.window && 792 ( int ) active->winId() == ke->simpleData.window &&
793 !active->testWFlags( WStyle_Dialog | WStyle_Customize | WType_Popup | WType_Desktop ) ) { 793 !active->testWFlags( WStyle_Dialog | WStyle_Customize | WType_Popup | WType_Desktop ) ) {
794 if ( active->inherits( "QDialog" ) ) { 794 if ( active->inherits( "QDialog" ) ) {
795 HackDialog * d = ( HackDialog * ) active; 795 HackDialog * d = ( HackDialog * ) active;
796 d->rejectIt(); 796 d->rejectIt();
797 return TRUE; 797 return TRUE;
798 } 798 }
799 else if ( strcmp( argv() [ 0 ], "embeddedkonsole" ) != 0 ) { 799 else if ( strcmp( argv() [ 0 ], "embeddedkonsole" ) != 0 ) {
800 active->close(); 800 active->close();
801 } 801 }
802 } 802 }
803 } 803 }
804 else if ( ke->simpleData.keycode >= Qt::Key_F1 && ke->simpleData.keycode <= Qt::Key_F29 ) { 804 else if ( ke->simpleData.keycode >= Qt::Key_F1 && ke->simpleData.keycode <= Qt::Key_F29 ) {
805 // this should be if ( ODevice::inst ( )-> buttonForKeycode ( ... )) 805 // this should be if ( ODevice::inst ( )-> buttonForKeycode ( ... ))
806 // but we cannot access libopie function within libqpe :( 806 // but we cannot access libopie function within libqpe :(
807 807
808 QWidget * active = activeWindow ( ); 808 QWidget * active = activeWindow ( );
809 if ( active && ((int) active-> winId ( ) == ke-> simpleData.window )) { 809 if ( active && ((int) active-> winId ( ) == ke-> simpleData.window )) {
810 if ( d-> kbgrabbed ) { // we grabbed the keyboard 810 if ( d-> kbgrabbed ) { // we grabbed the keyboard
811 QChar ch ( ke-> simpleData.unicode ); 811 QChar ch ( ke-> simpleData.unicode );
812 QKeyEvent qke ( ke-> simpleData. is_press ? QEvent::KeyPress : QEvent::KeyRelease, 812 QKeyEvent qke ( ke-> simpleData. is_press ? QEvent::KeyPress : QEvent::KeyRelease,
813 ke-> simpleData.keycode, 813 ke-> simpleData.keycode,
814 ch. latin1 ( ), 814 ch. latin1 ( ),
815 ke-> simpleData.modifiers, 815 ke-> simpleData.modifiers,
816 QString ( ch ), 816 QString ( ch ),
817 ke-> simpleData.is_auto_repeat, 1 ); 817 ke-> simpleData.is_auto_repeat, 1 );
818 818
819 QObject *which = QWidget::keyboardGrabber ( ); 819 QObject *which = QWidget::keyboardGrabber ( );
820 if ( !which ) 820 if ( !which )
821 which = QApplication::focusWidget ( ); 821 which = QApplication::focusWidget ( );
822 if ( !which ) 822 if ( !which )
823 which = QApplication::activeWindow ( ); 823 which = QApplication::activeWindow ( );
824 if ( !which ) 824 if ( !which )
825 which = qApp; 825 which = qApp;
826 826
827 QApplication::sendEvent ( which, &qke ); 827 QApplication::sendEvent ( which, &qke );
828 } 828 }
829 else { // we didn't grab the keyboard, so send the event to the launcher 829 else { // we didn't grab the keyboard, so send the event to the launcher
830 QCopEnvelope e ( "QPE/Launcher", "deviceButton(int,int,int)" ); 830 QCopEnvelope e ( "QPE/Launcher", "deviceButton(int,int,int)" );
831 e << int( ke-> simpleData.keycode ) << int( ke-> simpleData. is_press ) << int( ke-> simpleData.is_auto_repeat ); 831 e << int( ke-> simpleData.keycode ) << int( ke-> simpleData. is_press ) << int( ke-> simpleData.is_auto_repeat );
832 } 832 }
833 } 833 }
834 return true; 834 return true;
835 } 835 }
836 } 836 }
837 if ( e->type == QWSEvent::Focus ) { 837 if ( e->type == QWSEvent::Focus ) {
838 QWSFocusEvent * fe = ( QWSFocusEvent* ) e; 838 QWSFocusEvent * fe = ( QWSFocusEvent* ) e;
839 if ( !fe->simpleData.get_focus ) { 839 if ( !fe->simpleData.get_focus ) {
840 QWidget * active = activeWindow(); 840 QWidget * active = activeWindow();
841 while ( active && active->isPopup() ) { 841 while ( active && active->isPopup() ) {
842 active->close(); 842 active->close();
843 active = activeWindow(); 843 active = activeWindow();
844 } 844 }
845 } 845 }
846 else { 846 else {
847 // make sure our modal widget is ALWAYS on top 847 // make sure our modal widget is ALWAYS on top
848 QWidget *topm = activeModalWidget(); 848 QWidget *topm = activeModalWidget();
849 if ( topm ) { 849 if ( topm ) {
850 topm->raise(); 850 topm->raise();
851 } 851 }
852 } 852 }
853 if ( fe->simpleData.get_focus && inputMethodDict ) { 853 if ( fe->simpleData.get_focus && inputMethodDict ) {
854 InputMethodHint m = inputMethodHint( QWidget::find( e->window() ) ); 854 InputMethodHint m = inputMethodHint( QWidget::find( e->window() ) );
855 if ( m == AlwaysOff ) 855 if ( m == AlwaysOff )
856 Global::hideInputMethod(); 856 Global::hideInputMethod();
857 if ( m == AlwaysOn ) 857 if ( m == AlwaysOn )
858 Global::showInputMethod(); 858 Global::showInputMethod();
859 } 859 }
860 } 860 }
861 861
862 862
863 return QApplication::qwsEventFilter( e ); 863 return QApplication::qwsEventFilter( e );
864} 864}
865#endif 865#endif
866 866
867/*! 867/*!
868 Destroys the QPEApplication. 868 Destroys the QPEApplication.
869*/ 869*/
870QPEApplication::~QPEApplication() 870QPEApplication::~QPEApplication()
871{ 871{
872 ungrabKeyboard(); 872 ungrabKeyboard();
873#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 873#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
874 // Need to delete QCopChannels early, since the display will 874 // Need to delete QCopChannels early, since the display will
875 // be gone by the time we get to ~QObject(). 875 // be gone by the time we get to ~QObject().
876 delete sysChannel; 876 delete sysChannel;
877 delete pidChannel; 877 delete pidChannel;
878#endif 878#endif
879 879
880 delete d; 880 delete d;
881} 881}
882 882
883/*! 883/*!
884 Returns <tt>$OPIEDIR/</tt>. 884 Returns <tt>$OPIEDIR/</tt>.
885*/ 885*/
886QString QPEApplication::qpeDir() 886QString QPEApplication::qpeDir()
887{ 887{
888 const char * base = getenv( "OPIEDIR" ); 888 const char * base = getenv( "OPIEDIR" );
889 if ( base ) 889 if ( base )
890 return QString( base ) + "/"; 890 return QString( base ) + "/";
891 891
892 return QString( "../" ); 892 return QString( "../" );
893} 893}
894 894
895/*! 895/*!
896 Returns the user's current Document directory. There is a trailing "/". 896 Returns the user's current Document directory. There is a trailing "/".
897 .. well, it does now,, and there's no trailing '/' 897 .. well, it does now,, and there's no trailing '/'
898*/ 898*/
899QString QPEApplication::documentDir() 899QString QPEApplication::documentDir()
900{ 900{
901 const char* base = getenv( "HOME"); 901 const char* base = getenv( "HOME");
902 if ( base ) 902 if ( base )
903 return QString( base ) + "/Documents"; 903 return QString( base ) + "/Documents";
904 904
905 return QString( "../Documents" ); 905 return QString( "../Documents" );
906} 906}
907 907
908static int deforient = -1; 908static int deforient = -1;
909 909
910/*! 910/*!
911 \internal 911 \internal
912*/ 912*/
913int QPEApplication::defaultRotation() 913int QPEApplication::defaultRotation()
914{ 914{
915 if ( deforient < 0 ) { 915 if ( deforient < 0 ) {
916 QString d = getenv( "QWS_DISPLAY" ); 916 QString d = getenv( "QWS_DISPLAY" );
917 if ( d.contains( "Rot90" ) ) { 917 if ( d.contains( "Rot90" ) ) {
918 deforient = 90; 918 deforient = 90;
919 } 919 }
920 else if ( d.contains( "Rot180" ) ) { 920 else if ( d.contains( "Rot180" ) ) {
921 deforient = 180; 921 deforient = 180;
922 } 922 }
923 else if ( d.contains( "Rot270" ) ) { 923 else if ( d.contains( "Rot270" ) ) {
924 deforient = 270; 924 deforient = 270;
925 } 925 }
926 else { 926 else {
927 deforient = 0; 927 deforient = 0;
928 } 928 }
929 } 929 }
930 return deforient; 930 return deforient;
931} 931}
932 932
933/*! 933/*!
934 \internal 934 \internal
935*/ 935*/
936void QPEApplication::setDefaultRotation( int r ) 936void QPEApplication::setDefaultRotation( int r )
937{ 937{
938 if ( qApp->type() == GuiServer ) { 938 if ( qApp->type() == GuiServer ) {
939 deforient = r; 939 deforient = r;
940 setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 ); 940 setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 );
941 Config config("qpe"); 941 Config config("qpe");
942 config.setGroup( "Rotation" ); 942 config.setGroup( "Rotation" );
943 config.writeEntry( "Rot", r ); 943 config.writeEntry( "Rot", r );
944 } 944 }
945 else { 945 else {
946#ifndef QT_NO_COP 946#ifndef QT_NO_COP
947 { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" ); 947 { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" );
948 e << r; 948 e << r;
949 } 949 }
950#endif 950#endif
951 951
952 } 952 }
953} 953}
954 954
955 955
956/*! 956/*!
957 \internal 957 \internal
958*/ 958*/
959void QPEApplication::applyStyle() 959void QPEApplication::applyStyle()
960{ 960{
961 Config config( "qpe" ); 961 Config config( "qpe" );
962 config.setGroup( "Appearance" ); 962 config.setGroup( "Appearance" );
963 963
964 #if QT_VERSION > 233
964 // don't block ourselves ... 965 // don't block ourselves ...
965 Opie::force_appearance = 0; 966 Opie::force_appearance = 0;
966 967
967 static QString appname = Opie::binaryName ( ); 968 static QString appname = Opie::binaryName ( );
968 969
969 QStringList ex = config. readListEntry ( "NoStyle", ';' ); 970 QStringList ex = config. readListEntry ( "NoStyle", ';' );
970 int nostyle = 0; 971 int nostyle = 0;
971 for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) { 972 for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) {
972 if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) { 973 if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) {
973 nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 ); 974 nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 );
974 break; 975 break;
975 } 976 }
976 } 977 }
977 978
978 // Widget style 979 // Widget style
979 QString style = config.readEntry( "Style", "Light" ); 980 QString style = config.readEntry( "Style", "Light" );
980 981
981 // don't set a custom style 982 // don't set a custom style
982 if ( nostyle & Opie::Force_Style ) 983 if ( nostyle & Opie::Force_Style )
983 style = "Light"; 984 style = "Light";
984 985
985 internalSetStyle ( style ); 986 internalSetStyle ( style );
986 987
987 // Colors 988 // Colors
988 QColor bgcolor( config.readEntry( "Background", "#E5E1D5" ) ); 989 QColor bgcolor( config.readEntry( "Background", "#E5E1D5" ) );
989 QColor btncolor( config.readEntry( "Button", "#D6CDBB" ) ); 990 QColor btncolor( config.readEntry( "Button", "#D6CDBB" ) );
990 QPalette pal( btncolor, bgcolor ); 991 QPalette pal( btncolor, bgcolor );
991 QString color = config.readEntry( "Highlight", "#800000" ); 992 QString color = config.readEntry( "Highlight", "#800000" );
992 pal.setColor( QColorGroup::Highlight, QColor( color ) ); 993 pal.setColor( QColorGroup::Highlight, QColor( color ) );
993 color = config.readEntry( "HighlightedText", "#FFFFFF" ); 994 color = config.readEntry( "HighlightedText", "#FFFFFF" );
994 pal.setColor( QColorGroup::HighlightedText, QColor( color ) ); 995 pal.setColor( QColorGroup::HighlightedText, QColor( color ) );
995 color = config.readEntry( "Text", "#000000" ); 996 color = config.readEntry( "Text", "#000000" );
996 pal.setColor( QColorGroup::Text, QColor( color ) ); 997 pal.setColor( QColorGroup::Text, QColor( color ) );
997 color = config.readEntry( "ButtonText", "#000000" ); 998 color = config.readEntry( "ButtonText", "#000000" );
998 pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) ); 999 pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) );
999 color = config.readEntry( "Base", "#FFFFFF" ); 1000 color = config.readEntry( "Base", "#FFFFFF" );
1000 pal.setColor( QColorGroup::Base, QColor( color ) ); 1001 pal.setColor( QColorGroup::Base, QColor( color ) );
1001 1002
1002 pal.setColor( QPalette::Disabled, QColorGroup::Text, 1003 pal.setColor( QPalette::Disabled, QColorGroup::Text,
1003 pal.color( QPalette::Active, QColorGroup::Background ).dark() ); 1004 pal.color( QPalette::Active, QColorGroup::Background ).dark() );
1004 1005
1005 setPalette( pal, TRUE ); 1006 setPalette( pal, TRUE );
1006 1007
1007 // Window Decoration 1008 // Window Decoration
1008 QString dec = config.readEntry( "Decoration", "Qtopia" ); 1009 QString dec = config.readEntry( "Decoration", "Qtopia" );
1009 1010
1010 // don't set a custom deco 1011 // don't set a custom deco
1011 if ( nostyle & Opie::Force_Decoration ) 1012 if ( nostyle & Opie::Force_Decoration )
1012 dec = ""; 1013 dec = "";
1013 1014
1014 //qDebug ( "Setting Deco: %s -- old %s (%d)", dec.latin1(), d-> decorationName.latin1(), nostyle); 1015 //qDebug ( "Setting Deco: %s -- old %s (%d)", dec.latin1(), d-> decorationName.latin1(), nostyle);
1015 1016
1016 if ( dec != d->decorationName ) { 1017 if ( dec != d->decorationName ) {
1017 qwsSetDecoration( new QPEDecoration( dec ) ); 1018 qwsSetDecoration( new QPEDecoration( dec ) );
1018 d->decorationName = dec; 1019 d->decorationName = dec;
1019 } 1020 }
1020 1021
1021 // Font 1022 // Font
1022 QString ff = config.readEntry( "FontFamily", font().family() ); 1023 QString ff = config.readEntry( "FontFamily", font().family() );
1023 int fs = config.readNumEntry( "FontSize", font().pointSize() ); 1024 int fs = config.readNumEntry( "FontSize", font().pointSize() );
1024 1025
1025 // don't set a custom font 1026 // don't set a custom font
1026 if ( nostyle & Opie::Force_Font ) { 1027 if ( nostyle & Opie::Force_Font ) {
1027 ff = "Vera"; 1028 ff = "Vera";
1028 fs = 10; 1029 fs = 10;
1029 } 1030 }
1030 1031
1031 setFont ( QFont ( ff, fs ), true ); 1032 setFont ( QFont ( ff, fs ), true );
1032 1033
1033 // revert to global blocking policy ... 1034 // revert to global blocking policy ...
1034 Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None; 1035 Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None;
1035 Opie::force_appearance &= ~nostyle; 1036 Opie::force_appearance &= ~nostyle;
1037 #endif
1036} 1038}
1037 1039
1038void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data ) 1040void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data )
1039{ 1041{
1040#ifdef Q_WS_QWS 1042#ifdef Q_WS_QWS
1041 QDataStream stream( data, IO_ReadOnly ); 1043 QDataStream stream( data, IO_ReadOnly );
1042 if ( msg == "applyStyle()" ) { 1044 if ( msg == "applyStyle()" ) {
1043 applyStyle(); 1045 applyStyle();
1044 } 1046 }
1045 else if ( msg == "toggleApplicationMenu()" ) { 1047 else if ( msg == "toggleApplicationMenu()" ) {
1046 QWidget *active = activeWindow ( ); 1048 QWidget *active = activeWindow ( );
1047 1049
1048 if ( active ) { 1050 if ( active ) {
1049 QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( ); 1051 QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( );
1050 bool oldactive = man-> isActive ( ); 1052 bool oldactive = man-> isActive ( );
1051 1053
1052 man-> setActive( !man-> isActive() ); 1054 man-> setActive( !man-> isActive() );
1053 1055
1054 if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu 1056 if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu
1055 QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" ); 1057 QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" );
1056 } 1058 }
1057 } 1059 }
1058 } 1060 }
1059 else if ( msg == "setDefaultRotation(int)" ) { 1061 else if ( msg == "setDefaultRotation(int)" ) {
1060 if ( type() == GuiServer ) { 1062 if ( type() == GuiServer ) {
1061 int r; 1063 int r;
1062 stream >> r; 1064 stream >> r;
1063 setDefaultRotation( r ); 1065 setDefaultRotation( r );
1064 } 1066 }
1065 } 1067 }
1066 else if ( msg == "setCurrentRotation(int)" ) { 1068 else if ( msg == "setCurrentRotation(int)" ) {
1067 int r; 1069 int r;
1068 stream >> r; 1070 stream >> r;
1069 setCurrentRotation( r ); 1071 setCurrentRotation( r );
1070 } 1072 }
1071 else if ( msg == "shutdown()" ) { 1073 else if ( msg == "shutdown()" ) {
1072 if ( type() == GuiServer ) 1074 if ( type() == GuiServer )
1073 shutdown(); 1075 shutdown();
1074 } 1076 }
1075 else if ( msg == "quit()" ) { 1077 else if ( msg == "quit()" ) {
1076 if ( type() != GuiServer ) 1078 if ( type() != GuiServer )
1077 tryQuit(); 1079 tryQuit();
1078 } 1080 }
1079 else if ( msg == "forceQuit()" ) { 1081 else if ( msg == "forceQuit()" ) {
1080 if ( type() != GuiServer ) 1082 if ( type() != GuiServer )
1081 quit(); 1083 quit();
1082 } 1084 }
1083 else if ( msg == "restart()" ) { 1085 else if ( msg == "restart()" ) {
1084 if ( type() == GuiServer ) 1086 if ( type() == GuiServer )
1085 restart(); 1087 restart();
1086 } 1088 }
1087 else if ( msg == "language(QString)" ) { 1089 else if ( msg == "language(QString)" ) {
1088 if ( type() == GuiServer ) { 1090 if ( type() == GuiServer ) {
1089 QString l; 1091 QString l;
1090 stream >> l; 1092 stream >> l;
1091 QString cl = getenv( "LANG" ); 1093 QString cl = getenv( "LANG" );
1092 if ( cl != l ) { 1094 if ( cl != l ) {
1093 if ( l.isNull() ) 1095 if ( l.isNull() )
1094 unsetenv( "LANG" ); 1096 unsetenv( "LANG" );
1095 else 1097 else
1096 setenv( "LANG", l.latin1(), 1 ); 1098 setenv( "LANG", l.latin1(), 1 );
1097 restart(); 1099 restart();
1098 } 1100 }
1099 } 1101 }
1100 } 1102 }
1101 else if ( msg == "timeChange(QString)" ) { 1103 else if ( msg == "timeChange(QString)" ) {
1102 QString t; 1104 QString t;
1103 stream >> t; 1105 stream >> t;
1104 if ( t.isNull() ) 1106 if ( t.isNull() )
1105 unsetenv( "TZ" ); 1107 unsetenv( "TZ" );
1106 else 1108 else
1107 setenv( "TZ", t.latin1(), 1 ); 1109 setenv( "TZ", t.latin1(), 1 );
1108 // emit the signal so everyone else knows... 1110 // emit the signal so everyone else knows...
1109 emit timeChanged(); 1111 emit timeChanged();
1110 } 1112 }
1111 else if ( msg == "execute(QString)" ) { 1113 else if ( msg == "execute(QString)" ) {
1112 if ( type() == GuiServer ) { 1114 if ( type() == GuiServer ) {
1113 QString t; 1115 QString t;
1114 stream >> t; 1116 stream >> t;
1115 Global::execute( t ); 1117 Global::execute( t );
1116 } 1118 }
1117 } 1119 }
1118 else if ( msg == "execute(QString,QString)" ) { 1120 else if ( msg == "execute(QString,QString)" ) {
1119 if ( type() == GuiServer ) { 1121 if ( type() == GuiServer ) {
1120 QString t, d; 1122 QString t, d;
1121 stream >> t >> d; 1123 stream >> t >> d;
1122 Global::execute( t, d ); 1124 Global::execute( t, d );
1123 } 1125 }
1124 } 1126 }
1125 else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) { 1127 else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) {
1126 if ( type() == GuiServer ) { 1128 if ( type() == GuiServer ) {
1127 QDateTime when; 1129 QDateTime when;
1128 QCString channel, message; 1130 QCString channel, message;
1129 int data; 1131 int data;
1130 stream >> when >> channel >> message >> data; 1132 stream >> when >> channel >> message >> data;
1131 AlarmServer::addAlarm( when, channel, message, data ); 1133 AlarmServer::addAlarm( when, channel, message, data );
1132 } 1134 }
1133 } 1135 }
1134 else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) { 1136 else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) {
1135 if ( type() == GuiServer ) { 1137 if ( type() == GuiServer ) {
1136 QDateTime when; 1138 QDateTime when;
1137 QCString channel, message; 1139 QCString channel, message;
1138 int data; 1140 int data;
1139 stream >> when >> channel >> message >> data; 1141 stream >> when >> channel >> message >> data;
1140 AlarmServer::deleteAlarm( when, channel, message, data ); 1142 AlarmServer::deleteAlarm( when, channel, message, data );
1141 } 1143 }
1142 } 1144 }
1143 else if ( msg == "clockChange(bool)" ) { 1145 else if ( msg == "clockChange(bool)" ) {
1144 int tmp; 1146 int tmp;
1145 stream >> tmp; 1147 stream >> tmp;
1146 emit clockChanged( tmp ); 1148 emit clockChanged( tmp );
1147 } 1149 }
1148 else if ( msg == "weekChange(bool)" ) { 1150 else if ( msg == "weekChange(bool)" ) {
1149 int tmp; 1151 int tmp;
1150 stream >> tmp; 1152 stream >> tmp;
1151 emit weekChanged( tmp ); 1153 emit weekChanged( tmp );
1152 } 1154 }
1153 else if ( msg == "setDateFormat(DateFormat)" ) { 1155 else if ( msg == "setDateFormat(DateFormat)" ) {
1154 DateFormat tmp; 1156 DateFormat tmp;
1155 stream >> tmp; 1157 stream >> tmp;
1156 emit dateFormatChanged( tmp ); 1158 emit dateFormatChanged( tmp );
1157 } 1159 }
1158 else if ( msg == "setVolume(int,int)" ) { 1160 else if ( msg == "setVolume(int,int)" ) {
1159 int t, v; 1161 int t, v;
1160 stream >> t >> v; 1162 stream >> t >> v;
1161 setVolume( t, v ); 1163 setVolume( t, v );
1162 emit volumeChanged( muted ); 1164 emit volumeChanged( muted );
1163 } 1165 }
1164 else if ( msg == "volumeChange(bool)" ) { 1166 else if ( msg == "volumeChange(bool)" ) {
1165 stream >> muted; 1167 stream >> muted;
1166 setVolume(); 1168 setVolume();
1167 emit volumeChanged( muted ); 1169 emit volumeChanged( muted );
1168 } 1170 }
1169 else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> 1171 else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
1170 int t, v; 1172 int t, v;
1171 stream >> t >> v; 1173 stream >> t >> v;
1172 setMic( t, v ); 1174 setMic( t, v );
1173 emit micChanged( micMuted ); 1175 emit micChanged( micMuted );
1174 } 1176 }
1175 else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> 1177 else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
1176 stream >> micMuted; 1178 stream >> micMuted;
1177 setMic(); 1179 setMic();
1178 emit micChanged( micMuted ); 1180 emit micChanged( micMuted );
1179 } 1181 }
1180 else if ( msg == "setBass(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1182 else if ( msg == "setBass(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1181 int t, v; 1183 int t, v;
1182 stream >> t >> v; 1184 stream >> t >> v;
1183 setBass( t, v ); 1185 setBass( t, v );
1184 } 1186 }
1185 else if ( msg == "bassChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1187 else if ( msg == "bassChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1186 setBass(); 1188 setBass();
1187 } 1189 }
1188 else if ( msg == "setTreble(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1190 else if ( msg == "setTreble(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1189 int t, v; 1191 int t, v;
1190 stream >> t >> v; 1192 stream >> t >> v;
1191 setTreble( t, v ); 1193 setTreble( t, v );
1192 } 1194 }
1193 else if ( msg == "trebleChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1195 else if ( msg == "trebleChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1194 setTreble(); 1196 setTreble();
1195 } 1197 }
1196 1198
1197 1199
1198 1200
1199#endif 1201#endif
1200} 1202}
1201 1203
1202/*! 1204/*!
1203 \internal 1205 \internal
1204*/ 1206*/
1205bool QPEApplication::raiseAppropriateWindow() 1207bool QPEApplication::raiseAppropriateWindow()
1206{ 1208{
1207 bool r = FALSE; 1209 bool r = FALSE;
1208 // ########## raise()ing main window should raise and set active 1210 // ########## raise()ing main window should raise and set active
1209 // ########## it and then all childen. This belongs in Qt/Embedded 1211 // ########## it and then all childen. This belongs in Qt/Embedded
1210 QWidget *top = d->qpe_main_widget; 1212 QWidget *top = d->qpe_main_widget;
1211 if ( !top ) 1213 if ( !top )
1212 top = mainWidget(); 1214 top = mainWidget();
1213 if ( top && d->keep_running ) { 1215 if ( top && d->keep_running ) {
1214 if ( top->isVisible() ) 1216 if ( top->isVisible() )
1215 r = TRUE; 1217 r = TRUE;
1216 else if (d->preloaded) { 1218 else if (d->preloaded) {
1217 // We are preloaded and not visible.. pretend we just started.. 1219 // We are preloaded and not visible.. pretend we just started..
1218 QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); 1220 QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
1219 e << d->appName; 1221 e << d->appName;
1220 } 1222 }
1221 1223
1222 d->show_mx(top, d->nomaximize); 1224 d->show_mx(top, d->nomaximize);
1223 top->raise(); 1225 top->raise();
1224 top->setActiveWindow(); 1226 top->setActiveWindow();
1225 } 1227 }
1226 QWidget *topm = activeModalWidget(); 1228 QWidget *topm = activeModalWidget();
1227 if ( topm && topm != top ) { 1229 if ( topm && topm != top ) {
1228 topm->show(); 1230 topm->show();
1229 topm->raise(); 1231 topm->raise();
1230 topm->setActiveWindow(); 1232 topm->setActiveWindow();
1231 // If we haven't already handled the fastAppShowing message 1233 // If we haven't already handled the fastAppShowing message
1232 if (!top && d->preloaded) { 1234 if (!top && d->preloaded) {
1233 QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); 1235 QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
1234 e << d->appName; 1236 e << d->appName;
1235 } 1237 }
1236 r = FALSE; 1238 r = FALSE;
1237 } 1239 }
1238 return r; 1240 return r;
1239} 1241}
1240 1242
1241void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data) 1243void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data)
1242{ 1244{
1243#ifdef Q_WS_QWS 1245#ifdef Q_WS_QWS
1244 1246
1245 if ( msg == "quit()" ) { 1247 if ( msg == "quit()" ) {
1246 tryQuit(); 1248 tryQuit();
1247 } 1249 }
1248 else if ( msg == "quitIfInvisible()" ) { 1250 else if ( msg == "quitIfInvisible()" ) {
1249 if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() ) 1251 if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() )
1250 quit(); 1252 quit();
1251 } 1253 }
1252 else if ( msg == "close()" ) { 1254 else if ( msg == "close()" ) {
1253 hideOrQuit(); 1255 hideOrQuit();
1254 } 1256 }
1255 else if ( msg == "disablePreload()" ) { 1257 else if ( msg == "disablePreload()" ) {
1256 d->preloaded = FALSE; 1258 d->preloaded = FALSE;
1257 d->keep_running = TRUE; 1259 d->keep_running = TRUE;
1258 /* so that quit will quit */ 1260 /* so that quit will quit */
1259 } 1261 }
1260 else if ( msg == "enablePreload()" ) { 1262 else if ( msg == "enablePreload()" ) {
1261 if (d->qpe_main_widget) 1263 if (d->qpe_main_widget)
1262 d->preloaded = TRUE; 1264 d->preloaded = TRUE;
1263 d->keep_running = TRUE; 1265 d->keep_running = TRUE;
1264 /* so next quit won't quit */ 1266 /* so next quit won't quit */
1265 } 1267 }
1266 else if ( msg == "raise()" ) { 1268 else if ( msg == "raise()" ) {
1267 d->keep_running = TRUE; 1269 d->keep_running = TRUE;
1268 d->notbusysent = FALSE; 1270 d->notbusysent = FALSE;
1269 raiseAppropriateWindow(); 1271 raiseAppropriateWindow();
1270 // Tell the system we're still chugging along... 1272 // Tell the system we're still chugging along...
1271 QCopEnvelope e("QPE/System", "appRaised(QString)"); 1273 QCopEnvelope e("QPE/System", "appRaised(QString)");
1272 e << d->appName; 1274 e << d->appName;
1273 } 1275 }
1274 else if ( msg == "flush()" ) { 1276 else if ( msg == "flush()" ) {
1275 emit flush(); 1277 emit flush();
1276 // we need to tell the desktop 1278 // we need to tell the desktop
1277 QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" ); 1279 QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" );
1278 e << d->appName; 1280 e << d->appName;
1279 } 1281 }
1280 else if ( msg == "reload()" ) { 1282 else if ( msg == "reload()" ) {
1281 emit reload(); 1283 emit reload();
1282 } 1284 }
1283 else if ( msg == "setDocument(QString)" ) { 1285 else if ( msg == "setDocument(QString)" ) {
1284 d->keep_running = TRUE; 1286 d->keep_running = TRUE;
1285 QDataStream stream( data, IO_ReadOnly ); 1287 QDataStream stream( data, IO_ReadOnly );
1286 QString doc; 1288 QString doc;
1287 stream >> doc; 1289 stream >> doc;
1288 QWidget *mw = mainWidget(); 1290 QWidget *mw = mainWidget();
1289 if ( !mw ) 1291 if ( !mw )
1290 mw = d->qpe_main_widget; 1292 mw = d->qpe_main_widget;
1291 if ( mw ) 1293 if ( mw )
1292 Global::setDocument( mw, doc ); 1294 Global::setDocument( mw, doc );
1293 } 1295 }
1294 else if ( msg == "nextView()" ) { 1296 else if ( msg == "nextView()" ) {
1295 qDebug("got nextView()"); 1297 qDebug("got nextView()");
1296 /* 1298 /*
1297 if ( raiseAppropriateWindow() ) 1299 if ( raiseAppropriateWindow() )
1298 */ 1300 */
1299 emit appMessage( msg, data); 1301 emit appMessage( msg, data);
1300 } 1302 }
1301 else { 1303 else {
1302 emit appMessage( msg, data); 1304 emit appMessage( msg, data);
1303 } 1305 }
1304 1306
1305#endif 1307#endif
1306} 1308}
1307 1309
1308 1310
1309/*! 1311/*!
1310 Sets widget \a mw as the mainWidget() and shows it. For small windows, 1312 Sets widget \a mw as the mainWidget() and shows it. For small windows,
1311 consider passing TRUE for \a nomaximize rather than the default FALSE. 1313 consider passing TRUE for \a nomaximize rather than the default FALSE.
1312 1314
1313 \sa showMainDocumentWidget() 1315 \sa showMainDocumentWidget()
1314*/ 1316*/
1315void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize ) 1317void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize )
1316{ 1318{
1317 d->show(mw, nomaximize ); 1319 d->show(mw, nomaximize );
1318} 1320}
1319 1321
1320/*! 1322/*!
1321 Sets widget \a mw as the mainWidget() and shows it. For small windows, 1323 Sets widget \a mw as the mainWidget() and shows it. For small windows,
1322 consider passing TRUE for \a nomaximize rather than the default FALSE. 1324 consider passing TRUE for \a nomaximize rather than the default FALSE.
1323 1325
1324 This calls designates the application as 1326 This calls designates the application as
1325 a \link docwidget.html document-oriented\endlink application. 1327 a \link docwidget.html document-oriented\endlink application.
1326 1328
1327 The \a mw widget \e must have this slot: setDocument(const QString&). 1329 The \a mw widget \e must have this slot: setDocument(const QString&).
1328 1330
1329 \sa showMainWidget() 1331 \sa showMainWidget()
1330*/ 1332*/
1331void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize ) 1333void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize )
1332{ 1334{
1333 if ( mw && argc() == 2 ) 1335 if ( mw && argc() == 2 )
1334 Global::setDocument( mw, QString::fromUtf8(argv()[1]) ); 1336 Global::setDocument( mw, QString::fromUtf8(argv()[1]) );
1335 1337
1336 1338
1337 d->show(mw, nomaximize ); 1339 d->show(mw, nomaximize );
1338} 1340}
1339 1341
1340 1342
1341/*! 1343/*!
1342 If an application is started via a \link qcop.html QCop\endlink 1344 If an application is started via a \link qcop.html QCop\endlink
1343 message, the application will process the \link qcop.html 1345 message, the application will process the \link qcop.html
1344 QCop\endlink message and then quit. If the application calls this 1346 QCop\endlink message and then quit. If the application calls this
1345 function while processing a \link qcop.html QCop\endlink message, 1347 function while processing a \link qcop.html QCop\endlink message,
1346 after processing its outstanding \link qcop.html QCop\endlink 1348 after processing its outstanding \link qcop.html QCop\endlink
1347 messages the application will start 'properly' and show itself. 1349 messages the application will start 'properly' and show itself.
1348 1350
1349 \sa keepRunning() 1351 \sa keepRunning()
1350*/ 1352*/
1351void QPEApplication::setKeepRunning() 1353void QPEApplication::setKeepRunning()
1352{ 1354{
1353 if ( qApp && qApp->inherits( "QPEApplication" ) ) { 1355 if ( qApp && qApp->inherits( "QPEApplication" ) ) {
1354 QPEApplication * qpeApp = ( QPEApplication* ) qApp; 1356 QPEApplication * qpeApp = ( QPEApplication* ) qApp;
1355 qpeApp->d->keep_running = TRUE; 1357 qpeApp->d->keep_running = TRUE;
1356 } 1358 }
1357} 1359}
1358 1360
1359/*! 1361/*!
1360 Returns TRUE if the application will quit after processing the 1362 Returns TRUE if the application will quit after processing the
1361 current list of qcop messages; otherwise returns FALSE. 1363 current list of qcop messages; otherwise returns FALSE.
1362 1364
1363 \sa setKeepRunning() 1365 \sa setKeepRunning()
1364*/ 1366*/
1365bool QPEApplication::keepRunning() const 1367bool QPEApplication::keepRunning() const
1366{ 1368{
1367 return d->keep_running; 1369 return d->keep_running;
1368} 1370}
1369 1371
1370/*! 1372/*!
1371 \internal 1373 \internal
1372*/ 1374*/
1373void QPEApplication::internalSetStyle( const QString &style ) 1375void QPEApplication::internalSetStyle( const QString &style )
1374{ 1376{
1375#if QT_VERSION >= 300 1377#if QT_VERSION >= 300
1376 if ( style == "QPE" ) { 1378 if ( style == "QPE" ) {
1377 setStyle( new QPEStyle ); 1379 setStyle( new QPEStyle );
1378 } 1380 }
1379 else { 1381 else {
1380 QStyle *s = QStyleFactory::create( style ); 1382 QStyle *s = QStyleFactory::create( style );
1381 if ( s ) 1383 if ( s )
1382 setStyle( s ); 1384 setStyle( s );
1383 } 1385 }
1384#else 1386#else
1385 if ( style == "Windows" ) { 1387 if ( style == "Windows" ) {
1386 setStyle( new QWindowsStyle ); 1388 setStyle( new QWindowsStyle );
1387 } 1389 }
1388 else if ( style == "QPE" ) { 1390 else if ( style == "QPE" ) {
1389 setStyle( new QPEStyle ); 1391 setStyle( new QPEStyle );
1390 } 1392 }
1391 else if ( style == "Light" ) { 1393 else if ( style == "Light" ) {
1392 setStyle( new LightStyle ); 1394 setStyle( new LightStyle );
1393 } 1395 }
1394#ifndef QT_NO_STYLE_PLATINUM 1396#ifndef QT_NO_STYLE_PLATINUM
1395 else if ( style == "Platinum" ) { 1397 else if ( style == "Platinum" ) {
1396 setStyle( new QPlatinumStyle ); 1398 setStyle( new QPlatinumStyle );
1397 } 1399 }
1398#endif 1400#endif
1399#ifndef QT_NO_STYLE_MOTIF 1401#ifndef QT_NO_STYLE_MOTIF
1400 else if ( style == "Motif" ) { 1402 else if ( style == "Motif" ) {
1401 setStyle( new QMotifStyle ); 1403 setStyle( new QMotifStyle );
1402 } 1404 }
1403#endif 1405#endif
1404#ifndef QT_NO_STYLE_MOTIFPLUS 1406#ifndef QT_NO_STYLE_MOTIFPLUS
1405 else if ( style == "MotifPlus" ) { 1407 else if ( style == "MotifPlus" ) {
1406 setStyle( new QMotifPlusStyle ); 1408 setStyle( new QMotifPlusStyle );
1407 } 1409 }
1408#endif 1410#endif
1409 1411
1410 else { 1412 else {
1411 QStyle *sty = 0; 1413 QStyle *sty = 0;
1412 QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/"; 1414 QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/";
1413 1415
1414 if ( style. find ( ".so" ) > 0 ) 1416 if ( style. find ( ".so" ) > 0 )
1415 path += style; 1417 path += style;
1416 else 1418 else
1417 path = path + "lib" + style. lower ( ) + ".so"; // compatibility 1419 path = path + "lib" + style. lower ( ) + ".so"; // compatibility
1418 1420
1419 static QLibrary *lastlib = 0; 1421 static QLibrary *lastlib = 0;
diff --git a/library/qpeapplication.h b/library/qpeapplication.h
index e35c008..65a6d33 100644
--- a/library/qpeapplication.h
+++ b/library/qpeapplication.h
@@ -1,193 +1,198 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#ifndef __QPE_APPLICATION_H__ 20#ifndef __QPE_APPLICATION_H__
21#define __QPE_APPLICATION_H__ 21#define __QPE_APPLICATION_H__
22 22
23#include <stdlib.h> // for setenv() 23#include <stdlib.h> // for setenv()
24 24
25#include <qglobal.h> 25#include <qglobal.h>
26#include <qapplication.h> 26#include <qapplication.h>
27#include <qdialog.h> 27#include <qdialog.h>
28#include <qwsdisplay_qws.h> 28#include <qwsdisplay_qws.h>
29#if defined(_WS_QWS_) && !defined(Q_WS_QWS) 29#if defined(_WS_QWS_) && !defined(Q_WS_QWS)
30#define Q_WS_QWS 30#define Q_WS_QWS
31#endif 31#endif
32#include "qpedecoration_qws.h" 32#include "qpedecoration_qws.h"
33#include "timestring.h" 33#include "timestring.h"
34 34
35class QCopChannel; 35class QCopChannel;
36class QPEApplicationData; 36class QPEApplicationData;
37class QWSEvent; 37class QWSEvent;
38class QWSKeyEvent; 38class QWSKeyEvent;
39 39
40 40
41class QPEApplication : public QApplication 41class QPEApplication : public QApplication
42{ 42{
43 Q_OBJECT 43 Q_OBJECT
44public: 44public:
45 QPEApplication( int& argc, char **argv, Type=GuiClient ); 45 QPEApplication( int& argc, char **argv, Type=GuiClient );
46 ~QPEApplication(); 46 ~QPEApplication();
47 47
48 static QString qpeDir(); 48 static QString qpeDir();
49 static QString documentDir(); 49 static QString documentDir();
50 void applyStyle(); 50 void applyStyle();
51 static int defaultRotation(); 51 static int defaultRotation();
52 static void setDefaultRotation(int r); 52 static void setDefaultRotation(int r);
53 static void setCurrentRotation(int r); 53 static void setCurrentRotation(int r);
54 static void grabKeyboard(); 54 static void grabKeyboard();
55 static void ungrabKeyboard(); 55 static void ungrabKeyboard();
56 56
57 enum StylusMode { 57 enum StylusMode {
58 LeftOnly, 58 LeftOnly,
59 RightOnHold 59 RightOnHold
60 // RightOnHoldLeftDelayed, etc. 60 // RightOnHoldLeftDelayed, etc.
61 }; 61 };
62 static void setStylusOperation( QWidget*, StylusMode ); 62 static void setStylusOperation( QWidget*, StylusMode );
63 static StylusMode stylusOperation( QWidget* ); 63 static StylusMode stylusOperation( QWidget* );
64 64
65 enum InputMethodHint { 65 enum InputMethodHint {
66 Normal, 66 Normal,
67 AlwaysOff, 67 AlwaysOff,
68 AlwaysOn 68 AlwaysOn
69 }; 69 };
70 70
71 enum screenSaverHint { 71 enum screenSaverHint {
72 Disable = 0, 72 Disable = 0,
73 DisableLightOff = 1, 73 DisableLightOff = 1,
74 DisableSuspend = 2, 74 DisableSuspend = 2,
75 Enable = 100 75 Enable = 100
76 }; 76 };
77 77
78 static void setInputMethodHint( QWidget *, InputMethodHint ); 78 static void setInputMethodHint( QWidget *, InputMethodHint );
79 static InputMethodHint inputMethodHint( QWidget * ); 79 static InputMethodHint inputMethodHint( QWidget * );
80 80
81 void showMainWidget( QWidget*, bool nomax=FALSE ); 81 void showMainWidget( QWidget*, bool nomax=FALSE );
82 void showMainDocumentWidget( QWidget*, bool nomax=FALSE ); 82 void showMainDocumentWidget( QWidget*, bool nomax=FALSE );
83 static void showDialog( QDialog*, bool nomax=FALSE ); 83 static void showDialog( QDialog*, bool nomax=FALSE );
84 static int execDialog( QDialog*, bool nomax=FALSE ); 84 static int execDialog( QDialog*, bool nomax=FALSE );
85 85
86 static void setKeepRunning(); 86 static void setKeepRunning();
87 bool keepRunning() const; 87 bool keepRunning() const;
88 88
89 bool keyboardGrabbed() const; 89 bool keyboardGrabbed() const;
90 90
91 int exec(); 91 int exec();
92 92
93signals: 93signals:
94 void clientMoused(); 94 void clientMoused();
95 void timeChanged(); 95 void timeChanged();
96 void clockChanged( bool pm ); 96 void clockChanged( bool pm );
97 void micChanged( bool muted ); 97 void micChanged( bool muted );
98 void volumeChanged( bool muted ); 98 void volumeChanged( bool muted );
99 void appMessage( const QCString& msg, const QByteArray& data); 99 void appMessage( const QCString& msg, const QByteArray& data);
100 void weekChanged( bool startOnMonday ); 100 void weekChanged( bool startOnMonday );
101 void dateFormatChanged( DateFormat ); 101 void dateFormatChanged( DateFormat );
102 void flush(); 102 void flush();
103 void reload(); 103 void reload();
104 104
105private slots: 105private slots:
106 void systemMessage( const QCString &msg, const QByteArray &data ); 106 void systemMessage( const QCString &msg, const QByteArray &data );
107 void pidMessage( const QCString &msg, const QByteArray &data ); 107 void pidMessage( const QCString &msg, const QByteArray &data );
108 void removeSenderFromStylusDict(); 108 void removeSenderFromStylusDict();
109 void hideOrQuit(); 109 void hideOrQuit();
110 110
111protected: 111protected:
112 bool qwsEventFilter( QWSEvent * ); 112 bool qwsEventFilter( QWSEvent * );
113 void internalSetStyle( const QString &style ); 113 void internalSetStyle( const QString &style );
114 void prepareForTermination(bool willrestart); 114 void prepareForTermination(bool willrestart);
115 virtual void restart(); 115 virtual void restart();
116 virtual void shutdown(); 116 virtual void shutdown();
117 bool eventFilter( QObject *, QEvent * ); 117 bool eventFilter( QObject *, QEvent * );
118 void timerEvent( QTimerEvent * ); 118 void timerEvent( QTimerEvent * );
119 bool raiseAppropriateWindow(); 119 bool raiseAppropriateWindow();
120 virtual void tryQuit(); 120 virtual void tryQuit();
121 121#if QT_VERSION > 233
122 virtual void polish ( QWidget * ); // this is actually implemented in qt_override.cpp (!) 122 virtual void polish ( QWidget * ); // this is actually implemented in qt_override.cpp (!)
123 123#endif
124private: 124private:
125#ifndef QT_NO_TRANSLATION 125#ifndef QT_NO_TRANSLATION
126 void installTranslation( const QString& baseName ); 126 void installTranslation( const QString& baseName );
127#endif 127#endif
128 void mapToDefaultAction( QWSKeyEvent *ke, int defKey ); 128 void mapToDefaultAction( QWSKeyEvent *ke, int defKey );
129 129
130#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 130#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
131 QCopChannel *sysChannel; 131 QCopChannel *sysChannel;
132 QCopChannel *pidChannel; 132 QCopChannel *pidChannel;
133#endif 133#endif
134 QPEApplicationData *d; 134 QPEApplicationData *d;
135 135
136 bool reserved_sh; 136 bool reserved_sh;
137 137
138 138
139 139
140}; 140};
141 141
142inline void QPEApplication::showDialog( QDialog* d, bool nomax ) 142inline void QPEApplication::showDialog( QDialog* d, bool nomax )
143{ 143{
144 QSize sh = d->sizeHint(); 144 QSize sh = d->sizeHint();
145 int w = QMAX(sh.width(),d->width()); 145 int w = QMAX(sh.width(),d->width());
146 int h = QMAX(sh.height(),d->height()); 146 int h = QMAX(sh.height(),d->height());
147 if ( !nomax 147 if ( !nomax
148 && ( w > qApp->desktop()->width()*3/4 148 && ( w > qApp->desktop()->width()*3/4
149 || h > qApp->desktop()->height()*3/4 ) ) 149 || h > qApp->desktop()->height()*3/4 ) )
150 { 150 {
151 d->showMaximized(); 151 d->showMaximized();
152 } else { 152 } else {
153 d->resize(w,h); 153 d->resize(w,h);
154 d->show(); 154 d->show();
155 } 155 }
156} 156}
157 157
158inline int QPEApplication::execDialog( QDialog* d, bool nomax ) 158inline int QPEApplication::execDialog( QDialog* d, bool nomax )
159{ 159{
160 showDialog(d,nomax); 160 showDialog(d,nomax);
161 return d->exec(); 161 return d->exec();
162} 162}
163 163
164enum Transformation { Rot0, Rot90, Rot180, Rot270 }; /* from qgfxtransformed_qws.cpp */ 164enum Transformation { Rot0, Rot90, Rot180, Rot270 }; /* from qgfxtransformed_qws.cpp */
165 165
166inline int TransToDeg ( Transformation t ) 166inline int TransToDeg ( Transformation t )
167{ 167{
168 int d = static_cast<int>( t ); 168 int d = static_cast<int>( t );
169 return d * 90; 169 return d * 90;
170} 170}
171 171
172inline Transformation DegToTrans ( int d ) 172inline Transformation DegToTrans ( int d )
173{ 173{
174 Transformation t = static_cast<Transformation>( d / 90 ); 174 Transformation t = static_cast<Transformation>( d / 90 );
175 return t; 175 return t;
176} 176}
177 177
178/* 178/*
179 * Set current rotation of Opie, and rotation for newly started apps. 179 * Set current rotation of Opie, and rotation for newly started apps.
180 * Differs from setDefaultRotation in that 1) it rotates currently running apps, 180 * Differs from setDefaultRotation in that 1) it rotates currently running apps,
181 * and 2) does not set deforient or save orientation to qpe.conf. 181 * and 2) does not set deforient or save orientation to qpe.conf.
182 */ 182 */
183 183
184inline void QPEApplication::setCurrentRotation( int r ) 184inline void QPEApplication::setCurrentRotation( int r )
185{ 185{
186 // setTransformation has been introduced in Qt/Embedded 2.3.4 snapshots
187 // for compatibility with the SharpROM use fallback to setDefaultTransformation()
188 #if QT_VERSION > 233
186 Transformation e = DegToTrans( r ); 189 Transformation e = DegToTrans( r );
187
188 setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 ); 190 setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 );
189 qApp->desktop()->qwsDisplay()->setTransformation( e ); 191 qApp->desktop()->qwsDisplay()->setTransformation( e );
192 #else
193 setDefaultRotation( r );
194 #endif
190} 195}
191 196
192 197
193#endif 198#endif
diff --git a/library/qt_override.cpp b/library/qt_override.cpp
index 02c48a0..edda874 100644
--- a/library/qt_override.cpp
+++ b/library/qt_override.cpp
@@ -1,170 +1,171 @@
1 1
2#include <qpe/qpeapplication.h> 2#include <qpe/qpeapplication.h>
3#include <qwsdecoration_qws.h> 3#include <qwsdecoration_qws.h>
4#include <qcommonstyle.h> 4#include <qcommonstyle.h>
5#include <qfontdatabase.h> 5#include <qfontdatabase.h>
6 6
7#include <unistd.h> 7#include <unistd.h>
8#include <stdlib.h> 8#include <stdlib.h>
9#include <stdio.h> 9#include <stdio.h>
10#include <limits.h> 10#include <limits.h>
11#include <sys/param.h> // for toolchains with old libc headers 11#include <sys/param.h> // for toolchains with old libc headers
12 12
13#include "qt_override_p.h" 13#include "qt_override_p.h"
14 14
15 15#if QT_VERSION > 233
16 16
17struct color_fix_t { 17struct color_fix_t {
18 char *m_app; 18 char *m_app;
19 char *m_class; 19 char *m_class;
20 char *m_name; 20 char *m_name;
21 QColorGroup::ColorRole m_set; 21 QColorGroup::ColorRole m_set;
22 QColorGroup::ColorRole m_get; 22 QColorGroup::ColorRole m_get;
23}; 23};
24 24
25 25
26 26
27static const color_fix_t apps_that_need_special_colors [] = { 27static const color_fix_t apps_that_need_special_colors [] = {
28 { "HancomMobileWord", "HTextEdit", 0, QColorGroup::Background, QColorGroup::Base }, 28 { "HancomMobileWord", "HTextEdit", 0, QColorGroup::Background, QColorGroup::Base },
29 { "neocal", "Display", 0, QColorGroup::Background, QColorGroup::Base }, 29 { "neocal", "Display", 0, QColorGroup::Background, QColorGroup::Base },
30 30
31 { 0, 0, 0, QColorGroup::Base, QColorGroup::Base } 31 { 0, 0, 0, QColorGroup::Base, QColorGroup::Base }
32}; 32};
33 33
34static const char * const apps_that_need_pointsizes_times_10 [] = { 34static const char * const apps_that_need_pointsizes_times_10 [] = {
35 "HancomMobileWord", 35 "HancomMobileWord",
36 "hancomsheet", 36 "hancomsheet",
37 "HancomPresenterViewer", 37 "HancomPresenterViewer",
38 38
39 0 39 0
40}; 40};
41 41
42 42
43 43
44 44
45int Opie::force_appearance = 0; 45int Opie::force_appearance = 0;
46 46
47 47
48// Return the *real* name of the binary - not just a quick guess 48// Return the *real* name of the binary - not just a quick guess
49// by looking at argv [0] (which could be anything) 49// by looking at argv [0] (which could be anything)
50 50
51static void binaryNameFree ( ) 51static void binaryNameFree ( )
52{ 52{
53 ::free ((void *) Opie::binaryName ( )); // we need to cast away the const here 53 ::free ((void *) Opie::binaryName ( )); // we need to cast away the const here
54} 54}
55 55
56const char *Opie::binaryName ( ) 56const char *Opie::binaryName ( )
57{ 57{
58 static const char *appname = 0; 58 static const char *appname = 0;
59 59
60 if ( !appname ) { 60 if ( !appname ) {
61 char dst [PATH_MAX + 1]; 61 char dst [PATH_MAX + 1];
62 int l = ::readlink ( "/proc/self/exe", dst, PATH_MAX ); 62 int l = ::readlink ( "/proc/self/exe", dst, PATH_MAX );
63 63
64 if ( l <= 0 ) 64 if ( l <= 0 )
65 l = 0; 65 l = 0;
66 66
67 dst [l] = 0; 67 dst [l] = 0;
68 const char *b = ::strrchr ( dst, '/' ); 68 const char *b = ::strrchr ( dst, '/' );
69 appname = ::strdup ( b ? b + 1 : dst ); 69 appname = ::strdup ( b ? b + 1 : dst );
70 70
71 ::atexit ( binaryNameFree ); 71 ::atexit ( binaryNameFree );
72 } 72 }
73 return appname; 73 return appname;
74} 74}
75 75
76 76
77// Fix for a toolchain incompatibility (binaries compiled with 77// Fix for a toolchain incompatibility (binaries compiled with
78// old tcs using shared libs compiled with newer tcs) 78// old tcs using shared libs compiled with newer tcs)
79 79
80extern "C" { 80extern "C" {
81 81
82extern void __gmon_start__ ( ) __attribute__(( weak )); 82extern void __gmon_start__ ( ) __attribute__(( weak ));
83 83
84extern void __gmon_start__ ( ) 84extern void __gmon_start__ ( )
85{ 85{
86} 86}
87 87
88} 88}
89 89
90 90
91// Fix for apps, that use QPainter::eraseRect() which doesn't work with styles 91// Fix for apps, that use QPainter::eraseRect() which doesn't work with styles
92// that set a background pixmap (it would be easier to fix eraseRect(), but 92// that set a background pixmap (it would be easier to fix eraseRect(), but
93// TT made it an inline ...) 93// TT made it an inline ...)
94 94
95void QPEApplication::polish ( QWidget *w ) 95void QPEApplication::polish ( QWidget *w )
96{ 96{
97 //qDebug ( "QPEApplication::polish()" ); 97 //qDebug ( "QPEApplication::polish()" );
98 98
99 for ( const color_fix_t *ptr = apps_that_need_special_colors; ptr-> m_app; ptr++ ) { 99 for ( const color_fix_t *ptr = apps_that_need_special_colors; ptr-> m_app; ptr++ ) {
100 if (( ::strcmp ( Opie::binaryName ( ), ptr-> m_app ) == 0 ) && 100 if (( ::strcmp ( Opie::binaryName ( ), ptr-> m_app ) == 0 ) &&
101 ( ptr-> m_class ? w-> inherits ( ptr-> m_class ) : true ) && 101 ( ptr-> m_class ? w-> inherits ( ptr-> m_class ) : true ) &&
102 ( ptr-> m_name ? ( ::strcmp ( w-> name ( ), ptr-> m_name ) == 0 ) : true )) { 102 ( ptr-> m_name ? ( ::strcmp ( w-> name ( ), ptr-> m_name ) == 0 ) : true )) {
103 QPalette pal = w-> palette ( ); 103 QPalette pal = w-> palette ( );
104 pal. setColor ( ptr-> m_set, pal. color ( QPalette::Active, ptr-> m_get )); 104 pal. setColor ( ptr-> m_set, pal. color ( QPalette::Active, ptr-> m_get ));
105 w-> setPalette ( pal ); 105 w-> setPalette ( pal );
106 } 106 }
107 } 107 }
108 QApplication::polish ( w ); 108 QApplication::polish ( w );
109} 109}
110 110
111 111
112// Fix for the binary incompatibility that TT introduced in Qt/E 2.3.4 -- point sizes 112// Fix for the binary incompatibility that TT introduced in Qt/E 2.3.4 -- point sizes
113// were multiplied by 10 (which was incorrect) 113// were multiplied by 10 (which was incorrect)
114 114
115QValueList <int> QFontDatabase::pointSizes ( QString const &family, QString const &style, QString const &charset ) 115QValueList <int> QFontDatabase::pointSizes ( QString const &family, QString const &style, QString const &charset )
116{ 116{
117 //qDebug ( "QFontDatabase::pointSizes()" ); 117 //qDebug ( "QFontDatabase::pointSizes()" );
118 118
119 QValueList <int> sl = pointSizes_NonWeak ( family, style, charset ); 119 QValueList <int> sl = pointSizes_NonWeak ( family, style, charset );
120 120
121 for ( const char * const *ptr = apps_that_need_pointsizes_times_10; *ptr; ptr++ ) { 121 for ( const char * const *ptr = apps_that_need_pointsizes_times_10; *ptr; ptr++ ) {
122 if ( ::strcmp ( Opie::binaryName ( ), *ptr ) == 0 ) { 122 if ( ::strcmp ( Opie::binaryName ( ), *ptr ) == 0 ) {
123 for ( QValueList <int>::Iterator it = sl. begin ( ); it != sl. end ( ); ++it ) 123 for ( QValueList <int>::Iterator it = sl. begin ( ); it != sl. end ( ); ++it )
124 *it *= 10; 124 *it *= 10;
125 } 125 }
126 } 126 }
127 return sl; 127 return sl;
128} 128}
129 129
130 130
131// Various style/font/color related overrides for weak symbols in Qt/E, 131// Various style/font/color related overrides for weak symbols in Qt/E,
132// which allows us to force the usage of the global Opie appearance. 132// which allows us to force the usage of the global Opie appearance.
133 133
134void QApplication::setStyle ( QStyle *style ) 134void QApplication::setStyle ( QStyle *style )
135{ 135{
136 //qDebug ( "QApplication::setStyle()" ); 136 //qDebug ( "QApplication::setStyle()" );
137 137
138 if ( Opie::force_appearance & Opie::Force_Style ) 138 if ( Opie::force_appearance & Opie::Force_Style )
139 delete style; 139 delete style;
140 else 140 else
141 QApplication::setStyle_NonWeak ( style ); 141 QApplication::setStyle_NonWeak ( style );
142} 142}
143 143
144void QApplication::setPalette ( const QPalette &pal, bool informWidgets, const char *className ) 144void QApplication::setPalette ( const QPalette &pal, bool informWidgets, const char *className )
145{ 145{
146 //qDebug ( "QApplication::setPalette()" ); 146 //qDebug ( "QApplication::setPalette()" );
147 147
148 if (!( Opie::force_appearance & Opie::Force_Style )) 148 if (!( Opie::force_appearance & Opie::Force_Style ))
149 QApplication::setPalette_NonWeak ( pal, informWidgets, className ); 149 QApplication::setPalette_NonWeak ( pal, informWidgets, className );
150} 150}
151 151
152void QApplication::setFont ( const QFont &fnt, bool informWidgets, const char *className ) 152void QApplication::setFont ( const QFont &fnt, bool informWidgets, const char *className )
153{ 153{
154 //qDebug ( "QApplication::setFont()" ); 154 //qDebug ( "QApplication::setFont()" );
155 155
156 if (!( Opie::force_appearance & Opie::Force_Font )) 156 if (!( Opie::force_appearance & Opie::Force_Font ))
157 QApplication::setFont_NonWeak ( fnt, informWidgets, className ); 157 QApplication::setFont_NonWeak ( fnt, informWidgets, className );
158} 158}
159 159
160 160
161void QApplication::qwsSetDecoration ( QWSDecoration *deco ) 161void QApplication::qwsSetDecoration ( QWSDecoration *deco )
162{ 162{
163 //qDebug ( "QApplication::qwsSetDecoration()" ); 163 //qDebug ( "QApplication::qwsSetDecoration()" );
164 164
165 if ( Opie::force_appearance & Opie::Force_Decoration ) 165 if ( Opie::force_appearance & Opie::Force_Decoration )
166 delete deco; 166 delete deco;
167 else 167 else
168 QApplication::qwsSetDecoration_NonWeak ( deco ); 168 QApplication::qwsSetDecoration_NonWeak ( deco );
169} 169}
170 170
171#endif \ No newline at end of file
diff --git a/library/qt_override_p.h b/library/qt_override_p.h
index d11917c..cb05d15 100644
--- a/library/qt_override_p.h
+++ b/library/qt_override_p.h
@@ -1,21 +1,25 @@
1#ifndef __QT_OVERRIDE_H__ 1#ifndef __QT_OVERRIDE_H__
2#define __QT_OVERRIDE_H__ 2#define __QT_OVERRIDE_H__
3 3
4#if QT_VERSION > 233
5
4namespace Opie { 6namespace Opie {
5 7
6enum ForceAppearance { 8enum ForceAppearance {
7 Force_Style = 0x01, 9 Force_Style = 0x01,
8 Force_Font = 0x02, 10 Force_Font = 0x02,
9 Force_Decoration = 0x04, 11 Force_Decoration = 0x04,
10 12
11 Force_All = 0xff, 13 Force_All = 0xff,
12 Force_None = 0x00, 14 Force_None = 0x00,
13}; 15};
14 16
15extern const char *binaryName ( ); 17extern const char *binaryName ( );
16 18
17extern int force_appearance; 19extern int force_appearance;
18 20
19} 21}
20 22
23#endif // (QT_VERSION >233)
24
21#endif 25#endif