author | kergoth <kergoth> | 2003-03-26 22:14:35 (UTC) |
---|---|---|
committer | kergoth <kergoth> | 2003-03-26 22:14:35 (UTC) |
commit | 0e3f3b3edcbfb26239230e00fa5dc9244bdbbf02 (patch) (side-by-side diff) | |
tree | df259e71f3fc2263d8053221c103745eea05064e | |
parent | 01e8da96a688b8a84133b7c3e5a89c295a71d9fd (diff) | |
download | opie-0e3f3b3edcbfb26239230e00fa5dc9244bdbbf02.zip opie-0e3f3b3edcbfb26239230e00fa5dc9244bdbbf02.tar.gz opie-0e3f3b3edcbfb26239230e00fa5dc9244bdbbf02.tar.bz2 |
Modified launcher to set rotation via:
1) QWS_DISPLAY env var
2) Rot field as saved by setDefaultRotation
3) physical orientation as controlled by ODevice (this is broken currently,
due to ODevice requiring a QApplication to be created)
-rw-r--r-- | core/launcher/main.cpp | 59 |
1 files changed, 39 insertions, 20 deletions
diff --git a/core/launcher/main.cpp b/core/launcher/main.cpp index d11b6c5..0b38738 100644 --- a/core/launcher/main.cpp +++ b/core/launcher/main.cpp @@ -29,84 +29,103 @@ #include <qpe/custom.h> #endif #include <opie/odevice.h> #include <qmessagebox.h> #include <qfile.h> #include <qimage.h> #include <qwindowsystem_qws.h> #include <qwsmouse_qws.h> #include <qpe/qcopenvelope_qws.h> #include <qpe/alarmserver.h> #include <stdlib.h> #include <stdio.h> #include <signal.h> #include <unistd.h> #include "../calibrate/calibrate.h" using namespace Opie; void initEnvironment() { - Config config("locale"); - config.setGroup( "Location" ); - QString tz = config.readEntry( "Timezone", getenv("TZ") ); + int rot; + Config config("locale"); + + config.setGroup( "Location" ); + QString tz = config.readEntry( "Timezone", getenv("TZ") ); // if not timezone set, pick New York - if (tz.isNull()) - tz = "America/New_York"; + if (tz.isNull()) + tz = "America/New_York"; - setenv( "TZ", tz, 1 ); - config.writeEntry( "Timezone", tz); + setenv( "TZ", tz, 1 ); + config.writeEntry( "Timezone", tz); - config.setGroup( "Language" ); - QString lang = config.readEntry( "Language", getenv("LANG") ); - if ( !lang.isNull() ) - setenv( "LANG", lang, 1 ); + config.setGroup( "Language" ); + QString lang = config.readEntry( "Language", getenv("LANG") ); + if ( !lang.isNull() ) + setenv( "LANG", lang, 1 ); + +#if !defined(QT_QWS_CASSIOPEIA) && !defined(QT_QWS_IPAQ) && !defined(QT_QWS_SL5XXX) + setenv( "QWS_SIZE", "240x320", 0 ); +#endif + + /* + * Rotation: + * 1. use env var if set + * 2. use saved default if set + * 3. use physical orientation (currently fails due to ODevice + * using a QPixmap and therefore requiring a QApplication) + */ + if ( ( rot = QPEApplication::defaultRotation ( ) ) == 0 ) { + Config config("qpe"); + config.setGroup( "Rotation" ); + if ( ( rot = config.readNumEntry( "Rot", -1 ) ) == -1 ) + rot = ODevice::inst ( )-> rotation ( ) * 90; + } + + setenv("QWS_DISPLAY", QString("Transformed:Rot%1:0").arg(rot), 1); } int initApplication( int argc, char ** argv ) { initEnvironment(); -#if !defined(QT_QWS_CASSIOPEIA) && !defined(QT_QWS_IPAQ) && !defined(QT_QWS_SL5XXX) - setenv( "QWS_SIZE", "240x320", 0 ); -#endif - //Don't flicker at startup: QWSServer::setDesktopBackground( QImage() ); + DesktopApplication a( argc, argv, QApplication::GuiServer ); - ODevice::inst ( )-> setSoftSuspend ( true ); + ODevice::inst ( )-> setSoftSuspend ( true ); - { // init backlight - QCopEnvelope e("QPE/System", "setBacklight(int)" ); - e << -3; // Forced on - } + { // init backlight + QCopEnvelope e("QPE/System", "setBacklight(int)" ); + e << -3; // Forced on + } AlarmServer::initialize(); Desktop *d = new Desktop(); QObject::connect( &a, SIGNAL(power()), d, SLOT(togglePower()) ); QObject::connect( &a, SIGNAL(backlight()), d, SLOT(toggleLight()) ); QObject::connect( &a, SIGNAL(symbol()), d, SLOT(toggleSymbolInput()) ); QObject::connect( &a, SIGNAL(numLockStateToggle()), d, SLOT(toggleNumLockState()) ); QObject::connect( &a, SIGNAL(capsLockStateToggle()), d, SLOT(toggleCapsLockState()) ); QObject::connect( &a, SIGNAL(prepareForRestart()), d, SLOT(terminateServers()) ); (void)new SysFileMonitor(d); Network::createServer(d); if ( QWSServer::mouseHandler() ->inherits("QCalibratedMouseHandler") ) { if ( !QFile::exists( "/etc/pointercal" ) ) { // Make sure calibration widget starts on top. Calibrate *cal = new Calibrate; cal->exec(); delete cal; } } |