summaryrefslogtreecommitdiff
authorzecke <zecke>2004-02-19 20:29:53 (UTC)
committer zecke <zecke>2004-02-19 20:29:53 (UTC)
commitf6f89c9fad356f91f1ad63402757335f7fb4fed2 (patch) (unidiff)
tree9646358fb1b6bdec12fa29971936cbe63ad8f06b
parentc2eb77f6b8933b02bd8bd59ec7325da0bfc956cb (diff)
downloadopie-f6f89c9fad356f91f1ad63402757335f7fb4fed2.zip
opie-f6f89c9fad356f91f1ad63402757335f7fb4fed2.tar.gz
opie-f6f89c9fad356f91f1ad63402757335f7fb4fed2.tar.bz2
Restore binary compatibility and make use of the virtual_hook
Yeah it is ugly... but will work for libopie... Now onto libopie2! development
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--libopie/odevice.cpp82
-rw-r--r--libopie/odevice.h24
2 files changed, 92 insertions, 14 deletions
diff --git a/libopie/odevice.cpp b/libopie/odevice.cpp
index c5a916b..c5342e1 100644
--- a/libopie/odevice.cpp
+++ b/libopie/odevice.cpp
@@ -75,6 +75,7 @@ public:
75 QValueList <ODeviceButton> *m_buttons; 75 QValueList <ODeviceButton> *m_buttons;
76 uint m_holdtime; 76 uint m_holdtime;
77 QStrList *m_cpu_frequencies; 77 QStrList *m_cpu_frequencies;
78
78}; 79};
79 80
80class iPAQ : public ODevice, public QWSServer::KeyboardFilter { 81class iPAQ : public ODevice, public QWSServer::KeyboardFilter {
@@ -140,21 +141,22 @@ public:
140 virtual OLedState ledState ( OLed led ) const; 141 virtual OLedState ledState ( OLed led ) const;
141 virtual bool setLedState ( OLed led, OLedState st ); 142 virtual bool setLedState ( OLed led, OLedState st );
142 143
143 virtual bool hasHingeSensor() const; 144 bool hasHingeSensor() const;
144 virtual OHingeStatus readHingeSensor(); 145 OHingeStatus readHingeSensor();
145 146
146 static bool isZaurus(); 147 static bool isZaurus();
147 148
148 // Does this break BC? 149 // Does this break BC?
149 virtual bool suspend ( ); 150 virtual bool suspend ( );
150 virtual Transformation rotation ( ) const; 151 Transformation rotation ( ) const;
151 virtual ODirection direction ( ) const; 152 ODirection direction ( ) const;
152 153
153protected: 154protected:
154 virtual void buzzer ( int snd ); 155 virtual void buzzer ( int snd );
155 156
156 OLedState m_leds [1]; 157 OLedState m_leds [1];
157 bool m_embedix; 158 bool m_embedix;
159 void virtual_hook( int id, void *data );
158}; 160};
159 161
160class SIMpad : public ODevice, public QWSServer::KeyboardFilter { 162class SIMpad : public ODevice, public QWSServer::KeyboardFilter {
@@ -728,7 +730,10 @@ QString ODevice::systemVersionString ( ) const
728 */ 730 */
729Transformation ODevice::rotation ( ) const 731Transformation ODevice::rotation ( ) const
730{ 732{
731 return d-> m_rotation; 733 VirtRotation rot;
734 ODevice* that =(ODevice* )this;
735 that->virtual_hook( VIRTUAL_ROTATION, &rot );
736 return rot.trans;
732} 737}
733 738
734/** 739/**
@@ -736,7 +741,10 @@ Transformation ODevice::rotation ( ) const
736 */ 741 */
737ODirection ODevice::direction ( ) const 742ODirection ODevice::direction ( ) const
738{ 743{
739 return d-> m_direction; 744 VirtDirection dir;
745 ODevice* that =(ODevice* )this;
746 that->virtual_hook( VIRTUAL_DIRECTION, &dir );
747 return dir.direct;
740} 748}
741 749
742/** 750/**
@@ -846,7 +854,10 @@ int ODevice::lightSensorResolution ( ) const
846 */ 854 */
847bool ODevice::hasHingeSensor ( ) const 855bool ODevice::hasHingeSensor ( ) const
848{ 856{
849 return false; 857 VirtHasHinge hing;
858 ODevice* that =(ODevice* )this;
859 that->virtual_hook( VIRTUAL_HAS_HINGE, &hing );
860 return hing.hasHinge;
850} 861}
851 862
852/** 863/**
@@ -854,7 +865,9 @@ bool ODevice::hasHingeSensor ( ) const
854 */ 865 */
855OHingeStatus ODevice::readHingeSensor ( ) 866OHingeStatus ODevice::readHingeSensor ( )
856{ 867{
857 return CASE_UNKNOWN; 868 VirtHingeStatus hing;
869 virtual_hook( VIRTUAL_HINGE, &hing );
870 return hing.hingeStat;
858} 871}
859 872
860/** 873/**
@@ -1003,8 +1016,29 @@ void ODevice::remapHeldAction ( int button, const OQCopMessage &action )
1003 1016
1004 QCopEnvelope ( "QPE/System", "deviceButtonMappingChanged()" ); 1017 QCopEnvelope ( "QPE/System", "deviceButtonMappingChanged()" );
1005} 1018}
1006void ODevice::virtual_hook(int, void* ){ 1019void ODevice::virtual_hook(int id, void* data){
1007 1020 switch( id ) {
1021 case VIRTUAL_ROTATION:{
1022 VirtRotation* rot = reinterpret_cast<VirtRotation*>( data );
1023 rot->trans = d->m_rotation;
1024 break;
1025 }
1026 case VIRTUAL_DIRECTION:{
1027 VirtDirection *dir = reinterpret_cast<VirtDirection*>( data );
1028 dir->direct = d->m_direction;
1029 break;
1030 }
1031 case VIRTUAL_HAS_HINGE:{
1032 VirtHasHinge *hin = reinterpret_cast<VirtHasHinge*>( data );
1033 hin->hasHinge = false;
1034 break;
1035 }
1036 case VIRTUAL_HINGE:{
1037 VirtHingeStatus *hin = reinterpret_cast<VirtHingeStatus*>( data );
1038 hin->hingeStat = CASE_UNKNOWN;
1039 break;
1040 }
1041 }
1008} 1042}
1009 1043
1010/************************************************** 1044/**************************************************
@@ -2153,6 +2187,34 @@ OHingeStatus Zaurus::readHingeSensor()
2153} 2187}
2154 2188
2155 2189
2190void Zaurus::virtual_hook( int id, void *data ) {
2191 switch( id ) {
2192 case VIRTUAL_ROTATION:{
2193 VirtRotation* rot = reinterpret_cast<VirtRotation*>( data );
2194 rot->trans = rotation();
2195 break;
2196 }
2197 case VIRTUAL_DIRECTION:{
2198 VirtDirection *dir = reinterpret_cast<VirtDirection*>( data );
2199 dir->direct = direction();
2200 break;
2201 }
2202 case VIRTUAL_HAS_HINGE:{
2203 VirtHasHinge *hin = reinterpret_cast<VirtHasHinge*>( data );
2204 hin->hasHinge = hasHingeSensor();
2205 break;
2206 }
2207 case VIRTUAL_HINGE:{
2208 VirtHingeStatus *hin = reinterpret_cast<VirtHingeStatus*>( data );
2209 hin->hingeStat = readHingeSensor();
2210 break;
2211 }
2212 default:
2213 ODevice::virtual_hook( id, data );
2214 break;
2215 }
2216}
2217
2156/************************************************** 2218/**************************************************
2157 * 2219 *
2158 * SIMpad 2220 * SIMpad
diff --git a/libopie/odevice.h b/libopie/odevice.h
index 791d358..fc41079 100644
--- a/libopie/odevice.h
+++ b/libopie/odevice.h
@@ -194,8 +194,8 @@ public:
194 194
195 QString systemVersionString ( ) const; 195 QString systemVersionString ( ) const;
196 196
197 virtual Transformation rotation ( ) const; 197 /*virtual*/ Transformation rotation ( ) const;
198 virtual ODirection direction ( ) const; 198 /*virtual*/ ODirection direction ( ) const;
199 199
200// system 200// system
201 201
@@ -229,8 +229,8 @@ public:
229 virtual int readLightSensor ( ); 229 virtual int readLightSensor ( );
230 virtual int lightSensorResolution ( ) const; 230 virtual int lightSensorResolution ( ) const;
231 231
232 virtual bool hasHingeSensor ( ) const; 232 /*virtual*/ bool hasHingeSensor ( ) const;
233 virtual OHingeStatus readHingeSensor ( ); 233 /*virtual*/ OHingeStatus readHingeSensor ( );
234 234
235 const QStrList &allowedCpuFrequencies() const; 235 const QStrList &allowedCpuFrequencies() const;
236 bool setCurrentCpuFrequency(uint index); 236 bool setCurrentCpuFrequency(uint index);
@@ -278,6 +278,22 @@ protected:
278 void reloadButtonMapping ( ); 278 void reloadButtonMapping ( );
279 /* ugly virtual hook */ 279 /* ugly virtual hook */
280 virtual void virtual_hook( int id, void* data ); 280 virtual void virtual_hook( int id, void* data );
281
282protected:
283 enum { VIRTUAL_ROTATION = 0x200, VIRTUAL_DIRECTION,
284 VIRTUAL_HAS_HINGE, VIRTUAL_HINGE };
285 struct VirtRotation {
286 Transformation trans;
287 };
288 struct VirtDirection {
289 ODirection direct;
290 };
291 struct VirtHasHinge {
292 bool hasHinge;
293 };
294 struct VirtHingeStatus {
295 OHingeStatus hingeStat;
296 };
281}; 297};
282 298
283} 299}