-rw-r--r-- | libopie/odevice.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/libopie/odevice.cpp b/libopie/odevice.cpp index 0e620ba..d39d72f 100644 --- a/libopie/odevice.cpp +++ b/libopie/odevice.cpp | |||
@@ -151,195 +151,195 @@ struct i_button { | |||
151 | Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Menu Button"), | 151 | Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Menu Button"), |
152 | "devicebuttons/ipaq_menu", | 152 | "devicebuttons/ipaq_menu", |
153 | "QPE/TaskBar", "toggleMenu()", | 153 | "QPE/TaskBar", "toggleMenu()", |
154 | "QPE/TaskBar", "toggleStartMenu()" }, | 154 | "QPE/TaskBar", "toggleStartMenu()" }, |
155 | { Model_iPAQ_H38xx | Model_iPAQ_H39xx, | 155 | { Model_iPAQ_H38xx | Model_iPAQ_H39xx, |
156 | Qt::Key_F13, QT_TRANSLATE_NOOP("Button", "Mail Button"), | 156 | Qt::Key_F13, QT_TRANSLATE_NOOP("Button", "Mail Button"), |
157 | "devicebuttons/ipaq_mail", | 157 | "devicebuttons/ipaq_mail", |
158 | "mail", "raise()", | 158 | "mail", "raise()", |
159 | "mail", "newMail()" }, | 159 | "mail", "newMail()" }, |
160 | { Model_iPAQ_H31xx | Model_iPAQ_H36xx | Model_iPAQ_H37xx | Model_iPAQ_H38xx | Model_iPAQ_H39xx, | 160 | { Model_iPAQ_H31xx | Model_iPAQ_H36xx | Model_iPAQ_H37xx | Model_iPAQ_H38xx | Model_iPAQ_H39xx, |
161 | Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Home Button"), | 161 | Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Home Button"), |
162 | "devicebuttons/ipaq_home", | 162 | "devicebuttons/ipaq_home", |
163 | "QPE/Launcher", "home()", | 163 | "QPE/Launcher", "home()", |
164 | "buttonsettings", "raise()" }, | 164 | "buttonsettings", "raise()" }, |
165 | { Model_iPAQ_H31xx | Model_iPAQ_H36xx | Model_iPAQ_H37xx | Model_iPAQ_H38xx | Model_iPAQ_H39xx, | 165 | { Model_iPAQ_H31xx | Model_iPAQ_H36xx | Model_iPAQ_H37xx | Model_iPAQ_H38xx | Model_iPAQ_H39xx, |
166 | Qt::Key_F24, QT_TRANSLATE_NOOP("Button", "Record Button"), | 166 | Qt::Key_F24, QT_TRANSLATE_NOOP("Button", "Record Button"), |
167 | "devicebuttons/ipaq_record", | 167 | "devicebuttons/ipaq_record", |
168 | "QPE/VMemo", "toggleRecord()", | 168 | "QPE/VMemo", "toggleRecord()", |
169 | "sound", "raise()" }, | 169 | "sound", "raise()" }, |
170 | }; | 170 | }; |
171 | 171 | ||
172 | struct z_button { | 172 | struct z_button { |
173 | Qt::Key code; | 173 | Qt::Key code; |
174 | char *utext; | 174 | char *utext; |
175 | char *pix; | 175 | char *pix; |
176 | char *fpressedservice; | 176 | char *fpressedservice; |
177 | char *fpressedaction; | 177 | char *fpressedaction; |
178 | char *fheldservice; | 178 | char *fheldservice; |
179 | char *fheldaction; | 179 | char *fheldaction; |
180 | } z_buttons [] = { | 180 | } z_buttons [] = { |
181 | { Qt::Key_F9, QT_TRANSLATE_NOOP("Button", "Calendar Button"), | 181 | { Qt::Key_F9, QT_TRANSLATE_NOOP("Button", "Calendar Button"), |
182 | "devicebuttons/z_calendar", | 182 | "devicebuttons/z_calendar", |
183 | "datebook", "nextView()", | 183 | "datebook", "nextView()", |
184 | "today", "raise()" }, | 184 | "today", "raise()" }, |
185 | { Qt::Key_F10, QT_TRANSLATE_NOOP("Button", "Contacts Button"), | 185 | { Qt::Key_F10, QT_TRANSLATE_NOOP("Button", "Contacts Button"), |
186 | "devicebuttons/z_contact", | 186 | "devicebuttons/z_contact", |
187 | "addressbook", "raise()", | 187 | "addressbook", "raise()", |
188 | "addressbook", "beamBusinessCard()" }, | 188 | "addressbook", "beamBusinessCard()" }, |
189 | { Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Home Button"), | 189 | { Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Home Button"), |
190 | "devicebuttons/z_home", | 190 | "devicebuttons/z_home", |
191 | "QPE/Launcher", "home()", | 191 | "QPE/Launcher", "home()", |
192 | "buttonsettings", "raise()" }, | 192 | "buttonsettings", "raise()" }, |
193 | { Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Menu Button"), | 193 | { Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Menu Button"), |
194 | "devicebuttons/z_menu", | 194 | "devicebuttons/z_menu", |
195 | "QPE/TaskBar", "toggleMenu()", | 195 | "QPE/TaskBar", "toggleMenu()", |
196 | "QPE/TaskBar", "toggleStartMenu()" }, | 196 | "QPE/TaskBar", "toggleStartMenu()" }, |
197 | { Qt::Key_F13, QT_TRANSLATE_NOOP("Button", "Mail Button"), | 197 | { Qt::Key_F13, QT_TRANSLATE_NOOP("Button", "Mail Button"), |
198 | "devicebuttons/z_mail", | 198 | "devicebuttons/z_mail", |
199 | "mail", "raise()", | 199 | "mail", "raise()", |
200 | "mail", "newMail()" }, | 200 | "mail", "newMail()" }, |
201 | }; | 201 | }; |
202 | 202 | ||
203 | static QCString makeChannel ( const char *str ) | 203 | static QCString makeChannel ( const char *str ) |
204 | { | 204 | { |
205 | if ( str && !::strchr ( str, '/' )) | 205 | if ( str && !::strchr ( str, '/' )) |
206 | return QCString ( "QPE/Application/" ) + str; | 206 | return QCString ( "QPE/Application/" ) + str; |
207 | else | 207 | else |
208 | return str; | 208 | return str; |
209 | } | 209 | } |
210 | 210 | ||
211 | 211 | ||
212 | 212 | ||
213 | 213 | ||
214 | ODevice *ODevice::inst ( ) | 214 | ODevice *ODevice::inst ( ) |
215 | { | 215 | { |
216 | static ODevice *dev = 0; | 216 | static ODevice *dev = 0; |
217 | 217 | ||
218 | if ( !dev ) { | 218 | if ( !dev ) { |
219 | if ( QFile::exists ( "/proc/hal/model" )) | 219 | if ( QFile::exists ( "/proc/hal/model" )) |
220 | dev = new iPAQ ( ); | 220 | dev = new iPAQ ( ); |
221 | else if ( QFile::exists ( "/dev/sharp_buz" ) || QFile::exists ( "/dev/sharp_led" )) | 221 | else if ( QFile::exists ( "/dev/sharp_buz" ) || QFile::exists ( "/dev/sharp_led" )) |
222 | dev = new Zaurus ( ); | 222 | dev = new Zaurus ( ); |
223 | else | 223 | else |
224 | dev = new ODevice ( ); | 224 | dev = new ODevice ( ); |
225 | 225 | ||
226 | dev-> init ( ); | 226 | dev-> init ( ); |
227 | } | 227 | } |
228 | return dev; | 228 | return dev; |
229 | } | 229 | } |
230 | 230 | ||
231 | 231 | ||
232 | /************************************************** | 232 | /************************************************** |
233 | * | 233 | * |
234 | * common | 234 | * common |
235 | * | 235 | * |
236 | **************************************************/ | 236 | **************************************************/ |
237 | 237 | ||
238 | 238 | ||
239 | ODevice::ODevice ( ) | 239 | ODevice::ODevice ( ) |
240 | { | 240 | { |
241 | d = new ODeviceData; | 241 | d = new ODeviceData; |
242 | 242 | ||
243 | d-> m_qwsserver = qApp ? ( qApp-> type ( ) == QApplication::GuiServer ) : false; | 243 | d-> m_qwsserver = qApp ? ( qApp-> type ( ) == QApplication::GuiServer ) : false; |
244 | 244 | ||
245 | d-> m_modelstr = "Unknown"; | 245 | d-> m_modelstr = "Unknown"; |
246 | d-> m_model = Model_Unknown; | 246 | d-> m_model = Model_Unknown; |
247 | d-> m_vendorstr = "Unkown"; | 247 | d-> m_vendorstr = "Unknown"; |
248 | d-> m_vendor = Vendor_Unknown; | 248 | d-> m_vendor = Vendor_Unknown; |
249 | d-> m_systemstr = "Unkown"; | 249 | d-> m_systemstr = "Unknown"; |
250 | d-> m_system = System_Unknown; | 250 | d-> m_system = System_Unknown; |
251 | d-> m_sysverstr = "0.0"; | 251 | d-> m_sysverstr = "0.0"; |
252 | 252 | ||
253 | d-> m_holdtime = 1000; // 1000ms | 253 | d-> m_holdtime = 1000; // 1000ms |
254 | 254 | ||
255 | QCopChannel *sysch = new QCopChannel ( "QPE/System", this ); | 255 | QCopChannel *sysch = new QCopChannel ( "QPE/System", this ); |
256 | connect ( sysch, SIGNAL( received( const QCString &, const QByteArray & )), this, SLOT( systemMessage ( const QCString &, const QByteArray & ))); | 256 | connect ( sysch, SIGNAL( received( const QCString &, const QByteArray & )), this, SLOT( systemMessage ( const QCString &, const QByteArray & ))); |
257 | } | 257 | } |
258 | 258 | ||
259 | void ODevice::systemMessage ( const QCString &msg, const QByteArray & ) | 259 | void ODevice::systemMessage ( const QCString &msg, const QByteArray & ) |
260 | { | 260 | { |
261 | if ( msg == "deviceButtonMappingChanged()" ) { | 261 | if ( msg == "deviceButtonMappingChanged()" ) { |
262 | reloadButtonMapping ( ); | 262 | reloadButtonMapping ( ); |
263 | } | 263 | } |
264 | } | 264 | } |
265 | 265 | ||
266 | void ODevice::init ( ) | 266 | void ODevice::init ( ) |
267 | { | 267 | { |
268 | // Simulation uses iPAQ 3660 device buttons | 268 | // Simulation uses iPAQ 3660 device buttons |
269 | 269 | ||
270 | for ( uint i = 0; i < ( sizeof( ipaq_buttons ) / sizeof( i_button )); i++ ) { | 270 | for ( uint i = 0; i < ( sizeof( ipaq_buttons ) / sizeof( i_button )); i++ ) { |
271 | i_button *ib = ipaq_buttons + i; | 271 | i_button *ib = ipaq_buttons + i; |
272 | ODeviceButton b; | 272 | ODeviceButton b; |
273 | 273 | ||
274 | if (( ib-> model & Model_iPAQ_H36xx ) == Model_iPAQ_H36xx ) { | 274 | if (( ib-> model & Model_iPAQ_H36xx ) == Model_iPAQ_H36xx ) { |
275 | b. setKeycode ( ib-> code ); | 275 | b. setKeycode ( ib-> code ); |
276 | b. setUserText ( qApp-> translate ( "Button", ib-> utext )); | 276 | b. setUserText ( qApp-> translate ( "Button", ib-> utext )); |
277 | b. setPixmap ( Resource::loadPixmap ( ib-> pix )); | 277 | b. setPixmap ( Resource::loadPixmap ( ib-> pix )); |
278 | b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( ib-> fpressedservice ), ib-> fpressedaction )); | 278 | b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( ib-> fpressedservice ), ib-> fpressedaction )); |
279 | b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( ib-> fheldservice ), ib-> fheldaction )); | 279 | b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( ib-> fheldservice ), ib-> fheldaction )); |
280 | 280 | ||
281 | d-> m_buttons. append ( b ); | 281 | d-> m_buttons. append ( b ); |
282 | } | 282 | } |
283 | } | 283 | } |
284 | reloadButtonMapping ( ); | 284 | reloadButtonMapping ( ); |
285 | } | 285 | } |
286 | 286 | ||
287 | ODevice::~ODevice ( ) | 287 | ODevice::~ODevice ( ) |
288 | { | 288 | { |
289 | delete d; | 289 | delete d; |
290 | } | 290 | } |
291 | 291 | ||
292 | bool ODevice::setSoftSuspend ( bool /*soft*/ ) | 292 | bool ODevice::setSoftSuspend ( bool /*soft*/ ) |
293 | { | 293 | { |
294 | return false; | 294 | return false; |
295 | } | 295 | } |
296 | 296 | ||
297 | //#include <linux/apm_bios.h> | 297 | //#include <linux/apm_bios.h> |
298 | 298 | ||
299 | #define APM_IOC_SUSPEND OD_IO( 'A', 2 ) | 299 | #define APM_IOC_SUSPEND OD_IO( 'A', 2 ) |
300 | 300 | ||
301 | 301 | ||
302 | bool ODevice::suspend ( ) | 302 | bool ODevice::suspend ( ) |
303 | { | 303 | { |
304 | if ( !d-> m_qwsserver ) // only qwsserver is allowed to suspend | 304 | if ( !d-> m_qwsserver ) // only qwsserver is allowed to suspend |
305 | return false; | 305 | return false; |
306 | 306 | ||
307 | if ( d-> m_model == Model_Unknown ) // better don't suspend in qvfb / on unkown devices | 307 | if ( d-> m_model == Model_Unknown ) // better don't suspend in qvfb / on unkown devices |
308 | return false; | 308 | return false; |
309 | 309 | ||
310 | bool res = false; | 310 | bool res = false; |
311 | 311 | ||
312 | struct timeval tvs, tvn; | 312 | struct timeval tvs, tvn; |
313 | ::gettimeofday ( &tvs, 0 ); | 313 | ::gettimeofday ( &tvs, 0 ); |
314 | 314 | ||
315 | ::sync ( ); // flush fs caches | 315 | ::sync ( ); // flush fs caches |
316 | res = ( ::system ( "apm --suspend" ) == 0 ); | 316 | res = ( ::system ( "apm --suspend" ) == 0 ); |
317 | 317 | ||
318 | // This is needed because the iPAQ apm implementation is asynchronous and we | 318 | // This is needed because the iPAQ apm implementation is asynchronous and we |
319 | // can not be sure when exactly the device is really suspended | 319 | // can not be sure when exactly the device is really suspended |
320 | // This can be deleted as soon as a stable familiar with a synchronous apm implementation exists. | 320 | // This can be deleted as soon as a stable familiar with a synchronous apm implementation exists. |
321 | 321 | ||
322 | if ( res ) { | 322 | if ( res ) { |
323 | do { // wait at most 1.5 sec: either suspend didn't work or the device resumed | 323 | do { // wait at most 1.5 sec: either suspend didn't work or the device resumed |
324 | ::usleep ( 200 * 1000 ); | 324 | ::usleep ( 200 * 1000 ); |
325 | ::gettimeofday ( &tvn, 0 ); | 325 | ::gettimeofday ( &tvn, 0 ); |
326 | } while ((( tvn. tv_sec - tvs. tv_sec ) * 1000 + ( tvn. tv_usec - tvs. tv_usec ) / 1000 ) < 1500 ); | 326 | } while ((( tvn. tv_sec - tvs. tv_sec ) * 1000 + ( tvn. tv_usec - tvs. tv_usec ) / 1000 ) < 1500 ); |
327 | } | 327 | } |
328 | 328 | ||
329 | return res; | 329 | return res; |
330 | } | 330 | } |
331 | 331 | ||
332 | //#include <linux/fb.h> better not rely on kernel headers in userspace ... | 332 | //#include <linux/fb.h> better not rely on kernel headers in userspace ... |
333 | 333 | ||
334 | #define FBIOBLANK OD_IO( 'F', 0x11 ) // 0x4611 | 334 | #define FBIOBLANK OD_IO( 'F', 0x11 ) // 0x4611 |
335 | 335 | ||
336 | /* VESA Blanking Levels */ | 336 | /* VESA Blanking Levels */ |
337 | #define VESA_NO_BLANKING 0 | 337 | #define VESA_NO_BLANKING 0 |
338 | #define VESA_VSYNC_SUSPEND 1 | 338 | #define VESA_VSYNC_SUSPEND 1 |
339 | #define VESA_HSYNC_SUSPEND 2 | 339 | #define VESA_HSYNC_SUSPEND 2 |
340 | #define VESA_POWERDOWN 3 | 340 | #define VESA_POWERDOWN 3 |
341 | 341 | ||
342 | 342 | ||
343 | bool ODevice::setDisplayStatus ( bool on ) | 343 | bool ODevice::setDisplayStatus ( bool on ) |
344 | { | 344 | { |
345 | if ( d-> m_model == Model_Unknown ) | 345 | if ( d-> m_model == Model_Unknown ) |