summaryrefslogtreecommitdiff
authorkergoth <kergoth>2003-04-19 20:47:28 (UTC)
committer kergoth <kergoth>2003-04-19 20:47:28 (UTC)
commitc502394063598e63591e06072802f1c5a9e0c266 (patch) (unidiff)
tree66b5e6c888f2370437a399aa8bea7659a04cdb95
parenteb276a6663540849ef98819eeaa8f935a7e1b945 (diff)
downloadopie-c502394063598e63591e06072802f1c5a9e0c266.zip
opie-c502394063598e63591e06072802f1c5a9e0c266.tar.gz
opie-c502394063598e63591e06072802f1c5a9e0c266.tar.bz2
Add SL-C700 button handling, so we can handle the keycode for the physical screen rotation.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/odevice.cpp45
1 files changed, 42 insertions, 3 deletions
diff --git a/libopie/odevice.cpp b/libopie/odevice.cpp
index 713cc90..cb7dd74 100644
--- a/libopie/odevice.cpp
+++ b/libopie/odevice.cpp
@@ -30,24 +30,27 @@
30 30
31#include <qfile.h> 31#include <qfile.h>
32#include <qtextstream.h> 32#include <qtextstream.h>
33#include <qpe/sound.h> 33#include <qpe/sound.h>
34#include <qpe/resource.h> 34#include <qpe/resource.h>
35#include <qpe/config.h> 35#include <qpe/config.h>
36#include <qpe/qcopenvelope_qws.h> 36#include <qpe/qcopenvelope_qws.h>
37 37
38#include "odevice.h" 38#include "odevice.h"
39 39
40#include <qwindowsystem_qws.h> 40#include <qwindowsystem_qws.h>
41 41
42#ifndef ARRAY_SIZE
43#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
44#endif
42 45
43// _IO and friends are only defined in kernel headers ... 46// _IO and friends are only defined in kernel headers ...
44 47
45#define OD_IOC(dir,type,number,size) (( dir << 30 ) | ( type << 8 ) | ( number ) | ( size << 16 )) 48#define OD_IOC(dir,type,number,size) (( dir << 30 ) | ( type << 8 ) | ( number ) | ( size << 16 ))
46 49
47#define OD_IO(type,number) OD_IOC(0,type,number,0) 50#define OD_IO(type,number) OD_IOC(0,type,number,0)
48#define OD_IOW(type,number,size) OD_IOC(1,type,number,sizeof(size)) 51#define OD_IOW(type,number,size) OD_IOC(1,type,number,sizeof(size))
49#define OD_IOR(type,number,size) OD_IOC(2,type,number,sizeof(size)) 52#define OD_IOR(type,number,size) OD_IOC(2,type,number,sizeof(size))
50#define OD_IORW(type,number,size) OD_IOC(3,type,number,sizeof(size)) 53#define OD_IORW(type,number,size) OD_IOC(3,type,number,sizeof(size))
51 54
52using namespace Opie; 55using namespace Opie;
53 56
@@ -196,24 +199,47 @@ struct z_button {
196 "QPE/Launcher", "home()", 199 "QPE/Launcher", "home()",
197 "buttonsettings", "raise()" }, 200 "buttonsettings", "raise()" },
198 { Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Menu Button"), 201 { Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Menu Button"),
199 "devicebuttons/z_menu", 202 "devicebuttons/z_menu",
200 "QPE/TaskBar", "toggleMenu()", 203 "QPE/TaskBar", "toggleMenu()",
201 "QPE/TaskBar", "toggleStartMenu()" }, 204 "QPE/TaskBar", "toggleStartMenu()" },
202 { Qt::Key_F13, QT_TRANSLATE_NOOP("Button", "Mail Button"), 205 { Qt::Key_F13, QT_TRANSLATE_NOOP("Button", "Mail Button"),
203 "devicebuttons/z_mail", 206 "devicebuttons/z_mail",
204 "mail", "raise()", 207 "mail", "raise()",
205 "mail", "newMail()" }, 208 "mail", "newMail()" },
206}; 209};
207 210
211struct z_button z_buttons_c700 [] = {
212 { Qt::Key_F9, QT_TRANSLATE_NOOP("Button", "Calendar Button"),
213 "devicebuttons/z_calendar",
214 "datebook", "nextView()",
215 "today", "raise()" },
216 { Qt::Key_F10, QT_TRANSLATE_NOOP("Button", "Contacts Button"),
217 "devicebuttons/z_contact",
218 "addressbook", "raise()",
219 "addressbook", "beamBusinessCard()" },
220 { Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Home Button"),
221 "devicebuttons/z_home",
222 "QPE/Launcher", "home()",
223 "buttonsettings", "raise()" },
224 { Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Menu Button"),
225 "devicebuttons/z_menu",
226 "QPE/TaskBar", "toggleMenu()",
227 "QPE/TaskBar", "toggleStartMenu()" },
228 { Qt::Key_F13, QT_TRANSLATE_NOOP("Button", "Display Rotate"),
229 "",
230 "QPE/Rotation", "flip()",
231 "QPE/Rotation", "flip()" },
232};
233
208static QCString makeChannel ( const char *str ) 234static QCString makeChannel ( const char *str )
209{ 235{
210 if ( str && !::strchr ( str, '/' )) 236 if ( str && !::strchr ( str, '/' ))
211 return QCString ( "QPE/Application/" ) + str; 237 return QCString ( "QPE/Application/" ) + str;
212 else 238 else
213 return str; 239 return str;
214} 240}
215 241
216 242
217 243
218 244
219ODevice *ODevice::inst ( ) 245ODevice *ODevice::inst ( )
@@ -1132,30 +1158,30 @@ void Zaurus::init ( )
1132 else if ( model == "SL-A300" ) 1158 else if ( model == "SL-A300" )
1133 d-> m_model = Model_Zaurus_SLA300; 1159 d-> m_model = Model_Zaurus_SLA300;
1134 else if ( model == "SL-B600" || model == "SL-5600" ) 1160 else if ( model == "SL-B600" || model == "SL-5600" )
1135 d-> m_model = Model_Zaurus_SLB600; 1161 d-> m_model = Model_Zaurus_SLB600;
1136 else 1162 else
1137 d-> m_model = Model_Zaurus_SL5000; 1163 d-> m_model = Model_Zaurus_SL5000;
1138 } 1164 }
1139 else { 1165 else {
1140 d-> m_model = Model_Zaurus_SL5000; 1166 d-> m_model = Model_Zaurus_SL5000;
1141 d-> m_modelstr = "Zaurus (model unknown)"; 1167 d-> m_modelstr = "Zaurus (model unknown)";
1142 } 1168 }
1143 1169
1170 bool flipstate = false;
1144 switch ( d-> m_model ) { 1171 switch ( d-> m_model ) {
1145 case Model_Zaurus_SLA300: 1172 case Model_Zaurus_SLA300:
1146 d-> m_rotation = Rot0; 1173 d-> m_rotation = Rot0;
1147 break; 1174 break;
1148 case Model_Zaurus_SLC700: 1175 case Model_Zaurus_SLC700:
1149 bool flipstate = false;
1150 // Note: need to 1) set flipstate based on physical screen orientation 1176 // Note: need to 1) set flipstate based on physical screen orientation
1151 // and 2) check to see if the user overrode the rotation direction 1177 // and 2) check to see if the user overrode the rotation direction
1152 // using appearance, and if so, remove that item from the Config to 1178 // using appearance, and if so, remove that item from the Config to
1153 // ensure the rotate applet flips us back to the previous state. 1179 // ensure the rotate applet flips us back to the previous state.
1154 if ( flipstate ) { 1180 if ( flipstate ) {
1155 // 480x640 1181 // 480x640
1156 d-> m_rotation = Rot0; 1182 d-> m_rotation = Rot0;
1157 d-> m_direction = CW; 1183 d-> m_direction = CW;
1158 } else { 1184 } else {
1159 // 640x480 1185 // 640x480
1160 d-> m_rotation = Rot270; 1186 d-> m_rotation = Rot270;
1161 d-> m_direction = CCW; 1187 d-> m_direction = CCW;
@@ -1171,26 +1197,39 @@ void Zaurus::init ( )
1171 m_leds [0] = Led_Off; 1197 m_leds [0] = Led_Off;
1172} 1198}
1173 1199
1174void Zaurus::initButtons ( ) 1200void Zaurus::initButtons ( )
1175{ 1201{
1176 if ( d-> m_buttons ) 1202 if ( d-> m_buttons )
1177 return; 1203 return;
1178 1204
1179 d-> m_qwsserver = qApp ? ( qApp-> type ( ) == QApplication::GuiServer ) : false; 1205 d-> m_qwsserver = qApp ? ( qApp-> type ( ) == QApplication::GuiServer ) : false;
1180 1206
1181 d-> m_buttons = new QValueList <ODeviceButton>; 1207 d-> m_buttons = new QValueList <ODeviceButton>;
1182 1208
1183 for ( uint i = 0; i < ( sizeof( z_buttons ) / sizeof( z_button )); i++ ) { 1209 struct z_button * pz_buttons;
1184 z_button *zb = z_buttons + i; 1210 int buttoncount;
1211 switch ( d-> m_model ) {
1212 case Model_Zaurus_SLC700:
1213 pz_buttons = z_buttons_c700;
1214 buttoncount = ARRAY_SIZE(z_buttons_c700);
1215 break;
1216 default:
1217 pz_buttons = z_buttons;
1218 buttoncount = ARRAY_SIZE(z_buttons);
1219 break;
1220 }
1221
1222 for ( int i = 0; i < buttoncount; i++ ) {
1223 struct z_button *zb = pz_buttons + i;
1185 ODeviceButton b; 1224 ODeviceButton b;
1186 1225
1187 b. setKeycode ( zb-> code ); 1226 b. setKeycode ( zb-> code );
1188 b. setUserText ( QObject::tr ( "Button", zb-> utext )); 1227 b. setUserText ( QObject::tr ( "Button", zb-> utext ));
1189 b. setPixmap ( Resource::loadPixmap ( zb-> pix )); 1228 b. setPixmap ( Resource::loadPixmap ( zb-> pix ));
1190 b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( zb-> fpressedservice ), zb-> fpressedaction )); 1229 b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( zb-> fpressedservice ), zb-> fpressedaction ));
1191 b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( zb-> fheldservice ), zb-> fheldaction )); 1230 b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( zb-> fheldservice ), zb-> fheldaction ));
1192 1231
1193 d-> m_buttons-> append ( b ); 1232 d-> m_buttons-> append ( b );
1194 } 1233 }
1195 1234
1196 reloadButtonMapping ( ); 1235 reloadButtonMapping ( );