author | zecke <zecke> | 2003-08-29 18:04:43 (UTC) |
---|---|---|
committer | zecke <zecke> | 2003-08-29 18:04:43 (UTC) |
commit | 18cae99f1deb15213074a8fb96f79eae4b0c5a43 (patch) (unidiff) | |
tree | 1dc5c46deef1558b8cca0fd716c3a154c6eb6ac8 /library/qpeapplication.cpp | |
parent | 885c645ee48ae53467e244521c011c73bc106afb (diff) | |
download | opie-18cae99f1deb15213074a8fb96f79eae4b0c5a43.zip opie-18cae99f1deb15213074a8fb96f79eae4b0c5a43.tar.gz opie-18cae99f1deb15213074a8fb96f79eae4b0c5a43.tar.bz2 |
Patch provided by mithro
I've included 2 patches need to make opie support on the fly screen
resolution changing. This is done with the following,
qcop "QPE/System" "setCurrentMode(int,int,int)" 480 640 16
This is good for running applications in compatibility mode on the C700.
As you can see there isn't much to these patches.
-rw-r--r-- | library/qpeapplication.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp index 149e6bb..71ec5b3 100644 --- a/library/qpeapplication.cpp +++ b/library/qpeapplication.cpp | |||
@@ -1038,64 +1038,97 @@ int QPEApplication::defaultRotation() | |||
1038 | else if ( d.contains( "Rot270" ) ) { | 1038 | else if ( d.contains( "Rot270" ) ) { |
1039 | deforient = 270; | 1039 | deforient = 270; |
1040 | } | 1040 | } |
1041 | else { | 1041 | else { |
1042 | deforient = 0; | 1042 | deforient = 0; |
1043 | } | 1043 | } |
1044 | } | 1044 | } |
1045 | return deforient; | 1045 | return deforient; |
1046 | } | 1046 | } |
1047 | 1047 | ||
1048 | /*! | 1048 | /*! |
1049 | \internal | 1049 | \internal |
1050 | */ | 1050 | */ |
1051 | void QPEApplication::setDefaultRotation( int r ) | 1051 | void QPEApplication::setDefaultRotation( int r ) |
1052 | { | 1052 | { |
1053 | if ( qApp->type() == GuiServer ) { | 1053 | if ( qApp->type() == GuiServer ) { |
1054 | deforient = r; | 1054 | deforient = r; |
1055 | setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 ); | 1055 | setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 ); |
1056 | Config config("qpe"); | 1056 | Config config("qpe"); |
1057 | config.setGroup( "Rotation" ); | 1057 | config.setGroup( "Rotation" ); |
1058 | config.writeEntry( "Rot", r ); | 1058 | config.writeEntry( "Rot", r ); |
1059 | } | 1059 | } |
1060 | else { | 1060 | else { |
1061 | #ifndef QT_NO_COP | 1061 | #ifndef QT_NO_COP |
1062 | { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" ); | 1062 | { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" ); |
1063 | e << r; | 1063 | e << r; |
1064 | } | 1064 | } |
1065 | #endif | 1065 | #endif |
1066 | 1066 | ||
1067 | } | 1067 | } |
1068 | } | 1068 | } |
1069 | 1069 | ||
1070 | #include <qgfx_qws.h> | ||
1071 | #include <qwindowsystem_qws.h> | ||
1072 | #include <qpixmapcache.h> | ||
1073 | |||
1074 | extern void qws_clearLoadedFonts(); | ||
1075 | |||
1076 | inline void QPEApplication::setCurrentMode( int x, int y, int depth ) | ||
1077 | { | ||
1078 | // Reset the caches | ||
1079 | qws_clearLoadedFonts(); | ||
1080 | QPixmapCache::clear(); | ||
1081 | |||
1082 | // Change the screen mode | ||
1083 | qt_screen->setMode(x, y, depth); | ||
1084 | |||
1085 | if ( qApp->type() == GuiServer ) { | ||
1086 | // Reconfigure the GuiServer | ||
1087 | qwsServer->beginDisplayReconfigure(); | ||
1088 | qwsServer->endDisplayReconfigure(); | ||
1089 | |||
1090 | // Get all the running apps to reset | ||
1091 | QCopEnvelope env( "QPE/System", "reset()" ); | ||
1092 | } | ||
1093 | } | ||
1094 | |||
1095 | inline void QPEApplication::reset() { | ||
1096 | // Reconnect to the screen | ||
1097 | qt_screen->disconnect(); | ||
1098 | qt_screen->connect( QString::null ); | ||
1099 | |||
1100 | // Redraw everything | ||
1101 | applyStyle(); | ||
1102 | } | ||
1070 | 1103 | ||
1071 | /*! | 1104 | /*! |
1072 | \internal | 1105 | \internal |
1073 | */ | 1106 | */ |
1074 | void QPEApplication::applyStyle() | 1107 | void QPEApplication::applyStyle() |
1075 | { | 1108 | { |
1076 | Config config( "qpe" ); | 1109 | Config config( "qpe" ); |
1077 | config.setGroup( "Appearance" ); | 1110 | config.setGroup( "Appearance" ); |
1078 | 1111 | ||
1079 | #if QT_VERSION > 233 | 1112 | #if QT_VERSION > 233 |
1080 | // don't block ourselves ... | 1113 | // don't block ourselves ... |
1081 | Opie::force_appearance = 0; | 1114 | Opie::force_appearance = 0; |
1082 | 1115 | ||
1083 | static QString appname = Opie::binaryName ( ); | 1116 | static QString appname = Opie::binaryName ( ); |
1084 | 1117 | ||
1085 | QStringList ex = config. readListEntry ( "NoStyle", ';' ); | 1118 | QStringList ex = config. readListEntry ( "NoStyle", ';' ); |
1086 | int nostyle = 0; | 1119 | int nostyle = 0; |
1087 | for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) { | 1120 | for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) { |
1088 | if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) { | 1121 | if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) { |
1089 | nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 ); | 1122 | nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 ); |
1090 | break; | 1123 | break; |
1091 | } | 1124 | } |
1092 | } | 1125 | } |
1093 | 1126 | ||
1094 | // Widget style | 1127 | // Widget style |
1095 | QString style = config.readEntry( "Style", "FlatStyle" ); | 1128 | QString style = config.readEntry( "Style", "FlatStyle" ); |
1096 | 1129 | ||
1097 | // don't set a custom style | 1130 | // don't set a custom style |
1098 | if ( nostyle & Opie::Force_Style ) | 1131 | if ( nostyle & Opie::Force_Style ) |
1099 | style = "FlatStyle"; | 1132 | style = "FlatStyle"; |
1100 | 1133 | ||
1101 | internalSetStyle ( style ); | 1134 | internalSetStyle ( style ); |
@@ -1151,64 +1184,77 @@ void QPEApplication::applyStyle() | |||
1151 | Opie::force_appearance &= ~nostyle; | 1184 | Opie::force_appearance &= ~nostyle; |
1152 | #endif | 1185 | #endif |
1153 | } | 1186 | } |
1154 | 1187 | ||
1155 | void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data ) | 1188 | void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data ) |
1156 | { | 1189 | { |
1157 | #ifdef Q_WS_QWS | 1190 | #ifdef Q_WS_QWS |
1158 | QDataStream stream( data, IO_ReadOnly ); | 1191 | QDataStream stream( data, IO_ReadOnly ); |
1159 | if ( msg == "applyStyle()" ) { | 1192 | if ( msg == "applyStyle()" ) { |
1160 | applyStyle(); | 1193 | applyStyle(); |
1161 | } | 1194 | } |
1162 | else if ( msg == "toggleApplicationMenu()" ) { | 1195 | else if ( msg == "toggleApplicationMenu()" ) { |
1163 | QWidget *active = activeWindow ( ); | 1196 | QWidget *active = activeWindow ( ); |
1164 | 1197 | ||
1165 | if ( active ) { | 1198 | if ( active ) { |
1166 | QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( ); | 1199 | QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( ); |
1167 | bool oldactive = man-> isActive ( ); | 1200 | bool oldactive = man-> isActive ( ); |
1168 | 1201 | ||
1169 | man-> setActive( !man-> isActive() ); | 1202 | man-> setActive( !man-> isActive() ); |
1170 | 1203 | ||
1171 | if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu | 1204 | if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu |
1172 | QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" ); | 1205 | QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" ); |
1173 | } | 1206 | } |
1174 | } | 1207 | } |
1175 | } | 1208 | } |
1176 | else if ( msg == "setDefaultRotation(int)" ) { | 1209 | else if ( msg == "setDefaultRotation(int)" ) { |
1177 | if ( type() == GuiServer ) { | 1210 | if ( type() == GuiServer ) { |
1178 | int r; | 1211 | int r; |
1179 | stream >> r; | 1212 | stream >> r; |
1180 | setDefaultRotation( r ); | 1213 | setDefaultRotation( r ); |
1181 | } | 1214 | } |
1182 | } | 1215 | } |
1216 | else if ( msg == "setCurrentMode(int,int,int)" ) { // Added: 2003-06-11 by Tim Ansell <mithro@mithis.net> | ||
1217 | if ( type() == GuiServer ) { | ||
1218 | int x, y, depth; | ||
1219 | stream >> x; | ||
1220 | stream >> y; | ||
1221 | stream >> depth; | ||
1222 | setCurrentMode( x, y, depth ); | ||
1223 | } | ||
1224 | } | ||
1225 | else if ( msg == "reset()" ) { | ||
1226 | if ( type() != GuiServer ) | ||
1227 | reset(); | ||
1228 | } | ||
1183 | else if ( msg == "setCurrentRotation(int)" ) { | 1229 | else if ( msg == "setCurrentRotation(int)" ) { |
1184 | int r; | 1230 | int r; |
1185 | stream >> r; | 1231 | stream >> r; |
1186 | setCurrentRotation( r ); | 1232 | setCurrentRotation( r ); |
1187 | } | 1233 | } |
1188 | else if ( msg == "shutdown()" ) { | 1234 | else if ( msg == "shutdown()" ) { |
1189 | if ( type() == GuiServer ) | 1235 | if ( type() == GuiServer ) |
1190 | shutdown(); | 1236 | shutdown(); |
1191 | } | 1237 | } |
1192 | else if ( msg == "quit()" ) { | 1238 | else if ( msg == "quit()" ) { |
1193 | if ( type() != GuiServer ) | 1239 | if ( type() != GuiServer ) |
1194 | tryQuit(); | 1240 | tryQuit(); |
1195 | } | 1241 | } |
1196 | else if ( msg == "forceQuit()" ) { | 1242 | else if ( msg == "forceQuit()" ) { |
1197 | if ( type() != GuiServer ) | 1243 | if ( type() != GuiServer ) |
1198 | quit(); | 1244 | quit(); |
1199 | } | 1245 | } |
1200 | else if ( msg == "restart()" ) { | 1246 | else if ( msg == "restart()" ) { |
1201 | if ( type() == GuiServer ) | 1247 | if ( type() == GuiServer ) |
1202 | restart(); | 1248 | restart(); |
1203 | } | 1249 | } |
1204 | else if ( msg == "language(QString)" ) { | 1250 | else if ( msg == "language(QString)" ) { |
1205 | if ( type() == GuiServer ) { | 1251 | if ( type() == GuiServer ) { |
1206 | QString l; | 1252 | QString l; |
1207 | stream >> l; | 1253 | stream >> l; |
1208 | QString cl = getenv( "LANG" ); | 1254 | QString cl = getenv( "LANG" ); |
1209 | if ( cl != l ) { | 1255 | if ( cl != l ) { |
1210 | if ( l.isNull() ) | 1256 | if ( l.isNull() ) |
1211 | unsetenv( "LANG" ); | 1257 | unsetenv( "LANG" ); |
1212 | else | 1258 | else |
1213 | setenv( "LANG", l.latin1(), 1 ); | 1259 | setenv( "LANG", l.latin1(), 1 ); |
1214 | restart(); | 1260 | restart(); |