-rw-r--r-- | libopie/odevice.cpp | 55 | ||||
-rw-r--r-- | libopie/odevice.h | 10 |
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 @@ -56,24 +56,26 @@ public: bool m_qwsserver; QString m_vendorstr; OVendor m_vendor; 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: virtual void init ( ); public: virtual bool setSoftSuspend ( bool soft ); @@ -240,24 +242,25 @@ ODevice::ODevice ( ) { d = new ODeviceData; d-> m_qwsserver = qApp ? ( qApp-> type ( ) == QApplication::GuiServer ) : false; 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 & ) { if ( msg == "deviceButtonMappingChanged()" ) { reloadButtonMapping ( ); } @@ -391,24 +394,29 @@ QString ODevice::systemString ( ) const } 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 } void ODevice::keySound ( ) { @@ -578,24 +586,37 @@ void iPAQ::init ( ) else if ( d-> m_modelstr == "H3700" ) d-> m_model = Model_iPAQ_H37xx; else if ( d-> m_modelstr == "H3800" ) d-> m_model = Model_iPAQ_H38xx; 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 ); f. close ( ); } m_leds [0] = m_leds [1] = Led_Off; @@ -632,25 +653,24 @@ typedef struct { } LED_IN; typedef struct { unsigned char mode; 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; } QValueList <OLedState> iPAQ::ledStateList ( OLed l ) const { @@ -928,35 +948,54 @@ void Zaurus::init ( ) } } else { d-> m_systemstr = "Zaurus"; 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 )); b. setPixmap ( Resource::loadPixmap ( zb-> pix )); b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( zb-> fpressedservice ), zb-> fpressedaction )); b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( zb-> fheldservice ), zb-> fheldaction )); diff --git a/libopie/odevice.h b/libopie/odevice.h index 54b85a2..8164c4d 100644 --- a/libopie/odevice.h +++ b/libopie/odevice.h @@ -17,46 +17,51 @@ Boston, MA 02111-1307, USA. */ #ifndef _LIBOPIE_ODEVICE_H_ #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, Model_iPAQ = ( 1 << 24 ), Model_iPAQ_All = ( Model_iPAQ | 0xffffff ), Model_iPAQ_H31xx = ( Model_iPAQ | 0x000001 ), Model_iPAQ_H36xx = ( Model_iPAQ | 0x000002 ), 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 }; enum OSystem { System_Unknown, @@ -80,58 +85,57 @@ enum OLed { enum OHardKey { HardKey_Datebook = Qt::Key_F9, HardKey_Contacts = Qt::Key_F10, 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 ( ); virtual void init ( ); 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; // input / output virtual void alarmSound ( ); |