summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show 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
@@ -65,8 +65,10 @@ public:
OSystem m_system;
QString m_sysverstr;
+ Transformation m_rotation;
+
QValueList <ODeviceButton> m_buttons;
uint m_holdtime;
};
@@ -248,8 +250,9 @@ ODevice::ODevice ( )
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 );
@@ -399,8 +402,13 @@ 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" );
@@ -586,8 +594,21 @@ void iPAQ::init ( )
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;
@@ -640,9 +661,8 @@ typedef struct {
#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;
@@ -936,19 +956,38 @@ void Zaurus::init ( )
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;
diff --git a/libopie/odevice.h b/libopie/odevice.h
index 54b85a2..8164c4d 100644
--- a/libopie/odevice.h
+++ b/libopie/odevice.h
@@ -25,8 +25,10 @@
#include <qnamespace.h>
#include <opie/odevicebutton.h>
+enum Transformation { None, Rot90, Rot180, Rot270 }; /* from qgfxtransformed_qws.cpp */
+
class ODeviceData;
namespace Opie {
@@ -47,8 +49,11 @@ enum OModel {
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,
@@ -88,9 +93,8 @@ enum OHardKey {
HardKey_Suspend = Qt::Key_F34,
HardKey_Backlight = Qt::Key_F35,
};
-
class ODevice : public QObject {
Q_OBJECT
private:
@@ -106,10 +110,8 @@ public:
virtual ~ODevice ( );
static ODevice *inst ( );
-
-
// information
QString modelString ( ) const;
OModel model ( ) const;
@@ -122,8 +124,10 @@ public:
OSystem system ( ) const;
QString systemVersionString ( ) const;
+ Transformation rotation ( ) const;
+
// system
virtual bool setSoftSuspend ( bool on );
virtual bool suspend ( );