summaryrefslogtreecommitdiff
path: root/libopie
authorzecke <zecke>2004-02-19 20:29:53 (UTC)
committer zecke <zecke>2004-02-19 20:29:53 (UTC)
commitf6f89c9fad356f91f1ad63402757335f7fb4fed2 (patch) (unidiff)
tree9646358fb1b6bdec12fa29971936cbe63ad8f06b /libopie
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 (limited to 'libopie') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/odevice.cpp112
-rw-r--r--libopie/odevice.h24
2 files changed, 107 insertions, 29 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};
@@ -446,3 +448,3 @@ ODevice *ODevice::inst ( )
446 448
447 if ( !dev ) { 449 if ( !dev ) {
448 if ( QFile::exists ( "/proc/hal/model" )) 450 if ( QFile::exists ( "/proc/hal/model" ))
@@ -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}
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}
@@ -1042,6 +1076,6 @@ void Yopy::init ( )
1042 d-> m_rotation = Rot0; 1076 d-> m_rotation = Rot0;
1043 1077
1044 d-> m_systemstr = "Linupy"; 1078 d-> m_systemstr = "Linupy";
1045 d-> m_system = System_Linupy; 1079 d-> m_system = System_Linupy;
1046 1080
1047 QFile f ( "/etc/issue" ); 1081 QFile f ( "/etc/issue" );
@@ -1065,3 +1099,3 @@ void Yopy::initButtons ( )
1065 yopy_button *ib = yopy_buttons + i; 1099 yopy_button *ib = yopy_buttons + i;
1066 1100
1067 ODeviceButton b; 1101 ODeviceButton b;
@@ -1079,5 +1113,5 @@ void Yopy::initButtons ( )
1079 reloadButtonMapping ( ); 1113 reloadButtonMapping ( );
1080 1114
1081 QCopChannel *sysch = new QCopChannel("QPE/System", this); 1115 QCopChannel *sysch = new QCopChannel("QPE/System", this);
1082 connect(sysch, SIGNAL(received(const QCString &, const QByteArray & )), 1116 connect(sysch, SIGNAL(received(const QCString &, const QByteArray & )),
1083 this, SLOT(systemMessage(const QCString &, const QByteArray & ))); 1117 this, SLOT(systemMessage(const QCString &, const QByteArray & )));
@@ -1087,4 +1121,4 @@ bool Yopy::suspend()
1087{ 1121{
1088 /* Opie for Yopy does not implement its own power management at the 1122 /* Opie for Yopy does not implement its own power management at the
1089 moment. The public version runs parallel to X, and relies on the 1123 moment. The public version runs parallel to X, and relies on the
1090 existing power management features. */ 1124 existing power management features. */
@@ -1545,3 +1579,3 @@ bool Zaurus::isZaurus()
1545 return true; 1579 return true;
1546 } 1580 }
1547 1581
@@ -1823,3 +1857,3 @@ void Zaurus::buzzer ( int sound )
1823 Sound snd ( soundname ); 1857 Sound snd ( soundname );
1824 1858
1825 if (( fd = ::open ( "/dev/sound/mixer", O_RDWR )) >= 0 ) { 1859 if (( fd = ::open ( "/dev/sound/mixer", O_RDWR )) >= 0 ) {
@@ -1850,5 +1884,5 @@ void Zaurus::buzzer ( int sound )
1850 } 1884 }
1851 } else { 1885 } else {
1852 int fd = ::open ( "/dev/sharp_buz", O_WRONLY|O_NONBLOCK ); 1886 int fd = ::open ( "/dev/sharp_buz", O_WRONLY|O_NONBLOCK );
1853 1887
1854 if ( fd >= 0 ) { 1888 if ( fd >= 0 ) {
@@ -1858,3 +1892,3 @@ void Zaurus::buzzer ( int sound )
1858 1892
1859 } 1893 }
1860#endif 1894#endif
@@ -2068,5 +2102,5 @@ Transformation Zaurus::rotation ( ) const
2068 2102
2069 if (retval == 2 ) 2103 if (retval == 2 )
2070 rot = Rot0; 2104 rot = Rot0;
2071 else 2105 else
2072 rot = Rot270; 2106 rot = Rot270;
@@ -2155,2 +2189,30 @@ OHingeStatus Zaurus::readHingeSensor()
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/**************************************************
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
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};