summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2004-07-18 15:06:35 (UTC)
committer mickeyl <mickeyl>2004-07-18 15:06:35 (UTC)
commit35625ac739a9e070ceff4714328a91bb00b1f8a9 (patch) (unidiff)
treecdffde2b427aecb81752d46de26c20647b71fe3f
parentf1046781fa579268146eab24e7a5dca7df515faa (diff)
downloadopie-35625ac739a9e070ceff4714328a91bb00b1f8a9.zip
opie-35625ac739a9e070ceff4714328a91bb00b1f8a9.tar.gz
opie-35625ac739a9e070ceff4714328a91bb00b1f8a9.tar.bz2
yet another compat guard for functions added in recent qte releases
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpeapplication.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index 3b6a987..59ca61b 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -775,1030 +775,1034 @@ void QPEApplication::processQCopFile()
775 { 775 {
776 QDataStream stream( data, IO_ReadOnly ); 776 QDataStream stream( data, IO_ReadOnly );
777 if ( msg == "someMessage(int,int,int)" ) { 777 if ( msg == "someMessage(int,int,int)" ) {
778 int a,b,c; 778 int a,b,c;
779 stream >> a >> b >> c; 779 stream >> a >> b >> c;
780 ... 780 ...
781 } else if ( msg == "otherMessage(QString)" ) { 781 } else if ( msg == "otherMessage(QString)" ) {
782 ... 782 ...
783 } 783 }
784 } 784 }
785\endcode 785\endcode
786 786
787 \sa qcop.html 787 \sa qcop.html
788 Note that messages received here may be processed by qpe application 788 Note that messages received here may be processed by qpe application
789 and emitted as signals, such as flush() and reload(). 789 and emitted as signals, such as flush() and reload().
790*/ 790*/
791 791
792/*! 792/*!
793 Constructs a QPEApplication just as you would construct 793 Constructs a QPEApplication just as you would construct
794 a QApplication, passing \a argc, \a argv, and \a t. 794 a QApplication, passing \a argc, \a argv, and \a t.
795 795
796 For applications, \a t should be the default, GuiClient. Only 796 For applications, \a t should be the default, GuiClient. Only
797 the Qtopia server passes GuiServer. 797 the Qtopia server passes GuiServer.
798*/ 798*/
799QPEApplication::QPEApplication( int & argc, char **argv, Type t ) 799QPEApplication::QPEApplication( int & argc, char **argv, Type t )
800 : QApplication( hack(argc), argv, t ), pidChannel( 0 ) 800 : QApplication( hack(argc), argv, t ), pidChannel( 0 )
801{ 801{
802 QPixmapCache::setCacheLimit(256); // sensible default for smaller devices. 802 QPixmapCache::setCacheLimit(256); // sensible default for smaller devices.
803 803
804 d = new QPEApplicationData; 804 d = new QPEApplicationData;
805 d->loadTextCodecs(); 805 d->loadTextCodecs();
806 d->loadImageCodecs(); 806 d->loadImageCodecs();
807 807
808 setFont( QFont( d->fontFamily, d->fontSize ) ); 808 setFont( QFont( d->fontFamily, d->fontSize ) );
809 AppLnk::setSmallIconSize( d->smallIconSize ); 809 AppLnk::setSmallIconSize( d->smallIconSize );
810 AppLnk::setBigIconSize( d->bigIconSize ); 810 AppLnk::setBigIconSize( d->bigIconSize );
811 811
812 QMimeSourceFactory::setDefaultFactory( new ResourceMimeFactory ); 812 QMimeSourceFactory::setDefaultFactory( new ResourceMimeFactory );
813 813
814 connect( this, SIGNAL( lastWindowClosed() ), this, SLOT( hideOrQuit() ) ); 814 connect( this, SIGNAL( lastWindowClosed() ), this, SLOT( hideOrQuit() ) );
815 815
816 816
817 sysChannel = new QCopChannel( "QPE/System", this ); 817 sysChannel = new QCopChannel( "QPE/System", this );
818 connect( sysChannel, SIGNAL( received(const QCString&,const QByteArray&) ), 818 connect( sysChannel, SIGNAL( received(const QCString&,const QByteArray&) ),
819 this, SLOT( systemMessage(const QCString&,const QByteArray&) ) ); 819 this, SLOT( systemMessage(const QCString&,const QByteArray&) ) );
820 820
821/* COde now in initapp */ 821/* COde now in initapp */
822#if 0 822#if 0
823#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 823#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
824 824
825 QString qcopfn( "/tmp/qcop-msg-" ); 825 QString qcopfn( "/tmp/qcop-msg-" );
826 qcopfn += QString( argv[ 0 ] ); // append command name 826 qcopfn += QString( argv[ 0 ] ); // append command name
827 827
828 QFile f( qcopfn ); 828 QFile f( qcopfn );
829 if ( f.open( IO_ReadOnly ) ) { 829 if ( f.open( IO_ReadOnly ) ) {
830 flock( f.handle(), LOCK_EX ); 830 flock( f.handle(), LOCK_EX );
831 } 831 }
832 832
833 833
834 834
835 QCString channel = QCString( argv[ 0 ] ); 835 QCString channel = QCString( argv[ 0 ] );
836 channel.replace( QRegExp( ".*/" ), "" ); 836 channel.replace( QRegExp( ".*/" ), "" );
837 d->appName = channel; 837 d->appName = channel;
838 channel = "QPE/Application/" + channel; 838 channel = "QPE/Application/" + channel;
839 pidChannel = new QCopChannel( channel, this ); 839 pidChannel = new QCopChannel( channel, this );
840 connect( pidChannel, SIGNAL( received(const QCString&,const QByteArray&) ), 840 connect( pidChannel, SIGNAL( received(const QCString&,const QByteArray&) ),
841 this, SLOT( pidMessage(const QCString&,const QByteArray&) ) ); 841 this, SLOT( pidMessage(const QCString&,const QByteArray&) ) );
842 842
843 if ( f.isOpen() ) { 843 if ( f.isOpen() ) {
844 d->keep_running = FALSE; 844 d->keep_running = FALSE;
845 QDataStream ds( &f ); 845 QDataStream ds( &f );
846 QCString channel, message; 846 QCString channel, message;
847 QByteArray data; 847 QByteArray data;
848 while ( !ds.atEnd() ) { 848 while ( !ds.atEnd() ) {
849 ds >> channel >> message >> data; 849 ds >> channel >> message >> data;
850 d->enqueueQCop( channel, message, data ); 850 d->enqueueQCop( channel, message, data );
851 } 851 }
852 852
853 flock( f.handle(), LOCK_UN ); 853 flock( f.handle(), LOCK_UN );
854 f.close(); 854 f.close();
855 f.remove(); 855 f.remove();
856 } 856 }
857 857
858 for ( int a = 0; a < argc; a++ ) { 858 for ( int a = 0; a < argc; a++ ) {
859 if ( qstrcmp( argv[ a ], "-preload" ) == 0 ) { 859 if ( qstrcmp( argv[ a ], "-preload" ) == 0 ) {
860 argv[ a ] = argv[ a + 1 ]; 860 argv[ a ] = argv[ a + 1 ];
861 a++; 861 a++;
862 d->preloaded = TRUE; 862 d->preloaded = TRUE;
863 argc -= 1; 863 argc -= 1;
864 } 864 }
865 else if ( qstrcmp( argv[ a ], "-preload-show" ) == 0 ) { 865 else if ( qstrcmp( argv[ a ], "-preload-show" ) == 0 ) {
866 argv[ a ] = argv[ a + 1 ]; 866 argv[ a ] = argv[ a + 1 ];
867 a++; 867 a++;
868 d->preloaded = TRUE; 868 d->preloaded = TRUE;
869 d->forceshow = TRUE; 869 d->forceshow = TRUE;
870 argc -= 1; 870 argc -= 1;
871 } 871 }
872 } 872 }
873 873
874 /* overide stored arguments */ 874 /* overide stored arguments */
875 setArgs( argc, argv ); 875 setArgs( argc, argv );
876 876
877#endif 877#endif
878#else 878#else
879 initApp( argc, argv ); 879 initApp( argc, argv );
880#endif 880#endif
881#ifdef Q_WS_QWS 881#ifdef Q_WS_QWS
882 /* load the font renderer factories */ 882 /* load the font renderer factories */
883 FontDatabase::loadRenderers(); 883 FontDatabase::loadRenderers();
884#endif 884#endif
885#ifndef QT_NO_TRANSLATION 885#ifndef QT_NO_TRANSLATION
886 886
887 d->langs = Global::languageList(); 887 d->langs = Global::languageList();
888 for ( QStringList::ConstIterator it = d->langs.begin(); it != d->langs.end(); ++it ) { 888 for ( QStringList::ConstIterator it = d->langs.begin(); it != d->langs.end(); ++it ) {
889 QString lang = *it; 889 QString lang = *it;
890 890
891 installTranslation( lang + "/libopie.qm"); 891 installTranslation( lang + "/libopie.qm");
892 installTranslation( lang + "/libqpe.qm" ); 892 installTranslation( lang + "/libqpe.qm" );
893 installTranslation( lang + "/" + d->appName + ".qm" ); 893 installTranslation( lang + "/" + d->appName + ".qm" );
894 894
895 895
896 //###language/font hack; should look it up somewhere 896 //###language/font hack; should look it up somewhere
897#ifdef QWS 897#ifdef QWS
898 898
899 if ( lang == "ja" || lang == "zh_CN" || lang == "zh_TW" || lang == "ko" ) { 899 if ( lang == "ja" || lang == "zh_CN" || lang == "zh_TW" || lang == "ko" ) {
900 QFont fn = FontManager::unicodeFont( FontManager::Proportional ); 900 QFont fn = FontManager::unicodeFont( FontManager::Proportional );
901 setFont( fn ); 901 setFont( fn );
902 } 902 }
903#endif 903#endif
904 } 904 }
905#endif 905#endif
906 906
907 applyStyle(); 907 applyStyle();
908 908
909 if ( type() == GuiServer ) { 909 if ( type() == GuiServer ) {
910 setVolume(); 910 setVolume();
911 } 911 }
912 912
913 installEventFilter( this ); 913 installEventFilter( this );
914 914
915 QPEMenuToolFocusManager::initialize(); 915 QPEMenuToolFocusManager::initialize();
916 916
917#ifdef QT_NO_QWS_CURSOR 917#ifdef QT_NO_QWS_CURSOR
918 // if we have no cursor, probably don't want tooltips 918 // if we have no cursor, probably don't want tooltips
919 QToolTip::setEnabled( FALSE ); 919 QToolTip::setEnabled( FALSE );
920#endif 920#endif
921} 921}
922 922
923 923
924#ifdef QTOPIA_INTERNAL_INITAPP 924#ifdef QTOPIA_INTERNAL_INITAPP
925void QPEApplication::initApp( int argc, char **argv ) 925void QPEApplication::initApp( int argc, char **argv )
926{ 926{
927 delete pidChannel; 927 delete pidChannel;
928 d->keep_running = TRUE; 928 d->keep_running = TRUE;
929 d->preloaded = FALSE; 929 d->preloaded = FALSE;
930 d->forceshow = FALSE; 930 d->forceshow = FALSE;
931 931
932 QCString channel = QCString(argv[0]); 932 QCString channel = QCString(argv[0]);
933 933
934 channel.replace(QRegExp(".*/"),""); 934 channel.replace(QRegExp(".*/"),"");
935 d->appName = channel; 935 d->appName = channel;
936 936
937 #if QT_VERSION > 235 937 #if QT_VERSION > 235
938 qt_fbdpy->setIdentity( channel ); // In Qt/E 2.3.6 938 qt_fbdpy->setIdentity( channel ); // In Qt/E 2.3.6
939 #endif 939 #endif
940 940
941 channel = "QPE/Application/" + channel; 941 channel = "QPE/Application/" + channel;
942 pidChannel = new QCopChannel( channel, this); 942 pidChannel = new QCopChannel( channel, this);
943 connect( pidChannel, SIGNAL(received(const QCString&,const QByteArray&)), 943 connect( pidChannel, SIGNAL(received(const QCString&,const QByteArray&)),
944 this, SLOT(pidMessage(const QCString&,const QByteArray&))); 944 this, SLOT(pidMessage(const QCString&,const QByteArray&)));
945 945
946 946
947 947
948 processQCopFile(); 948 processQCopFile();
949 d->keep_running = d->qcopq.isEmpty(); 949 d->keep_running = d->qcopq.isEmpty();
950 950
951 for (int a=0; a<argc; a++) { 951 for (int a=0; a<argc; a++) {
952 if ( qstrcmp(argv[a],"-preload")==0 ) { 952 if ( qstrcmp(argv[a],"-preload")==0 ) {
953 argv[a] = argv[a+1]; 953 argv[a] = argv[a+1];
954 a++; 954 a++;
955 d->preloaded = TRUE; 955 d->preloaded = TRUE;
956 argc-=1; 956 argc-=1;
957 } else if ( qstrcmp(argv[a],"-preload-show")==0 ) { 957 } else if ( qstrcmp(argv[a],"-preload-show")==0 ) {
958 argv[a] = argv[a+1]; 958 argv[a] = argv[a+1];
959 a++; 959 a++;
960 d->preloaded = TRUE; 960 d->preloaded = TRUE;
961 d->forceshow = TRUE; 961 d->forceshow = TRUE;
962 argc-=1; 962 argc-=1;
963 } 963 }
964 } 964 }
965 965
966 /* overide stored arguments */ 966 /* overide stored arguments */
967 setArgs(argc, argv); 967 setArgs(argc, argv);
968 968
969 /* install translation here */ 969 /* install translation here */
970 for ( QStringList::ConstIterator it = d->langs.begin(); it != d->langs.end(); ++it ) 970 for ( QStringList::ConstIterator it = d->langs.begin(); it != d->langs.end(); ++it )
971 installTranslation( (*it) + "/" + d->appName + ".qm" ); 971 installTranslation( (*it) + "/" + d->appName + ".qm" );
972} 972}
973#endif 973#endif
974 974
975 975
976static QPtrDict<void>* inputMethodDict = 0; 976static QPtrDict<void>* inputMethodDict = 0;
977static void createInputMethodDict() 977static void createInputMethodDict()
978{ 978{
979 if ( !inputMethodDict ) 979 if ( !inputMethodDict )
980 inputMethodDict = new QPtrDict<void>; 980 inputMethodDict = new QPtrDict<void>;
981} 981}
982 982
983/*! 983/*!
984 Returns the currently set hint to the system as to whether 984 Returns the currently set hint to the system as to whether
985 widget \a w has any use for text input methods. 985 widget \a w has any use for text input methods.
986 986
987 987
988 \sa setInputMethodHint() InputMethodHint 988 \sa setInputMethodHint() InputMethodHint
989*/ 989*/
990QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w ) 990QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w )
991{ 991{
992 if ( inputMethodDict && w ) 992 if ( inputMethodDict && w )
993 return ( InputMethodHint ) ( int ) inputMethodDict->find( w ); 993 return ( InputMethodHint ) ( int ) inputMethodDict->find( w );
994 return Normal; 994 return Normal;
995} 995}
996 996
997/*! 997/*!
998 \enum QPEApplication::InputMethodHint 998 \enum QPEApplication::InputMethodHint
999 999
1000 \value Normal the application sometimes needs text input (the default). 1000 \value Normal the application sometimes needs text input (the default).
1001 \value AlwaysOff the application never needs text input. 1001 \value AlwaysOff the application never needs text input.
1002 \value AlwaysOn the application always needs text input. 1002 \value AlwaysOn the application always needs text input.
1003*/ 1003*/
1004 1004
1005/*! 1005/*!
1006 Hints to the system that widget \a w has use for text input methods 1006 Hints to the system that widget \a w has use for text input methods
1007 as specified by \a mode. 1007 as specified by \a mode.
1008 1008
1009 \sa inputMethodHint() InputMethodHint 1009 \sa inputMethodHint() InputMethodHint
1010*/ 1010*/
1011void QPEApplication::setInputMethodHint( QWidget * w, InputMethodHint mode ) 1011void QPEApplication::setInputMethodHint( QWidget * w, InputMethodHint mode )
1012{ 1012{
1013 createInputMethodDict(); 1013 createInputMethodDict();
1014 if ( mode == Normal ) { 1014 if ( mode == Normal ) {
1015 inputMethodDict->remove 1015 inputMethodDict->remove
1016 ( w ); 1016 ( w );
1017 } 1017 }
1018 else { 1018 else {
1019 inputMethodDict->insert( w, ( void* ) mode ); 1019 inputMethodDict->insert( w, ( void* ) mode );
1020 } 1020 }
1021} 1021}
1022 1022
1023class HackDialog : public QDialog 1023class HackDialog : public QDialog
1024{ 1024{
1025public: 1025public:
1026 void acceptIt() 1026 void acceptIt()
1027 { 1027 {
1028 accept(); 1028 accept();
1029 } 1029 }
1030 void rejectIt() 1030 void rejectIt()
1031 { 1031 {
1032 reject(); 1032 reject();
1033 } 1033 }
1034}; 1034};
1035 1035
1036 1036
1037void QPEApplication::mapToDefaultAction( QWSKeyEvent * ke, int key ) 1037void QPEApplication::mapToDefaultAction( QWSKeyEvent * ke, int key )
1038{ 1038{
1039 // specialised actions for certain widgets. May want to 1039 // specialised actions for certain widgets. May want to
1040 // add more stuff here. 1040 // add more stuff here.
1041 if ( activePopupWidget() && activePopupWidget() ->inherits( "QListBox" ) 1041 if ( activePopupWidget() && activePopupWidget() ->inherits( "QListBox" )
1042 && activePopupWidget() ->parentWidget() 1042 && activePopupWidget() ->parentWidget()
1043 && activePopupWidget() ->parentWidget() ->inherits( "QComboBox" ) ) 1043 && activePopupWidget() ->parentWidget() ->inherits( "QComboBox" ) )
1044 key = Qt::Key_Return; 1044 key = Qt::Key_Return;
1045 1045
1046 if ( activePopupWidget() && activePopupWidget() ->inherits( "QPopupMenu" ) ) 1046 if ( activePopupWidget() && activePopupWidget() ->inherits( "QPopupMenu" ) )
1047 key = Qt::Key_Return; 1047 key = Qt::Key_Return;
1048 1048
1049#ifdef QWS 1049#ifdef QWS
1050 1050
1051 ke->simpleData.keycode = key; 1051 ke->simpleData.keycode = key;
1052#endif 1052#endif
1053} 1053}
1054 1054
1055 1055
1056/*! 1056/*!
1057 \internal 1057 \internal
1058*/ 1058*/
1059 1059
1060#ifdef QWS 1060#ifdef QWS
1061bool QPEApplication::qwsEventFilter( QWSEvent * e ) 1061bool QPEApplication::qwsEventFilter( QWSEvent * e )
1062{ 1062{
1063 if ( !d->notbusysent && e->type == QWSEvent::Focus ) { 1063 if ( !d->notbusysent && e->type == QWSEvent::Focus ) {
1064 if ( qApp->type() != QApplication::GuiServer ) { 1064 if ( qApp->type() != QApplication::GuiServer ) {
1065 QCopEnvelope e( "QPE/System", "notBusy(QString)" ); 1065 QCopEnvelope e( "QPE/System", "notBusy(QString)" );
1066 e << d->appName; 1066 e << d->appName;
1067 } 1067 }
1068 d->notbusysent = TRUE; 1068 d->notbusysent = TRUE;
1069 } 1069 }
1070 if ( type() == GuiServer ) { 1070 if ( type() == GuiServer ) {
1071 switch ( e->type ) { 1071 switch ( e->type ) {
1072 case QWSEvent::Mouse: 1072 case QWSEvent::Mouse:
1073 if ( e->asMouse() ->simpleData.state && !QWidget::find( e->window() ) ) 1073 if ( e->asMouse() ->simpleData.state && !QWidget::find( e->window() ) )
1074 emit clientMoused(); 1074 emit clientMoused();
1075 break; 1075 break;
1076 default: 1076 default:
1077 break; 1077 break;
1078 } 1078 }
1079 } 1079 }
1080 if ( e->type == QWSEvent::Key ) { 1080 if ( e->type == QWSEvent::Key ) {
1081 QWSKeyEvent *ke = ( QWSKeyEvent * ) e; 1081 QWSKeyEvent *ke = ( QWSKeyEvent * ) e;
1082 if ( ke->simpleData.keycode == Qt::Key_F33 ) { 1082 if ( ke->simpleData.keycode == Qt::Key_F33 ) {
1083 // Use special "OK" key to press "OK" on top level widgets 1083 // Use special "OK" key to press "OK" on top level widgets
1084 QWidget * active = activeWindow(); 1084 QWidget * active = activeWindow();
1085 QWidget *popup = 0; 1085 QWidget *popup = 0;
1086 if ( active && active->isPopup() ) { 1086 if ( active && active->isPopup() ) {
1087 popup = active; 1087 popup = active;
1088 active = active->parentWidget(); 1088 active = active->parentWidget();
1089 } 1089 }
1090 if ( active && ( int ) active->winId() == ke->simpleData.window && 1090 if ( active && ( int ) active->winId() == ke->simpleData.window &&
1091 !active->testWFlags( WStyle_Customize | WType_Popup | WType_Desktop ) ) { 1091 !active->testWFlags( WStyle_Customize | WType_Popup | WType_Desktop ) ) {
1092 if ( ke->simpleData.is_press ) { 1092 if ( ke->simpleData.is_press ) {
1093 if ( popup ) 1093 if ( popup )
1094 popup->close(); 1094 popup->close();
1095 if ( active->inherits( "QDialog" ) ) { 1095 if ( active->inherits( "QDialog" ) ) {
1096 HackDialog * d = ( HackDialog * ) active; 1096 HackDialog * d = ( HackDialog * ) active;
1097 d->acceptIt(); 1097 d->acceptIt();
1098 return TRUE; 1098 return TRUE;
1099 } 1099 }
1100 else if ( ( ( HackWidget * ) active ) ->needsOk() ) { 1100 else if ( ( ( HackWidget * ) active ) ->needsOk() ) {
1101 QSignal s; 1101 QSignal s;
1102 s.connect( active, SLOT( accept() ) ); 1102 s.connect( active, SLOT( accept() ) );
1103 s.activate(); 1103 s.activate();
1104 } 1104 }
1105 else { 1105 else {
1106 // do the same as with the select key: Map to the default action of the widget: 1106 // do the same as with the select key: Map to the default action of the widget:
1107 mapToDefaultAction( ke, Qt::Key_Return ); 1107 mapToDefaultAction( ke, Qt::Key_Return );
1108 } 1108 }
1109 } 1109 }
1110 } 1110 }
1111 } 1111 }
1112 else if ( ke->simpleData.keycode == Qt::Key_F30 ) { 1112 else if ( ke->simpleData.keycode == Qt::Key_F30 ) {
1113 // Use special "select" key to do whatever default action a widget has 1113 // Use special "select" key to do whatever default action a widget has
1114 mapToDefaultAction( ke, Qt::Key_Space ); 1114 mapToDefaultAction( ke, Qt::Key_Space );
1115 } 1115 }
1116 else if ( ke->simpleData.keycode == Qt::Key_Escape && 1116 else if ( ke->simpleData.keycode == Qt::Key_Escape &&
1117 ke->simpleData.is_press ) { 1117 ke->simpleData.is_press ) {
1118 // Escape key closes app if focus on toplevel 1118 // Escape key closes app if focus on toplevel
1119 QWidget * active = activeWindow(); 1119 QWidget * active = activeWindow();
1120 if ( active && active->testWFlags( WType_TopLevel ) && 1120 if ( active && active->testWFlags( WType_TopLevel ) &&
1121 ( int ) active->winId() == ke->simpleData.window && 1121 ( int ) active->winId() == ke->simpleData.window &&
1122 !active->testWFlags( WStyle_Dialog | WStyle_Customize | WType_Popup | WType_Desktop ) ) { 1122 !active->testWFlags( WStyle_Dialog | WStyle_Customize | WType_Popup | WType_Desktop ) ) {
1123 if ( active->inherits( "QDialog" ) ) { 1123 if ( active->inherits( "QDialog" ) ) {
1124 HackDialog * d = ( HackDialog * ) active; 1124 HackDialog * d = ( HackDialog * ) active;
1125 d->rejectIt(); 1125 d->rejectIt();
1126 return TRUE; 1126 return TRUE;
1127 } else /*if ( strcmp( argv() [ 0 ], "embeddedkonsole" ) != 0 )*/ { 1127 } else /*if ( strcmp( argv() [ 0 ], "embeddedkonsole" ) != 0 )*/ {
1128 active->close(); 1128 active->close();
1129 } 1129 }
1130 } 1130 }
1131 1131
1132 } 1132 }
1133 else if ( ke->simpleData.keycode >= Qt::Key_F1 && ke->simpleData.keycode <= Qt::Key_F29 ) { 1133 else if ( ke->simpleData.keycode >= Qt::Key_F1 && ke->simpleData.keycode <= Qt::Key_F29 ) {
1134 // this should be if ( ODevice::inst ( )-> buttonForKeycode ( ... )) 1134 // this should be if ( ODevice::inst ( )-> buttonForKeycode ( ... ))
1135 // but we cannot access libopie function within libqpe :( 1135 // but we cannot access libopie function within libqpe :(
1136 1136
1137 QWidget * active = activeWindow ( ); 1137 QWidget * active = activeWindow ( );
1138 if ( active && ((int) active-> winId ( ) == ke-> simpleData.window )) { 1138 if ( active && ((int) active-> winId ( ) == ke-> simpleData.window )) {
1139 if ( d-> kbgrabbed ) { // we grabbed the keyboard 1139 if ( d-> kbgrabbed ) { // we grabbed the keyboard
1140 QChar ch ( ke-> simpleData.unicode ); 1140 QChar ch ( ke-> simpleData.unicode );
1141 QKeyEvent qke ( ke-> simpleData. is_press ? QEvent::KeyPress : QEvent::KeyRelease, 1141 QKeyEvent qke ( ke-> simpleData. is_press ? QEvent::KeyPress : QEvent::KeyRelease,
1142 ke-> simpleData.keycode, 1142 ke-> simpleData.keycode,
1143 ch. latin1 ( ), 1143 ch. latin1 ( ),
1144 ke-> simpleData.modifiers, 1144 ke-> simpleData.modifiers,
1145 QString ( ch ), 1145 QString ( ch ),
1146 ke-> simpleData.is_auto_repeat, 1 ); 1146 ke-> simpleData.is_auto_repeat, 1 );
1147 1147
1148 QObject *which = QWidget::keyboardGrabber ( ); 1148 QObject *which = QWidget::keyboardGrabber ( );
1149 if ( !which ) 1149 if ( !which )
1150 which = QApplication::focusWidget ( ); 1150 which = QApplication::focusWidget ( );
1151 if ( !which ) 1151 if ( !which )
1152 which = QApplication::activeWindow ( ); 1152 which = QApplication::activeWindow ( );
1153 if ( !which ) 1153 if ( !which )
1154 which = qApp; 1154 which = qApp;
1155 1155
1156 QApplication::sendEvent ( which, &qke ); 1156 QApplication::sendEvent ( which, &qke );
1157 } 1157 }
1158 else { // we didn't grab the keyboard, so send the event to the launcher 1158 else { // we didn't grab the keyboard, so send the event to the launcher
1159 QCopEnvelope e ( "QPE/Launcher", "deviceButton(int,int,int)" ); 1159 QCopEnvelope e ( "QPE/Launcher", "deviceButton(int,int,int)" );
1160 e << int( ke-> simpleData.keycode ) << int( ke-> simpleData. is_press ) << int( ke-> simpleData.is_auto_repeat ); 1160 e << int( ke-> simpleData.keycode ) << int( ke-> simpleData. is_press ) << int( ke-> simpleData.is_auto_repeat );
1161 } 1161 }
1162 } 1162 }
1163 return true; 1163 return true;
1164 } 1164 }
1165 } 1165 }
1166 if ( e->type == QWSEvent::Focus ) { 1166 if ( e->type == QWSEvent::Focus ) {
1167 QWSFocusEvent * fe = ( QWSFocusEvent* ) e; 1167 QWSFocusEvent * fe = ( QWSFocusEvent* ) e;
1168 if ( !fe->simpleData.get_focus ) { 1168 if ( !fe->simpleData.get_focus ) {
1169 QWidget * active = activeWindow(); 1169 QWidget * active = activeWindow();
1170 while ( active && active->isPopup() ) { 1170 while ( active && active->isPopup() ) {
1171 active->close(); 1171 active->close();
1172 active = activeWindow(); 1172 active = activeWindow();
1173 } 1173 }
1174 } 1174 }
1175 else { 1175 else {
1176 // make sure our modal widget is ALWAYS on top 1176 // make sure our modal widget is ALWAYS on top
1177 QWidget *topm = activeModalWidget(); 1177 QWidget *topm = activeModalWidget();
1178 if ( topm && static_cast<int>( topm->winId() ) != fe->simpleData.window) { 1178 if ( topm && static_cast<int>( topm->winId() ) != fe->simpleData.window) {
1179 topm->raise(); 1179 topm->raise();
1180 } 1180 }
1181 } 1181 }
1182 if ( fe->simpleData.get_focus && inputMethodDict ) { 1182 if ( fe->simpleData.get_focus && inputMethodDict ) {
1183 InputMethodHint m = inputMethodHint( QWidget::find( e->window() ) ); 1183 InputMethodHint m = inputMethodHint( QWidget::find( e->window() ) );
1184 if ( m == AlwaysOff ) 1184 if ( m == AlwaysOff )
1185 Global::hideInputMethod(); 1185 Global::hideInputMethod();
1186 if ( m == AlwaysOn ) 1186 if ( m == AlwaysOn )
1187 Global::showInputMethod(); 1187 Global::showInputMethod();
1188 } 1188 }
1189 } 1189 }
1190 1190
1191 1191
1192 return QApplication::qwsEventFilter( e ); 1192 return QApplication::qwsEventFilter( e );
1193} 1193}
1194#endif 1194#endif
1195 1195
1196/*! 1196/*!
1197 Destroys the QPEApplication. 1197 Destroys the QPEApplication.
1198*/ 1198*/
1199QPEApplication::~QPEApplication() 1199QPEApplication::~QPEApplication()
1200{ 1200{
1201 ungrabKeyboard(); 1201 ungrabKeyboard();
1202#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 1202#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
1203 // Need to delete QCopChannels early, since the display will 1203 // Need to delete QCopChannels early, since the display will
1204 // be gone by the time we get to ~QObject(). 1204 // be gone by the time we get to ~QObject().
1205 delete sysChannel; 1205 delete sysChannel;
1206 delete pidChannel; 1206 delete pidChannel;
1207#endif 1207#endif
1208 1208
1209 delete d; 1209 delete d;
1210} 1210}
1211 1211
1212/*! 1212/*!
1213 Returns <tt>$OPIEDIR/</tt>. 1213 Returns <tt>$OPIEDIR/</tt>.
1214*/ 1214*/
1215QString QPEApplication::qpeDir() 1215QString QPEApplication::qpeDir()
1216{ 1216{
1217 const char * base = getenv( "OPIEDIR" ); 1217 const char * base = getenv( "OPIEDIR" );
1218 if ( base ) 1218 if ( base )
1219 return QString( base ) + "/"; 1219 return QString( base ) + "/";
1220 1220
1221 return QString( "../" ); 1221 return QString( "../" );
1222} 1222}
1223 1223
1224/*! 1224/*!
1225 Returns the user's current Document directory. There is a trailing "/". 1225 Returns the user's current Document directory. There is a trailing "/".
1226 .. well, it does now,, and there's no trailing '/' 1226 .. well, it does now,, and there's no trailing '/'
1227*/ 1227*/
1228QString QPEApplication::documentDir() 1228QString QPEApplication::documentDir()
1229{ 1229{
1230 const char* base = getenv( "HOME"); 1230 const char* base = getenv( "HOME");
1231 if ( base ) 1231 if ( base )
1232 return QString( base ) + "/Documents"; 1232 return QString( base ) + "/Documents";
1233 1233
1234 return QString( "../Documents" ); 1234 return QString( "../Documents" );
1235} 1235}
1236 1236
1237static int deforient = -1; 1237static int deforient = -1;
1238 1238
1239/*! 1239/*!
1240 \internal 1240 \internal
1241*/ 1241*/
1242int QPEApplication::defaultRotation() 1242int QPEApplication::defaultRotation()
1243{ 1243{
1244 if ( deforient < 0 ) { 1244 if ( deforient < 0 ) {
1245 QString d = getenv( "QWS_DISPLAY" ); 1245 QString d = getenv( "QWS_DISPLAY" );
1246 if ( d.contains( "Rot90" ) ) { 1246 if ( d.contains( "Rot90" ) ) {
1247 deforient = 90; 1247 deforient = 90;
1248 } 1248 }
1249 else if ( d.contains( "Rot180" ) ) { 1249 else if ( d.contains( "Rot180" ) ) {
1250 deforient = 180; 1250 deforient = 180;
1251 } 1251 }
1252 else if ( d.contains( "Rot270" ) ) { 1252 else if ( d.contains( "Rot270" ) ) {
1253 deforient = 270; 1253 deforient = 270;
1254 } 1254 }
1255 else { 1255 else {
1256 deforient = 0; 1256 deforient = 0;
1257 } 1257 }
1258 } 1258 }
1259 return deforient; 1259 return deforient;
1260} 1260}
1261 1261
1262/*! 1262/*!
1263 \internal 1263 \internal
1264*/ 1264*/
1265void QPEApplication::setDefaultRotation( int r ) 1265void QPEApplication::setDefaultRotation( int r )
1266{ 1266{
1267 if ( qApp->type() == GuiServer ) { 1267 if ( qApp->type() == GuiServer ) {
1268 deforient = r; 1268 deforient = r;
1269 setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 ); 1269 setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 );
1270 Config config("qpe"); 1270 Config config("qpe");
1271 config.setGroup( "Rotation" ); 1271 config.setGroup( "Rotation" );
1272 config.writeEntry( "Rot", r ); 1272 config.writeEntry( "Rot", r );
1273 } 1273 }
1274 else { 1274 else {
1275#ifndef QT_NO_COP 1275#ifndef QT_NO_COP
1276 { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" ); 1276 { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" );
1277 e << r; 1277 e << r;
1278 } 1278 }
1279#endif 1279#endif
1280 1280
1281 } 1281 }
1282} 1282}
1283 1283
1284#include <qgfx_qws.h> 1284#include <qgfx_qws.h>
1285#include <qwindowsystem_qws.h> 1285#include <qwindowsystem_qws.h>
1286 1286
1287#if QT_VERSION > 236
1287extern void qws_clearLoadedFonts(); 1288extern void qws_clearLoadedFonts();
1289#endif
1288 1290
1289void QPEApplication::setCurrentMode( int x, int y, int depth ) 1291void QPEApplication::setCurrentMode( int x, int y, int depth )
1290{ 1292{
1291 // Reset the caches 1293 // Reset the caches
1294#if QT_VERSION > 236
1292 qws_clearLoadedFonts(); 1295 qws_clearLoadedFonts();
1296#endif
1293 QPixmapCache::clear(); 1297 QPixmapCache::clear();
1294 1298
1295 // Change the screen mode 1299 // Change the screen mode
1296 qt_screen->setMode(x, y, depth); 1300 qt_screen->setMode(x, y, depth);
1297 1301
1298 if ( qApp->type() == GuiServer ) { 1302 if ( qApp->type() == GuiServer ) {
1299#if QT_VERSION > 236 1303#if QT_VERSION > 236
1300 // Reconfigure the GuiServer 1304 // Reconfigure the GuiServer
1301 qwsServer->beginDisplayReconfigure(); 1305 qwsServer->beginDisplayReconfigure();
1302 qwsServer->endDisplayReconfigure(); 1306 qwsServer->endDisplayReconfigure();
1303#endif 1307#endif
1304 // Get all the running apps to reset 1308 // Get all the running apps to reset
1305 QCopEnvelope env( "QPE/System", "reset()" ); 1309 QCopEnvelope env( "QPE/System", "reset()" );
1306 } 1310 }
1307} 1311}
1308 1312
1309void QPEApplication::reset() { 1313void QPEApplication::reset() {
1310 // Reconnect to the screen 1314 // Reconnect to the screen
1311 qt_screen->disconnect(); 1315 qt_screen->disconnect();
1312 qt_screen->connect( QString::null ); 1316 qt_screen->connect( QString::null );
1313 1317
1314 // Redraw everything 1318 // Redraw everything
1315 applyStyle(); 1319 applyStyle();
1316} 1320}
1317 1321
1318#if (QT_VERSION < 238) && defined Q_OS_MACX 1322#if (QT_VERSION < 238) && defined Q_OS_MACX
1319bool qt_left_hand_scrollbars = false; 1323bool qt_left_hand_scrollbars = false;
1320#else 1324#else
1321#ifdef Q_OS_MACX 1325#ifdef Q_OS_MACX
1322#define WEAK_SYMBOL __attribute__((weak_import)) 1326#define WEAK_SYMBOL __attribute__((weak_import))
1323#else 1327#else
1324#define WEAK_SYMBOL __attribute__((weak)) 1328#define WEAK_SYMBOL __attribute__((weak))
1325#endif 1329#endif
1326extern bool qt_left_hand_scrollbars WEAK_SYMBOL; 1330extern bool qt_left_hand_scrollbars WEAK_SYMBOL;
1327#endif 1331#endif
1328 1332
1329/*! 1333/*!
1330 \internal 1334 \internal
1331*/ 1335*/
1332void QPEApplication::applyStyle() 1336void QPEApplication::applyStyle()
1333{ 1337{
1334 Config config( "qpe" ); 1338 Config config( "qpe" );
1335 config.setGroup( "Appearance" ); 1339 config.setGroup( "Appearance" );
1336 1340
1337#if QT_VERSION > 233 1341#if QT_VERSION > 233
1338#if !defined(OPIE_NO_OVERRIDE_QT) 1342#if !defined(OPIE_NO_OVERRIDE_QT)
1339 // don't block ourselves ... 1343 // don't block ourselves ...
1340 Opie::force_appearance = 0; 1344 Opie::force_appearance = 0;
1341 1345
1342 static QString appname = Opie::binaryName ( ); 1346 static QString appname = Opie::binaryName ( );
1343 1347
1344 QStringList ex = config. readListEntry ( "NoStyle", ';' ); 1348 QStringList ex = config. readListEntry ( "NoStyle", ';' );
1345 int nostyle = 0; 1349 int nostyle = 0;
1346 for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) { 1350 for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) {
1347 if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) { 1351 if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) {
1348 nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 ); 1352 nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 );
1349 break; 1353 break;
1350 } 1354 }
1351 } 1355 }
1352#else 1356#else
1353 int nostyle = 0; 1357 int nostyle = 0;
1354#endif 1358#endif
1355 1359
1356 // Widget style 1360 // Widget style
1357 QString style = config.readEntry( "Style", "FlatStyle" ); 1361 QString style = config.readEntry( "Style", "FlatStyle" );
1358 1362
1359 // don't set a custom style 1363 // don't set a custom style
1360 if ( nostyle & Opie::Force_Style ) 1364 if ( nostyle & Opie::Force_Style )
1361 style = "FlatStyle"; 1365 style = "FlatStyle";
1362 1366
1363 internalSetStyle ( style ); 1367 internalSetStyle ( style );
1364 1368
1365 // Colors - from /etc/colors/Liquid.scheme 1369 // Colors - from /etc/colors/Liquid.scheme
1366 QColor bgcolor( config.readEntry( "Background", "#E0E0E0" ) ); 1370 QColor bgcolor( config.readEntry( "Background", "#E0E0E0" ) );
1367 QColor btncolor( config.readEntry( "Button", "#96c8fa" ) ); 1371 QColor btncolor( config.readEntry( "Button", "#96c8fa" ) );
1368 QPalette pal( btncolor, bgcolor ); 1372 QPalette pal( btncolor, bgcolor );
1369 QString color = config.readEntry( "Highlight", "#73adef" ); 1373 QString color = config.readEntry( "Highlight", "#73adef" );
1370 pal.setColor( QColorGroup::Highlight, QColor( color ) ); 1374 pal.setColor( QColorGroup::Highlight, QColor( color ) );
1371 color = config.readEntry( "HighlightedText", "#FFFFFF" ); 1375 color = config.readEntry( "HighlightedText", "#FFFFFF" );
1372 pal.setColor( QColorGroup::HighlightedText, QColor( color ) ); 1376 pal.setColor( QColorGroup::HighlightedText, QColor( color ) );
1373 color = config.readEntry( "Text", "#000000" ); 1377 color = config.readEntry( "Text", "#000000" );
1374 pal.setColor( QColorGroup::Text, QColor( color ) ); 1378 pal.setColor( QColorGroup::Text, QColor( color ) );
1375 color = config.readEntry( "ButtonText", "#000000" ); 1379 color = config.readEntry( "ButtonText", "#000000" );
1376 pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) ); 1380 pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) );
1377 color = config.readEntry( "Base", "#FFFFFF" ); 1381 color = config.readEntry( "Base", "#FFFFFF" );
1378 pal.setColor( QColorGroup::Base, QColor( color ) ); 1382 pal.setColor( QColorGroup::Base, QColor( color ) );
1379 1383
1380 pal.setColor( QPalette::Disabled, QColorGroup::Text, 1384 pal.setColor( QPalette::Disabled, QColorGroup::Text,
1381 pal.color( QPalette::Active, QColorGroup::Background ).dark() ); 1385 pal.color( QPalette::Active, QColorGroup::Background ).dark() );
1382 1386
1383 setPalette( pal, TRUE ); 1387 setPalette( pal, TRUE );
1384 1388
1385 1389
1386 // Set the ScrollBar on the 'right' side but only if the weak symbol is present 1390 // Set the ScrollBar on the 'right' side but only if the weak symbol is present
1387 if (&qt_left_hand_scrollbars ) 1391 if (&qt_left_hand_scrollbars )
1388 qt_left_hand_scrollbars = config.readBoolEntry( "LeftHand", false ); 1392 qt_left_hand_scrollbars = config.readBoolEntry( "LeftHand", false );
1389 1393
1390 // Window Decoration 1394 // Window Decoration
1391 QString dec = config.readEntry( "Decoration", "Flat" ); 1395 QString dec = config.readEntry( "Decoration", "Flat" );
1392 1396
1393 // don't set a custom deco 1397 // don't set a custom deco
1394 if ( nostyle & Opie::Force_Decoration ) 1398 if ( nostyle & Opie::Force_Decoration )
1395 dec = ""; 1399 dec = "";
1396 1400
1397 1401
1398 if ( dec != d->decorationName ) { 1402 if ( dec != d->decorationName ) {
1399 qwsSetDecoration( new QPEDecoration( dec ) ); 1403 qwsSetDecoration( new QPEDecoration( dec ) );
1400 d->decorationName = dec; 1404 d->decorationName = dec;
1401 } 1405 }
1402 1406
1403 // Font 1407 // Font
1404 QString ff = config.readEntry( "FontFamily", font().family() ); 1408 QString ff = config.readEntry( "FontFamily", font().family() );
1405 int fs = config.readNumEntry( "FontSize", font().pointSize() ); 1409 int fs = config.readNumEntry( "FontSize", font().pointSize() );
1406 1410
1407 // don't set a custom font 1411 // don't set a custom font
1408 if ( nostyle & Opie::Force_Font ) { 1412 if ( nostyle & Opie::Force_Font ) {
1409 ff = "Vera"; 1413 ff = "Vera";
1410 fs = 10; 1414 fs = 10;
1411 } 1415 }
1412 1416
1413 setFont ( QFont ( ff, fs ), true ); 1417 setFont ( QFont ( ff, fs ), true );
1414 1418
1415#if !defined(OPIE_NO_OVERRIDE_QT) 1419#if !defined(OPIE_NO_OVERRIDE_QT)
1416 // revert to global blocking policy ... 1420 // revert to global blocking policy ...
1417 Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None; 1421 Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None;
1418 Opie::force_appearance &= ~nostyle; 1422 Opie::force_appearance &= ~nostyle;
1419#endif 1423#endif
1420#endif 1424#endif
1421} 1425}
1422 1426
1423void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data ) 1427void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data )
1424{ 1428{
1425#ifdef Q_WS_QWS 1429#ifdef Q_WS_QWS
1426 QDataStream stream( data, IO_ReadOnly ); 1430 QDataStream stream( data, IO_ReadOnly );
1427 if ( msg == "applyStyle()" ) { 1431 if ( msg == "applyStyle()" ) {
1428 applyStyle(); 1432 applyStyle();
1429 } 1433 }
1430 else if ( msg == "toggleApplicationMenu()" ) { 1434 else if ( msg == "toggleApplicationMenu()" ) {
1431 QWidget *active = activeWindow ( ); 1435 QWidget *active = activeWindow ( );
1432 1436
1433 if ( active ) { 1437 if ( active ) {
1434 QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( ); 1438 QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( );
1435 bool oldactive = man-> isActive ( ); 1439 bool oldactive = man-> isActive ( );
1436 1440
1437 man-> setActive( !man-> isActive() ); 1441 man-> setActive( !man-> isActive() );
1438 1442
1439 if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu 1443 if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu
1440 QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" ); 1444 QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" );
1441 } 1445 }
1442 } 1446 }
1443 } 1447 }
1444 else if ( msg == "setDefaultRotation(int)" ) { 1448 else if ( msg == "setDefaultRotation(int)" ) {
1445 if ( type() == GuiServer ) { 1449 if ( type() == GuiServer ) {
1446 int r; 1450 int r;
1447 stream >> r; 1451 stream >> r;
1448 setDefaultRotation( r ); 1452 setDefaultRotation( r );
1449 } 1453 }
1450 } 1454 }
1451 else if ( msg == "setCurrentMode(int,int,int)" ) { // Added: 2003-06-11 by Tim Ansell <mithro@mithis.net> 1455 else if ( msg == "setCurrentMode(int,int,int)" ) { // Added: 2003-06-11 by Tim Ansell <mithro@mithis.net>
1452 if ( type() == GuiServer ) { 1456 if ( type() == GuiServer ) {
1453 int x, y, depth; 1457 int x, y, depth;
1454 stream >> x; 1458 stream >> x;
1455 stream >> y; 1459 stream >> y;
1456 stream >> depth; 1460 stream >> depth;
1457 setCurrentMode( x, y, depth ); 1461 setCurrentMode( x, y, depth );
1458 } 1462 }
1459 } 1463 }
1460 else if ( msg == "reset()" ) { 1464 else if ( msg == "reset()" ) {
1461 if ( type() != GuiServer ) 1465 if ( type() != GuiServer )
1462 reset(); 1466 reset();
1463 } 1467 }
1464 else if ( msg == "setCurrentRotation(int)" ) { 1468 else if ( msg == "setCurrentRotation(int)" ) {
1465 int r; 1469 int r;
1466 stream >> r; 1470 stream >> r;
1467 setCurrentRotation( r ); 1471 setCurrentRotation( r );
1468 } 1472 }
1469 else if ( msg == "shutdown()" ) { 1473 else if ( msg == "shutdown()" ) {
1470 if ( type() == GuiServer ) 1474 if ( type() == GuiServer )
1471 shutdown(); 1475 shutdown();
1472 } 1476 }
1473 else if ( msg == "quit()" ) { 1477 else if ( msg == "quit()" ) {
1474 if ( type() != GuiServer ) 1478 if ( type() != GuiServer )
1475 tryQuit(); 1479 tryQuit();
1476 } 1480 }
1477 else if ( msg == "forceQuit()" ) { 1481 else if ( msg == "forceQuit()" ) {
1478 if ( type() != GuiServer ) 1482 if ( type() != GuiServer )
1479 quit(); 1483 quit();
1480 } 1484 }
1481 else if ( msg == "restart()" ) { 1485 else if ( msg == "restart()" ) {
1482 if ( type() == GuiServer ) 1486 if ( type() == GuiServer )
1483 restart(); 1487 restart();
1484 } 1488 }
1485 else if ( msg == "language(QString)" ) { 1489 else if ( msg == "language(QString)" ) {
1486 if ( type() == GuiServer ) { 1490 if ( type() == GuiServer ) {
1487 QString l; 1491 QString l;
1488 stream >> l; 1492 stream >> l;
1489 QString cl = getenv( "LANG" ); 1493 QString cl = getenv( "LANG" );
1490 if ( cl != l ) { 1494 if ( cl != l ) {
1491 if ( l.isNull() ) 1495 if ( l.isNull() )
1492 unsetenv( "LANG" ); 1496 unsetenv( "LANG" );
1493 else 1497 else
1494 setenv( "LANG", l.latin1(), 1 ); 1498 setenv( "LANG", l.latin1(), 1 );
1495 restart(); 1499 restart();
1496 } 1500 }
1497 } 1501 }
1498 } 1502 }
1499 else if ( msg == "timeChange(QString)" ) { 1503 else if ( msg == "timeChange(QString)" ) {
1500 QString t; 1504 QString t;
1501 stream >> t; 1505 stream >> t;
1502 if ( t.isNull() ) 1506 if ( t.isNull() )
1503 unsetenv( "TZ" ); 1507 unsetenv( "TZ" );
1504 else 1508 else
1505 setenv( "TZ", t.latin1(), 1 ); 1509 setenv( "TZ", t.latin1(), 1 );
1506 // emit the signal so everyone else knows... 1510 // emit the signal so everyone else knows...
1507 emit timeChanged(); 1511 emit timeChanged();
1508 } 1512 }
1509 else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) { 1513 else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) {
1510 if ( type() == GuiServer ) { 1514 if ( type() == GuiServer ) {
1511 QDateTime when; 1515 QDateTime when;
1512 QCString channel, message; 1516 QCString channel, message;
1513 int data; 1517 int data;
1514 stream >> when >> channel >> message >> data; 1518 stream >> when >> channel >> message >> data;
1515 AlarmServer::addAlarm( when, channel, message, data ); 1519 AlarmServer::addAlarm( when, channel, message, data );
1516 } 1520 }
1517 } 1521 }
1518 else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) { 1522 else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) {
1519 if ( type() == GuiServer ) { 1523 if ( type() == GuiServer ) {
1520 QDateTime when; 1524 QDateTime when;
1521 QCString channel, message; 1525 QCString channel, message;
1522 int data; 1526 int data;
1523 stream >> when >> channel >> message >> data; 1527 stream >> when >> channel >> message >> data;
1524 AlarmServer::deleteAlarm( when, channel, message, data ); 1528 AlarmServer::deleteAlarm( when, channel, message, data );
1525 } 1529 }
1526 } 1530 }
1527 else if ( msg == "clockChange(bool)" ) { 1531 else if ( msg == "clockChange(bool)" ) {
1528 int tmp; 1532 int tmp;
1529 stream >> tmp; 1533 stream >> tmp;
1530 emit clockChanged( tmp ); 1534 emit clockChanged( tmp );
1531 } 1535 }
1532 else if ( msg == "weekChange(bool)" ) { 1536 else if ( msg == "weekChange(bool)" ) {
1533 int tmp; 1537 int tmp;
1534 stream >> tmp; 1538 stream >> tmp;
1535 emit weekChanged( tmp ); 1539 emit weekChanged( tmp );
1536 } 1540 }
1537 else if ( msg == "setDateFormat(DateFormat)" ) { 1541 else if ( msg == "setDateFormat(DateFormat)" ) {
1538 DateFormat tmp; 1542 DateFormat tmp;
1539 stream >> tmp; 1543 stream >> tmp;
1540 emit dateFormatChanged( tmp ); 1544 emit dateFormatChanged( tmp );
1541 } 1545 }
1542 else if ( msg == "setVolume(int,int)" ) { 1546 else if ( msg == "setVolume(int,int)" ) {
1543 int t, v; 1547 int t, v;
1544 stream >> t >> v; 1548 stream >> t >> v;
1545 setVolume( t, v ); 1549 setVolume( t, v );
1546 emit volumeChanged( muted ); 1550 emit volumeChanged( muted );
1547 } 1551 }
1548 else if ( msg == "volumeChange(bool)" ) { 1552 else if ( msg == "volumeChange(bool)" ) {
1549 stream >> muted; 1553 stream >> muted;
1550 setVolume(); 1554 setVolume();
1551 emit volumeChanged( muted ); 1555 emit volumeChanged( muted );
1552 } 1556 }
1553 else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> 1557 else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
1554 int t, v; 1558 int t, v;
1555 stream >> t >> v; 1559 stream >> t >> v;
1556 setMic( t, v ); 1560 setMic( t, v );
1557 emit micChanged( micMuted ); 1561 emit micChanged( micMuted );
1558 } 1562 }
1559 else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> 1563 else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
1560 stream >> micMuted; 1564 stream >> micMuted;
1561 setMic(); 1565 setMic();
1562 emit micChanged( micMuted ); 1566 emit micChanged( micMuted );
1563 } 1567 }
1564 else if ( msg == "setBass(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1568 else if ( msg == "setBass(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1565 int t, v; 1569 int t, v;
1566 stream >> t >> v; 1570 stream >> t >> v;
1567 setBass( t, v ); 1571 setBass( t, v );
1568 } 1572 }
1569 else if ( msg == "bassChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1573 else if ( msg == "bassChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1570 setBass(); 1574 setBass();
1571 } 1575 }
1572 else if ( msg == "setTreble(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1576 else if ( msg == "setTreble(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1573 int t, v; 1577 int t, v;
1574 stream >> t >> v; 1578 stream >> t >> v;
1575 setTreble( t, v ); 1579 setTreble( t, v );
1576 } 1580 }
1577 else if ( msg == "trebleChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1581 else if ( msg == "trebleChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1578 setTreble(); 1582 setTreble();
1579 } else if ( msg == "getMarkedText()" ) { 1583 } else if ( msg == "getMarkedText()" ) {
1580 if ( type() == GuiServer ) { 1584 if ( type() == GuiServer ) {
1581 const ushort unicode = 'C'-'@'; 1585 const ushort unicode = 'C'-'@';
1582 const int scan = Key_C; 1586 const int scan = Key_C;
1583 qwsServer->processKeyEvent( unicode, scan, ControlButton, TRUE, FALSE ); 1587 qwsServer->processKeyEvent( unicode, scan, ControlButton, TRUE, FALSE );
1584 qwsServer->processKeyEvent( unicode, scan, ControlButton, FALSE, FALSE ); 1588 qwsServer->processKeyEvent( unicode, scan, ControlButton, FALSE, FALSE );
1585 } 1589 }
1586 } else if ( msg == "newChannel(QString)") { 1590 } else if ( msg == "newChannel(QString)") {
1587 QString myChannel = "QPE/Application/" + d->appName; 1591 QString myChannel = "QPE/Application/" + d->appName;
1588 QString channel; 1592 QString channel;
1589 stream >> channel; 1593 stream >> channel;
1590 if (channel == myChannel) { 1594 if (channel == myChannel) {
1591 processQCopFile(); 1595 processQCopFile();
1592 d->sendQCopQ(); 1596 d->sendQCopQ();
1593 } 1597 }
1594 } 1598 }
1595 1599
1596 1600
1597#endif 1601#endif
1598} 1602}
1599 1603
1600 1604
1601 1605
1602 1606
1603 1607
1604/*! 1608/*!
1605 \internal 1609 \internal
1606*/ 1610*/
1607bool QPEApplication::raiseAppropriateWindow() 1611bool QPEApplication::raiseAppropriateWindow()
1608{ 1612{
1609 bool r=FALSE; 1613 bool r=FALSE;
1610 1614
1611 // 1. Raise the main widget 1615 // 1. Raise the main widget
1612 QWidget *top = d->qpe_main_widget; 1616 QWidget *top = d->qpe_main_widget;
1613 if ( !top ) top = mainWidget(); 1617 if ( !top ) top = mainWidget();
1614 1618
1615 if ( top && d->keep_running ) { 1619 if ( top && d->keep_running ) {
1616 if ( top->isVisible() ) 1620 if ( top->isVisible() )
1617 r = TRUE; 1621 r = TRUE;
1618 else if (d->preloaded) { 1622 else if (d->preloaded) {
1619 // We are preloaded and not visible.. pretend we just started.. 1623 // We are preloaded and not visible.. pretend we just started..
1620#ifndef QT_NO_COP 1624#ifndef QT_NO_COP
1621 QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); 1625 QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
1622 e << d->appName; 1626 e << d->appName;
1623#endif 1627#endif
1624 } 1628 }
1625 1629
1626 d->show_mx(top,d->nomaximize, d->appName); 1630 d->show_mx(top,d->nomaximize, d->appName);
1627 top->raise(); 1631 top->raise();
1628 } 1632 }
1629 1633
1630 QWidget *topm = activeModalWidget(); 1634 QWidget *topm = activeModalWidget();
1631 1635
1632 // 2. Raise any parentless widgets (except top and topm, as they 1636 // 2. Raise any parentless widgets (except top and topm, as they
1633 // are raised before and after this loop). Order from most 1637 // are raised before and after this loop). Order from most
1634 // recently raised as deepest to least recently as top, so 1638 // recently raised as deepest to least recently as top, so
1635 // that repeated calls cycle through widgets. 1639 // that repeated calls cycle through widgets.
1636 QWidgetList *list = topLevelWidgets(); 1640 QWidgetList *list = topLevelWidgets();
1637 if ( list ) { 1641 if ( list ) {
1638 bool foundlast = FALSE; 1642 bool foundlast = FALSE;
1639 QWidget* topsub = 0; 1643 QWidget* topsub = 0;
1640 if ( d->lastraised ) { 1644 if ( d->lastraised ) {
1641 for (QWidget* w = list->first(); w; w = list->next()) { 1645 for (QWidget* w = list->first(); w; w = list->next()) {
1642 if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) { 1646 if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) {
1643 if ( w == d->lastraised ) 1647 if ( w == d->lastraised )
1644 foundlast = TRUE; 1648 foundlast = TRUE;
1645 if ( foundlast ) { 1649 if ( foundlast ) {
1646 w->raise(); 1650 w->raise();
1647 topsub = w; 1651 topsub = w;
1648 } 1652 }
1649 } 1653 }
1650 } 1654 }
1651 } 1655 }
1652 for (QWidget* w = list->first(); w; w = list->next()) { 1656 for (QWidget* w = list->first(); w; w = list->next()) {
1653 if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) { 1657 if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) {
1654 if ( w == d->lastraised ) 1658 if ( w == d->lastraised )
1655 break; 1659 break;
1656 w->raise(); 1660 w->raise();
1657 topsub = w; 1661 topsub = w;
1658 } 1662 }
1659 } 1663 }
1660 d->lastraised = topsub; 1664 d->lastraised = topsub;
1661 delete list; 1665 delete list;
1662 } 1666 }
1663 1667
1664 // 3. Raise the active modal widget. 1668 // 3. Raise the active modal widget.
1665 if ( topm ) { 1669 if ( topm ) {
1666 topm->show(); 1670 topm->show();
1667 topm->raise(); 1671 topm->raise();
1668 // If we haven't already handled the fastAppShowing message 1672 // If we haven't already handled the fastAppShowing message
1669 if (!top && d->preloaded) { 1673 if (!top && d->preloaded) {
1670#ifndef QT_NO_COP 1674#ifndef QT_NO_COP
1671 QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); 1675 QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
1672 e << d->appName; 1676 e << d->appName;
1673#endif 1677#endif
1674 } 1678 }
1675 r = FALSE; 1679 r = FALSE;
1676 } 1680 }
1677 1681
1678 return r; 1682 return r;
1679} 1683}
1680 1684
1681 1685
1682void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data) 1686void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data)
1683{ 1687{
1684#ifdef Q_WS_QWS 1688#ifdef Q_WS_QWS
1685 1689
1686 if ( msg == "quit()" ) { 1690 if ( msg == "quit()" ) {
1687 tryQuit(); 1691 tryQuit();
1688 } 1692 }
1689 else if ( msg == "quitIfInvisible()" ) { 1693 else if ( msg == "quitIfInvisible()" ) {
1690 if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() ) 1694 if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() )
1691 quit(); 1695 quit();
1692 } 1696 }
1693 else if ( msg == "close()" ) { 1697 else if ( msg == "close()" ) {
1694 hideOrQuit(); 1698 hideOrQuit();
1695 } 1699 }
1696 else if ( msg == "disablePreload()" ) { 1700 else if ( msg == "disablePreload()" ) {
1697 d->preloaded = FALSE; 1701 d->preloaded = FALSE;
1698 d->keep_running = TRUE; 1702 d->keep_running = TRUE;
1699 /* so that quit will quit */ 1703 /* so that quit will quit */
1700 } 1704 }
1701 else if ( msg == "enablePreload()" ) { 1705 else if ( msg == "enablePreload()" ) {
1702 if (d->qpe_main_widget) 1706 if (d->qpe_main_widget)
1703 d->preloaded = TRUE; 1707 d->preloaded = TRUE;
1704 d->keep_running = TRUE; 1708 d->keep_running = TRUE;
1705 /* so next quit won't quit */ 1709 /* so next quit won't quit */
1706 } 1710 }
1707 else if ( msg == "raise()" ) { 1711 else if ( msg == "raise()" ) {
1708 d->keep_running = TRUE; 1712 d->keep_running = TRUE;
1709 d->notbusysent = FALSE; 1713 d->notbusysent = FALSE;
1710 raiseAppropriateWindow(); 1714 raiseAppropriateWindow();
1711 // Tell the system we're still chugging along... 1715 // Tell the system we're still chugging along...
1712 QCopEnvelope e("QPE/System", "appRaised(QString)"); 1716 QCopEnvelope e("QPE/System", "appRaised(QString)");
1713 e << d->appName; 1717 e << d->appName;
1714 } 1718 }
1715 else if ( msg == "flush()" ) { 1719 else if ( msg == "flush()" ) {
1716 emit flush(); 1720 emit flush();
1717 // we need to tell the desktop 1721 // we need to tell the desktop
1718 QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" ); 1722 QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" );
1719 e << d->appName; 1723 e << d->appName;
1720 } 1724 }
1721 else if ( msg == "reload()" ) { 1725 else if ( msg == "reload()" ) {
1722 emit reload(); 1726 emit reload();
1723 } 1727 }
1724 else if ( msg == "setDocument(QString)" ) { 1728 else if ( msg == "setDocument(QString)" ) {
1725 d->keep_running = TRUE; 1729 d->keep_running = TRUE;
1726 QDataStream stream( data, IO_ReadOnly ); 1730 QDataStream stream( data, IO_ReadOnly );
1727 QString doc; 1731 QString doc;
1728 stream >> doc; 1732 stream >> doc;
1729 QWidget *mw = mainWidget(); 1733 QWidget *mw = mainWidget();
1730 if ( !mw ) 1734 if ( !mw )
1731 mw = d->qpe_main_widget; 1735 mw = d->qpe_main_widget;
1732 if ( mw ) 1736 if ( mw )
1733 Global::setDocument( mw, doc ); 1737 Global::setDocument( mw, doc );
1734 1738
1735 } else if ( msg == "QPEProcessQCop()" ) { 1739 } else if ( msg == "QPEProcessQCop()" ) {
1736 processQCopFile(); 1740 processQCopFile();
1737 d->sendQCopQ(); 1741 d->sendQCopQ();
1738 }else 1742 }else
1739 { 1743 {
1740 bool p = d->keep_running; 1744 bool p = d->keep_running;
1741 d->keep_running = FALSE; 1745 d->keep_running = FALSE;
1742 emit appMessage( msg, data); 1746 emit appMessage( msg, data);
1743 if ( d->keep_running ) { 1747 if ( d->keep_running ) {
1744 d->notbusysent = FALSE; 1748 d->notbusysent = FALSE;
1745 raiseAppropriateWindow(); 1749 raiseAppropriateWindow();
1746 if ( !p ) { 1750 if ( !p ) {
1747 // Tell the system we're still chugging along... 1751 // Tell the system we're still chugging along...
1748#ifndef QT_NO_COP 1752#ifndef QT_NO_COP
1749 QCopEnvelope e("QPE/System", "appRaised(QString)"); 1753 QCopEnvelope e("QPE/System", "appRaised(QString)");
1750 e << d->appName; 1754 e << d->appName;
1751#endif 1755#endif
1752 } 1756 }
1753 } 1757 }
1754 if ( p ) 1758 if ( p )
1755 d->keep_running = p; 1759 d->keep_running = p;
1756 } 1760 }
1757#endif 1761#endif
1758} 1762}
1759 1763
1760 1764
1761/*! 1765/*!
1762 Sets widget \a mw as the mainWidget() and shows it. For small windows, 1766 Sets widget \a mw as the mainWidget() and shows it. For small windows,
1763 consider passing TRUE for \a nomaximize rather than the default FALSE. 1767 consider passing TRUE for \a nomaximize rather than the default FALSE.
1764 1768
1765 \sa showMainDocumentWidget() 1769 \sa showMainDocumentWidget()
1766*/ 1770*/
1767void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize ) 1771void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize )
1768{ 1772{
1769// setMainWidget(mw); this breaks FastLoading because lastWindowClose() would quit 1773// setMainWidget(mw); this breaks FastLoading because lastWindowClose() would quit
1770 d->show(mw, nomaximize ); 1774 d->show(mw, nomaximize );
1771} 1775}
1772 1776
1773/*! 1777/*!
1774 Sets widget \a mw as the mainWidget() and shows it. For small windows, 1778 Sets widget \a mw as the mainWidget() and shows it. For small windows,
1775 consider passing TRUE for \a nomaximize rather than the default FALSE. 1779 consider passing TRUE for \a nomaximize rather than the default FALSE.
1776 1780
1777 This calls designates the application as 1781 This calls designates the application as
1778 a \link docwidget.html document-oriented\endlink application. 1782 a \link docwidget.html document-oriented\endlink application.
1779 1783
1780 The \a mw widget \e must have this slot: setDocument(const QString&). 1784 The \a mw widget \e must have this slot: setDocument(const QString&).
1781 1785
1782 \sa showMainWidget() 1786 \sa showMainWidget()
1783*/ 1787*/
1784void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize ) 1788void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize )
1785{ 1789{
1786 if ( mw && argc() == 2 ) 1790 if ( mw && argc() == 2 )
1787 Global::setDocument( mw, QString::fromUtf8(argv()[1]) ); 1791 Global::setDocument( mw, QString::fromUtf8(argv()[1]) );
1788 1792
1789 1793
1790// setMainWidget(mw); see above 1794// setMainWidget(mw); see above
1791 d->show(mw, nomaximize ); 1795 d->show(mw, nomaximize );
1792} 1796}
1793 1797
1794 1798
1795/*! 1799/*!
1796 If an application is started via a \link qcop.html QCop\endlink 1800 If an application is started via a \link qcop.html QCop\endlink
1797 message, the application will process the \link qcop.html 1801 message, the application will process the \link qcop.html
1798 QCop\endlink message and then quit. If the application calls this 1802 QCop\endlink message and then quit. If the application calls this
1799 function while processing a \link qcop.html QCop\endlink message, 1803 function while processing a \link qcop.html QCop\endlink message,
1800 after processing its outstanding \link qcop.html QCop\endlink 1804 after processing its outstanding \link qcop.html QCop\endlink
1801 messages the application will start 'properly' and show itself. 1805 messages the application will start 'properly' and show itself.
1802 1806
1803 \sa keepRunning() 1807 \sa keepRunning()
1804*/ 1808*/