summaryrefslogtreecommitdiff
authorkergoth <kergoth>2003-03-26 22:14:35 (UTC)
committer kergoth <kergoth>2003-03-26 22:14:35 (UTC)
commit0e3f3b3edcbfb26239230e00fa5dc9244bdbbf02 (patch) (side-by-side diff)
treedf259e71f3fc2263d8053221c103745eea05064e
parent01e8da96a688b8a84133b7c3e5a89c295a71d9fd (diff)
downloadopie-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)
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/main.cpp59
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;
}
}