summaryrefslogtreecommitdiff
path: root/library/qpeapplication.cpp
Unidiff
Diffstat (limited to 'library/qpeapplication.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpeapplication.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index f4a7f74..db8297f 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -933,776 +933,780 @@ void QPEApplication::initApp( int argc, char **argv )
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 1317#if QT_VERSION > 238
1318#ifdef Q_OS_MACX 1318#ifdef Q_OS_MACX
1319#define WEAK_SYMBOL __attribute__((weak_import)) 1319#define WEAK_SYMBOL __attribute__((weak_import))
1320#else 1320#else
1321#define WEAK_SYMBOL __attribute__((weak)) 1321#define WEAK_SYMBOL __attribute__((weak))
1322#endif 1322#endif
1323 1323
1324extern bool qt_left_hand_scrollbars WEAK_SYMBOL; 1324extern bool qt_left_hand_scrollbars WEAK_SYMBOL;
1325
1326#else
1327bool qt_left_hand_scrollbars = false;
1328#endif
1325/*! 1329/*!
1326 \internal 1330 \internal
1327*/ 1331*/
1328void QPEApplication::applyStyle() 1332void QPEApplication::applyStyle()
1329{ 1333{
1330 Config config( "qpe" ); 1334 Config config( "qpe" );
1331 config.setGroup( "Appearance" ); 1335 config.setGroup( "Appearance" );
1332 1336
1333#if QT_VERSION > 233 1337#if QT_VERSION > 233
1334#if !defined(OPIE_NO_OVERRIDE_QT) 1338#if !defined(OPIE_NO_OVERRIDE_QT)
1335 // don't block ourselves ... 1339 // don't block ourselves ...
1336 Opie::force_appearance = 0; 1340 Opie::force_appearance = 0;
1337 1341
1338 static QString appname = Opie::binaryName ( ); 1342 static QString appname = Opie::binaryName ( );
1339 1343
1340 QStringList ex = config. readListEntry ( "NoStyle", ';' ); 1344 QStringList ex = config. readListEntry ( "NoStyle", ';' );
1341 int nostyle = 0; 1345 int nostyle = 0;
1342 for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) { 1346 for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) {
1343 if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) { 1347 if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) {
1344 nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 ); 1348 nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 );
1345 break; 1349 break;
1346 } 1350 }
1347 } 1351 }
1348#else 1352#else
1349 int nostyle = 0; 1353 int nostyle = 0;
1350#endif 1354#endif
1351 1355
1352 // Widget style 1356 // Widget style
1353 QString style = config.readEntry( "Style", "FlatStyle" ); 1357 QString style = config.readEntry( "Style", "FlatStyle" );
1354 1358
1355 // don't set a custom style 1359 // don't set a custom style
1356 if ( nostyle & Opie::Force_Style ) 1360 if ( nostyle & Opie::Force_Style )
1357 style = "FlatStyle"; 1361 style = "FlatStyle";
1358 1362
1359 internalSetStyle ( style ); 1363 internalSetStyle ( style );
1360 1364
1361 // Colors - from /etc/colors/Liquid.scheme 1365 // Colors - from /etc/colors/Liquid.scheme
1362 QColor bgcolor( config.readEntry( "Background", "#E0E0E0" ) ); 1366 QColor bgcolor( config.readEntry( "Background", "#E0E0E0" ) );
1363 QColor btncolor( config.readEntry( "Button", "#96c8fa" ) ); 1367 QColor btncolor( config.readEntry( "Button", "#96c8fa" ) );
1364 QPalette pal( btncolor, bgcolor ); 1368 QPalette pal( btncolor, bgcolor );
1365 QString color = config.readEntry( "Highlight", "#73adef" ); 1369 QString color = config.readEntry( "Highlight", "#73adef" );
1366 pal.setColor( QColorGroup::Highlight, QColor( color ) ); 1370 pal.setColor( QColorGroup::Highlight, QColor( color ) );
1367 color = config.readEntry( "HighlightedText", "#FFFFFF" ); 1371 color = config.readEntry( "HighlightedText", "#FFFFFF" );
1368 pal.setColor( QColorGroup::HighlightedText, QColor( color ) ); 1372 pal.setColor( QColorGroup::HighlightedText, QColor( color ) );
1369 color = config.readEntry( "Text", "#000000" ); 1373 color = config.readEntry( "Text", "#000000" );
1370 pal.setColor( QColorGroup::Text, QColor( color ) ); 1374 pal.setColor( QColorGroup::Text, QColor( color ) );
1371 color = config.readEntry( "ButtonText", "#000000" ); 1375 color = config.readEntry( "ButtonText", "#000000" );
1372 pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) ); 1376 pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) );
1373 color = config.readEntry( "Base", "#FFFFFF" ); 1377 color = config.readEntry( "Base", "#FFFFFF" );
1374 pal.setColor( QColorGroup::Base, QColor( color ) ); 1378 pal.setColor( QColorGroup::Base, QColor( color ) );
1375 1379
1376 pal.setColor( QPalette::Disabled, QColorGroup::Text, 1380 pal.setColor( QPalette::Disabled, QColorGroup::Text,
1377 pal.color( QPalette::Active, QColorGroup::Background ).dark() ); 1381 pal.color( QPalette::Active, QColorGroup::Background ).dark() );
1378 1382
1379 setPalette( pal, TRUE ); 1383 setPalette( pal, TRUE );
1380 1384
1381 1385
1382 // Set the ScrollBar on the 'right' side but only if the weak symbol is present 1386 // Set the ScrollBar on the 'right' side but only if the weak symbol is present
1383 if (&qt_left_hand_scrollbars ) 1387 if (&qt_left_hand_scrollbars )
1384 qt_left_hand_scrollbars = config.readBoolEntry( "LeftHand", false ); 1388 qt_left_hand_scrollbars = config.readBoolEntry( "LeftHand", false );
1385 1389
1386 // Window Decoration 1390 // Window Decoration
1387 QString dec = config.readEntry( "Decoration", "Flat" ); 1391 QString dec = config.readEntry( "Decoration", "Flat" );
1388 1392
1389 // don't set a custom deco 1393 // don't set a custom deco
1390 if ( nostyle & Opie::Force_Decoration ) 1394 if ( nostyle & Opie::Force_Decoration )
1391 dec = ""; 1395 dec = "";
1392 1396
1393 1397
1394 if ( dec != d->decorationName ) { 1398 if ( dec != d->decorationName ) {
1395 qwsSetDecoration( new QPEDecoration( dec ) ); 1399 qwsSetDecoration( new QPEDecoration( dec ) );
1396 d->decorationName = dec; 1400 d->decorationName = dec;
1397 } 1401 }
1398 1402
1399 // Font 1403 // Font
1400 QString ff = config.readEntry( "FontFamily", font().family() ); 1404 QString ff = config.readEntry( "FontFamily", font().family() );
1401 int fs = config.readNumEntry( "FontSize", font().pointSize() ); 1405 int fs = config.readNumEntry( "FontSize", font().pointSize() );
1402 1406
1403 // don't set a custom font 1407 // don't set a custom font
1404 if ( nostyle & Opie::Force_Font ) { 1408 if ( nostyle & Opie::Force_Font ) {
1405 ff = "Vera"; 1409 ff = "Vera";
1406 fs = 10; 1410 fs = 10;
1407 } 1411 }
1408 1412
1409 setFont ( QFont ( ff, fs ), true ); 1413 setFont ( QFont ( ff, fs ), true );
1410 1414
1411#if !defined(OPIE_NO_OVERRIDE_QT) 1415#if !defined(OPIE_NO_OVERRIDE_QT)
1412 // revert to global blocking policy ... 1416 // revert to global blocking policy ...
1413 Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None; 1417 Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None;
1414 Opie::force_appearance &= ~nostyle; 1418 Opie::force_appearance &= ~nostyle;
1415#endif 1419#endif
1416#endif 1420#endif
1417} 1421}
1418 1422
1419void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data ) 1423void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data )
1420{ 1424{
1421#ifdef Q_WS_QWS 1425#ifdef Q_WS_QWS
1422 QDataStream stream( data, IO_ReadOnly ); 1426 QDataStream stream( data, IO_ReadOnly );
1423 if ( msg == "applyStyle()" ) { 1427 if ( msg == "applyStyle()" ) {
1424 applyStyle(); 1428 applyStyle();
1425 } 1429 }
1426 else if ( msg == "toggleApplicationMenu()" ) { 1430 else if ( msg == "toggleApplicationMenu()" ) {
1427 QWidget *active = activeWindow ( ); 1431 QWidget *active = activeWindow ( );
1428 1432
1429 if ( active ) { 1433 if ( active ) {
1430 QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( ); 1434 QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( );
1431 bool oldactive = man-> isActive ( ); 1435 bool oldactive = man-> isActive ( );
1432 1436
1433 man-> setActive( !man-> isActive() ); 1437 man-> setActive( !man-> isActive() );
1434 1438
1435 if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu 1439 if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu
1436 QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" ); 1440 QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" );
1437 } 1441 }
1438 } 1442 }
1439 } 1443 }
1440 else if ( msg == "setDefaultRotation(int)" ) { 1444 else if ( msg == "setDefaultRotation(int)" ) {
1441 if ( type() == GuiServer ) { 1445 if ( type() == GuiServer ) {
1442 int r; 1446 int r;
1443 stream >> r; 1447 stream >> r;
1444 setDefaultRotation( r ); 1448 setDefaultRotation( r );
1445 } 1449 }
1446 } 1450 }
1447 else if ( msg == "setCurrentMode(int,int,int)" ) { // Added: 2003-06-11 by Tim Ansell <mithro@mithis.net> 1451 else if ( msg == "setCurrentMode(int,int,int)" ) { // Added: 2003-06-11 by Tim Ansell <mithro@mithis.net>
1448 if ( type() == GuiServer ) { 1452 if ( type() == GuiServer ) {
1449 int x, y, depth; 1453 int x, y, depth;
1450 stream >> x; 1454 stream >> x;
1451 stream >> y; 1455 stream >> y;
1452 stream >> depth; 1456 stream >> depth;
1453 setCurrentMode( x, y, depth ); 1457 setCurrentMode( x, y, depth );
1454 } 1458 }
1455 } 1459 }
1456 else if ( msg == "reset()" ) { 1460 else if ( msg == "reset()" ) {
1457 if ( type() != GuiServer ) 1461 if ( type() != GuiServer )
1458 reset(); 1462 reset();
1459 } 1463 }
1460 else if ( msg == "setCurrentRotation(int)" ) { 1464 else if ( msg == "setCurrentRotation(int)" ) {
1461 int r; 1465 int r;
1462 stream >> r; 1466 stream >> r;
1463 setCurrentRotation( r ); 1467 setCurrentRotation( r );
1464 } 1468 }
1465 else if ( msg == "shutdown()" ) { 1469 else if ( msg == "shutdown()" ) {
1466 if ( type() == GuiServer ) 1470 if ( type() == GuiServer )
1467 shutdown(); 1471 shutdown();
1468 } 1472 }
1469 else if ( msg == "quit()" ) { 1473 else if ( msg == "quit()" ) {
1470 if ( type() != GuiServer ) 1474 if ( type() != GuiServer )
1471 tryQuit(); 1475 tryQuit();
1472 } 1476 }
1473 else if ( msg == "forceQuit()" ) { 1477 else if ( msg == "forceQuit()" ) {
1474 if ( type() != GuiServer ) 1478 if ( type() != GuiServer )
1475 quit(); 1479 quit();
1476 } 1480 }
1477 else if ( msg == "restart()" ) { 1481 else if ( msg == "restart()" ) {
1478 if ( type() == GuiServer ) 1482 if ( type() == GuiServer )
1479 restart(); 1483 restart();
1480 } 1484 }
1481 else if ( msg == "language(QString)" ) { 1485 else if ( msg == "language(QString)" ) {
1482 if ( type() == GuiServer ) { 1486 if ( type() == GuiServer ) {
1483 QString l; 1487 QString l;
1484 stream >> l; 1488 stream >> l;
1485 QString cl = getenv( "LANG" ); 1489 QString cl = getenv( "LANG" );
1486 if ( cl != l ) { 1490 if ( cl != l ) {
1487 if ( l.isNull() ) 1491 if ( l.isNull() )
1488 unsetenv( "LANG" ); 1492 unsetenv( "LANG" );
1489 else 1493 else
1490 setenv( "LANG", l.latin1(), 1 ); 1494 setenv( "LANG", l.latin1(), 1 );
1491 restart(); 1495 restart();
1492 } 1496 }
1493 } 1497 }
1494 } 1498 }
1495 else if ( msg == "timeChange(QString)" ) { 1499 else if ( msg == "timeChange(QString)" ) {
1496 QString t; 1500 QString t;
1497 stream >> t; 1501 stream >> t;
1498 if ( t.isNull() ) 1502 if ( t.isNull() )
1499 unsetenv( "TZ" ); 1503 unsetenv( "TZ" );
1500 else 1504 else
1501 setenv( "TZ", t.latin1(), 1 ); 1505 setenv( "TZ", t.latin1(), 1 );
1502 // emit the signal so everyone else knows... 1506 // emit the signal so everyone else knows...
1503 emit timeChanged(); 1507 emit timeChanged();
1504 } 1508 }
1505 else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) { 1509 else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) {
1506 if ( type() == GuiServer ) { 1510 if ( type() == GuiServer ) {
1507 QDateTime when; 1511 QDateTime when;
1508 QCString channel, message; 1512 QCString channel, message;
1509 int data; 1513 int data;
1510 stream >> when >> channel >> message >> data; 1514 stream >> when >> channel >> message >> data;
1511 AlarmServer::addAlarm( when, channel, message, data ); 1515 AlarmServer::addAlarm( when, channel, message, data );
1512 } 1516 }
1513 } 1517 }
1514 else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) { 1518 else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) {
1515 if ( type() == GuiServer ) { 1519 if ( type() == GuiServer ) {
1516 QDateTime when; 1520 QDateTime when;
1517 QCString channel, message; 1521 QCString channel, message;
1518 int data; 1522 int data;
1519 stream >> when >> channel >> message >> data; 1523 stream >> when >> channel >> message >> data;
1520 AlarmServer::deleteAlarm( when, channel, message, data ); 1524 AlarmServer::deleteAlarm( when, channel, message, data );
1521 } 1525 }
1522 } 1526 }
1523 else if ( msg == "clockChange(bool)" ) { 1527 else if ( msg == "clockChange(bool)" ) {
1524 int tmp; 1528 int tmp;
1525 stream >> tmp; 1529 stream >> tmp;
1526 emit clockChanged( tmp ); 1530 emit clockChanged( tmp );
1527 } 1531 }
1528 else if ( msg == "weekChange(bool)" ) { 1532 else if ( msg == "weekChange(bool)" ) {
1529 int tmp; 1533 int tmp;
1530 stream >> tmp; 1534 stream >> tmp;
1531 emit weekChanged( tmp ); 1535 emit weekChanged( tmp );
1532 } 1536 }
1533 else if ( msg == "setDateFormat(DateFormat)" ) { 1537 else if ( msg == "setDateFormat(DateFormat)" ) {
1534 DateFormat tmp; 1538 DateFormat tmp;
1535 stream >> tmp; 1539 stream >> tmp;
1536 emit dateFormatChanged( tmp ); 1540 emit dateFormatChanged( tmp );
1537 } 1541 }
1538 else if ( msg == "setVolume(int,int)" ) { 1542 else if ( msg == "setVolume(int,int)" ) {
1539 int t, v; 1543 int t, v;
1540 stream >> t >> v; 1544 stream >> t >> v;
1541 setVolume( t, v ); 1545 setVolume( t, v );
1542 emit volumeChanged( muted ); 1546 emit volumeChanged( muted );
1543 } 1547 }
1544 else if ( msg == "volumeChange(bool)" ) { 1548 else if ( msg == "volumeChange(bool)" ) {
1545 stream >> muted; 1549 stream >> muted;
1546 setVolume(); 1550 setVolume();
1547 emit volumeChanged( muted ); 1551 emit volumeChanged( muted );
1548 } 1552 }
1549 else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> 1553 else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
1550 int t, v; 1554 int t, v;
1551 stream >> t >> v; 1555 stream >> t >> v;
1552 setMic( t, v ); 1556 setMic( t, v );
1553 emit micChanged( micMuted ); 1557 emit micChanged( micMuted );
1554 } 1558 }
1555 else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> 1559 else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
1556 stream >> micMuted; 1560 stream >> micMuted;
1557 setMic(); 1561 setMic();
1558 emit micChanged( micMuted ); 1562 emit micChanged( micMuted );
1559 } 1563 }
1560 else if ( msg == "setBass(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1564 else if ( msg == "setBass(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1561 int t, v; 1565 int t, v;
1562 stream >> t >> v; 1566 stream >> t >> v;
1563 setBass( t, v ); 1567 setBass( t, v );
1564 } 1568 }
1565 else if ( msg == "bassChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1569 else if ( msg == "bassChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1566 setBass(); 1570 setBass();
1567 } 1571 }
1568 else if ( msg == "setTreble(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1572 else if ( msg == "setTreble(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1569 int t, v; 1573 int t, v;
1570 stream >> t >> v; 1574 stream >> t >> v;
1571 setTreble( t, v ); 1575 setTreble( t, v );
1572 } 1576 }
1573 else if ( msg == "trebleChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1577 else if ( msg == "trebleChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1574 setTreble(); 1578 setTreble();
1575 } else if ( msg == "getMarkedText()" ) { 1579 } else if ( msg == "getMarkedText()" ) {
1576 if ( type() == GuiServer ) { 1580 if ( type() == GuiServer ) {
1577 const ushort unicode = 'C'-'@'; 1581 const ushort unicode = 'C'-'@';
1578 const int scan = Key_C; 1582 const int scan = Key_C;
1579 qwsServer->processKeyEvent( unicode, scan, ControlButton, TRUE, FALSE ); 1583 qwsServer->processKeyEvent( unicode, scan, ControlButton, TRUE, FALSE );
1580 qwsServer->processKeyEvent( unicode, scan, ControlButton, FALSE, FALSE ); 1584 qwsServer->processKeyEvent( unicode, scan, ControlButton, FALSE, FALSE );
1581 } 1585 }
1582 } else if ( msg == "newChannel(QString)") { 1586 } else if ( msg == "newChannel(QString)") {
1583 QString myChannel = "QPE/Application/" + d->appName; 1587 QString myChannel = "QPE/Application/" + d->appName;
1584 QString channel; 1588 QString channel;
1585 stream >> channel; 1589 stream >> channel;
1586 if (channel == myChannel) { 1590 if (channel == myChannel) {
1587 processQCopFile(); 1591 processQCopFile();
1588 d->sendQCopQ(); 1592 d->sendQCopQ();
1589 } 1593 }
1590 } 1594 }
1591 1595
1592 1596
1593#endif 1597#endif
1594} 1598}
1595 1599
1596 1600
1597 1601
1598 1602
1599 1603
1600/*! 1604/*!
1601 \internal 1605 \internal
1602*/ 1606*/
1603bool QPEApplication::raiseAppropriateWindow() 1607bool QPEApplication::raiseAppropriateWindow()
1604{ 1608{
1605 bool r=FALSE; 1609 bool r=FALSE;
1606 1610
1607 // 1. Raise the main widget 1611 // 1. Raise the main widget
1608 QWidget *top = d->qpe_main_widget; 1612 QWidget *top = d->qpe_main_widget;
1609 if ( !top ) top = mainWidget(); 1613 if ( !top ) top = mainWidget();
1610 1614
1611 if ( top && d->keep_running ) { 1615 if ( top && d->keep_running ) {
1612 if ( top->isVisible() ) 1616 if ( top->isVisible() )
1613 r = TRUE; 1617 r = TRUE;
1614 else if (d->preloaded) { 1618 else if (d->preloaded) {
1615 // We are preloaded and not visible.. pretend we just started.. 1619 // We are preloaded and not visible.. pretend we just started..
1616#ifndef QT_NO_COP 1620#ifndef QT_NO_COP
1617 QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); 1621 QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
1618 e << d->appName; 1622 e << d->appName;
1619#endif 1623#endif
1620 } 1624 }
1621 1625
1622 d->show_mx(top,d->nomaximize, d->appName); 1626 d->show_mx(top,d->nomaximize, d->appName);
1623 top->raise(); 1627 top->raise();
1624 } 1628 }
1625 1629
1626 QWidget *topm = activeModalWidget(); 1630 QWidget *topm = activeModalWidget();
1627 1631
1628 // 2. Raise any parentless widgets (except top and topm, as they 1632 // 2. Raise any parentless widgets (except top and topm, as they
1629 // are raised before and after this loop). Order from most 1633 // are raised before and after this loop). Order from most
1630 // recently raised as deepest to least recently as top, so 1634 // recently raised as deepest to least recently as top, so
1631 // that repeated calls cycle through widgets. 1635 // that repeated calls cycle through widgets.
1632 QWidgetList *list = topLevelWidgets(); 1636 QWidgetList *list = topLevelWidgets();
1633 if ( list ) { 1637 if ( list ) {
1634 bool foundlast = FALSE; 1638 bool foundlast = FALSE;
1635 QWidget* topsub = 0; 1639 QWidget* topsub = 0;
1636 if ( d->lastraised ) { 1640 if ( d->lastraised ) {
1637 for (QWidget* w = list->first(); w; w = list->next()) { 1641 for (QWidget* w = list->first(); w; w = list->next()) {
1638 if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) { 1642 if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) {
1639 if ( w == d->lastraised ) 1643 if ( w == d->lastraised )
1640 foundlast = TRUE; 1644 foundlast = TRUE;
1641 if ( foundlast ) { 1645 if ( foundlast ) {
1642 w->raise(); 1646 w->raise();
1643 topsub = w; 1647 topsub = w;
1644 } 1648 }
1645 } 1649 }
1646 } 1650 }
1647 } 1651 }
1648 for (QWidget* w = list->first(); w; w = list->next()) { 1652 for (QWidget* w = list->first(); w; w = list->next()) {
1649 if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) { 1653 if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) {
1650 if ( w == d->lastraised ) 1654 if ( w == d->lastraised )
1651 break; 1655 break;
1652 w->raise(); 1656 w->raise();
1653 topsub = w; 1657 topsub = w;
1654 } 1658 }
1655 } 1659 }
1656 d->lastraised = topsub; 1660 d->lastraised = topsub;
1657 delete list; 1661 delete list;
1658 } 1662 }
1659 1663
1660 // 3. Raise the active modal widget. 1664 // 3. Raise the active modal widget.
1661 if ( topm ) { 1665 if ( topm ) {
1662 topm->show(); 1666 topm->show();
1663 topm->raise(); 1667 topm->raise();
1664 // If we haven't already handled the fastAppShowing message 1668 // If we haven't already handled the fastAppShowing message
1665 if (!top && d->preloaded) { 1669 if (!top && d->preloaded) {
1666#ifndef QT_NO_COP 1670#ifndef QT_NO_COP
1667 QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); 1671 QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
1668 e << d->appName; 1672 e << d->appName;
1669#endif 1673#endif
1670 } 1674 }
1671 r = FALSE; 1675 r = FALSE;
1672 } 1676 }
1673 1677
1674 return r; 1678 return r;
1675} 1679}
1676 1680
1677 1681
1678void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data) 1682void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data)
1679{ 1683{
1680#ifdef Q_WS_QWS 1684#ifdef Q_WS_QWS
1681 1685
1682 if ( msg == "quit()" ) { 1686 if ( msg == "quit()" ) {
1683 tryQuit(); 1687 tryQuit();
1684 } 1688 }
1685 else if ( msg == "quitIfInvisible()" ) { 1689 else if ( msg == "quitIfInvisible()" ) {
1686 if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() ) 1690 if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() )
1687 quit(); 1691 quit();
1688 } 1692 }
1689 else if ( msg == "close()" ) { 1693 else if ( msg == "close()" ) {
1690 hideOrQuit(); 1694 hideOrQuit();
1691 } 1695 }
1692 else if ( msg == "disablePreload()" ) { 1696 else if ( msg == "disablePreload()" ) {
1693 d->preloaded = FALSE; 1697 d->preloaded = FALSE;
1694 d->keep_running = TRUE; 1698 d->keep_running = TRUE;
1695 /* so that quit will quit */ 1699 /* so that quit will quit */
1696 } 1700 }
1697 else if ( msg == "enablePreload()" ) { 1701 else if ( msg == "enablePreload()" ) {
1698 if (d->qpe_main_widget) 1702 if (d->qpe_main_widget)
1699 d->preloaded = TRUE; 1703 d->preloaded = TRUE;
1700 d->keep_running = TRUE; 1704 d->keep_running = TRUE;
1701 /* so next quit won't quit */ 1705 /* so next quit won't quit */
1702 } 1706 }
1703 else if ( msg == "raise()" ) { 1707 else if ( msg == "raise()" ) {
1704 d->keep_running = TRUE; 1708 d->keep_running = TRUE;
1705 d->notbusysent = FALSE; 1709 d->notbusysent = FALSE;
1706 raiseAppropriateWindow(); 1710 raiseAppropriateWindow();
1707 // Tell the system we're still chugging along... 1711 // Tell the system we're still chugging along...
1708 QCopEnvelope e("QPE/System", "appRaised(QString)"); 1712 QCopEnvelope e("QPE/System", "appRaised(QString)");