summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/odevice.cpp55
-rw-r--r--libopie/odevice.h10
2 files changed, 54 insertions, 11 deletions
diff --git a/libopie/odevice.cpp b/libopie/odevice.cpp
index d39d72f..78eb416 100644
--- a/libopie/odevice.cpp
+++ b/libopie/odevice.cpp
@@ -60,16 +60,18 @@ public:
QString m_modelstr;
OModel m_model;
QString m_systemstr;
OSystem m_system;
QString m_sysverstr;
+
+ Transformation m_rotation;
QValueList <ODeviceButton> m_buttons;
uint m_holdtime;
};
class iPAQ : public ODevice, public QWSServer::KeyboardFilter {
protected:
@@ -244,16 +246,17 @@ ODevice::ODevice ( )
d-> m_modelstr = "Unknown";
d-> m_model = Model_Unknown;
d-> m_vendorstr = "Unknown";
d-> m_vendor = Vendor_Unknown;
d-> m_systemstr = "Unknown";
d-> m_system = System_Unknown;
d-> m_sysverstr = "0.0";
+ d-> m_rotation = None;
d-> m_holdtime = 1000; // 1000ms
QCopChannel *sysch = new QCopChannel ( "QPE/System", this );
connect ( sysch, SIGNAL( received( const QCString &, const QByteArray & )), this, SLOT( systemMessage ( const QCString &, const QByteArray & )));
}
void ODevice::systemMessage ( const QCString &msg, const QByteArray & )
@@ -395,16 +398,21 @@ OSystem ODevice::system ( ) const
return d-> m_system;
}
QString ODevice::systemVersionString ( ) const
{
return d-> m_sysverstr;
}
+Transformation ODevice::rotation ( ) const
+{
+ return d-> m_rotation;
+}
+
void ODevice::alarmSound ( )
{
#ifndef QT_NO_SOUND
static Sound snd ( "alarm" );
if ( snd. isFinished ( ))
snd. play ( );
#endif
@@ -582,16 +590,29 @@ void iPAQ::init ( )
else if ( d-> m_modelstr == "H3900" )
d-> m_model = Model_iPAQ_H39xx;
else
d-> m_model = Model_Unknown;
f. close ( );
}
+ switch ( d-> m_model ) {
+ case Model_iPAQ_H31xx:
+ case Model_iPAQ_H38xx:
+ d-> m_rotation = Rot90;
+ break;
+ case Model_iPAQ_H36xx:
+ case Model_iPAQ_H37xx:
+ case Model_iPAQ_H39xx:
+ default:
+ d-> m_rotation = Rot270;
+ break;
+ }
+
f. setName ( "/etc/familiar-version" );
if ( f. open ( IO_ReadOnly )) {
d-> m_systemstr = "Familiar";
d-> m_system = System_Familiar;
QTextStream ts ( &f );
d-> m_sysverstr = ts. readLine ( ). mid ( 10 );
@@ -636,17 +657,16 @@ typedef struct {
unsigned char pwr;
unsigned char brightness;
} FLITE_IN;
#define LED_ON OD_IOW( 'f', 5, LED_IN )
#define FLITE_ON OD_IOW( 'f', 7, FLITE_IN )
-
QValueList <OLed> iPAQ::ledList ( ) const
{
QValueList <OLed> vl;
vl << Led_Power;
if ( d-> m_model == Model_iPAQ_H38xx )
vl << Led_BlueTooth;
return vl;
@@ -932,27 +952,46 @@ void Zaurus::init ( )
d-> m_system = System_Zaurus;
}
f. setName ( "/proc/deviceinfo/product" );
if ( f. open ( IO_ReadOnly ) ) {
QTextStream ts ( &f );
QString model = ts. readLine ( );
f. close ( );
- if ( model == "SL-5000D" ) {
- d-> m_model = Model_Zaurus_SL5000;
- d-> m_modelstr = "Zaurus SL-5000D";
- } else if ( model == "SL-5500" ) {
+
+ d-> m_modelstr = QString("Zaurus ") + model;
+ if ( model == "SL-5500" )
d-> m_model = Model_Zaurus_SL5500;
- d-> m_modelstr = "Zaurus SL-5500";
- }
+ else if ( model == "SL-C700" )
+ d-> m_model = Model_Zaurus_SLC700;
+ else if ( model == "SL-A300" )
+ d-> m_model = Model_Zaurus_SLA300;
+ else if ( model == "SL-B600" || model == "SL-5600" )
+ d-> m_model = Model_Zaurus_SLB600;
+ else
+ d-> m_model = Model_Zaurus_SL5000;
}
else {
d-> m_model = Model_Zaurus_SL5000;
- d-> m_modelstr = "Zaurus SL-5000D (unverified)";
+ d-> m_modelstr = "Zaurus (model unknown)";
+ }
+
+ switch ( d-> m_model ) {
+ case Model_Zaurus_SLC700:
+ /* note for C700, we must check the display rotation
+ * sensor to set an appropriate value
+ */
+ case Model_Zaurus_SLA300:
+ case Model_Zaurus_SLB600:
+ case Model_Zaurus_SL5500:
+ case Model_Zaurus_SL5000:
+ default:
+ d-> m_rotation = Rot270;
+ break;
}
for ( uint i = 0; i < ( sizeof( z_buttons ) / sizeof( z_button )); i++ ) {
z_button *zb = z_buttons + i;
ODeviceButton b;
b. setKeycode ( zb-> code );
b. setUserText ( qApp-> translate ( "Button", zb-> utext ));
diff --git a/libopie/odevice.h b/libopie/odevice.h
index 54b85a2..8164c4d 100644
--- a/libopie/odevice.h
+++ b/libopie/odevice.h
@@ -21,16 +21,18 @@
#define _LIBOPIE_ODEVICE_H_
#include <qobject.h>
#include <qstring.h>
#include <qnamespace.h>
#include <opie/odevicebutton.h>
+enum Transformation { None, Rot90, Rot180, Rot270 }; /* from qgfxtransformed_qws.cpp */
+
class ODeviceData;
namespace Opie {
enum OModel {
Model_Unknown,
Model_Series_Mask = 0xff000000,
@@ -43,16 +45,19 @@ enum OModel {
Model_iPAQ_H37xx = ( Model_iPAQ | 0x000004 ),
Model_iPAQ_H38xx = ( Model_iPAQ | 0x000008 ),
Model_iPAQ_H39xx = ( Model_iPAQ | 0x000010 ),
Model_Zaurus = ( 2 << 24 ),
Model_Zaurus_SL5000 = ( Model_Zaurus | 0x000001 ),
Model_Zaurus_SL5500 = ( Model_Zaurus | 0x000002 ),
+ Model_Zaurus_SLA300 = ( Model_Zaurus | 0x000003 ),
+ Model_Zaurus_SLB600 = ( Model_Zaurus | 0x000004 ),
+ Model_Zaurus_SLC700 = ( Model_Zaurus | 0x000005 ),
};
enum OVendor {
Vendor_Unknown,
Vendor_HP,
Vendor_Sharp
};
@@ -84,17 +89,16 @@ enum OHardKey {
HardKey_Menu = Qt::Key_F11,
HardKey_Home = Qt::Key_F12,
HardKey_Mail = Qt::Key_F13,
HardKey_Record = Qt::Key_F24,
HardKey_Suspend = Qt::Key_F34,
HardKey_Backlight = Qt::Key_F35,
};
-
class ODevice : public QObject {
Q_OBJECT
private:
ODevice ( const ODevice & );
protected:
ODevice ( );
@@ -102,32 +106,32 @@ protected:
ODeviceData *d;
public:
virtual ~ODevice ( );
static ODevice *inst ( );
-
-
// information
QString modelString ( ) const;
OModel model ( ) const;
inline OModel series ( ) const { return (OModel) ( model ( ) & Model_Series_Mask ); }
QString vendorString ( ) const;
OVendor vendor ( ) const;
QString systemString ( ) const;
OSystem system ( ) const;
QString systemVersionString ( ) const;
+ Transformation rotation ( ) const;
+
// system
virtual bool setSoftSuspend ( bool on );
virtual bool suspend ( );
virtual bool setDisplayStatus ( bool on );
virtual bool setDisplayBrightness ( int brightness );
virtual int displayBrightnessResolution ( ) const;