summaryrefslogtreecommitdiff
path: root/library/qpeapplication.cpp
Unidiff
Diffstat (limited to 'library/qpeapplication.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpeapplication.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index b1c8750..5e88086 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -805,1025 +805,1025 @@ QPEApplication::QPEApplication( int & argc, char **argv, Type t )
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
1287extern void qws_clearLoadedFonts(); 1287extern void qws_clearLoadedFonts();
1288 1288
1289void QPEApplication::setCurrentMode( int x, int y, int depth ) 1289void QPEApplication::setCurrentMode( int x, int y, int depth )
1290{ 1290{
1291 // Reset the caches 1291 // Reset the caches
1292 qws_clearLoadedFonts(); 1292 qws_clearLoadedFonts();
1293 QPixmapCache::clear(); 1293 QPixmapCache::clear();
1294 1294
1295 // Change the screen mode 1295 // Change the screen mode
1296 qt_screen->setMode(x, y, depth); 1296 qt_screen->setMode(x, y, depth);
1297 1297
1298 if ( qApp->type() == GuiServer ) { 1298 if ( qApp->type() == GuiServer ) {
1299 // Reconfigure the GuiServer 1299 // Reconfigure the GuiServer
1300 qwsServer->beginDisplayReconfigure(); 1300 qwsServer->beginDisplayReconfigure();
1301 qwsServer->endDisplayReconfigure(); 1301 qwsServer->endDisplayReconfigure();
1302 1302
1303 // Get all the running apps to reset 1303 // Get all the running apps to reset
1304 QCopEnvelope env( "QPE/System", "reset()" ); 1304 QCopEnvelope env( "QPE/System", "reset()" );
1305 } 1305 }
1306} 1306}
1307 1307
1308void QPEApplication::reset() { 1308void QPEApplication::reset() {
1309 // Reconnect to the screen 1309 // Reconnect to the screen
1310 qt_screen->disconnect(); 1310 qt_screen->disconnect();
1311 qt_screen->connect( QString::null ); 1311 qt_screen->connect( QString::null );
1312 1312
1313 // Redraw everything 1313 // Redraw everything
1314 applyStyle(); 1314 applyStyle();
1315} 1315}
1316 1316
1317#if (QT_VERSION < 238) && Q_OS_MACX 1317#if (QT_VERSION < 238) && defined Q_OS_MACX
1318bool qt_left_hand_scrollbars = false; 1318bool qt_left_hand_scrollbars = false;
1319#else 1319#else
1320#ifdef Q_OS_MACX 1320#ifdef Q_OS_MACX
1321#define WEAK_SYMBOL __attribute__((weak_import)) 1321#define WEAK_SYMBOL __attribute__((weak_import))
1322#else 1322#else
1323#define WEAK_SYMBOL __attribute__((weak)) 1323#define WEAK_SYMBOL __attribute__((weak))
1324#endif 1324#endif
1325extern bool qt_left_hand_scrollbars WEAK_SYMBOL; 1325extern bool qt_left_hand_scrollbars WEAK_SYMBOL;
1326#endif 1326#endif
1327 1327
1328/*! 1328/*!
1329 \internal 1329 \internal
1330*/ 1330*/
1331void QPEApplication::applyStyle() 1331void QPEApplication::applyStyle()
1332{ 1332{
1333 Config config( "qpe" ); 1333 Config config( "qpe" );
1334 config.setGroup( "Appearance" ); 1334 config.setGroup( "Appearance" );
1335 1335
1336#if QT_VERSION > 233 1336#if QT_VERSION > 233
1337#if !defined(OPIE_NO_OVERRIDE_QT) 1337#if !defined(OPIE_NO_OVERRIDE_QT)
1338 // don't block ourselves ... 1338 // don't block ourselves ...
1339 Opie::force_appearance = 0; 1339 Opie::force_appearance = 0;
1340 1340
1341 static QString appname = Opie::binaryName ( ); 1341 static QString appname = Opie::binaryName ( );
1342 1342
1343 QStringList ex = config. readListEntry ( "NoStyle", ';' ); 1343 QStringList ex = config. readListEntry ( "NoStyle", ';' );
1344 int nostyle = 0; 1344 int nostyle = 0;
1345 for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) { 1345 for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) {
1346 if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) { 1346 if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) {
1347 nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 ); 1347 nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 );
1348 break; 1348 break;
1349 } 1349 }
1350 } 1350 }
1351#else 1351#else
1352 int nostyle = 0; 1352 int nostyle = 0;
1353#endif 1353#endif
1354 1354
1355 // Widget style 1355 // Widget style
1356 QString style = config.readEntry( "Style", "FlatStyle" ); 1356 QString style = config.readEntry( "Style", "FlatStyle" );
1357 1357
1358 // don't set a custom style 1358 // don't set a custom style
1359 if ( nostyle & Opie::Force_Style ) 1359 if ( nostyle & Opie::Force_Style )
1360 style = "FlatStyle"; 1360 style = "FlatStyle";
1361 1361
1362 internalSetStyle ( style ); 1362 internalSetStyle ( style );
1363 1363
1364 // Colors - from /etc/colors/Liquid.scheme 1364 // Colors - from /etc/colors/Liquid.scheme
1365 QColor bgcolor( config.readEntry( "Background", "#E0E0E0" ) ); 1365 QColor bgcolor( config.readEntry( "Background", "#E0E0E0" ) );
1366 QColor btncolor( config.readEntry( "Button", "#96c8fa" ) ); 1366 QColor btncolor( config.readEntry( "Button", "#96c8fa" ) );
1367 QPalette pal( btncolor, bgcolor ); 1367 QPalette pal( btncolor, bgcolor );
1368 QString color = config.readEntry( "Highlight", "#73adef" ); 1368 QString color = config.readEntry( "Highlight", "#73adef" );
1369 pal.setColor( QColorGroup::Highlight, QColor( color ) ); 1369 pal.setColor( QColorGroup::Highlight, QColor( color ) );
1370 color = config.readEntry( "HighlightedText", "#FFFFFF" ); 1370 color = config.readEntry( "HighlightedText", "#FFFFFF" );
1371 pal.setColor( QColorGroup::HighlightedText, QColor( color ) ); 1371 pal.setColor( QColorGroup::HighlightedText, QColor( color ) );
1372 color = config.readEntry( "Text", "#000000" ); 1372 color = config.readEntry( "Text", "#000000" );
1373 pal.setColor( QColorGroup::Text, QColor( color ) ); 1373 pal.setColor( QColorGroup::Text, QColor( color ) );
1374 color = config.readEntry( "ButtonText", "#000000" ); 1374 color = config.readEntry( "ButtonText", "#000000" );
1375 pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) ); 1375 pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) );
1376 color = config.readEntry( "Base", "#FFFFFF" ); 1376 color = config.readEntry( "Base", "#FFFFFF" );
1377 pal.setColor( QColorGroup::Base, QColor( color ) ); 1377 pal.setColor( QColorGroup::Base, QColor( color ) );
1378 1378
1379 pal.setColor( QPalette::Disabled, QColorGroup::Text, 1379 pal.setColor( QPalette::Disabled, QColorGroup::Text,
1380 pal.color( QPalette::Active, QColorGroup::Background ).dark() ); 1380 pal.color( QPalette::Active, QColorGroup::Background ).dark() );
1381 1381
1382 setPalette( pal, TRUE ); 1382 setPalette( pal, TRUE );
1383 1383
1384 1384
1385 // Set the ScrollBar on the 'right' side but only if the weak symbol is present 1385 // Set the ScrollBar on the 'right' side but only if the weak symbol is present
1386 if (&qt_left_hand_scrollbars ) 1386 if (&qt_left_hand_scrollbars )
1387 qt_left_hand_scrollbars = config.readBoolEntry( "LeftHand", false ); 1387 qt_left_hand_scrollbars = config.readBoolEntry( "LeftHand", false );
1388 1388
1389 // Window Decoration 1389 // Window Decoration
1390 QString dec = config.readEntry( "Decoration", "Flat" ); 1390 QString dec = config.readEntry( "Decoration", "Flat" );
1391 1391
1392 // don't set a custom deco 1392 // don't set a custom deco
1393 if ( nostyle & Opie::Force_Decoration ) 1393 if ( nostyle & Opie::Force_Decoration )
1394 dec = ""; 1394 dec = "";
1395 1395
1396 1396
1397 if ( dec != d->decorationName ) { 1397 if ( dec != d->decorationName ) {
1398 qwsSetDecoration( new QPEDecoration( dec ) ); 1398 qwsSetDecoration( new QPEDecoration( dec ) );
1399 d->decorationName = dec; 1399 d->decorationName = dec;
1400 } 1400 }
1401 1401
1402 // Font 1402 // Font
1403 QString ff = config.readEntry( "FontFamily", font().family() ); 1403 QString ff = config.readEntry( "FontFamily", font().family() );
1404 int fs = config.readNumEntry( "FontSize", font().pointSize() ); 1404 int fs = config.readNumEntry( "FontSize", font().pointSize() );
1405 1405
1406 // don't set a custom font 1406 // don't set a custom font
1407 if ( nostyle & Opie::Force_Font ) { 1407 if ( nostyle & Opie::Force_Font ) {
1408 ff = "Vera"; 1408 ff = "Vera";
1409 fs = 10; 1409 fs = 10;
1410 } 1410 }
1411 1411
1412 setFont ( QFont ( ff, fs ), true ); 1412 setFont ( QFont ( ff, fs ), true );
1413 1413
1414#if !defined(OPIE_NO_OVERRIDE_QT) 1414#if !defined(OPIE_NO_OVERRIDE_QT)
1415 // revert to global blocking policy ... 1415 // revert to global blocking policy ...
1416 Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None; 1416 Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None;
1417 Opie::force_appearance &= ~nostyle; 1417 Opie::force_appearance &= ~nostyle;
1418#endif 1418#endif
1419#endif 1419#endif
1420} 1420}
1421 1421
1422void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data ) 1422void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data )
1423{ 1423{
1424#ifdef Q_WS_QWS 1424#ifdef Q_WS_QWS
1425 QDataStream stream( data, IO_ReadOnly ); 1425 QDataStream stream( data, IO_ReadOnly );
1426 if ( msg == "applyStyle()" ) { 1426 if ( msg == "applyStyle()" ) {
1427 applyStyle(); 1427 applyStyle();
1428 } 1428 }
1429 else if ( msg == "toggleApplicationMenu()" ) { 1429 else if ( msg == "toggleApplicationMenu()" ) {
1430 QWidget *active = activeWindow ( ); 1430 QWidget *active = activeWindow ( );
1431 1431
1432 if ( active ) { 1432 if ( active ) {
1433 QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( ); 1433 QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( );
1434 bool oldactive = man-> isActive ( ); 1434 bool oldactive = man-> isActive ( );
1435 1435
1436 man-> setActive( !man-> isActive() ); 1436 man-> setActive( !man-> isActive() );
1437 1437
1438 if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu 1438 if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu
1439 QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" ); 1439 QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" );
1440 } 1440 }
1441 } 1441 }
1442 } 1442 }
1443 else if ( msg == "setDefaultRotation(int)" ) { 1443 else if ( msg == "setDefaultRotation(int)" ) {
1444 if ( type() == GuiServer ) { 1444 if ( type() == GuiServer ) {
1445 int r; 1445 int r;
1446 stream >> r; 1446 stream >> r;
1447 setDefaultRotation( r ); 1447 setDefaultRotation( r );
1448 } 1448 }
1449 } 1449 }
1450 else if ( msg == "setCurrentMode(int,int,int)" ) { // Added: 2003-06-11 by Tim Ansell <mithro@mithis.net> 1450 else if ( msg == "setCurrentMode(int,int,int)" ) { // Added: 2003-06-11 by Tim Ansell <mithro@mithis.net>
1451 if ( type() == GuiServer ) { 1451 if ( type() == GuiServer ) {
1452 int x, y, depth; 1452 int x, y, depth;
1453 stream >> x; 1453 stream >> x;
1454 stream >> y; 1454 stream >> y;
1455 stream >> depth; 1455 stream >> depth;
1456 setCurrentMode( x, y, depth ); 1456 setCurrentMode( x, y, depth );
1457 } 1457 }
1458 } 1458 }
1459 else if ( msg == "reset()" ) { 1459 else if ( msg == "reset()" ) {
1460 if ( type() != GuiServer ) 1460 if ( type() != GuiServer )
1461 reset(); 1461 reset();
1462 } 1462 }
1463 else if ( msg == "setCurrentRotation(int)" ) { 1463 else if ( msg == "setCurrentRotation(int)" ) {
1464 int r; 1464 int r;
1465 stream >> r; 1465 stream >> r;
1466 setCurrentRotation( r ); 1466 setCurrentRotation( r );
1467 } 1467 }
1468 else if ( msg == "shutdown()" ) { 1468 else if ( msg == "shutdown()" ) {
1469 if ( type() == GuiServer ) 1469 if ( type() == GuiServer )
1470 shutdown(); 1470 shutdown();
1471 } 1471 }
1472 else if ( msg == "quit()" ) { 1472 else if ( msg == "quit()" ) {
1473 if ( type() != GuiServer ) 1473 if ( type() != GuiServer )
1474 tryQuit(); 1474 tryQuit();
1475 } 1475 }
1476 else if ( msg == "forceQuit()" ) { 1476 else if ( msg == "forceQuit()" ) {
1477 if ( type() != GuiServer ) 1477 if ( type() != GuiServer )
1478 quit(); 1478 quit();
1479 } 1479 }
1480 else if ( msg == "restart()" ) { 1480 else if ( msg == "restart()" ) {
1481 if ( type() == GuiServer ) 1481 if ( type() == GuiServer )
1482 restart(); 1482 restart();
1483 } 1483 }
1484 else if ( msg == "language(QString)" ) { 1484 else if ( msg == "language(QString)" ) {
1485 if ( type() == GuiServer ) { 1485 if ( type() == GuiServer ) {
1486 QString l; 1486 QString l;
1487 stream >> l; 1487 stream >> l;
1488 QString cl = getenv( "LANG" ); 1488 QString cl = getenv( "LANG" );
1489 if ( cl != l ) { 1489 if ( cl != l ) {
1490 if ( l.isNull() ) 1490 if ( l.isNull() )
1491 unsetenv( "LANG" ); 1491 unsetenv( "LANG" );
1492 else 1492 else
1493 setenv( "LANG", l.latin1(), 1 ); 1493 setenv( "LANG", l.latin1(), 1 );
1494 restart(); 1494 restart();
1495 } 1495 }
1496 } 1496 }
1497 } 1497 }
1498 else if ( msg == "timeChange(QString)" ) { 1498 else if ( msg == "timeChange(QString)" ) {
1499 QString t; 1499 QString t;
1500 stream >> t; 1500 stream >> t;
1501 if ( t.isNull() ) 1501 if ( t.isNull() )
1502 unsetenv( "TZ" ); 1502 unsetenv( "TZ" );
1503 else 1503 else
1504 setenv( "TZ", t.latin1(), 1 ); 1504 setenv( "TZ", t.latin1(), 1 );
1505 // emit the signal so everyone else knows... 1505 // emit the signal so everyone else knows...
1506 emit timeChanged(); 1506 emit timeChanged();
1507 } 1507 }
1508 else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) { 1508 else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) {
1509 if ( type() == GuiServer ) { 1509 if ( type() == GuiServer ) {
1510 QDateTime when; 1510 QDateTime when;
1511 QCString channel, message; 1511 QCString channel, message;
1512 int data; 1512 int data;
1513 stream >> when >> channel >> message >> data; 1513 stream >> when >> channel >> message >> data;
1514 AlarmServer::addAlarm( when, channel, message, data ); 1514 AlarmServer::addAlarm( when, channel, message, data );
1515 } 1515 }
1516 } 1516 }
1517 else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) { 1517 else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) {
1518 if ( type() == GuiServer ) { 1518 if ( type() == GuiServer ) {
1519 QDateTime when; 1519 QDateTime when;
1520 QCString channel, message; 1520 QCString channel, message;
1521 int data; 1521 int data;
1522 stream >> when >> channel >> message >> data; 1522 stream >> when >> channel >> message >> data;
1523 AlarmServer::deleteAlarm( when, channel, message, data ); 1523 AlarmServer::deleteAlarm( when, channel, message, data );
1524 } 1524 }
1525 } 1525 }
1526 else if ( msg == "clockChange(bool)" ) { 1526 else if ( msg == "clockChange(bool)" ) {
1527 int tmp; 1527 int tmp;
1528 stream >> tmp; 1528 stream >> tmp;
1529 emit clockChanged( tmp ); 1529 emit clockChanged( tmp );
1530 } 1530 }
1531 else if ( msg == "weekChange(bool)" ) { 1531 else if ( msg == "weekChange(bool)" ) {
1532 int tmp; 1532 int tmp;
1533 stream >> tmp; 1533 stream >> tmp;
1534 emit weekChanged( tmp ); 1534 emit weekChanged( tmp );
1535 } 1535 }
1536 else if ( msg == "setDateFormat(DateFormat)" ) { 1536 else if ( msg == "setDateFormat(DateFormat)" ) {
1537 DateFormat tmp; 1537 DateFormat tmp;
1538 stream >> tmp; 1538 stream >> tmp;
1539 emit dateFormatChanged( tmp ); 1539 emit dateFormatChanged( tmp );
1540 } 1540 }
1541 else if ( msg == "setVolume(int,int)" ) { 1541 else if ( msg == "setVolume(int,int)" ) {
1542 int t, v; 1542 int t, v;
1543 stream >> t >> v; 1543 stream >> t >> v;
1544 setVolume( t, v ); 1544 setVolume( t, v );
1545 emit volumeChanged( muted ); 1545 emit volumeChanged( muted );
1546 } 1546 }
1547 else if ( msg == "volumeChange(bool)" ) { 1547 else if ( msg == "volumeChange(bool)" ) {
1548 stream >> muted; 1548 stream >> muted;
1549 setVolume(); 1549 setVolume();
1550 emit volumeChanged( muted ); 1550 emit volumeChanged( muted );
1551 } 1551 }
1552 else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> 1552 else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
1553 int t, v; 1553 int t, v;
1554 stream >> t >> v; 1554 stream >> t >> v;
1555 setMic( t, v ); 1555 setMic( t, v );
1556 emit micChanged( micMuted ); 1556 emit micChanged( micMuted );
1557 } 1557 }
1558 else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> 1558 else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
1559 stream >> micMuted; 1559 stream >> micMuted;
1560 setMic(); 1560 setMic();
1561 emit micChanged( micMuted ); 1561 emit micChanged( micMuted );
1562 } 1562 }
1563 else if ( msg == "setBass(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1563 else if ( msg == "setBass(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1564 int t, v; 1564 int t, v;
1565 stream >> t >> v; 1565 stream >> t >> v;
1566 setBass( t, v ); 1566 setBass( t, v );
1567 } 1567 }
1568 else if ( msg == "bassChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1568 else if ( msg == "bassChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1569 setBass(); 1569 setBass();
1570 } 1570 }
1571 else if ( msg == "setTreble(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1571 else if ( msg == "setTreble(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1572 int t, v; 1572 int t, v;
1573 stream >> t >> v; 1573 stream >> t >> v;
1574 setTreble( t, v ); 1574 setTreble( t, v );
1575 } 1575 }
1576 else if ( msg == "trebleChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1576 else if ( msg == "trebleChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1577 setTreble(); 1577 setTreble();
1578 } else if ( msg == "getMarkedText()" ) { 1578 } else if ( msg == "getMarkedText()" ) {
1579 if ( type() == GuiServer ) { 1579 if ( type() == GuiServer ) {
1580 const ushort unicode = 'C'-'@'; 1580 const ushort unicode = 'C'-'@';
1581 const int scan = Key_C; 1581 const int scan = Key_C;
1582 qwsServer->processKeyEvent( unicode, scan, ControlButton, TRUE, FALSE ); 1582 qwsServer->processKeyEvent( unicode, scan, ControlButton, TRUE, FALSE );
1583 qwsServer->processKeyEvent( unicode, scan, ControlButton, FALSE, FALSE ); 1583 qwsServer->processKeyEvent( unicode, scan, ControlButton, FALSE, FALSE );
1584 } 1584 }
1585 } else if ( msg == "newChannel(QString)") { 1585 } else if ( msg == "newChannel(QString)") {
1586 QString myChannel = "QPE/Application/" + d->appName; 1586 QString myChannel = "QPE/Application/" + d->appName;
1587 QString channel; 1587 QString channel;
1588 stream >> channel; 1588 stream >> channel;
1589 if (channel == myChannel) { 1589 if (channel == myChannel) {
1590 processQCopFile(); 1590 processQCopFile();
1591 d->sendQCopQ(); 1591 d->sendQCopQ();
1592 } 1592 }
1593 } 1593 }
1594 1594
1595 1595
1596#endif 1596#endif
1597} 1597}
1598 1598
1599 1599
1600 1600
1601 1601
1602 1602
1603/*! 1603/*!
1604 \internal 1604 \internal
1605*/ 1605*/
1606bool QPEApplication::raiseAppropriateWindow() 1606bool QPEApplication::raiseAppropriateWindow()
1607{ 1607{
1608 bool r=FALSE; 1608 bool r=FALSE;
1609 1609
1610 // 1. Raise the main widget 1610 // 1. Raise the main widget
1611 QWidget *top = d->qpe_main_widget; 1611 QWidget *top = d->qpe_main_widget;
1612 if ( !top ) top = mainWidget(); 1612 if ( !top ) top = mainWidget();
1613 1613
1614 if ( top && d->keep_running ) { 1614 if ( top && d->keep_running ) {
1615 if ( top->isVisible() ) 1615 if ( top->isVisible() )
1616 r = TRUE; 1616 r = TRUE;
1617 else if (d->preloaded) { 1617 else if (d->preloaded) {
1618 // We are preloaded and not visible.. pretend we just started.. 1618 // We are preloaded and not visible.. pretend we just started..
1619#ifndef QT_NO_COP 1619#ifndef QT_NO_COP
1620 QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); 1620 QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
1621 e << d->appName; 1621 e << d->appName;
1622#endif 1622#endif
1623 } 1623 }
1624 1624
1625 d->show_mx(top,d->nomaximize, d->appName); 1625 d->show_mx(top,d->nomaximize, d->appName);
1626 top->raise(); 1626 top->raise();
1627 } 1627 }
1628 1628
1629 QWidget *topm = activeModalWidget(); 1629 QWidget *topm = activeModalWidget();
1630 1630
1631 // 2. Raise any parentless widgets (except top and topm, as they 1631 // 2. Raise any parentless widgets (except top and topm, as they
1632 // are raised before and after this loop). Order from most 1632 // are raised before and after this loop). Order from most
1633 // recently raised as deepest to least recently as top, so 1633 // recently raised as deepest to least recently as top, so
1634 // that repeated calls cycle through widgets. 1634 // that repeated calls cycle through widgets.
1635 QWidgetList *list = topLevelWidgets(); 1635 QWidgetList *list = topLevelWidgets();
1636 if ( list ) { 1636 if ( list ) {
1637 bool foundlast = FALSE; 1637 bool foundlast = FALSE;
1638 QWidget* topsub = 0; 1638 QWidget* topsub = 0;
1639 if ( d->lastraised ) { 1639 if ( d->lastraised ) {
1640 for (QWidget* w = list->first(); w; w = list->next()) { 1640 for (QWidget* w = list->first(); w; w = list->next()) {
1641 if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) { 1641 if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) {
1642 if ( w == d->lastraised ) 1642 if ( w == d->lastraised )
1643 foundlast = TRUE; 1643 foundlast = TRUE;
1644 if ( foundlast ) { 1644 if ( foundlast ) {
1645 w->raise(); 1645 w->raise();
1646 topsub = w; 1646 topsub = w;
1647 } 1647 }
1648 } 1648 }
1649 } 1649 }
1650 } 1650 }
1651 for (QWidget* w = list->first(); w; w = list->next()) { 1651 for (QWidget* w = list->first(); w; w = list->next()) {
1652 if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) { 1652 if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) {
1653 if ( w == d->lastraised ) 1653 if ( w == d->lastraised )
1654 break; 1654 break;
1655 w->raise(); 1655 w->raise();
1656 topsub = w; 1656 topsub = w;
1657 } 1657 }
1658 } 1658 }
1659 d->lastraised = topsub; 1659 d->lastraised = topsub;
1660 delete list; 1660 delete list;
1661 } 1661 }
1662 1662
1663 // 3. Raise the active modal widget. 1663 // 3. Raise the active modal widget.
1664 if ( topm ) { 1664 if ( topm ) {
1665 topm->show(); 1665 topm->show();
1666 topm->raise(); 1666 topm->raise();
1667 // If we haven't already handled the fastAppShowing message 1667 // If we haven't already handled the fastAppShowing message
1668 if (!top && d->preloaded) { 1668 if (!top && d->preloaded) {
1669#ifndef QT_NO_COP 1669#ifndef QT_NO_COP
1670 QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); 1670 QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
1671 e << d->appName; 1671 e << d->appName;
1672#endif 1672#endif
1673 } 1673 }
1674 r = FALSE; 1674 r = FALSE;
1675 } 1675 }
1676 1676
1677 return r; 1677 return r;
1678} 1678}
1679 1679
1680 1680
1681void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data) 1681void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data)
1682{ 1682{
1683#ifdef Q_WS_QWS 1683#ifdef Q_WS_QWS
1684 1684
1685 if ( msg == "quit()" ) { 1685 if ( msg == "quit()" ) {
1686 tryQuit(); 1686 tryQuit();
1687 } 1687 }
1688 else if ( msg == "quitIfInvisible()" ) { 1688 else if ( msg == "quitIfInvisible()" ) {
1689 if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() ) 1689 if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() )
1690 quit(); 1690 quit();
1691 } 1691 }
1692 else if ( msg == "close()" ) { 1692 else if ( msg == "close()" ) {
1693 hideOrQuit(); 1693 hideOrQuit();
1694 } 1694 }
1695 else if ( msg == "disablePreload()" ) { 1695 else if ( msg == "disablePreload()" ) {
1696 d->preloaded = FALSE; 1696 d->preloaded = FALSE;
1697 d->keep_running = TRUE; 1697 d->keep_running = TRUE;
1698 /* so that quit will quit */ 1698 /* so that quit will quit */
1699 } 1699 }
1700 else if ( msg == "enablePreload()" ) { 1700 else if ( msg == "enablePreload()" ) {
1701 if (d->qpe_main_widget) 1701 if (d->qpe_main_widget)
1702 d->preloaded = TRUE; 1702 d->preloaded = TRUE;
1703 d->keep_running = TRUE; 1703 d->keep_running = TRUE;
1704 /* so next quit won't quit */ 1704 /* so next quit won't quit */
1705 } 1705 }
1706 else if ( msg == "raise()" ) { 1706 else if ( msg == "raise()" ) {
1707 d->keep_running = TRUE; 1707 d->keep_running = TRUE;
1708 d->notbusysent = FALSE; 1708 d->notbusysent = FALSE;
1709 raiseAppropriateWindow(); 1709 raiseAppropriateWindow();
1710 // Tell the system we're still chugging along... 1710 // Tell the system we're still chugging along...
1711 QCopEnvelope e("QPE/System", "appRaised(QString)"); 1711 QCopEnvelope e("QPE/System", "appRaised(QString)");
1712 e << d->appName; 1712 e << d->appName;
1713 } 1713 }
1714 else if ( msg == "flush()" ) { 1714 else if ( msg == "flush()" ) {
1715 emit flush(); 1715 emit flush();
1716 // we need to tell the desktop 1716 // we need to tell the desktop
1717 QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" ); 1717 QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" );
1718 e << d->appName; 1718 e << d->appName;
1719 } 1719 }
1720 else if ( msg == "reload()" ) { 1720 else if ( msg == "reload()" ) {
1721 emit reload(); 1721 emit reload();
1722 } 1722 }
1723 else if ( msg == "setDocument(QString)" ) { 1723 else if ( msg == "setDocument(QString)" ) {
1724 d->keep_running = TRUE; 1724 d->keep_running = TRUE;
1725 QDataStream stream( data, IO_ReadOnly ); 1725 QDataStream stream( data, IO_ReadOnly );
1726 QString doc; 1726 QString doc;
1727 stream >> doc; 1727 stream >> doc;
1728 QWidget *mw = mainWidget(); 1728 QWidget *mw = mainWidget();
1729 if ( !mw ) 1729 if ( !mw )
1730 mw = d->qpe_main_widget; 1730 mw = d->qpe_main_widget;
1731 if ( mw ) 1731 if ( mw )
1732 Global::setDocument( mw, doc ); 1732 Global::setDocument( mw, doc );
1733 1733
1734 } else if ( msg == "QPEProcessQCop()" ) { 1734 } else if ( msg == "QPEProcessQCop()" ) {
1735 processQCopFile(); 1735 processQCopFile();
1736 d->sendQCopQ(); 1736 d->sendQCopQ();
1737 }else 1737 }else
1738 { 1738 {
1739 bool p = d->keep_running; 1739 bool p = d->keep_running;
1740 d->keep_running = FALSE; 1740 d->keep_running = FALSE;
1741 emit appMessage( msg, data); 1741 emit appMessage( msg, data);
1742 if ( d->keep_running ) { 1742 if ( d->keep_running ) {
1743 d->notbusysent = FALSE; 1743 d->notbusysent = FALSE;
1744 raiseAppropriateWindow(); 1744 raiseAppropriateWindow();
1745 if ( !p ) { 1745 if ( !p ) {
1746 // Tell the system we're still chugging along... 1746 // Tell the system we're still chugging along...
1747#ifndef QT_NO_COP 1747#ifndef QT_NO_COP
1748 QCopEnvelope e("QPE/System", "appRaised(QString)"); 1748 QCopEnvelope e("QPE/System", "appRaised(QString)");
1749 e << d->appName; 1749 e << d->appName;
1750#endif 1750#endif
1751 } 1751 }
1752 } 1752 }
1753 if ( p ) 1753 if ( p )
1754 d->keep_running = p; 1754 d->keep_running = p;
1755 } 1755 }
1756#endif 1756#endif
1757} 1757}
1758 1758
1759 1759
1760/*! 1760/*!
1761 Sets widget \a mw as the mainWidget() and shows it. For small windows, 1761 Sets widget \a mw as the mainWidget() and shows it. For small windows,
1762 consider passing TRUE for \a nomaximize rather than the default FALSE. 1762 consider passing TRUE for \a nomaximize rather than the default FALSE.
1763 1763
1764 \sa showMainDocumentWidget() 1764 \sa showMainDocumentWidget()
1765*/ 1765*/
1766void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize ) 1766void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize )
1767{ 1767{
1768// setMainWidget(mw); this breaks FastLoading because lastWindowClose() would quit 1768// setMainWidget(mw); this breaks FastLoading because lastWindowClose() would quit
1769 d->show(mw, nomaximize ); 1769 d->show(mw, nomaximize );
1770} 1770}
1771 1771
1772/*! 1772/*!
1773 Sets widget \a mw as the mainWidget() and shows it. For small windows, 1773 Sets widget \a mw as the mainWidget() and shows it. For small windows,
1774 consider passing TRUE for \a nomaximize rather than the default FALSE. 1774 consider passing TRUE for \a nomaximize rather than the default FALSE.
1775 1775
1776 This calls designates the application as 1776 This calls designates the application as
1777 a \link docwidget.html document-oriented\endlink application. 1777 a \link docwidget.html document-oriented\endlink application.
1778 1778
1779 The \a mw widget \e must have this slot: setDocument(const QString&). 1779 The \a mw widget \e must have this slot: setDocument(const QString&).
1780 1780
1781 \sa showMainWidget() 1781 \sa showMainWidget()
1782*/ 1782*/
1783void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize ) 1783void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize )
1784{ 1784{
1785 if ( mw && argc() == 2 ) 1785 if ( mw && argc() == 2 )
1786 Global::setDocument( mw, QString::fromUtf8(argv()[1]) ); 1786 Global::setDocument( mw, QString::fromUtf8(argv()[1]) );
1787 1787
1788 1788
1789// setMainWidget(mw); see above 1789// setMainWidget(mw); see above
1790 d->show(mw, nomaximize ); 1790 d->show(mw, nomaximize );
1791} 1791}
1792 1792
1793 1793
1794/*! 1794/*!
1795 If an application is started via a \link qcop.html QCop\endlink 1795 If an application is started via a \link qcop.html QCop\endlink
1796 message, the application will process the \link qcop.html 1796 message, the application will process the \link qcop.html
1797 QCop\endlink message and then quit. If the application calls this 1797 QCop\endlink message and then quit. If the application calls this
1798 function while processing a \link qcop.html QCop\endlink message, 1798 function while processing a \link qcop.html QCop\endlink message,
1799 after processing its outstanding \link qcop.html QCop\endlink 1799 after processing its outstanding \link qcop.html QCop\endlink
1800 messages the application will start 'properly' and show itself. 1800 messages the application will start 'properly' and show itself.
1801 1801
1802 \sa keepRunning() 1802 \sa keepRunning()
1803*/ 1803*/
1804void QPEApplication::setKeepRunning() 1804void QPEApplication::setKeepRunning()
1805{ 1805{
1806 if ( qApp && qApp->inherits( "QPEApplication" ) ) { 1806 if ( qApp && qApp->inherits( "QPEApplication" ) ) {
1807 QPEApplication * qpeApp = ( QPEApplication* ) qApp; 1807 QPEApplication * qpeApp = ( QPEApplication* ) qApp;
1808 qpeApp->d->keep_running = TRUE; 1808 qpeApp->d->keep_running = TRUE;
1809 } 1809 }
1810} 1810}
1811 1811
1812/*! 1812/*!
1813 Returns TRUE if the application will quit after processing the 1813 Returns TRUE if the application will quit after processing the
1814 current list of qcop messages; otherwise returns FALSE. 1814 current list of qcop messages; otherwise returns FALSE.
1815 1815
1816 \sa setKeepRunning() 1816 \sa setKeepRunning()
1817*/ 1817*/
1818bool QPEApplication::keepRunning() const 1818bool QPEApplication::keepRunning() const
1819{ 1819{
1820 return d->keep_running; 1820 return d->keep_running;
1821} 1821}
1822 1822
1823/*! 1823/*!
1824 \internal 1824 \internal
1825*/ 1825*/
1826void QPEApplication::internalSetStyle( const QString &style ) 1826void QPEApplication::internalSetStyle( const QString &style )
1827{ 1827{
1828#if QT_VERSION >= 300 1828#if QT_VERSION >= 300
1829 if ( style == "QPE" ) { 1829 if ( style == "QPE" ) {