author | erik <erik> | 2007-01-24 19:54:07 (UTC) |
---|---|---|
committer | erik <erik> | 2007-01-24 19:54:07 (UTC) |
commit | 89e81059e832ff77c2f0ac8b9db12f80eafa03fc (patch) (unidiff) | |
tree | 99a130fc643d2aeefdecab452f644e7b61a5f50e /library | |
parent | 035bbc5bf689839c8d8e7be37f347b0dd900fccf (diff) | |
download | opie-89e81059e832ff77c2f0ac8b9db12f80eafa03fc.zip opie-89e81059e832ff77c2f0ac8b9db12f80eafa03fc.tar.gz opie-89e81059e832ff77c2f0ac8b9db12f80eafa03fc.tar.bz2 |
Each file in this commit has an instance where a pointer is checked at
one point in the code and then not checked in another point in the code.
If it needed to be checked once, it needs to be checked the other time. If not
the application could segfault.
-rw-r--r-- | library/qpeapplication.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp index 34f5e6a..d959c7a 100644 --- a/library/qpeapplication.cpp +++ b/library/qpeapplication.cpp | |||
@@ -1004,1293 +1004,1293 @@ QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w ) | |||
1004 | \enum QPEApplication::InputMethodHint | 1004 | \enum QPEApplication::InputMethodHint |
1005 | 1005 | ||
1006 | \value Normal the application sometimes needs text input (the default). | 1006 | \value Normal the application sometimes needs text input (the default). |
1007 | \value AlwaysOff the application never needs text input. | 1007 | \value AlwaysOff the application never needs text input. |
1008 | \value AlwaysOn the application always needs text input. | 1008 | \value AlwaysOn the application always needs text input. |
1009 | */ | 1009 | */ |
1010 | 1010 | ||
1011 | /*! | 1011 | /*! |
1012 | Hints to the system that widget \a w has use for text input methods | 1012 | Hints to the system that widget \a w has use for text input methods |
1013 | as specified by \a mode. | 1013 | as specified by \a mode. |
1014 | 1014 | ||
1015 | \sa inputMethodHint() InputMethodHint | 1015 | \sa inputMethodHint() InputMethodHint |
1016 | */ | 1016 | */ |
1017 | void QPEApplication::setInputMethodHint( QWidget * w, InputMethodHint mode ) | 1017 | void QPEApplication::setInputMethodHint( QWidget * w, InputMethodHint mode ) |
1018 | { | 1018 | { |
1019 | createInputMethodDict(); | 1019 | createInputMethodDict(); |
1020 | if ( mode == Normal ) { | 1020 | if ( mode == Normal ) { |
1021 | inputMethodDict->remove | 1021 | inputMethodDict->remove |
1022 | ( w ); | 1022 | ( w ); |
1023 | } | 1023 | } |
1024 | else { | 1024 | else { |
1025 | inputMethodDict->insert( w, ( void* ) mode ); | 1025 | inputMethodDict->insert( w, ( void* ) mode ); |
1026 | } | 1026 | } |
1027 | } | 1027 | } |
1028 | 1028 | ||
1029 | class HackDialog : public QDialog | 1029 | class HackDialog : public QDialog |
1030 | { | 1030 | { |
1031 | public: | 1031 | public: |
1032 | void acceptIt() | 1032 | void acceptIt() |
1033 | { | 1033 | { |
1034 | accept(); | 1034 | accept(); |
1035 | } | 1035 | } |
1036 | void rejectIt() | 1036 | void rejectIt() |
1037 | { | 1037 | { |
1038 | reject(); | 1038 | reject(); |
1039 | } | 1039 | } |
1040 | }; | 1040 | }; |
1041 | 1041 | ||
1042 | 1042 | ||
1043 | void QPEApplication::mapToDefaultAction( QWSKeyEvent * ke, int key ) | 1043 | void QPEApplication::mapToDefaultAction( QWSKeyEvent * ke, int key ) |
1044 | { | 1044 | { |
1045 | // specialised actions for certain widgets. May want to | 1045 | // specialised actions for certain widgets. May want to |
1046 | // add more stuff here. | 1046 | // add more stuff here. |
1047 | if ( activePopupWidget() && activePopupWidget() ->inherits( "QListBox" ) | 1047 | if ( activePopupWidget() && activePopupWidget() ->inherits( "QListBox" ) |
1048 | && activePopupWidget() ->parentWidget() | 1048 | && activePopupWidget() ->parentWidget() |
1049 | && activePopupWidget() ->parentWidget() ->inherits( "QComboBox" ) ) | 1049 | && activePopupWidget() ->parentWidget() ->inherits( "QComboBox" ) ) |
1050 | key = Qt::Key_Return; | 1050 | key = Qt::Key_Return; |
1051 | 1051 | ||
1052 | if ( activePopupWidget() && activePopupWidget() ->inherits( "QPopupMenu" ) ) | 1052 | if ( activePopupWidget() && activePopupWidget() ->inherits( "QPopupMenu" ) ) |
1053 | key = Qt::Key_Return; | 1053 | key = Qt::Key_Return; |
1054 | 1054 | ||
1055 | #ifdef QWS | 1055 | #ifdef QWS |
1056 | 1056 | ||
1057 | ke->simpleData.keycode = key; | 1057 | ke->simpleData.keycode = key; |
1058 | #endif | 1058 | #endif |
1059 | } | 1059 | } |
1060 | 1060 | ||
1061 | 1061 | ||
1062 | /*! | 1062 | /*! |
1063 | \internal | 1063 | \internal |
1064 | */ | 1064 | */ |
1065 | 1065 | ||
1066 | #ifdef QWS | 1066 | #ifdef QWS |
1067 | bool QPEApplication::qwsEventFilter( QWSEvent * e ) | 1067 | bool QPEApplication::qwsEventFilter( QWSEvent * e ) |
1068 | { | 1068 | { |
1069 | if ( !d->notbusysent && e->type == QWSEvent::Focus ) { | 1069 | if ( !d->notbusysent && e->type == QWSEvent::Focus ) { |
1070 | if ( qApp->type() != QApplication::GuiServer ) { | 1070 | if ( qApp->type() != QApplication::GuiServer ) { |
1071 | QCopEnvelope e( "QPE/System", "notBusy(QString)" ); | 1071 | QCopEnvelope e( "QPE/System", "notBusy(QString)" ); |
1072 | e << d->appName; | 1072 | e << d->appName; |
1073 | } | 1073 | } |
1074 | d->notbusysent = TRUE; | 1074 | d->notbusysent = TRUE; |
1075 | } | 1075 | } |
1076 | if ( type() == GuiServer ) { | 1076 | if ( type() == GuiServer ) { |
1077 | switch ( e->type ) { | 1077 | switch ( e->type ) { |
1078 | case QWSEvent::Mouse: | 1078 | case QWSEvent::Mouse: |
1079 | if ( e->asMouse() ->simpleData.state && !QWidget::find( e->window() ) ) | 1079 | if ( e->asMouse() ->simpleData.state && !QWidget::find( e->window() ) ) |
1080 | emit clientMoused(); | 1080 | emit clientMoused(); |
1081 | break; | 1081 | break; |
1082 | default: | 1082 | default: |
1083 | break; | 1083 | break; |
1084 | } | 1084 | } |
1085 | } | 1085 | } |
1086 | if ( e->type == QWSEvent::Key ) { | 1086 | if ( e->type == QWSEvent::Key ) { |
1087 | QWSKeyEvent *ke = ( QWSKeyEvent * ) e; | 1087 | QWSKeyEvent *ke = ( QWSKeyEvent * ) e; |
1088 | if ( ke->simpleData.keycode == Qt::Key_F33 ) { | 1088 | if ( ke->simpleData.keycode == Qt::Key_F33 ) { |
1089 | // Use special "OK" key to press "OK" on top level widgets | 1089 | // Use special "OK" key to press "OK" on top level widgets |
1090 | QWidget * active = activeWindow(); | 1090 | QWidget * active = activeWindow(); |
1091 | QWidget *popup = 0; | 1091 | QWidget *popup = 0; |
1092 | if ( active && active->isPopup() ) { | 1092 | if ( active && active->isPopup() ) { |
1093 | popup = active; | 1093 | popup = active; |
1094 | active = active->parentWidget(); | 1094 | active = active->parentWidget(); |
1095 | } | 1095 | } |
1096 | if ( active && ( int ) active->winId() == ke->simpleData.window && | 1096 | if ( active && ( int ) active->winId() == ke->simpleData.window && |
1097 | !active->testWFlags( WStyle_Customize | WType_Popup | WType_Desktop ) ) { | 1097 | !active->testWFlags( WStyle_Customize | WType_Popup | WType_Desktop ) ) { |
1098 | if ( ke->simpleData.is_press ) { | 1098 | if ( ke->simpleData.is_press ) { |
1099 | if ( popup ) | 1099 | if ( popup ) |
1100 | popup->close(); | 1100 | popup->close(); |
1101 | if ( active->inherits( "QDialog" ) ) { | 1101 | if ( active->inherits( "QDialog" ) ) { |
1102 | HackDialog * d = ( HackDialog * ) active; | 1102 | HackDialog * d = ( HackDialog * ) active; |
1103 | d->acceptIt(); | 1103 | d->acceptIt(); |
1104 | return TRUE; | 1104 | return TRUE; |
1105 | } | 1105 | } |
1106 | else if ( ( ( HackWidget * ) active ) ->needsOk() ) { | 1106 | else if ( ( ( HackWidget * ) active ) ->needsOk() ) { |
1107 | QSignal s; | 1107 | QSignal s; |
1108 | s.connect( active, SLOT( accept() ) ); | 1108 | s.connect( active, SLOT( accept() ) ); |
1109 | s.activate(); | 1109 | s.activate(); |
1110 | } | 1110 | } |
1111 | else { | 1111 | else { |
1112 | // do the same as with the select key: Map to the default action of the widget: | 1112 | // do the same as with the select key: Map to the default action of the widget: |
1113 | mapToDefaultAction( ke, Qt::Key_Return ); | 1113 | mapToDefaultAction( ke, Qt::Key_Return ); |
1114 | } | 1114 | } |
1115 | } | 1115 | } |
1116 | } | 1116 | } |
1117 | } | 1117 | } |
1118 | else if ( ke->simpleData.keycode == Qt::Key_F30 ) { | 1118 | else if ( ke->simpleData.keycode == Qt::Key_F30 ) { |
1119 | // Use special "select" key to do whatever default action a widget has | 1119 | // Use special "select" key to do whatever default action a widget has |
1120 | mapToDefaultAction( ke, Qt::Key_Space ); | 1120 | mapToDefaultAction( ke, Qt::Key_Space ); |
1121 | } | 1121 | } |
1122 | else if ( ke->simpleData.keycode == Qt::Key_Escape && | 1122 | else if ( ke->simpleData.keycode == Qt::Key_Escape && |
1123 | ke->simpleData.is_press ) { | 1123 | ke->simpleData.is_press ) { |
1124 | // Escape key closes app if focus on toplevel | 1124 | // Escape key closes app if focus on toplevel |
1125 | QWidget * active = activeWindow(); | 1125 | QWidget * active = activeWindow(); |
1126 | if ( active && active->testWFlags( WType_TopLevel ) && | 1126 | if ( active && active->testWFlags( WType_TopLevel ) && |
1127 | ( int ) active->winId() == ke->simpleData.window && | 1127 | ( int ) active->winId() == ke->simpleData.window && |
1128 | !active->testWFlags( WStyle_Dialog | WStyle_Customize | WType_Popup | WType_Desktop ) ) { | 1128 | !active->testWFlags( WStyle_Dialog | WStyle_Customize | WType_Popup | WType_Desktop ) ) { |
1129 | if ( active->inherits( "QDialog" ) ) { | 1129 | if ( active->inherits( "QDialog" ) ) { |
1130 | HackDialog * d = ( HackDialog * ) active; | 1130 | HackDialog * d = ( HackDialog * ) active; |
1131 | d->rejectIt(); | 1131 | d->rejectIt(); |
1132 | return TRUE; | 1132 | return TRUE; |
1133 | } else /*if ( strcmp( argv() [ 0 ], "embeddedkonsole" ) != 0 )*/ { | 1133 | } else /*if ( strcmp( argv() [ 0 ], "embeddedkonsole" ) != 0 )*/ { |
1134 | active->close(); | 1134 | active->close(); |
1135 | } | 1135 | } |
1136 | } | 1136 | } |
1137 | 1137 | ||
1138 | } | 1138 | } |
1139 | else if ( ke->simpleData.keycode >= Qt::Key_F1 && ke->simpleData.keycode <= Qt::Key_F29 ) { | 1139 | else if ( ke->simpleData.keycode >= Qt::Key_F1 && ke->simpleData.keycode <= Qt::Key_F29 ) { |
1140 | // this should be if ( ODevice::inst ( )-> buttonForKeycode ( ... )) | 1140 | // this should be if ( ODevice::inst ( )-> buttonForKeycode ( ... )) |
1141 | // but we cannot access libopie function within libqpe :( | 1141 | // but we cannot access libopie function within libqpe :( |
1142 | 1142 | ||
1143 | QWidget * active = activeWindow ( ); | 1143 | QWidget * active = activeWindow ( ); |
1144 | if ( active && ((int) active-> winId ( ) == ke-> simpleData.window )) { | 1144 | if ( active && ((int) active-> winId ( ) == ke-> simpleData.window )) { |
1145 | if ( d-> kbgrabbed ) { // we grabbed the keyboard | 1145 | if ( d-> kbgrabbed ) { // we grabbed the keyboard |
1146 | QChar ch ( ke-> simpleData.unicode ); | 1146 | QChar ch ( ke-> simpleData.unicode ); |
1147 | QKeyEvent qke ( ke-> simpleData. is_press ? QEvent::KeyPress : QEvent::KeyRelease, | 1147 | QKeyEvent qke ( ke-> simpleData. is_press ? QEvent::KeyPress : QEvent::KeyRelease, |
1148 | ke-> simpleData.keycode, | 1148 | ke-> simpleData.keycode, |
1149 | ch. latin1 ( ), | 1149 | ch. latin1 ( ), |
1150 | ke-> simpleData.modifiers, | 1150 | ke-> simpleData.modifiers, |
1151 | QString ( ch ), | 1151 | QString ( ch ), |
1152 | ke-> simpleData.is_auto_repeat, 1 ); | 1152 | ke-> simpleData.is_auto_repeat, 1 ); |
1153 | 1153 | ||
1154 | QObject *which = QWidget::keyboardGrabber ( ); | 1154 | QObject *which = QWidget::keyboardGrabber ( ); |
1155 | if ( !which ) | 1155 | if ( !which ) |
1156 | which = QApplication::focusWidget ( ); | 1156 | which = QApplication::focusWidget ( ); |
1157 | if ( !which ) | 1157 | if ( !which ) |
1158 | which = QApplication::activeWindow ( ); | 1158 | which = QApplication::activeWindow ( ); |
1159 | if ( !which ) | 1159 | if ( !which ) |
1160 | which = qApp; | 1160 | which = qApp; |
1161 | 1161 | ||
1162 | QApplication::sendEvent ( which, &qke ); | 1162 | QApplication::sendEvent ( which, &qke ); |
1163 | } | 1163 | } |
1164 | else { // we didn't grab the keyboard, so send the event to the launcher | 1164 | else { // we didn't grab the keyboard, so send the event to the launcher |
1165 | QCopEnvelope e ( "QPE/Launcher", "deviceButton(int,int,int)" ); | 1165 | QCopEnvelope e ( "QPE/Launcher", "deviceButton(int,int,int)" ); |
1166 | e << int( ke-> simpleData.keycode ) << int( ke-> simpleData. is_press ) << int( ke-> simpleData.is_auto_repeat ); | 1166 | e << int( ke-> simpleData.keycode ) << int( ke-> simpleData. is_press ) << int( ke-> simpleData.is_auto_repeat ); |
1167 | } | 1167 | } |
1168 | } | 1168 | } |
1169 | return true; | 1169 | return true; |
1170 | } | 1170 | } |
1171 | } | 1171 | } |
1172 | if ( e->type == QWSEvent::Focus ) { | 1172 | if ( e->type == QWSEvent::Focus ) { |
1173 | QWSFocusEvent * fe = ( QWSFocusEvent* ) e; | 1173 | QWSFocusEvent * fe = ( QWSFocusEvent* ) e; |
1174 | if ( !fe->simpleData.get_focus ) { | 1174 | if ( !fe->simpleData.get_focus ) { |
1175 | QWidget * active = activeWindow(); | 1175 | QWidget * active = activeWindow(); |
1176 | while ( active && active->isPopup() ) { | 1176 | while ( active && active->isPopup() ) { |
1177 | active->close(); | 1177 | active->close(); |
1178 | active = activeWindow(); | 1178 | active = activeWindow(); |
1179 | } | 1179 | } |
1180 | } | 1180 | } |
1181 | else { | 1181 | else { |
1182 | // make sure our modal widget is ALWAYS on top | 1182 | // make sure our modal widget is ALWAYS on top |
1183 | QWidget *topm = activeModalWidget(); | 1183 | QWidget *topm = activeModalWidget(); |
1184 | if ( topm && static_cast<int>( topm->winId() ) != fe->simpleData.window) { | 1184 | if ( topm && static_cast<int>( topm->winId() ) != fe->simpleData.window) { |
1185 | topm->raise(); | 1185 | topm->raise(); |
1186 | } | 1186 | } |
1187 | } | 1187 | } |
1188 | if ( fe->simpleData.get_focus && inputMethodDict ) { | 1188 | if ( fe->simpleData.get_focus && inputMethodDict ) { |
1189 | InputMethodHint m = inputMethodHint( QWidget::find( e->window() ) ); | 1189 | InputMethodHint m = inputMethodHint( QWidget::find( e->window() ) ); |
1190 | if ( m == AlwaysOff ) | 1190 | if ( m == AlwaysOff ) |
1191 | Global::hideInputMethod(); | 1191 | Global::hideInputMethod(); |
1192 | if ( m == AlwaysOn ) | 1192 | if ( m == AlwaysOn ) |
1193 | Global::showInputMethod(); | 1193 | Global::showInputMethod(); |
1194 | } | 1194 | } |
1195 | } | 1195 | } |
1196 | 1196 | ||
1197 | 1197 | ||
1198 | return QApplication::qwsEventFilter( e ); | 1198 | return QApplication::qwsEventFilter( e ); |
1199 | } | 1199 | } |
1200 | #endif | 1200 | #endif |
1201 | 1201 | ||
1202 | /*! | 1202 | /*! |
1203 | Destroys the QPEApplication. | 1203 | Destroys the QPEApplication. |
1204 | */ | 1204 | */ |
1205 | QPEApplication::~QPEApplication() | 1205 | QPEApplication::~QPEApplication() |
1206 | { | 1206 | { |
1207 | ungrabKeyboard(); | 1207 | ungrabKeyboard(); |
1208 | #if defined(Q_WS_QWS) && !defined(QT_NO_COP) | 1208 | #if defined(Q_WS_QWS) && !defined(QT_NO_COP) |
1209 | // Need to delete QCopChannels early, since the display will | 1209 | // Need to delete QCopChannels early, since the display will |
1210 | // be gone by the time we get to ~QObject(). | 1210 | // be gone by the time we get to ~QObject(). |
1211 | delete sysChannel; | 1211 | delete sysChannel; |
1212 | delete pidChannel; | 1212 | delete pidChannel; |
1213 | #endif | 1213 | #endif |
1214 | 1214 | ||
1215 | #ifdef OPIE_WITHROHFEEDBACK | 1215 | #ifdef OPIE_WITHROHFEEDBACK |
1216 | if( d->RoH ) | 1216 | if( d->RoH ) |
1217 | delete d->RoH; | 1217 | delete d->RoH; |
1218 | #endif | 1218 | #endif |
1219 | delete d; | 1219 | delete d; |
1220 | } | 1220 | } |
1221 | 1221 | ||
1222 | /*! | 1222 | /*! |
1223 | Returns <tt>$OPIEDIR/</tt>. | 1223 | Returns <tt>$OPIEDIR/</tt>. |
1224 | */ | 1224 | */ |
1225 | QString QPEApplication::qpeDir() | 1225 | QString QPEApplication::qpeDir() |
1226 | { | 1226 | { |
1227 | QString base, dir; | 1227 | QString base, dir; |
1228 | 1228 | ||
1229 | if (getenv( "OPIEDIR" )) | 1229 | if (getenv( "OPIEDIR" )) |
1230 | base = QString(getenv("OPIEDIR")).stripWhiteSpace(); | 1230 | base = QString(getenv("OPIEDIR")).stripWhiteSpace(); |
1231 | if ( !base.isNull() && (base.length() > 0 )){ | 1231 | if ( !base.isNull() && (base.length() > 0 )){ |
1232 | #ifdef Q_OS_WIN32 | 1232 | #ifdef Q_OS_WIN32 |
1233 | QString temp(base); | 1233 | QString temp(base); |
1234 | if (temp[(int)temp.length()-1] != QDir::separator()) | 1234 | if (temp[(int)temp.length()-1] != QDir::separator()) |
1235 | temp.append(QDir::separator()); | 1235 | temp.append(QDir::separator()); |
1236 | dir = temp; | 1236 | dir = temp; |
1237 | #else | 1237 | #else |
1238 | dir = QString( base ) + "/"; | 1238 | dir = QString( base ) + "/"; |
1239 | #endif | 1239 | #endif |
1240 | }else{ | 1240 | }else{ |
1241 | dir = QString( ".." ) + QDir::separator(); | 1241 | dir = QString( ".." ) + QDir::separator(); |
1242 | } | 1242 | } |
1243 | 1243 | ||
1244 | return dir; | 1244 | return dir; |
1245 | } | 1245 | } |
1246 | 1246 | ||
1247 | /*! | 1247 | /*! |
1248 | Returns the user's current Document directory. There is a trailing "/". | 1248 | Returns the user's current Document directory. There is a trailing "/". |
1249 | .. well, it does now,, and there's no trailing '/' | 1249 | .. well, it does now,, and there's no trailing '/' |
1250 | */ | 1250 | */ |
1251 | QString QPEApplication::documentDir() | 1251 | QString QPEApplication::documentDir() |
1252 | { | 1252 | { |
1253 | const char* base = getenv( "HOME"); | 1253 | const char* base = getenv( "HOME"); |
1254 | if ( base ) | 1254 | if ( base ) |
1255 | return QString( base ) + "/Documents"; | 1255 | return QString( base ) + "/Documents"; |
1256 | 1256 | ||
1257 | return QString( "../Documents" ); | 1257 | return QString( "../Documents" ); |
1258 | } | 1258 | } |
1259 | 1259 | ||
1260 | static int deforient = -1; | 1260 | static int deforient = -1; |
1261 | 1261 | ||
1262 | /*! | 1262 | /*! |
1263 | \internal | 1263 | \internal |
1264 | */ | 1264 | */ |
1265 | int QPEApplication::defaultRotation() | 1265 | int QPEApplication::defaultRotation() |
1266 | { | 1266 | { |
1267 | if ( deforient < 0 ) { | 1267 | if ( deforient < 0 ) { |
1268 | QString d = getenv( "QWS_DISPLAY" ); | 1268 | QString d = getenv( "QWS_DISPLAY" ); |
1269 | if ( d.contains( "Rot90" ) ) { | 1269 | if ( d.contains( "Rot90" ) ) { |
1270 | deforient = 90; | 1270 | deforient = 90; |
1271 | } | 1271 | } |
1272 | else if ( d.contains( "Rot180" ) ) { | 1272 | else if ( d.contains( "Rot180" ) ) { |
1273 | deforient = 180; | 1273 | deforient = 180; |
1274 | } | 1274 | } |
1275 | else if ( d.contains( "Rot270" ) ) { | 1275 | else if ( d.contains( "Rot270" ) ) { |
1276 | deforient = 270; | 1276 | deforient = 270; |
1277 | } | 1277 | } |
1278 | else { | 1278 | else { |
1279 | deforient = 0; | 1279 | deforient = 0; |
1280 | } | 1280 | } |
1281 | } | 1281 | } |
1282 | return deforient; | 1282 | return deforient; |
1283 | } | 1283 | } |
1284 | 1284 | ||
1285 | /*! | 1285 | /*! |
1286 | \internal | 1286 | \internal |
1287 | */ | 1287 | */ |
1288 | void QPEApplication::setDefaultRotation( int r ) | 1288 | void QPEApplication::setDefaultRotation( int r ) |
1289 | { | 1289 | { |
1290 | if ( qApp->type() == GuiServer ) { | 1290 | if ( qApp->type() == GuiServer ) { |
1291 | deforient = r; | 1291 | deforient = r; |
1292 | int j = 0; | 1292 | int j = 0; |
1293 | QCString old = getenv( "QWS_DISPLAY" ) ? getenv( "QWS_DISPLAY" ) : "Transformed"; | 1293 | QCString old = getenv( "QWS_DISPLAY" ) ? getenv( "QWS_DISPLAY" ) : "Transformed"; |
1294 | QString driver( old.left( ( ( j = old.find( ':' ) ) >= 0 ) ? j : old.size() ).data() ); | 1294 | QString driver( old.left( ( ( j = old.find( ':' ) ) >= 0 ) ? j : old.size() ).data() ); |
1295 | setenv( "QWS_DISPLAY", QString( "%1:Rot%2:0" ).arg(driver).arg( r ).latin1(), 1 ); | 1295 | setenv( "QWS_DISPLAY", QString( "%1:Rot%2:0" ).arg(driver).arg( r ).latin1(), 1 ); |
1296 | Config config("qpe"); | 1296 | Config config("qpe"); |
1297 | config.setGroup( "Rotation" ); | 1297 | config.setGroup( "Rotation" ); |
1298 | config.writeEntry( "Rot", r ); | 1298 | config.writeEntry( "Rot", r ); |
1299 | } | 1299 | } |
1300 | else { | 1300 | else { |
1301 | #ifndef QT_NO_COP | 1301 | #ifndef QT_NO_COP |
1302 | { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" ); | 1302 | { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" ); |
1303 | e << r; | 1303 | e << r; |
1304 | } | 1304 | } |
1305 | #endif | 1305 | #endif |
1306 | 1306 | ||
1307 | } | 1307 | } |
1308 | } | 1308 | } |
1309 | 1309 | ||
1310 | #include <qgfx_qws.h> | 1310 | #include <qgfx_qws.h> |
1311 | #include <qwindowsystem_qws.h> | 1311 | #include <qwindowsystem_qws.h> |
1312 | 1312 | ||
1313 | #if QT_VERSION > 236 | 1313 | #if QT_VERSION > 236 |
1314 | extern void qws_clearLoadedFonts(); | 1314 | extern void qws_clearLoadedFonts(); |
1315 | #endif | 1315 | #endif |
1316 | 1316 | ||
1317 | void QPEApplication::setCurrentMode( int x, int y, int depth ) | 1317 | void QPEApplication::setCurrentMode( int x, int y, int depth ) |
1318 | { | 1318 | { |
1319 | // Reset the caches | 1319 | // Reset the caches |
1320 | #if QT_VERSION > 236 | 1320 | #if QT_VERSION > 236 |
1321 | qws_clearLoadedFonts(); | 1321 | qws_clearLoadedFonts(); |
1322 | #endif | 1322 | #endif |
1323 | QPixmapCache::clear(); | 1323 | QPixmapCache::clear(); |
1324 | 1324 | ||
1325 | // Change the screen mode | 1325 | // Change the screen mode |
1326 | qt_screen->setMode(x, y, depth); | 1326 | qt_screen->setMode(x, y, depth); |
1327 | 1327 | ||
1328 | if ( qApp->type() == GuiServer ) { | 1328 | if ( qApp->type() == GuiServer ) { |
1329 | #if QT_VERSION > 236 | 1329 | #if QT_VERSION > 236 |
1330 | // Reconfigure the GuiServer | 1330 | // Reconfigure the GuiServer |
1331 | qwsServer->beginDisplayReconfigure(); | 1331 | qwsServer->beginDisplayReconfigure(); |
1332 | qwsServer->endDisplayReconfigure(); | 1332 | qwsServer->endDisplayReconfigure(); |
1333 | #endif | 1333 | #endif |
1334 | // Get all the running apps to reset | 1334 | // Get all the running apps to reset |
1335 | QCopEnvelope env( "QPE/System", "reset()" ); | 1335 | QCopEnvelope env( "QPE/System", "reset()" ); |
1336 | } | 1336 | } |
1337 | } | 1337 | } |
1338 | 1338 | ||
1339 | void QPEApplication::reset() { | 1339 | void QPEApplication::reset() { |
1340 | // Reconnect to the screen | 1340 | // Reconnect to the screen |
1341 | qt_screen->disconnect(); | 1341 | qt_screen->disconnect(); |
1342 | qt_screen->connect( QString::null ); | 1342 | qt_screen->connect( QString::null ); |
1343 | 1343 | ||
1344 | // Redraw everything | 1344 | // Redraw everything |
1345 | applyStyle(); | 1345 | applyStyle(); |
1346 | } | 1346 | } |
1347 | 1347 | ||
1348 | #if (QT_VERSION < 238) && defined Q_OS_MACX | 1348 | #if (QT_VERSION < 238) && defined Q_OS_MACX |
1349 | bool qt_left_hand_scrollbars = false; | 1349 | bool qt_left_hand_scrollbars = false; |
1350 | #else | 1350 | #else |
1351 | extern bool qt_left_hand_scrollbars QPE_WEAK_SYMBOL; | 1351 | extern bool qt_left_hand_scrollbars QPE_WEAK_SYMBOL; |
1352 | #endif | 1352 | #endif |
1353 | 1353 | ||
1354 | /*! | 1354 | /*! |
1355 | \internal | 1355 | \internal |
1356 | */ | 1356 | */ |
1357 | void QPEApplication::applyStyle() | 1357 | void QPEApplication::applyStyle() |
1358 | { | 1358 | { |
1359 | Config config( "qpe" ); | 1359 | Config config( "qpe" ); |
1360 | config.setGroup( "Appearance" ); | 1360 | config.setGroup( "Appearance" ); |
1361 | 1361 | ||
1362 | #if QT_VERSION > 233 | 1362 | #if QT_VERSION > 233 |
1363 | // Widget style | 1363 | // Widget style |
1364 | QString style = config.readEntry( "Style", "FlatStyle" ); | 1364 | QString style = config.readEntry( "Style", "FlatStyle" ); |
1365 | 1365 | ||
1366 | internalSetStyle ( style ); | 1366 | internalSetStyle ( style ); |
1367 | 1367 | ||
1368 | // Colors - from /etc/colors/Liquid.scheme | 1368 | // Colors - from /etc/colors/Liquid.scheme |
1369 | QColor bgcolor( config.readEntry( "Background", "#E0E0E0" ) ); | 1369 | QColor bgcolor( config.readEntry( "Background", "#E0E0E0" ) ); |
1370 | QColor btncolor( config.readEntry( "Button", "#96c8fa" ) ); | 1370 | QColor btncolor( config.readEntry( "Button", "#96c8fa" ) ); |
1371 | QPalette pal( btncolor, bgcolor ); | 1371 | QPalette pal( btncolor, bgcolor ); |
1372 | QString color = config.readEntry( "Highlight", "#73adef" ); | 1372 | QString color = config.readEntry( "Highlight", "#73adef" ); |
1373 | pal.setColor( QColorGroup::Highlight, QColor( color ) ); | 1373 | pal.setColor( QColorGroup::Highlight, QColor( color ) ); |
1374 | color = config.readEntry( "HighlightedText", "#FFFFFF" ); | 1374 | color = config.readEntry( "HighlightedText", "#FFFFFF" ); |
1375 | pal.setColor( QColorGroup::HighlightedText, QColor( color ) ); | 1375 | pal.setColor( QColorGroup::HighlightedText, QColor( color ) ); |
1376 | color = config.readEntry( "Text", "#000000" ); | 1376 | color = config.readEntry( "Text", "#000000" ); |
1377 | pal.setColor( QColorGroup::Text, QColor( color ) ); | 1377 | pal.setColor( QColorGroup::Text, QColor( color ) ); |
1378 | color = config.readEntry( "ButtonText", "#000000" ); | 1378 | color = config.readEntry( "ButtonText", "#000000" ); |
1379 | pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) ); | 1379 | pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) ); |
1380 | color = config.readEntry( "Base", "#FFFFFF" ); | 1380 | color = config.readEntry( "Base", "#FFFFFF" ); |
1381 | pal.setColor( QColorGroup::Base, QColor( color ) ); | 1381 | pal.setColor( QColorGroup::Base, QColor( color ) ); |
1382 | 1382 | ||
1383 | pal.setColor( QPalette::Disabled, QColorGroup::Text, | 1383 | pal.setColor( QPalette::Disabled, QColorGroup::Text, |
1384 | pal.color( QPalette::Active, QColorGroup::Background ).dark() ); | 1384 | pal.color( QPalette::Active, QColorGroup::Background ).dark() ); |
1385 | 1385 | ||
1386 | setPalette( pal, TRUE ); | 1386 | setPalette( pal, TRUE ); |
1387 | 1387 | ||
1388 | 1388 | ||
1389 | // Set the ScrollBar on the 'right' side but only if the weak symbol is present | 1389 | // Set the ScrollBar on the 'right' side but only if the weak symbol is present |
1390 | if (&qt_left_hand_scrollbars ) | 1390 | if (&qt_left_hand_scrollbars ) |
1391 | qt_left_hand_scrollbars = config.readBoolEntry( "LeftHand", false ); | 1391 | qt_left_hand_scrollbars = config.readBoolEntry( "LeftHand", false ); |
1392 | 1392 | ||
1393 | // Window Decoration | 1393 | // Window Decoration |
1394 | QString dec = config.readEntry( "Decoration", "Flat" ); | 1394 | QString dec = config.readEntry( "Decoration", "Flat" ); |
1395 | 1395 | ||
1396 | if ( dec != d->decorationName ) { | 1396 | if ( dec != d->decorationName ) { |
1397 | qwsSetDecoration( new QPEDecoration( dec ) ); | 1397 | qwsSetDecoration( new QPEDecoration( dec ) ); |
1398 | d->decorationName = dec; | 1398 | d->decorationName = dec; |
1399 | } | 1399 | } |
1400 | 1400 | ||
1401 | // Font | 1401 | // Font |
1402 | QString ff = config.readEntry( "FontFamily", font().family() ); | 1402 | QString ff = config.readEntry( "FontFamily", font().family() ); |
1403 | int fs = config.readNumEntry( "FontSize", font().pointSize() ); | 1403 | int fs = config.readNumEntry( "FontSize", font().pointSize() ); |
1404 | 1404 | ||
1405 | setFont ( QFont ( ff, fs ), true ); | 1405 | setFont ( QFont ( ff, fs ), true ); |
1406 | #endif | 1406 | #endif |
1407 | } | 1407 | } |
1408 | 1408 | ||
1409 | void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data ) | 1409 | void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data ) |
1410 | { | 1410 | { |
1411 | #ifdef Q_WS_QWS | 1411 | #ifdef Q_WS_QWS |
1412 | QDataStream stream( data, IO_ReadOnly ); | 1412 | QDataStream stream( data, IO_ReadOnly ); |
1413 | if ( msg == "applyStyle()" ) { | 1413 | if ( msg == "applyStyle()" ) { |
1414 | applyStyle(); | 1414 | applyStyle(); |
1415 | } | 1415 | } |
1416 | else if ( msg == "toggleApplicationMenu()" ) { | 1416 | else if ( msg == "toggleApplicationMenu()" ) { |
1417 | QWidget *active = activeWindow ( ); | 1417 | QWidget *active = activeWindow ( ); |
1418 | 1418 | ||
1419 | if ( active ) { | 1419 | if ( active ) { |
1420 | QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( ); | 1420 | QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( ); |
1421 | bool oldactive = man-> isActive ( ); | 1421 | bool oldactive = man-> isActive ( ); |
1422 | 1422 | ||
1423 | man-> setActive( !man-> isActive() ); | 1423 | man-> setActive( !man-> isActive() ); |
1424 | 1424 | ||
1425 | if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu | 1425 | if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu |
1426 | QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" ); | 1426 | QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" ); |
1427 | } | 1427 | } |
1428 | } | 1428 | } |
1429 | } | 1429 | } |
1430 | else if ( msg == "setDefaultRotation(int)" ) { | 1430 | else if ( msg == "setDefaultRotation(int)" ) { |
1431 | if ( type() == GuiServer ) { | 1431 | if ( type() == GuiServer ) { |
1432 | int r; | 1432 | int r; |
1433 | stream >> r; | 1433 | stream >> r; |
1434 | setDefaultRotation( r ); | 1434 | setDefaultRotation( r ); |
1435 | } | 1435 | } |
1436 | } | 1436 | } |
1437 | else if ( msg == "setCurrentMode(int,int,int)" ) { // Added: 2003-06-11 by Tim Ansell <mithro@mithis.net> | 1437 | else if ( msg == "setCurrentMode(int,int,int)" ) { // Added: 2003-06-11 by Tim Ansell <mithro@mithis.net> |
1438 | if ( type() == GuiServer ) { | 1438 | if ( type() == GuiServer ) { |
1439 | int x, y, depth; | 1439 | int x, y, depth; |
1440 | stream >> x; | 1440 | stream >> x; |
1441 | stream >> y; | 1441 | stream >> y; |
1442 | stream >> depth; | 1442 | stream >> depth; |
1443 | setCurrentMode( x, y, depth ); | 1443 | setCurrentMode( x, y, depth ); |
1444 | } | 1444 | } |
1445 | } | 1445 | } |
1446 | else if ( msg == "reset()" ) { | 1446 | else if ( msg == "reset()" ) { |
1447 | if ( type() != GuiServer ) | 1447 | if ( type() != GuiServer ) |
1448 | reset(); | 1448 | reset(); |
1449 | } | 1449 | } |
1450 | else if ( msg == "setCurrentRotation(int)" ) { | 1450 | else if ( msg == "setCurrentRotation(int)" ) { |
1451 | int r; | 1451 | int r; |
1452 | stream >> r; | 1452 | stream >> r; |
1453 | setCurrentRotation( r ); | 1453 | setCurrentRotation( r ); |
1454 | } | 1454 | } |
1455 | else if ( msg == "shutdown()" ) { | 1455 | else if ( msg == "shutdown()" ) { |
1456 | if ( type() == GuiServer ) | 1456 | if ( type() == GuiServer ) |
1457 | shutdown(); | 1457 | shutdown(); |
1458 | } | 1458 | } |
1459 | else if ( msg == "quit()" ) { | 1459 | else if ( msg == "quit()" ) { |
1460 | if ( type() != GuiServer ) | 1460 | if ( type() != GuiServer ) |
1461 | tryQuit(); | 1461 | tryQuit(); |
1462 | } | 1462 | } |
1463 | else if ( msg == "forceQuit()" ) { | 1463 | else if ( msg == "forceQuit()" ) { |
1464 | if ( type() != GuiServer ) | 1464 | if ( type() != GuiServer ) |
1465 | quit(); | 1465 | quit(); |
1466 | } | 1466 | } |
1467 | else if ( msg == "restart()" ) { | 1467 | else if ( msg == "restart()" ) { |
1468 | if ( type() == GuiServer ) | 1468 | if ( type() == GuiServer ) |
1469 | restart(); | 1469 | restart(); |
1470 | } | 1470 | } |
1471 | else if ( msg == "language(QString)" ) { | 1471 | else if ( msg == "language(QString)" ) { |
1472 | if ( type() == GuiServer ) { | 1472 | if ( type() == GuiServer ) { |
1473 | QString l; | 1473 | QString l; |
1474 | stream >> l; | 1474 | stream >> l; |
1475 | QString cl = getenv( "LANG" ); | 1475 | QString cl = getenv( "LANG" ); |
1476 | if ( cl != l ) { | 1476 | if ( cl != l ) { |
1477 | if ( l.isNull() ) | 1477 | if ( l.isNull() ) |
1478 | unsetenv( "LANG" ); | 1478 | unsetenv( "LANG" ); |
1479 | else | 1479 | else |
1480 | setenv( "LANG", l.latin1(), 1 ); | 1480 | setenv( "LANG", l.latin1(), 1 ); |
1481 | restart(); | 1481 | restart(); |
1482 | } | 1482 | } |
1483 | } | 1483 | } |
1484 | } | 1484 | } |
1485 | else if ( msg == "timeChange(QString)" ) { | 1485 | else if ( msg == "timeChange(QString)" ) { |
1486 | QString t; | 1486 | QString t; |
1487 | stream >> t; | 1487 | stream >> t; |
1488 | if ( t.isNull() ) | 1488 | if ( t.isNull() ) |
1489 | unsetenv( "TZ" ); | 1489 | unsetenv( "TZ" ); |
1490 | else | 1490 | else |
1491 | setenv( "TZ", t.latin1(), 1 ); | 1491 | setenv( "TZ", t.latin1(), 1 ); |
1492 | // emit the signal so everyone else knows... | 1492 | // emit the signal so everyone else knows... |
1493 | emit timeChanged(); | 1493 | emit timeChanged(); |
1494 | } | 1494 | } |
1495 | else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) { | 1495 | else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) { |
1496 | if ( type() == GuiServer ) { | 1496 | if ( type() == GuiServer ) { |
1497 | QDateTime when; | 1497 | QDateTime when; |
1498 | QCString channel, message; | 1498 | QCString channel, message; |
1499 | int data; | 1499 | int data; |
1500 | stream >> when >> channel >> message >> data; | 1500 | stream >> when >> channel >> message >> data; |
1501 | AlarmServer::addAlarm( when, channel, message, data ); | 1501 | AlarmServer::addAlarm( when, channel, message, data ); |
1502 | } | 1502 | } |
1503 | } | 1503 | } |
1504 | else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) { | 1504 | else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) { |
1505 | if ( type() == GuiServer ) { | 1505 | if ( type() == GuiServer ) { |
1506 | QDateTime when; | 1506 | QDateTime when; |
1507 | QCString channel, message; | 1507 | QCString channel, message; |
1508 | int data; | 1508 | int data; |
1509 | stream >> when >> channel >> message >> data; | 1509 | stream >> when >> channel >> message >> data; |
1510 | AlarmServer::deleteAlarm( when, channel, message, data ); | 1510 | AlarmServer::deleteAlarm( when, channel, message, data ); |
1511 | } | 1511 | } |
1512 | } | 1512 | } |
1513 | else if ( msg == "clockChange(bool)" ) { | 1513 | else if ( msg == "clockChange(bool)" ) { |
1514 | int tmp; | 1514 | int tmp; |
1515 | stream >> tmp; | 1515 | stream >> tmp; |
1516 | emit clockChanged( tmp ); | 1516 | emit clockChanged( tmp ); |
1517 | } | 1517 | } |
1518 | else if ( msg == "weekChange(bool)" ) { | 1518 | else if ( msg == "weekChange(bool)" ) { |
1519 | int tmp; | 1519 | int tmp; |
1520 | stream >> tmp; | 1520 | stream >> tmp; |
1521 | emit weekChanged( tmp ); | 1521 | emit weekChanged( tmp ); |
1522 | } | 1522 | } |
1523 | else if ( msg == "setDateFormat(DateFormat)" ) { | 1523 | else if ( msg == "setDateFormat(DateFormat)" ) { |
1524 | DateFormat tmp; | 1524 | DateFormat tmp; |
1525 | stream >> tmp; | 1525 | stream >> tmp; |
1526 | emit dateFormatChanged( tmp ); | 1526 | emit dateFormatChanged( tmp ); |
1527 | } | 1527 | } |
1528 | else if ( msg == "setVolume(int,int)" ) { | 1528 | else if ( msg == "setVolume(int,int)" ) { |
1529 | int t, v; | 1529 | int t, v; |
1530 | stream >> t >> v; | 1530 | stream >> t >> v; |
1531 | setVolume( t, v ); | 1531 | setVolume( t, v ); |
1532 | emit volumeChanged( muted ); | 1532 | emit volumeChanged( muted ); |
1533 | } | 1533 | } |
1534 | else if ( msg == "volumeChange(bool)" ) { | 1534 | else if ( msg == "volumeChange(bool)" ) { |
1535 | stream >> muted; | 1535 | stream >> muted; |
1536 | setVolume(); | 1536 | setVolume(); |
1537 | emit volumeChanged( muted ); | 1537 | emit volumeChanged( muted ); |
1538 | } | 1538 | } |
1539 | else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> | 1539 | else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> |
1540 | int t, v; | 1540 | int t, v; |
1541 | stream >> t >> v; | 1541 | stream >> t >> v; |
1542 | setMic( t, v ); | 1542 | setMic( t, v ); |
1543 | emit micChanged( micMuted ); | 1543 | emit micChanged( micMuted ); |
1544 | } | 1544 | } |
1545 | else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> | 1545 | else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> |
1546 | stream >> micMuted; | 1546 | stream >> micMuted; |
1547 | setMic(); | 1547 | setMic(); |
1548 | emit micChanged( micMuted ); | 1548 | emit micChanged( micMuted ); |
1549 | } | 1549 | } |
1550 | else if ( msg == "setBass(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> | 1550 | else if ( msg == "setBass(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> |
1551 | int t, v; | 1551 | int t, v; |
1552 | stream >> t >> v; | 1552 | stream >> t >> v; |
1553 | setBass( t, v ); | 1553 | setBass( t, v ); |
1554 | } | 1554 | } |
1555 | else if ( msg == "bassChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> | 1555 | else if ( msg == "bassChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> |
1556 | setBass(); | 1556 | setBass(); |
1557 | } | 1557 | } |
1558 | else if ( msg == "setTreble(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> | 1558 | else if ( msg == "setTreble(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> |
1559 | int t, v; | 1559 | int t, v; |
1560 | stream >> t >> v; | 1560 | stream >> t >> v; |
1561 | setTreble( t, v ); | 1561 | setTreble( t, v ); |
1562 | } | 1562 | } |
1563 | else if ( msg == "trebleChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> | 1563 | else if ( msg == "trebleChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> |
1564 | setTreble(); | 1564 | setTreble(); |
1565 | } else if ( msg == "getMarkedText()" ) { | 1565 | } else if ( msg == "getMarkedText()" ) { |
1566 | if ( type() == GuiServer ) { | 1566 | if ( type() == GuiServer ) { |
1567 | const ushort unicode = 'C'-'@'; | 1567 | const ushort unicode = 'C'-'@'; |
1568 | const int scan = Key_C; | 1568 | const int scan = Key_C; |
1569 | qwsServer->processKeyEvent( unicode, scan, ControlButton, TRUE, FALSE ); | 1569 | qwsServer->processKeyEvent( unicode, scan, ControlButton, TRUE, FALSE ); |
1570 | qwsServer->processKeyEvent( unicode, scan, ControlButton, FALSE, FALSE ); | 1570 | qwsServer->processKeyEvent( unicode, scan, ControlButton, FALSE, FALSE ); |
1571 | } | 1571 | } |
1572 | } else if ( msg == "newChannel(QString)") { | 1572 | } else if ( msg == "newChannel(QString)") { |
1573 | QString myChannel = "QPE/Application/" + d->appName; | 1573 | QString myChannel = "QPE/Application/" + d->appName; |
1574 | QString channel; | 1574 | QString channel; |
1575 | stream >> channel; | 1575 | stream >> channel; |
1576 | if (channel == myChannel) { | 1576 | if (channel == myChannel) { |
1577 | processQCopFile(); | 1577 | processQCopFile(); |
1578 | d->sendQCopQ(); | 1578 | d->sendQCopQ(); |
1579 | } | 1579 | } |
1580 | } | 1580 | } |
1581 | 1581 | ||
1582 | 1582 | ||
1583 | #endif | 1583 | #endif |
1584 | } | 1584 | } |
1585 | 1585 | ||
1586 | 1586 | ||
1587 | 1587 | ||
1588 | 1588 | ||
1589 | 1589 | ||
1590 | /*! | 1590 | /*! |
1591 | \internal | 1591 | \internal |
1592 | */ | 1592 | */ |
1593 | bool QPEApplication::raiseAppropriateWindow() | 1593 | bool QPEApplication::raiseAppropriateWindow() |
1594 | { | 1594 | { |
1595 | bool r=FALSE; | 1595 | bool r=FALSE; |
1596 | 1596 | ||
1597 | // 1. Raise the main widget | 1597 | // 1. Raise the main widget |
1598 | QWidget *top = d->qpe_main_widget; | 1598 | QWidget *top = d->qpe_main_widget; |
1599 | if ( !top ) top = mainWidget(); | 1599 | if ( !top ) top = mainWidget(); |
1600 | 1600 | ||
1601 | if ( top && d->keep_running ) { | 1601 | if ( top && d->keep_running ) { |
1602 | if ( top->isVisible() ) | 1602 | if ( top->isVisible() ) |
1603 | r = TRUE; | 1603 | r = TRUE; |
1604 | else if (d->preloaded) { | 1604 | else if (d->preloaded) { |
1605 | // We are preloaded and not visible.. pretend we just started.. | 1605 | // We are preloaded and not visible.. pretend we just started.. |
1606 | #ifndef QT_NO_COP | 1606 | #ifndef QT_NO_COP |
1607 | QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); | 1607 | QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); |
1608 | e << d->appName; | 1608 | e << d->appName; |
1609 | #endif | 1609 | #endif |
1610 | } | 1610 | } |
1611 | 1611 | ||
1612 | d->show_mx(top,d->nomaximize, d->appName); | 1612 | d->show_mx(top,d->nomaximize, d->appName); |
1613 | top->raise(); | 1613 | top->raise(); |
1614 | } | 1614 | } |
1615 | 1615 | ||
1616 | QWidget *topm = activeModalWidget(); | 1616 | QWidget *topm = activeModalWidget(); |
1617 | 1617 | ||
1618 | // 2. Raise any parentless widgets (except top and topm, as they | 1618 | // 2. Raise any parentless widgets (except top and topm, as they |
1619 | // are raised before and after this loop). Order from most | 1619 | // are raised before and after this loop). Order from most |
1620 | // recently raised as deepest to least recently as top, so | 1620 | // recently raised as deepest to least recently as top, so |
1621 | // that repeated calls cycle through widgets. | 1621 | // that repeated calls cycle through widgets. |
1622 | QWidgetList *list = topLevelWidgets(); | 1622 | QWidgetList *list = topLevelWidgets(); |
1623 | if ( list ) { | 1623 | if ( list ) { |
1624 | bool foundlast = FALSE; | 1624 | bool foundlast = FALSE; |
1625 | QWidget* topsub = 0; | 1625 | QWidget* topsub = 0; |
1626 | if ( d->lastraised ) { | 1626 | if ( d->lastraised ) { |
1627 | for (QWidget* w = list->first(); w; w = list->next()) { | 1627 | for (QWidget* w = list->first(); w; w = list->next()) { |
1628 | if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) { | 1628 | if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) { |
1629 | if ( w == d->lastraised ) | 1629 | if ( w == d->lastraised ) |
1630 | foundlast = TRUE; | 1630 | foundlast = TRUE; |
1631 | if ( foundlast ) { | 1631 | if ( foundlast ) { |
1632 | w->raise(); | 1632 | w->raise(); |
1633 | topsub = w; | 1633 | topsub = w; |
1634 | } | 1634 | } |
1635 | } | 1635 | } |
1636 | } | 1636 | } |
1637 | } | 1637 | } |
1638 | for (QWidget* w = list->first(); w; w = list->next()) { | 1638 | for (QWidget* w = list->first(); w; w = list->next()) { |
1639 | if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) { | 1639 | if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) { |
1640 | if ( w == d->lastraised ) | 1640 | if ( w == d->lastraised ) |
1641 | break; | 1641 | break; |
1642 | w->raise(); | 1642 | w->raise(); |
1643 | topsub = w; | 1643 | topsub = w; |
1644 | } | 1644 | } |
1645 | } | 1645 | } |
1646 | d->lastraised = topsub; | 1646 | d->lastraised = topsub; |
1647 | delete list; | 1647 | delete list; |
1648 | } | 1648 | } |
1649 | 1649 | ||
1650 | // 3. Raise the active modal widget. | 1650 | // 3. Raise the active modal widget. |
1651 | if ( topm ) { | 1651 | if ( topm ) { |
1652 | topm->show(); | 1652 | topm->show(); |
1653 | topm->raise(); | 1653 | topm->raise(); |
1654 | // If we haven't already handled the fastAppShowing message | 1654 | // If we haven't already handled the fastAppShowing message |
1655 | if (!top && d->preloaded) { | 1655 | if (!top && d->preloaded) { |
1656 | #ifndef QT_NO_COP | 1656 | #ifndef QT_NO_COP |
1657 | QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); | 1657 | QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); |
1658 | e << d->appName; | 1658 | e << d->appName; |
1659 | #endif | 1659 | #endif |
1660 | } | 1660 | } |
1661 | r = FALSE; | 1661 | r = FALSE; |
1662 | } | 1662 | } |
1663 | 1663 | ||
1664 | return r; | 1664 | return r; |
1665 | } | 1665 | } |
1666 | 1666 | ||
1667 | 1667 | ||
1668 | void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data) | 1668 | void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data) |
1669 | { | 1669 | { |
1670 | #ifdef Q_WS_QWS | 1670 | #ifdef Q_WS_QWS |
1671 | 1671 | ||
1672 | if ( msg == "quit()" ) { | 1672 | if ( msg == "quit()" ) { |
1673 | tryQuit(); | 1673 | tryQuit(); |
1674 | } | 1674 | } |
1675 | else if ( msg == "quitIfInvisible()" ) { | 1675 | else if ( msg == "quitIfInvisible()" ) { |
1676 | if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() ) | 1676 | if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() ) |
1677 | quit(); | 1677 | quit(); |
1678 | } | 1678 | } |
1679 | else if ( msg == "close()" ) { | 1679 | else if ( msg == "close()" ) { |
1680 | hideOrQuit(); | 1680 | hideOrQuit(); |
1681 | } | 1681 | } |
1682 | else if ( msg == "disablePreload()" ) { | 1682 | else if ( msg == "disablePreload()" ) { |
1683 | d->preloaded = FALSE; | 1683 | d->preloaded = FALSE; |
1684 | d->keep_running = TRUE; | 1684 | d->keep_running = TRUE; |
1685 | /* so that quit will quit */ | 1685 | /* so that quit will quit */ |
1686 | } | 1686 | } |
1687 | else if ( msg == "enablePreload()" ) { | 1687 | else if ( msg == "enablePreload()" ) { |
1688 | if (d->qpe_main_widget) | 1688 | if (d->qpe_main_widget) |
1689 | d->preloaded = TRUE; | 1689 | d->preloaded = TRUE; |
1690 | d->keep_running = TRUE; | 1690 | d->keep_running = TRUE; |
1691 | /* so next quit won't quit */ | 1691 | /* so next quit won't quit */ |
1692 | } | 1692 | } |
1693 | else if ( msg == "raise()" ) { | 1693 | else if ( msg == "raise()" ) { |
1694 | d->keep_running = TRUE; | 1694 | d->keep_running = TRUE; |
1695 | d->notbusysent = FALSE; | 1695 | d->notbusysent = FALSE; |
1696 | raiseAppropriateWindow(); | 1696 | raiseAppropriateWindow(); |
1697 | // Tell the system we're still chugging along... | 1697 | // Tell the system we're still chugging along... |
1698 | QCopEnvelope e("QPE/System", "appRaised(QString)"); | 1698 | QCopEnvelope e("QPE/System", "appRaised(QString)"); |
1699 | e << d->appName; | 1699 | e << d->appName; |
1700 | } | 1700 | } |
1701 | else if ( msg == "flush()" ) { | 1701 | else if ( msg == "flush()" ) { |
1702 | emit flush(); | 1702 | emit flush(); |
1703 | // we need to tell the desktop | 1703 | // we need to tell the desktop |
1704 | QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" ); | 1704 | QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" ); |
1705 | e << d->appName; | 1705 | e << d->appName; |
1706 | } | 1706 | } |
1707 | else if ( msg == "reload()" ) { | 1707 | else if ( msg == "reload()" ) { |
1708 | emit reload(); | 1708 | emit reload(); |
1709 | } | 1709 | } |
1710 | else if ( msg == "setDocument(QString)" ) { | 1710 | else if ( msg == "setDocument(QString)" ) { |
1711 | d->keep_running = TRUE; | 1711 | d->keep_running = TRUE; |
1712 | QDataStream stream( data, IO_ReadOnly ); | 1712 | QDataStream stream( data, IO_ReadOnly ); |
1713 | QString doc; | 1713 | QString doc; |
1714 | stream >> doc; | 1714 | stream >> doc; |
1715 | QWidget *mw = mainWidget(); | 1715 | QWidget *mw = mainWidget(); |
1716 | if ( !mw ) | 1716 | if ( !mw ) |
1717 | mw = d->qpe_main_widget; | 1717 | mw = d->qpe_main_widget; |
1718 | if ( mw ) | 1718 | if ( mw ) |
1719 | Global::setDocument( mw, doc ); | 1719 | Global::setDocument( mw, doc ); |
1720 | 1720 | ||
1721 | } else if ( msg == "QPEProcessQCop()" ) { | 1721 | } else if ( msg == "QPEProcessQCop()" ) { |
1722 | processQCopFile(); | 1722 | processQCopFile(); |
1723 | d->sendQCopQ(); | 1723 | d->sendQCopQ(); |
1724 | }else | 1724 | }else |
1725 | { | 1725 | { |
1726 | bool p = d->keep_running; | 1726 | bool p = d->keep_running; |
1727 | d->keep_running = FALSE; | 1727 | d->keep_running = FALSE; |
1728 | emit appMessage( msg, data); | 1728 | emit appMessage( msg, data); |
1729 | if ( d->keep_running ) { | 1729 | if ( d->keep_running ) { |
1730 | d->notbusysent = FALSE; | 1730 | d->notbusysent = FALSE; |
1731 | raiseAppropriateWindow(); | 1731 | raiseAppropriateWindow(); |
1732 | if ( !p ) { | 1732 | if ( !p ) { |
1733 | // Tell the system we're still chugging along... | 1733 | // Tell the system we're still chugging along... |
1734 | #ifndef QT_NO_COP | 1734 | #ifndef QT_NO_COP |
1735 | QCopEnvelope e("QPE/System", "appRaised(QString)"); | 1735 | QCopEnvelope e("QPE/System", "appRaised(QString)"); |
1736 | e << d->appName; | 1736 | e << d->appName; |
1737 | #endif | 1737 | #endif |
1738 | } | 1738 | } |
1739 | } | 1739 | } |
1740 | if ( p ) | 1740 | if ( p ) |
1741 | d->keep_running = p; | 1741 | d->keep_running = p; |
1742 | } | 1742 | } |
1743 | #endif | 1743 | #endif |
1744 | } | 1744 | } |
1745 | 1745 | ||
1746 | 1746 | ||
1747 | /*! | 1747 | /*! |
1748 | Sets widget \a mw as the mainWidget() and shows it. For small windows, | 1748 | Sets widget \a mw as the mainWidget() and shows it. For small windows, |
1749 | consider passing TRUE for \a nomaximize rather than the default FALSE. | 1749 | consider passing TRUE for \a nomaximize rather than the default FALSE. |
1750 | 1750 | ||
1751 | \sa showMainDocumentWidget() | 1751 | \sa showMainDocumentWidget() |
1752 | */ | 1752 | */ |
1753 | void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize ) | 1753 | void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize ) |
1754 | { | 1754 | { |
1755 | // setMainWidget(mw); this breaks FastLoading because lastWindowClose() would quit | 1755 | // setMainWidget(mw); this breaks FastLoading because lastWindowClose() would quit |
1756 | d->show(mw, nomaximize ); | 1756 | d->show(mw, nomaximize ); |
1757 | } | 1757 | } |
1758 | 1758 | ||
1759 | /*! | 1759 | /*! |
1760 | Sets widget \a mw as the mainWidget() and shows it. For small windows, | 1760 | Sets widget \a mw as the mainWidget() and shows it. For small windows, |
1761 | consider passing TRUE for \a nomaximize rather than the default FALSE. | 1761 | consider passing TRUE for \a nomaximize rather than the default FALSE. |
1762 | 1762 | ||
1763 | This calls designates the application as | 1763 | This calls designates the application as |
1764 | a \link docwidget.html document-oriented\endlink application. | 1764 | a \link docwidget.html document-oriented\endlink application. |
1765 | 1765 | ||
1766 | The \a mw widget \e must have this slot: setDocument(const QString&). | 1766 | The \a mw widget \e must have this slot: setDocument(const QString&). |
1767 | 1767 | ||
1768 | \sa showMainWidget() | 1768 | \sa showMainWidget() |
1769 | */ | 1769 | */ |
1770 | void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize ) | 1770 | void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize ) |
1771 | { | 1771 | { |
1772 | if ( mw && argc() == 2 ) | 1772 | if ( mw ) { |
1773 | Global::setDocument( mw, QString::fromUtf8(argv()[1]) ); | 1773 | if ( argc() == 2 ) |
1774 | Global::setDocument( mw, QString::fromUtf8(argv()[1]) ); | ||
1774 | 1775 | ||
1775 | 1776 | d->show(mw, nomaximize ); | |
1776 | // setMainWidget(mw); see above | 1777 | } |
1777 | d->show(mw, nomaximize ); | ||
1778 | } | 1778 | } |
1779 | 1779 | ||
1780 | 1780 | ||
1781 | /*! | 1781 | /*! |
1782 | If an application is started via a \link qcop.html QCop\endlink | 1782 | If an application is started via a \link qcop.html QCop\endlink |
1783 | message, the application will process the \link qcop.html | 1783 | message, the application will process the \link qcop.html |
1784 | QCop\endlink message and then quit. If the application calls this | 1784 | QCop\endlink message and then quit. If the application calls this |
1785 | function while processing a \link qcop.html QCop\endlink message, | 1785 | function while processing a \link qcop.html QCop\endlink message, |
1786 | after processing its outstanding \link qcop.html QCop\endlink | 1786 | after processing its outstanding \link qcop.html QCop\endlink |
1787 | messages the application will start 'properly' and show itself. | 1787 | messages the application will start 'properly' and show itself. |
1788 | 1788 | ||
1789 | \sa keepRunning() | 1789 | \sa keepRunning() |
1790 | */ | 1790 | */ |
1791 | void QPEApplication::setKeepRunning() | 1791 | void QPEApplication::setKeepRunning() |
1792 | { | 1792 | { |
1793 | if ( qApp && qApp->inherits( "QPEApplication" ) ) { | 1793 | if ( qApp && qApp->inherits( "QPEApplication" ) ) { |
1794 | QPEApplication * qpeApp = ( QPEApplication* ) qApp; | 1794 | QPEApplication * qpeApp = ( QPEApplication* ) qApp; |
1795 | qpeApp->d->keep_running = TRUE; | 1795 | qpeApp->d->keep_running = TRUE; |
1796 | } | 1796 | } |
1797 | } | 1797 | } |
1798 | 1798 | ||
1799 | /*! | 1799 | /*! |
1800 | Returns TRUE if the application will quit after processing the | 1800 | Returns TRUE if the application will quit after processing the |
1801 | current list of qcop messages; otherwise returns FALSE. | 1801 | current list of qcop messages; otherwise returns FALSE. |
1802 | 1802 | ||
1803 | \sa setKeepRunning() | 1803 | \sa setKeepRunning() |
1804 | */ | 1804 | */ |
1805 | bool QPEApplication::keepRunning() const | 1805 | bool QPEApplication::keepRunning() const |
1806 | { | 1806 | { |
1807 | return d->keep_running; | 1807 | return d->keep_running; |
1808 | } | 1808 | } |
1809 | 1809 | ||
1810 | /*! | 1810 | /*! |
1811 | \internal | 1811 | \internal |
1812 | */ | 1812 | */ |
1813 | void QPEApplication::internalSetStyle( const QString &style ) | 1813 | void QPEApplication::internalSetStyle( const QString &style ) |
1814 | { | 1814 | { |
1815 | #if QT_VERSION >= 0x030000 | 1815 | #if QT_VERSION >= 0x030000 |
1816 | if ( style == "QPE" ) { | 1816 | if ( style == "QPE" ) { |
1817 | setStyle( new QPEStyle ); | 1817 | setStyle( new QPEStyle ); |
1818 | } | 1818 | } |
1819 | else { | 1819 | else { |
1820 | QStyle *s = QStyleFactory::create( style ); | 1820 | QStyle *s = QStyleFactory::create( style ); |
1821 | if ( s ) | 1821 | if ( s ) |
1822 | setStyle( s ); | 1822 | setStyle( s ); |
1823 | } | 1823 | } |
1824 | #else | 1824 | #else |
1825 | if ( style == "Windows" ) { | 1825 | if ( style == "Windows" ) { |
1826 | setStyle( new QWindowsStyle ); | 1826 | setStyle( new QWindowsStyle ); |
1827 | } | 1827 | } |
1828 | else if ( style == "QPE" ) { | 1828 | else if ( style == "QPE" ) { |
1829 | setStyle( new QPEStyle ); | 1829 | setStyle( new QPEStyle ); |
1830 | } | 1830 | } |
1831 | else if ( style == "Light" ) { | 1831 | else if ( style == "Light" ) { |
1832 | setStyle( new LightStyle ); | 1832 | setStyle( new LightStyle ); |
1833 | } | 1833 | } |
1834 | #ifndef QT_NO_STYLE_PLATINUM | 1834 | #ifndef QT_NO_STYLE_PLATINUM |
1835 | else if ( style == "Platinum" ) { | 1835 | else if ( style == "Platinum" ) { |
1836 | setStyle( new QPlatinumStyle ); | 1836 | setStyle( new QPlatinumStyle ); |
1837 | } | 1837 | } |
1838 | #endif | 1838 | #endif |
1839 | #ifndef QT_NO_STYLE_MOTIF | 1839 | #ifndef QT_NO_STYLE_MOTIF |
1840 | else if ( style == "Motif" ) { | 1840 | else if ( style == "Motif" ) { |
1841 | setStyle( new QMotifStyle ); | 1841 | setStyle( new QMotifStyle ); |
1842 | } | 1842 | } |
1843 | #endif | 1843 | #endif |
1844 | #ifndef QT_NO_STYLE_MOTIFPLUS | 1844 | #ifndef QT_NO_STYLE_MOTIFPLUS |
1845 | else if ( style == "MotifPlus" ) { | 1845 | else if ( style == "MotifPlus" ) { |
1846 | setStyle( new QMotifPlusStyle ); | 1846 | setStyle( new QMotifPlusStyle ); |
1847 | } | 1847 | } |
1848 | #endif | 1848 | #endif |
1849 | 1849 | ||
1850 | else { | 1850 | else { |
1851 | QStyle *sty = 0; | 1851 | QStyle *sty = 0; |
1852 | QString path = QPEApplication::qpeDir ( ) + "plugins/styles/"; | 1852 | QString path = QPEApplication::qpeDir ( ) + "plugins/styles/"; |
1853 | 1853 | ||
1854 | #ifdef Q_OS_MACX | 1854 | #ifdef Q_OS_MACX |
1855 | if ( style. find ( ".dylib" ) > 0 ) | 1855 | if ( style. find ( ".dylib" ) > 0 ) |
1856 | path += style; | 1856 | path += style; |
1857 | else | 1857 | else |
1858 | path = path + "lib" + style. lower ( ) + ".dylib"; // compatibility | 1858 | path = path + "lib" + style. lower ( ) + ".dylib"; // compatibility |
1859 | #else | 1859 | #else |
1860 | if ( style. find ( ".so" ) > 0 ) | 1860 | if ( style. find ( ".so" ) > 0 ) |
1861 | path += style; | 1861 | path += style; |
1862 | else | 1862 | else |
1863 | path = path + "lib" + style. lower ( ) + ".so"; // compatibility | 1863 | path = path + "lib" + style. lower ( ) + ".so"; // compatibility |
1864 | #endif | 1864 | #endif |
1865 | static QLibrary *lastlib = 0; | 1865 | static QLibrary *lastlib = 0; |
1866 | static StyleInterface *lastiface = 0; | 1866 | static StyleInterface *lastiface = 0; |
1867 | 1867 | ||
1868 | QLibrary *lib = new QLibrary ( path ); | 1868 | QLibrary *lib = new QLibrary ( path ); |
1869 | StyleInterface *iface = 0; | 1869 | StyleInterface *iface = 0; |
1870 | 1870 | ||
1871 | if (( lib-> queryInterface ( IID_Style, ( QUnknownInterface ** ) &iface ) == QS_OK ) && iface ) | 1871 | if (( lib-> queryInterface ( IID_Style, ( QUnknownInterface ** ) &iface ) == QS_OK ) && iface ) |
1872 | sty = iface-> style ( ); | 1872 | sty = iface-> style ( ); |
1873 | 1873 | ||
1874 | if ( sty ) { | 1874 | if ( sty ) { |
1875 | setStyle ( sty ); | 1875 | setStyle ( sty ); |
1876 | 1876 | ||
1877 | if ( lastiface ) | 1877 | if ( lastiface ) |
1878 | lastiface-> release ( ); | 1878 | lastiface-> release ( ); |
1879 | lastiface = iface; | 1879 | lastiface = iface; |
1880 | 1880 | ||
1881 | if ( lastlib ) { | 1881 | if ( lastlib ) { |
1882 | lastlib-> unload ( ); | 1882 | lastlib-> unload ( ); |
1883 | delete lastlib; | 1883 | delete lastlib; |
1884 | } | 1884 | } |
1885 | lastlib = lib; | 1885 | lastlib = lib; |
1886 | } | 1886 | } |
1887 | else { | 1887 | else { |
1888 | if ( iface ) | 1888 | if ( iface ) |
1889 | iface-> release ( ); | 1889 | iface-> release ( ); |
1890 | delete lib; | 1890 | delete lib; |
1891 | 1891 | ||
1892 | setStyle ( new LightStyle ( )); | 1892 | setStyle ( new LightStyle ( )); |
1893 | } | 1893 | } |
1894 | } | 1894 | } |
1895 | #endif | 1895 | #endif |
1896 | } | 1896 | } |
1897 | 1897 | ||
1898 | /*! | 1898 | /*! |
1899 | \internal | 1899 | \internal |
1900 | */ | 1900 | */ |
1901 | void QPEApplication::prepareForTermination( bool willrestart ) | 1901 | void QPEApplication::prepareForTermination( bool willrestart ) |
1902 | { | 1902 | { |
1903 | if ( willrestart ) { | 1903 | if ( willrestart ) { |
1904 | QLabel *lblWait = new QLabel( tr( "Please wait..." ), 0, "wait hack", QWidget::WStyle_Customize | | 1904 | QLabel *lblWait = new QLabel( tr( "Please wait..." ), 0, "wait hack", QWidget::WStyle_Customize | |
1905 | QWidget::WStyle_NoBorder | QWidget::WStyle_Tool ); | 1905 | QWidget::WStyle_NoBorder | QWidget::WStyle_Tool ); |
1906 | lblWait->setAlignment( QWidget::AlignCenter ); | 1906 | lblWait->setAlignment( QWidget::AlignCenter ); |
1907 | lblWait->show(); | 1907 | lblWait->show(); |
1908 | lblWait->showMaximized(); | 1908 | lblWait->showMaximized(); |
1909 | } | 1909 | } |
1910 | { QCopEnvelope envelope( "QPE/System", "forceQuit()" ); | 1910 | { QCopEnvelope envelope( "QPE/System", "forceQuit()" ); |
1911 | } | 1911 | } |
1912 | processEvents(); // ensure the message goes out. | 1912 | processEvents(); // ensure the message goes out. |
1913 | } | 1913 | } |
1914 | 1914 | ||
1915 | /*! | 1915 | /*! |
1916 | \internal | 1916 | \internal |
1917 | */ | 1917 | */ |
1918 | void QPEApplication::shutdown() | 1918 | void QPEApplication::shutdown() |
1919 | { | 1919 | { |
1920 | // Implement in server's QPEApplication subclass | 1920 | // Implement in server's QPEApplication subclass |
1921 | } | 1921 | } |
1922 | 1922 | ||
1923 | /*! | 1923 | /*! |
1924 | \internal | 1924 | \internal |
1925 | */ | 1925 | */ |
1926 | void QPEApplication::restart() | 1926 | void QPEApplication::restart() |
1927 | { | 1927 | { |
1928 | // Implement in server's QPEApplication subclass | 1928 | // Implement in server's QPEApplication subclass |
1929 | } | 1929 | } |
1930 | 1930 | ||
1931 | static QPtrDict<void>* stylusDict = 0; | 1931 | static QPtrDict<void>* stylusDict = 0; |
1932 | static void createDict() | 1932 | static void createDict() |
1933 | { | 1933 | { |
1934 | if ( !stylusDict ) | 1934 | if ( !stylusDict ) |
1935 | stylusDict = new QPtrDict<void>; | 1935 | stylusDict = new QPtrDict<void>; |
1936 | } | 1936 | } |
1937 | 1937 | ||
1938 | /*! | 1938 | /*! |
1939 | Returns the current StylusMode for widget \a w. | 1939 | Returns the current StylusMode for widget \a w. |
1940 | 1940 | ||
1941 | \sa setStylusOperation() StylusMode | 1941 | \sa setStylusOperation() StylusMode |
1942 | */ | 1942 | */ |
1943 | QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget* w ) | 1943 | QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget* w ) |
1944 | { | 1944 | { |
1945 | if ( stylusDict ) | 1945 | if ( stylusDict ) |
1946 | return ( StylusMode ) ( int ) stylusDict->find( w ); | 1946 | return ( StylusMode ) ( int ) stylusDict->find( w ); |
1947 | return LeftOnly; | 1947 | return LeftOnly; |
1948 | } | 1948 | } |
1949 | 1949 | ||
1950 | /*! | 1950 | /*! |
1951 | \enum QPEApplication::StylusMode | 1951 | \enum QPEApplication::StylusMode |
1952 | 1952 | ||
1953 | \value LeftOnly the stylus only generates LeftButton | 1953 | \value LeftOnly the stylus only generates LeftButton |
1954 | events (the default). | 1954 | events (the default). |
1955 | \value RightOnHold the stylus generates RightButton events | 1955 | \value RightOnHold the stylus generates RightButton events |
1956 | if the user uses the press-and-hold gesture. | 1956 | if the user uses the press-and-hold gesture. |
1957 | 1957 | ||
1958 | \sa setStylusOperation() stylusOperation() | 1958 | \sa setStylusOperation() stylusOperation() |
1959 | */ | 1959 | */ |
1960 | 1960 | ||
1961 | /*! | 1961 | /*! |
1962 | Causes widget \a w to receive mouse events according to the stylus | 1962 | Causes widget \a w to receive mouse events according to the stylus |
1963 | \a mode. | 1963 | \a mode. |
1964 | 1964 | ||
1965 | \sa stylusOperation() StylusMode | 1965 | \sa stylusOperation() StylusMode |
1966 | */ | 1966 | */ |
1967 | void QPEApplication::setStylusOperation( QWidget * w, StylusMode mode ) | 1967 | void QPEApplication::setStylusOperation( QWidget * w, StylusMode mode ) |
1968 | { | 1968 | { |
1969 | createDict(); | 1969 | createDict(); |
1970 | if ( mode == LeftOnly ) { | 1970 | if ( mode == LeftOnly ) { |
1971 | stylusDict->remove | 1971 | stylusDict->remove |
1972 | ( w ); | 1972 | ( w ); |
1973 | w->removeEventFilter( qApp ); | 1973 | w->removeEventFilter( qApp ); |
1974 | } | 1974 | } |
1975 | else { | 1975 | else { |
1976 | stylusDict->insert( w, ( void* ) mode ); | 1976 | stylusDict->insert( w, ( void* ) mode ); |
1977 | connect( w, SIGNAL( destroyed() ), qApp, SLOT( removeSenderFromStylusDict() ) ); | 1977 | connect( w, SIGNAL( destroyed() ), qApp, SLOT( removeSenderFromStylusDict() ) ); |
1978 | w->installEventFilter( qApp ); | 1978 | w->installEventFilter( qApp ); |
1979 | } | 1979 | } |
1980 | } | 1980 | } |
1981 | 1981 | ||
1982 | 1982 | ||
1983 | /*! | 1983 | /*! |
1984 | \reimp | 1984 | \reimp |
1985 | */ | 1985 | */ |
1986 | bool QPEApplication::eventFilter( QObject *o, QEvent *e ) | 1986 | bool QPEApplication::eventFilter( QObject *o, QEvent *e ) |
1987 | { | 1987 | { |
1988 | if ( !o->isWidgetType() ) | 1988 | if ( !o->isWidgetType() ) |
1989 | return FALSE; | 1989 | return FALSE; |
1990 | 1990 | ||
1991 | if ( stylusDict && e->type() >= QEvent::MouseButtonPress && e->type() <= QEvent::MouseMove ) { | 1991 | if ( stylusDict && e->type() >= QEvent::MouseButtonPress && e->type() <= QEvent::MouseMove ) { |
1992 | QMouseEvent * me = ( QMouseEvent* ) e; | 1992 | QMouseEvent * me = ( QMouseEvent* ) e; |
1993 | StylusMode mode = (StylusMode)(int)stylusDict->find(o); | 1993 | StylusMode mode = (StylusMode)(int)stylusDict->find(o); |
1994 | switch (mode) { | 1994 | switch (mode) { |
1995 | case RightOnHold: | 1995 | case RightOnHold: |
1996 | switch ( me->type() ) { | 1996 | switch ( me->type() ) { |
1997 | case QEvent::MouseButtonPress: | 1997 | case QEvent::MouseButtonPress: |
1998 | if ( me->button() == LeftButton ) { | 1998 | if ( me->button() == LeftButton ) { |
1999 | static long Pref = 500; // #### pref. | 1999 | static long Pref = 500; // #### pref. |
2000 | d->presswidget = (QWidget*)o; | 2000 | d->presswidget = (QWidget*)o; |
2001 | d->presspos = me->pos(); | 2001 | d->presspos = me->pos(); |
2002 | d->rightpressed = FALSE; | 2002 | d->rightpressed = FALSE; |
2003 | #ifdef OPIE_WITHROHFEEDBACK | 2003 | #ifdef OPIE_WITHROHFEEDBACK |
2004 | if( ! d->RoH ) | 2004 | if( ! d->RoH ) |
2005 | d->RoH = new Opie::Internal::RoHFeedback; | 2005 | d->RoH = new Opie::Internal::RoHFeedback; |
2006 | 2006 | ||
2007 | d->RoH->init( me->globalPos(), d->presswidget ); | 2007 | d->RoH->init( me->globalPos(), d->presswidget ); |
2008 | Pref = d->RoH->delay(); | 2008 | Pref = d->RoH->delay(); |
2009 | 2009 | ||
2010 | #endif | 2010 | #endif |
2011 | if (!d->presstimer ) | 2011 | if (!d->presstimer ) |
2012 | d->presstimer = startTimer( Pref ); // #### pref. | 2012 | d->presstimer = startTimer( Pref ); // #### pref. |
2013 | 2013 | ||
2014 | } | 2014 | } |
2015 | break; | 2015 | break; |
2016 | case QEvent::MouseMove: | 2016 | case QEvent::MouseMove: |
2017 | if (d->presstimer && (me->pos() - d->presspos).manhattanLength() > 8) { | 2017 | if (d->presstimer && (me->pos() - d->presspos).manhattanLength() > 8) { |
2018 | killTimer(d->presstimer); | 2018 | killTimer(d->presstimer); |
2019 | #ifdef OPIE_WITHROHFEEDBACK | 2019 | #ifdef OPIE_WITHROHFEEDBACK |
2020 | d->RoH->stop(); | 2020 | d->RoH->stop(); |
2021 | #endif | 2021 | #endif |
2022 | d->presstimer = 0; | 2022 | d->presstimer = 0; |
2023 | } | 2023 | } |
2024 | break; | 2024 | break; |
2025 | case QEvent::MouseButtonRelease: | 2025 | case QEvent::MouseButtonRelease: |
2026 | if ( me->button() == LeftButton ) { | 2026 | if ( me->button() == LeftButton ) { |
2027 | if ( d->presstimer ) { | 2027 | if ( d->presstimer ) { |
2028 | killTimer(d->presstimer); | 2028 | killTimer(d->presstimer); |
2029 | #ifdef OPIE_WITHROHFEEDBACK | 2029 | #ifdef OPIE_WITHROHFEEDBACK |
2030 | d->RoH->stop( ); | 2030 | d->RoH->stop( ); |
2031 | #endif | 2031 | #endif |
2032 | d->presstimer = 0; | 2032 | d->presstimer = 0; |
2033 | } | 2033 | } |
2034 | if ( d->rightpressed && d->presswidget ) { | 2034 | if ( d->rightpressed && d->presswidget ) { |
2035 | printf( "Send ButtonRelease\n" ); | 2035 | printf( "Send ButtonRelease\n" ); |
2036 | // Right released | 2036 | // Right released |
2037 | postEvent( d->presswidget, | 2037 | postEvent( d->presswidget, |
2038 | new QMouseEvent( QEvent::MouseButtonRelease, me->pos(), | 2038 | new QMouseEvent( QEvent::MouseButtonRelease, me->pos(), |
2039 | RightButton, LeftButton + RightButton ) ); | 2039 | RightButton, LeftButton + RightButton ) ); |
2040 | // Left released, off-widget | 2040 | // Left released, off-widget |
2041 | postEvent( d->presswidget, | 2041 | postEvent( d->presswidget, |
2042 | new QMouseEvent( QEvent::MouseMove, QPoint( -1, -1), | 2042 | new QMouseEvent( QEvent::MouseMove, QPoint( -1, -1), |
2043 | LeftButton, LeftButton ) ); | 2043 | LeftButton, LeftButton ) ); |
2044 | postEvent( d->presswidget, | 2044 | postEvent( d->presswidget, |
2045 | new QMouseEvent( QEvent::MouseButtonRelease, QPoint( -1, -1), | 2045 | new QMouseEvent( QEvent::MouseButtonRelease, QPoint( -1, -1), |
2046 | LeftButton, LeftButton ) ); | 2046 | LeftButton, LeftButton ) ); |
2047 | d->rightpressed = FALSE; | 2047 | d->rightpressed = FALSE; |
2048 | return TRUE; // don't send the real Left release | 2048 | return TRUE; // don't send the real Left release |
2049 | } | 2049 | } |
2050 | } | 2050 | } |
2051 | break; | 2051 | break; |
2052 | default: | 2052 | default: |
2053 | break; | 2053 | break; |
2054 | } | 2054 | } |
2055 | break; | 2055 | break; |
2056 | default: | 2056 | default: |
2057 | ; | 2057 | ; |
2058 | } | 2058 | } |
2059 | } | 2059 | } |
2060 | else if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ) { | 2060 | else if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ) { |
2061 | QKeyEvent *ke = (QKeyEvent *)e; | 2061 | QKeyEvent *ke = (QKeyEvent *)e; |
2062 | if ( ke->key() == Key_Enter ) { | 2062 | if ( ke->key() == Key_Enter ) { |
2063 | if ( o->isA( "QRadioButton" ) || o->isA( "QCheckBox" ) ) { | 2063 | if ( o->isA( "QRadioButton" ) || o->isA( "QCheckBox" ) ) { |
2064 | postEvent( o, new QKeyEvent( e->type(), Key_Space, ' ', | 2064 | postEvent( o, new QKeyEvent( e->type(), Key_Space, ' ', |
2065 | ke->state(), " ", ke->isAutoRepeat(), ke->count() ) ); | 2065 | ke->state(), " ", ke->isAutoRepeat(), ke->count() ) ); |
2066 | return TRUE; | 2066 | return TRUE; |
2067 | } | 2067 | } |
2068 | } | 2068 | } |
2069 | } | 2069 | } |
2070 | return FALSE; | 2070 | return FALSE; |
2071 | } | 2071 | } |
2072 | 2072 | ||
2073 | /*! | 2073 | /*! |
2074 | \reimp | 2074 | \reimp |
2075 | */ | 2075 | */ |
2076 | void QPEApplication::timerEvent( QTimerEvent *e ) | 2076 | void QPEApplication::timerEvent( QTimerEvent *e ) |
2077 | { | 2077 | { |
2078 | if ( e->timerId() == d->presstimer && d->presswidget ) { | 2078 | if ( e->timerId() == d->presstimer && d->presswidget ) { |
2079 | 2079 | ||
2080 | // Right pressed | 2080 | // Right pressed |
2081 | postEvent( d->presswidget, | 2081 | postEvent( d->presswidget, |
2082 | new QMouseEvent( QEvent::MouseButtonPress, d->presspos, | 2082 | new QMouseEvent( QEvent::MouseButtonPress, d->presspos, |
2083 | RightButton, LeftButton ) ); | 2083 | RightButton, LeftButton ) ); |
2084 | killTimer( d->presstimer ); | 2084 | killTimer( d->presstimer ); |
2085 | d->presstimer = 0; | 2085 | d->presstimer = 0; |
2086 | d->rightpressed = TRUE; | 2086 | d->rightpressed = TRUE; |
2087 | #ifdef OPIE_WITHROHFEEDBACK | 2087 | #ifdef OPIE_WITHROHFEEDBACK |
2088 | d->RoH->stop(); | 2088 | d->RoH->stop(); |
2089 | #endif | 2089 | #endif |
2090 | } | 2090 | } |
2091 | } | 2091 | } |
2092 | 2092 | ||
2093 | void QPEApplication::removeSenderFromStylusDict() | 2093 | void QPEApplication::removeSenderFromStylusDict() |
2094 | { | 2094 | { |
2095 | stylusDict->remove | 2095 | stylusDict->remove |
2096 | ( ( void* ) sender() ); | 2096 | ( ( void* ) sender() ); |
2097 | if ( d->presswidget == sender() ) | 2097 | if ( d->presswidget == sender() ) |
2098 | d->presswidget = 0; | 2098 | d->presswidget = 0; |
2099 | } | 2099 | } |
2100 | 2100 | ||
2101 | /*! | 2101 | /*! |
2102 | \internal | 2102 | \internal |
2103 | */ | 2103 | */ |
2104 | bool QPEApplication::keyboardGrabbed() const | 2104 | bool QPEApplication::keyboardGrabbed() const |
2105 | { | 2105 | { |
2106 | return d->kbgrabbed; | 2106 | return d->kbgrabbed; |
2107 | } | 2107 | } |
2108 | 2108 | ||
2109 | 2109 | ||
2110 | /*! | 2110 | /*! |
2111 | Reverses the effect of grabKeyboard(). This is called automatically | 2111 | Reverses the effect of grabKeyboard(). This is called automatically |
2112 | on program exit. | 2112 | on program exit. |
2113 | */ | 2113 | */ |
2114 | void QPEApplication::ungrabKeyboard() | 2114 | void QPEApplication::ungrabKeyboard() |
2115 | { | 2115 | { |
2116 | ((QPEApplication *) qApp )-> d-> kbgrabbed = false; | 2116 | ((QPEApplication *) qApp )-> d-> kbgrabbed = false; |
2117 | } | 2117 | } |
2118 | 2118 | ||
2119 | /*! | 2119 | /*! |
2120 | Grabs the physical keyboard keys, e.g. the application's launching | 2120 | Grabs the physical keyboard keys, e.g. the application's launching |
2121 | keys. Instead of launching applications when these keys are pressed | 2121 | keys. Instead of launching applications when these keys are pressed |
2122 | the signals emitted are sent to this application instead. Some games | 2122 | the signals emitted are sent to this application instead. Some games |
2123 | programs take over the launch keys in this way to make interaction | 2123 | programs take over the launch keys in this way to make interaction |
2124 | easier. | 2124 | easier. |
2125 | 2125 | ||
2126 | \sa ungrabKeyboard() | 2126 | \sa ungrabKeyboard() |
2127 | */ | 2127 | */ |
2128 | void QPEApplication::grabKeyboard() | 2128 | void QPEApplication::grabKeyboard() |
2129 | { | 2129 | { |
2130 | ((QPEApplication *) qApp )-> d-> kbgrabbed = true; | 2130 | ((QPEApplication *) qApp )-> d-> kbgrabbed = true; |
2131 | } | 2131 | } |
2132 | 2132 | ||
2133 | /*! | 2133 | /*! |
2134 | \reimp | 2134 | \reimp |
2135 | */ | 2135 | */ |
2136 | int QPEApplication::exec() | 2136 | int QPEApplication::exec() |
2137 | { | 2137 | { |
2138 | d->qcopQok = true; | 2138 | d->qcopQok = true; |
2139 | #ifndef QT_NO_COP | 2139 | #ifndef QT_NO_COP |
2140 | d->sendQCopQ(); | 2140 | d->sendQCopQ(); |
2141 | if ( !d->keep_running ) | 2141 | if ( !d->keep_running ) |
2142 | processEvents(); // we may have received QCop messages in the meantime. | 2142 | processEvents(); // we may have received QCop messages in the meantime. |
2143 | #endif | 2143 | #endif |
2144 | 2144 | ||
2145 | if ( d->keep_running ) | 2145 | if ( d->keep_running ) |
2146 | //|| d->qpe_main_widget && d->qpe_main_widget->isVisible() ) | 2146 | //|| d->qpe_main_widget && d->qpe_main_widget->isVisible() ) |
2147 | return QApplication::exec(); | 2147 | return QApplication::exec(); |
2148 | 2148 | ||
2149 | #ifndef QT_NO_COP | 2149 | #ifndef QT_NO_COP |
2150 | 2150 | ||
2151 | { | 2151 | { |
2152 | QCopEnvelope e( "QPE/System", "closing(QString)" ); | 2152 | QCopEnvelope e( "QPE/System", "closing(QString)" ); |
2153 | e << d->appName; | 2153 | e << d->appName; |
2154 | } | 2154 | } |
2155 | #endif | 2155 | #endif |
2156 | processEvents(); | 2156 | processEvents(); |
2157 | return 0; | 2157 | return 0; |
2158 | } | 2158 | } |
2159 | 2159 | ||
2160 | /*! | 2160 | /*! |
2161 | \internal | 2161 | \internal |
2162 | External request for application to quit. Quits if possible without | 2162 | External request for application to quit. Quits if possible without |
2163 | loosing state. | 2163 | loosing state. |
2164 | */ | 2164 | */ |
2165 | void QPEApplication::tryQuit() | 2165 | void QPEApplication::tryQuit() |
2166 | { | 2166 | { |
2167 | if ( activeModalWidget() ) | 2167 | if ( activeModalWidget() ) |
2168 | return ; // Inside modal loop or konsole. Too hard to save state. | 2168 | return ; // Inside modal loop or konsole. Too hard to save state. |
2169 | #ifndef QT_NO_COP | 2169 | #ifndef QT_NO_COP |
2170 | 2170 | ||
2171 | { | 2171 | { |
2172 | QCopEnvelope e( "QPE/System", "closing(QString)" ); | 2172 | QCopEnvelope e( "QPE/System", "closing(QString)" ); |
2173 | e << d->appName; | 2173 | e << d->appName; |
2174 | } | 2174 | } |
2175 | #endif | 2175 | #endif |
2176 | if ( d->keep_running ) | 2176 | if ( d->keep_running ) |
2177 | d->store_widget_rect(d->qpe_main_widget, d->appName); | 2177 | d->store_widget_rect(d->qpe_main_widget, d->appName); |
2178 | processEvents(); | 2178 | processEvents(); |
2179 | 2179 | ||
2180 | quit(); | 2180 | quit(); |
2181 | } | 2181 | } |
2182 | 2182 | ||
2183 | 2183 | ||
2184 | /*! | 2184 | /*! |
2185 | \internal | 2185 | \internal |
2186 | User initiated quit. Makes the window 'Go Away'. If preloaded this means | 2186 | User initiated quit. Makes the window 'Go Away'. If preloaded this means |
2187 | hiding the window. If not it means quitting the application. | 2187 | hiding the window. If not it means quitting the application. |
2188 | As this is user initiated we don't need to check state. | 2188 | As this is user initiated we don't need to check state. |
2189 | */ | 2189 | */ |
2190 | void QPEApplication::hideOrQuit() | 2190 | void QPEApplication::hideOrQuit() |
2191 | { | 2191 | { |
2192 | if ( d->keep_running ) | 2192 | if ( d->keep_running ) |
2193 | d->store_widget_rect(d->qpe_main_widget, d->appName); | 2193 | d->store_widget_rect(d->qpe_main_widget, d->appName); |
2194 | processEvents(); | 2194 | processEvents(); |
2195 | 2195 | ||
2196 | // If we are a preloaded application we don't actually quit, so emit | 2196 | // If we are a preloaded application we don't actually quit, so emit |
2197 | // a System message indicating we're quasi-closing. | 2197 | // a System message indicating we're quasi-closing. |
2198 | if ( d->preloaded && d->qpe_main_widget ) | 2198 | if ( d->preloaded && d->qpe_main_widget ) |
2199 | #ifndef QT_NO_COP | 2199 | #ifndef QT_NO_COP |
2200 | 2200 | ||
2201 | { | 2201 | { |
2202 | QCopEnvelope e("QPE/System", "fastAppHiding(QString)" ); | 2202 | QCopEnvelope e("QPE/System", "fastAppHiding(QString)" ); |
2203 | e << d->appName; | 2203 | e << d->appName; |
2204 | d->qpe_main_widget->hide(); | 2204 | d->qpe_main_widget->hide(); |
2205 | } | 2205 | } |
2206 | #endif | 2206 | #endif |
2207 | else | 2207 | else |
2208 | quit(); | 2208 | quit(); |
2209 | } | 2209 | } |
2210 | 2210 | ||
2211 | bool QPEApplication::isSaveWindowsPos() | 2211 | bool QPEApplication::isSaveWindowsPos() |
2212 | { | 2212 | { |
2213 | return saveWindowsPos; | 2213 | return saveWindowsPos; |
2214 | } | 2214 | } |
2215 | 2215 | ||
2216 | #if (__GNUC__ > 2 ) && !defined(_OS_MACX_) | 2216 | #if (__GNUC__ > 2 ) && !defined(_OS_MACX_) |
2217 | extern "C" void __cxa_pure_virtual(); | 2217 | extern "C" void __cxa_pure_virtual(); |
2218 | 2218 | ||
2219 | void __cxa_pure_virtual() | 2219 | void __cxa_pure_virtual() |
2220 | { | 2220 | { |
2221 | fprintf( stderr, "Pure virtual called\n"); | 2221 | fprintf( stderr, "Pure virtual called\n"); |
2222 | abort(); | 2222 | abort(); |
2223 | 2223 | ||
2224 | } | 2224 | } |
2225 | 2225 | ||
2226 | #endif | 2226 | #endif |
2227 | 2227 | ||
2228 | 2228 | ||
2229 | #if defined(OPIE_NEW_MALLOC) | 2229 | #if defined(OPIE_NEW_MALLOC) |
2230 | 2230 | ||
2231 | // The libraries with the skiff package (and possibly others) have | 2231 | // The libraries with the skiff package (and possibly others) have |
2232 | // completely useless implementations of builtin new and delete that | 2232 | // completely useless implementations of builtin new and delete that |
2233 | // use about 50% of your CPU. Here we revert to the simple libc | 2233 | // use about 50% of your CPU. Here we revert to the simple libc |
2234 | // functions. | 2234 | // functions. |
2235 | 2235 | ||
2236 | void* operator new[]( size_t size ) | 2236 | void* operator new[]( size_t size ) |
2237 | { | 2237 | { |
2238 | return malloc( size ); | 2238 | return malloc( size ); |
2239 | } | 2239 | } |
2240 | 2240 | ||
2241 | void* operator new( size_t size ) | 2241 | void* operator new( size_t size ) |
2242 | { | 2242 | { |
2243 | return malloc( size ); | 2243 | return malloc( size ); |
2244 | } | 2244 | } |
2245 | 2245 | ||
2246 | void operator delete[]( void* p ) | 2246 | void operator delete[]( void* p ) |
2247 | { | 2247 | { |
2248 | if ( p ) | 2248 | if ( p ) |
2249 | free( p ); | 2249 | free( p ); |
2250 | } | 2250 | } |
2251 | 2251 | ||
2252 | void operator delete[]( void* p, size_t /*size*/ ) | 2252 | void operator delete[]( void* p, size_t /*size*/ ) |
2253 | { | 2253 | { |
2254 | if ( p ) | 2254 | if ( p ) |
2255 | free( p ); | 2255 | free( p ); |
2256 | } | 2256 | } |
2257 | 2257 | ||
2258 | 2258 | ||
2259 | void operator delete( void* p ) | 2259 | void operator delete( void* p ) |
2260 | { | 2260 | { |
2261 | if ( p ) | 2261 | if ( p ) |
2262 | free( p ); | 2262 | free( p ); |
2263 | } | 2263 | } |
2264 | 2264 | ||
2265 | void operator delete( void* p, size_t /*size*/ ) | 2265 | void operator delete( void* p, size_t /*size*/ ) |
2266 | { | 2266 | { |
2267 | if ( p ) | 2267 | if ( p ) |
2268 | free( p ); | 2268 | free( p ); |
2269 | } | 2269 | } |
2270 | 2270 | ||
2271 | #endif | 2271 | #endif |
2272 | 2272 | ||
2273 | #if ( QT_VERSION <= 230 ) && !defined(SINGLE_APP) | 2273 | #if ( QT_VERSION <= 230 ) && !defined(SINGLE_APP) |
2274 | #include <qwidgetlist.h> | 2274 | #include <qwidgetlist.h> |
2275 | #ifdef QWS | 2275 | #ifdef QWS |
2276 | #include <qgfx_qws.h> | 2276 | #include <qgfx_qws.h> |
2277 | extern QRect qt_maxWindowRect; | 2277 | extern QRect qt_maxWindowRect; |
2278 | void qt_setMaxWindowRect(const QRect& r ) | 2278 | void qt_setMaxWindowRect(const QRect& r ) |
2279 | { | 2279 | { |
2280 | qt_maxWindowRect = qt_screen->mapFromDevice( r, | 2280 | qt_maxWindowRect = qt_screen->mapFromDevice( r, |
2281 | qt_screen->mapToDevice( QSize( qt_screen->width(), qt_screen->height() ) ) ); | 2281 | qt_screen->mapToDevice( QSize( qt_screen->width(), qt_screen->height() ) ) ); |
2282 | // Re-resize any maximized windows | 2282 | // Re-resize any maximized windows |
2283 | QWidgetList* l = QApplication::topLevelWidgets(); | 2283 | QWidgetList* l = QApplication::topLevelWidgets(); |
2284 | if ( l ) { | 2284 | if ( l ) { |
2285 | QWidget * w = l->first(); | 2285 | QWidget * w = l->first(); |
2286 | while ( w ) { | 2286 | while ( w ) { |
2287 | if ( w->isVisible() && w->isMaximized() ) { | 2287 | if ( w->isVisible() && w->isMaximized() ) { |
2288 | w->showMaximized(); | 2288 | w->showMaximized(); |
2289 | } | 2289 | } |
2290 | w = l->next(); | 2290 | w = l->next(); |
2291 | } | 2291 | } |
2292 | delete l; | 2292 | delete l; |
2293 | } | 2293 | } |
2294 | } | 2294 | } |
2295 | #endif | 2295 | #endif |
2296 | #endif | 2296 | #endif |