-rw-r--r-- | libopie/odevice.cpp | 82 | ||||
-rw-r--r-- | libopie/odevice.h | 24 |
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 | |||
@@ -77,2 +77,3 @@ public: | |||
77 | QStrList *m_cpu_frequencies; | 77 | QStrList *m_cpu_frequencies; |
78 | |||
78 | }; | 79 | }; |
@@ -142,4 +143,4 @@ public: | |||
142 | 143 | ||
143 | virtual bool hasHingeSensor() const; | 144 | bool hasHingeSensor() const; |
144 | virtual OHingeStatus readHingeSensor(); | 145 | OHingeStatus readHingeSensor(); |
145 | 146 | ||
@@ -149,4 +150,4 @@ public: | |||
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 | ||
@@ -157,2 +158,3 @@ protected: | |||
157 | bool m_embedix; | 158 | bool m_embedix; |
159 | void virtual_hook( int id, void *data ); | ||
158 | }; | 160 | }; |
@@ -730,3 +732,6 @@ Transformation 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 | } |
@@ -738,3 +743,6 @@ ODirection 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 | } |
@@ -848,3 +856,6 @@ bool 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 | } |
@@ -856,3 +867,5 @@ OHingeStatus ODevice::readHingeSensor ( ) | |||
856 | { | 867 | { |
857 | return CASE_UNKNOWN; | 868 | VirtHingeStatus hing; |
869 | virtual_hook( VIRTUAL_HINGE, &hing ); | ||
870 | return hing.hingeStat; | ||
858 | } | 871 | } |
@@ -1005,4 +1018,25 @@ void ODevice::remapHeldAction ( int button, const OQCopMessage &action ) | |||
1005 | } | 1018 | } |
1006 | void ODevice::virtual_hook(int, void* ){ | 1019 | void 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 | } |
@@ -2155,2 +2189,30 @@ OHingeStatus Zaurus::readHingeSensor() | |||
2155 | 2189 | ||
2190 | void 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 | /************************************************** |
diff --git a/libopie/odevice.h b/libopie/odevice.h index 791d358..fc41079 100644 --- a/libopie/odevice.h +++ b/libopie/odevice.h | |||
@@ -196,4 +196,4 @@ public: | |||
196 | 196 | ||
197 | virtual Transformation rotation ( ) const; | 197 | /*virtual*/ Transformation rotation ( ) const; |
198 | virtual ODirection direction ( ) const; | 198 | /*virtual*/ ODirection direction ( ) const; |
199 | 199 | ||
@@ -231,4 +231,4 @@ public: | |||
231 | 231 | ||
232 | virtual bool hasHingeSensor ( ) const; | 232 | /*virtual*/ bool hasHingeSensor ( ) const; |
233 | virtual OHingeStatus readHingeSensor ( ); | 233 | /*virtual*/ OHingeStatus readHingeSensor ( ); |
234 | 234 | ||
@@ -280,2 +280,18 @@ protected: | |||
280 | virtual void virtual_hook( int id, void* data ); | 280 | virtual void virtual_hook( int id, void* data ); |
281 | |||
282 | protected: | ||
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 | }; |