summaryrefslogtreecommitdiff
path: root/library/qpeapplication.cpp
authorzecke <zecke>2003-08-29 18:04:43 (UTC)
committer zecke <zecke>2003-08-29 18:04:43 (UTC)
commit18cae99f1deb15213074a8fb96f79eae4b0c5a43 (patch) (unidiff)
tree1dc5c46deef1558b8cca0fd716c3a154c6eb6ac8 /library/qpeapplication.cpp
parent885c645ee48ae53467e244521c011c73bc106afb (diff)
downloadopie-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.
Diffstat (limited to 'library/qpeapplication.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpeapplication.cpp46
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*/
1051void QPEApplication::setDefaultRotation( int r ) 1051void 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
1074extern void qws_clearLoadedFonts();
1075
1076inline 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
1095inline 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*/
1074void QPEApplication::applyStyle() 1107void 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
1155void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data ) 1188void 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();