summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--library/qpeapplication.cpp46
-rw-r--r--library/qpeapplication.h2
2 files changed, 48 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
@@ -1054,32 +1054,65 @@ void QPEApplication::setDefaultRotation( int r )
deforient = r;
setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 );
Config config("qpe");
config.setGroup( "Rotation" );
config.writeEntry( "Rot", r );
}
else {
#ifndef QT_NO_COP
{ QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" );
e << r;
}
#endif
}
}
+#include <qgfx_qws.h>
+#include <qwindowsystem_qws.h>
+#include <qpixmapcache.h>
+
+extern void qws_clearLoadedFonts();
+
+inline void QPEApplication::setCurrentMode( int x, int y, int depth )
+{
+ // Reset the caches
+ qws_clearLoadedFonts();
+ QPixmapCache::clear();
+
+ // Change the screen mode
+ qt_screen->setMode(x, y, depth);
+
+ if ( qApp->type() == GuiServer ) {
+ // Reconfigure the GuiServer
+ qwsServer->beginDisplayReconfigure();
+ qwsServer->endDisplayReconfigure();
+
+ // Get all the running apps to reset
+ QCopEnvelope env( "QPE/System", "reset()" );
+ }
+}
+
+inline void QPEApplication::reset() {
+ // Reconnect to the screen
+ qt_screen->disconnect();
+ qt_screen->connect( QString::null );
+
+ // Redraw everything
+ applyStyle();
+}
/*!
\internal
*/
void QPEApplication::applyStyle()
{
Config config( "qpe" );
config.setGroup( "Appearance" );
#if QT_VERSION > 233
// don't block ourselves ...
Opie::force_appearance = 0;
static QString appname = Opie::binaryName ( );
QStringList ex = config. readListEntry ( "NoStyle", ';' );
@@ -1167,32 +1200,45 @@ void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data
bool oldactive = man-> isActive ( );
man-> setActive( !man-> isActive() );
if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu
QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" );
}
}
}
else if ( msg == "setDefaultRotation(int)" ) {
if ( type() == GuiServer ) {
int r;
stream >> r;
setDefaultRotation( r );
}
}
+ else if ( msg == "setCurrentMode(int,int,int)" ) { // Added: 2003-06-11 by Tim Ansell <mithro@mithis.net>
+ if ( type() == GuiServer ) {
+ int x, y, depth;
+ stream >> x;
+ stream >> y;
+ stream >> depth;
+ setCurrentMode( x, y, depth );
+ }
+ }
+ else if ( msg == "reset()" ) {
+ if ( type() != GuiServer )
+ reset();
+ }
else if ( msg == "setCurrentRotation(int)" ) {
int r;
stream >> r;
setCurrentRotation( r );
}
else if ( msg == "shutdown()" ) {
if ( type() == GuiServer )
shutdown();
}
else if ( msg == "quit()" ) {
if ( type() != GuiServer )
tryQuit();
}
else if ( msg == "forceQuit()" ) {
if ( type() != GuiServer )
quit();
diff --git a/library/qpeapplication.h b/library/qpeapplication.h
index 343e0b9..42810e8 100644
--- a/library/qpeapplication.h
+++ b/library/qpeapplication.h
@@ -35,35 +35,37 @@
class QCopChannel;
class QPEApplicationData;
class QWSEvent;
class QWSKeyEvent;
class QPEApplication : public QApplication
{
Q_OBJECT
public:
QPEApplication( int& argc, char **argv, Type=GuiClient );
~QPEApplication();
static QString qpeDir();
static QString documentDir();
void applyStyle();
+ void reset();
static int defaultRotation();
static void setDefaultRotation(int r);
static void setCurrentRotation(int r);
+ static void setCurrentMode(int x, int y, int depth );
static void grabKeyboard();
static void ungrabKeyboard();
enum StylusMode {
LeftOnly,
RightOnHold
// RightOnHoldLeftDelayed, etc.
};
static void setStylusOperation( QWidget*, StylusMode );
static StylusMode stylusOperation( QWidget* );
enum InputMethodHint {
Normal,
AlwaysOff,
AlwaysOn
};