Diffstat (limited to 'x11/libqpe-x11/qpe/qpeapplication.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | x11/libqpe-x11/qpe/qpeapplication.cpp | 207 |
1 files changed, 194 insertions, 13 deletions
diff --git a/x11/libqpe-x11/qpe/qpeapplication.cpp b/x11/libqpe-x11/qpe/qpeapplication.cpp index 891e132..6e4a96c 100644 --- a/x11/libqpe-x11/qpe/qpeapplication.cpp +++ b/x11/libqpe-x11/qpe/qpeapplication.cpp | |||
@@ -182,89 +182,102 @@ namespace { | |||
182 | ResourceMimeFactory::~ResourceMimeFactory() { | 182 | ResourceMimeFactory::~ResourceMimeFactory() { |
183 | } | 183 | } |
184 | 184 | ||
185 | const QMimeSource* ResourceMimeFactory::data( const QString& abs_name ) const | 185 | const QMimeSource* ResourceMimeFactory::data( const QString& abs_name ) const |
186 | { | 186 | { |
187 | const QMimeSource * r = QMimeSourceFactory::data( abs_name ); | 187 | const QMimeSource * r = QMimeSourceFactory::data( abs_name ); |
188 | if ( !r ) { | 188 | if ( !r ) { |
189 | int sl = abs_name.length(); | 189 | int sl = abs_name.length(); |
190 | do { | 190 | do { |
191 | sl = abs_name.findRev( '/', sl - 1 ); | 191 | sl = abs_name.findRev( '/', sl - 1 ); |
192 | QString name = sl >= 0 ? abs_name.mid( sl + 1 ) : abs_name; | 192 | QString name = sl >= 0 ? abs_name.mid( sl + 1 ) : abs_name; |
193 | int dot = name.findRev( '.' ); | 193 | int dot = name.findRev( '.' ); |
194 | if ( dot >= 0 ) | 194 | if ( dot >= 0 ) |
195 | name = name.left( dot ); | 195 | name = name.left( dot ); |
196 | QImage img = Resource::loadImage( name ); | 196 | QImage img = Resource::loadImage( name ); |
197 | if ( !img.isNull() ) | 197 | if ( !img.isNull() ) |
198 | r = new QImageDrag( img ); | 198 | r = new QImageDrag( img ); |
199 | } | 199 | } |
200 | while ( !r && sl > 0 ); | 200 | while ( !r && sl > 0 ); |
201 | } | 201 | } |
202 | return r; | 202 | return r; |
203 | }; | 203 | }; |
204 | }; | 204 | }; |
205 | // QPEApplication | 205 | // QPEApplication |
206 | QPEApplication::~QPEApplication() { | ||
207 | qWarning("~QPEApplication"); | ||
208 | ungrabKeyboard(); | ||
209 | qWarning("UngrabKeyboard"); | ||
210 | |||
211 | // delete m_sys; | ||
212 | // delete m_pid; | ||
213 | |||
214 | delete d; | ||
215 | } | ||
206 | QPEApplication::QPEApplication(int &arg, char** argv, Type t) | 216 | QPEApplication::QPEApplication(int &arg, char** argv, Type t) |
207 | : QApplication( arg, argv, t ) { | 217 | : QApplication( arg, argv, t ) { |
208 | d = new Private; | 218 | d = new Private; |
209 | d->loadTextCodecs(); | 219 | d->loadTextCodecs(); |
210 | d->loadImageCodecs(); | 220 | d->loadImageCodecs(); |
211 | 221 | ||
212 | int dw = desktop()->width(); | 222 | int dw = desktop()->width(); |
213 | if ( dw < 200 ) { | 223 | if ( dw < 200 ) { |
214 | setFont( QFont( "helvetica", 8 ) ); | 224 | setFont( QFont( "helvetica", 8 ) ); |
215 | AppLnk::setSmallIconSize( 10 ); | 225 | AppLnk::setSmallIconSize( 10 ); |
216 | AppLnk::setBigIconSize( 28 ); | 226 | AppLnk::setBigIconSize( 28 ); |
217 | }else if ( dw > 600 ) { | 227 | }else if ( dw > 600 ) { |
218 | setFont( QFont( "helvetica", 12 ) ); | 228 | setFont( QFont( "helvetica", 12 ) ); |
219 | AppLnk::setSmallIconSize( 24 ); | 229 | AppLnk::setSmallIconSize( 24 ); |
220 | AppLnk::setBigIconSize( 48 ); | 230 | AppLnk::setBigIconSize( 48 ); |
221 | }else if ( dw > 200 ) { | 231 | }else if ( dw > 200 ) { |
222 | setFont( QFont( "helvetica", 10 ) ); | 232 | setFont( QFont( "helvetica", 10 ) ); |
223 | AppLnk::setSmallIconSize( 16 ); | 233 | AppLnk::setSmallIconSize( 16 ); |
224 | AppLnk::setBigIconSize( 32 ); | 234 | AppLnk::setBigIconSize( 32 ); |
225 | } | 235 | } |
226 | QMimeSourceFactory::setDefaultFactory( new ResourceMimeFactory ); | 236 | QMimeSourceFactory::setDefaultFactory( new ResourceMimeFactory ); |
227 | 237 | ||
228 | connect( this, SIGNAL( lastWindowClosed() ), this, SLOT(hideOrQuit() ) ); | 238 | connect( this, SIGNAL( lastWindowClosed() ), this, SLOT(hideOrQuit() ) ); |
229 | 239 | ||
230 | QString qcopfn( "/tmp/qcop-msg-" ); | 240 | QString qcopfn( "/tmp/qcop-msg-" ); |
231 | qcopfn += QString( argv[0] ); // append command name to the QCOP name | 241 | qcopfn += QString( argv[0] ); // append command name to the QCOP name |
232 | QFile file( qcopfn ); | 242 | QFile file( qcopfn ); |
233 | if (file.open(IO_ReadOnly ) ) { | 243 | if (file.open(IO_ReadOnly ) ) { |
234 | flock( file.handle(), LOCK_EX ); | 244 | flock( file.handle(), LOCK_EX ); |
235 | } | 245 | } |
236 | 246 | ||
237 | m_sys = new QCopChannel( "QPE/System", this ); | 247 | /* Hmmm damn we need to make the parent 0l otherwise it get's deleted |
248 | * past the QApplication | ||
249 | */ | ||
250 | m_sys = new QCopChannel( "QPE/System", 0l); | ||
238 | connect(m_sys, SIGNAL( received( const QCString&, const QByteArray& ) ), | 251 | connect(m_sys, SIGNAL( received( const QCString&, const QByteArray& ) ), |
239 | this, SLOT(systemMessage( const QCString&, const QByteArray& ) ) ); | 252 | this, SLOT(systemMessage( const QCString&, const QByteArray& ) ) ); |
240 | 253 | ||
241 | // private channel QPE/Application/appname | 254 | // private channel QPE/Application/appname |
242 | QCString channel = QCString( argv[0] ); | 255 | QCString channel = QCString( argv[0] ); |
243 | channel.replace( QRegExp( ".*/"), "" ); | 256 | channel.replace( QRegExp( ".*/"), "" ); |
244 | d->appName = channel; | 257 | d->appName = channel; |
245 | channel = "QPE/Application/"+ channel; | 258 | channel = "QPE/Application/"+ channel; |
246 | m_pid = new QCopChannel( channel, this ); | 259 | m_pid = new QCopChannel( channel, 0l ); |
247 | connect(m_pid, SIGNAL( received( const QCString&, const QByteArray& ) ), | 260 | connect(m_pid, SIGNAL( received( const QCString&, const QByteArray& ) ), |
248 | this, SLOT( pidMessage( const QCString&, const QByteArray& ) ) ); | 261 | this, SLOT( pidMessage( const QCString&, const QByteArray& ) ) ); |
249 | 262 | ||
250 | // read the Pre QCOP Stuff from the file | 263 | // read the Pre QCOP Stuff from the file |
251 | if ( file.isOpen() ) { | 264 | if ( file.isOpen() ) { |
252 | d->keep_running = FALSE; | 265 | d->keep_running = FALSE; |
253 | QDataStream ds( &file ); | 266 | QDataStream ds( &file ); |
254 | QCString chanel, message; | 267 | QCString chanel, message; |
255 | QByteArray data; | 268 | QByteArray data; |
256 | while (!ds.atEnd() ) { | 269 | while (!ds.atEnd() ) { |
257 | ds >> chanel >> message >> data; | 270 | ds >> chanel >> message >> data; |
258 | d->enqueueQCop( chanel, message, data ); | 271 | d->enqueueQCop( chanel, message, data ); |
259 | } | 272 | } |
260 | flock( file.handle(), LOCK_UN ); | 273 | flock( file.handle(), LOCK_UN ); |
261 | file.close(); | 274 | file.close(); |
262 | file.remove(); | 275 | file.remove(); |
263 | } | 276 | } |
264 | 277 | ||
265 | // read in some stuff from the command line | 278 | // read in some stuff from the command line |
266 | // we do not have setArgs so we need to take | 279 | // we do not have setArgs so we need to take |
267 | // care of that | 280 | // care of that |
268 | for ( int a = 0; a < arg; a++ ) { | 281 | for ( int a = 0; a < arg; a++ ) { |
269 | if ( qstrcmp( argv[a], "-preload" ) == 0 ) { | 282 | if ( qstrcmp( argv[a], "-preload" ) == 0 ) { |
270 | d->preloaded = TRUE; | 283 | d->preloaded = TRUE; |
@@ -285,51 +298,48 @@ QPEApplication::QPEApplication(int &arg, char** argv, Type t) | |||
285 | void QPEApplication::initTranslations() { | 298 | void QPEApplication::initTranslations() { |
286 | // Translations add it | 299 | // Translations add it |
287 | QStringList langs = Global::languageList(); | 300 | QStringList langs = Global::languageList(); |
288 | for ( QStringList::ConstIterator it = langs.begin(); it != langs.end(); ++it ) { | 301 | for ( QStringList::ConstIterator it = langs.begin(); it != langs.end(); ++it ) { |
289 | QString lang = *it; | 302 | QString lang = *it; |
290 | 303 | ||
291 | QTranslator * trans; | 304 | QTranslator * trans; |
292 | QString tfn; | 305 | QString tfn; |
293 | 306 | ||
294 | trans = new QTranslator( this ); | 307 | trans = new QTranslator( this ); |
295 | tfn = qpeDir() + "/i18n/" + lang + "/libqpe.qm"; | 308 | tfn = qpeDir() + "/i18n/" + lang + "/libqpe.qm"; |
296 | if ( trans->load( tfn ) ) | 309 | if ( trans->load( tfn ) ) |
297 | installTranslator( trans ); | 310 | installTranslator( trans ); |
298 | else | 311 | else |
299 | delete trans; | 312 | delete trans; |
300 | 313 | ||
301 | trans = new QTranslator( this ); | 314 | trans = new QTranslator( this ); |
302 | tfn = qpeDir() + "/i18n/" + lang + "/" + d->appName + ".qm"; | 315 | tfn = qpeDir() + "/i18n/" + lang + "/" + d->appName + ".qm"; |
303 | if ( trans->load( tfn ) ) | 316 | if ( trans->load( tfn ) ) |
304 | installTranslator( trans ); | 317 | installTranslator( trans ); |
305 | else | 318 | else |
306 | delete trans; | 319 | delete trans; |
307 | } | 320 | } |
308 | } | 321 | } |
309 | QPEApplication::~QPEApplication() { | ||
310 | delete d; | ||
311 | } | ||
312 | QString QPEApplication::qpeDir() { | 322 | QString QPEApplication::qpeDir() { |
313 | const char * base = getenv( "OPIEDIR" ); | 323 | const char * base = getenv( "OPIEDIR" ); |
314 | if ( base ) | 324 | if ( base ) |
315 | return QString( base ) + "/"; | 325 | return QString( base ) + "/"; |
316 | 326 | ||
317 | return QString( "../" ); | 327 | return QString( "../" ); |
318 | } | 328 | } |
319 | QString QPEApplication::documentDir() { | 329 | QString QPEApplication::documentDir() { |
320 | const char* base = getenv( "HOME"); | 330 | const char* base = getenv( "HOME"); |
321 | if ( base ) | 331 | if ( base ) |
322 | return QString( base ) + "/Documents"; | 332 | return QString( base ) + "/Documents"; |
323 | 333 | ||
324 | return QString( "../Documents" ); | 334 | return QString( "../Documents" ); |
325 | } | 335 | } |
326 | void QPEApplication::applyStyle() { | 336 | void QPEApplication::applyStyle() { |
327 | Config config( "qpe" ); | 337 | Config config( "qpe" ); |
328 | 338 | ||
329 | config.setGroup( "Appearance" ); | 339 | config.setGroup( "Appearance" ); |
330 | 340 | ||
331 | // Widget style | 341 | // Widget style |
332 | QString style = config.readEntry( "Style", "Light" ); | 342 | QString style = config.readEntry( "Style", "Light" ); |
333 | internalSetStyle( style ); | 343 | internalSetStyle( style ); |
334 | 344 | ||
335 | // Colors | 345 | // Colors |
@@ -365,112 +375,283 @@ int QPEApplication::defaultRotation() { | |||
365 | void QPEApplication::setDefaultRotation(int r ) { | 375 | void QPEApplication::setDefaultRotation(int r ) { |
366 | 376 | ||
367 | } | 377 | } |
368 | void QPEApplication::grabKeyboard() { | 378 | void QPEApplication::grabKeyboard() { |
369 | QPEApplication::Private * d = ( ( QPEApplication* ) qApp ) ->d; | 379 | QPEApplication::Private * d = ( ( QPEApplication* ) qApp ) ->d; |
370 | if ( qApp->type() == QApplication::GuiServer ) | 380 | if ( qApp->type() == QApplication::GuiServer ) |
371 | d->kbgrabber = 0; | 381 | d->kbgrabber = 0; |
372 | else { | 382 | else { |
373 | QCopEnvelope e( "QPE/System", "grabKeyboard(QString)" ); | 383 | QCopEnvelope e( "QPE/System", "grabKeyboard(QString)" ); |
374 | e << d->appName; | 384 | e << d->appName; |
375 | 385 | ||
376 | d->kbgrabber = 2; // me | 386 | d->kbgrabber = 2; // me |
377 | } | 387 | } |
378 | } | 388 | } |
379 | void QPEApplication::ungrabKeyboard() { | 389 | void QPEApplication::ungrabKeyboard() { |
380 | QPEApplication::Private * d = ( ( QPEApplication* ) qApp ) ->d; | 390 | QPEApplication::Private * d = ( ( QPEApplication* ) qApp ) ->d; |
381 | if ( d->kbgrabber == 2 ) { | 391 | if ( d->kbgrabber == 2 ) { |
382 | QCopEnvelope e( "QPE/System", "grabKeyboard(QString)" ); | 392 | QCopEnvelope e( "QPE/System", "grabKeyboard(QString)" ); |
383 | e << QString::null; | 393 | e << QString::null; |
384 | 394 | ||
385 | d->kbregrab = FALSE; | 395 | d->kbregrab = FALSE; |
386 | d->kbgrabber = 0; | 396 | d->kbgrabber = 0; |
387 | } | 397 | } |
388 | } | 398 | } |
389 | void QPEApplication::setStylusOperation( QWidget*, StylusMode ) { | ||
390 | |||
391 | } | ||
392 | QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget* ) { | ||
393 | |||
394 | } | ||
395 | void QPEApplication::showMainWidget( QWidget* wid, bool b) { | 399 | void QPEApplication::showMainWidget( QWidget* wid, bool b) { |
396 | d->show(wid, b ); | 400 | d->show(wid, b ); |
397 | } | 401 | } |
398 | void QPEApplication::showMainDocumentWidget( QWidget* mw, bool m) { | 402 | void QPEApplication::showMainDocumentWidget( QWidget* mw, bool m) { |
399 | if ( mw && argc() == 2 ) | 403 | if ( mw && argc() == 2 ) |
400 | Global::setDocument( mw, QString::fromUtf8(argv()[1] ) ); | 404 | Global::setDocument( mw, QString::fromUtf8(argv()[1] ) ); |
401 | 405 | ||
402 | d->show(mw, m ); | 406 | d->show(mw, m ); |
403 | } | 407 | } |
404 | void QPEApplication::showDialog( QDialog* d, bool nomax ) { | 408 | void QPEApplication::showDialog( QDialog* d, bool nomax ) { |
405 | QSize sh = d->sizeHint(); | 409 | QSize sh = d->sizeHint(); |
406 | int w = QMAX(sh.width(),d->width()); | 410 | int w = QMAX(sh.width(),d->width()); |
407 | int h = QMAX(sh.height(),d->height()); | 411 | int h = QMAX(sh.height(),d->height()); |
408 | if ( !nomax | 412 | if ( !nomax |
409 | && ( w > qApp->desktop()->width()*3/4 | 413 | && ( w > qApp->desktop()->width()*3/4 |
410 | || h > qApp->desktop()->height()*3/4 ) ) | 414 | || h > qApp->desktop()->height()*3/4 ) ) |
411 | { | 415 | { |
412 | d->showMaximized(); | 416 | d->showMaximized(); |
413 | } else { | 417 | } else { |
414 | d->resize(w,h); | 418 | d->resize(w,h); |
415 | d->show(); | 419 | d->show(); |
416 | } | 420 | } |
417 | } | 421 | } |
418 | int QPEApplication::execDialog( QDialog* d, bool nomax) { | 422 | int QPEApplication::execDialog( QDialog* d, bool nomax) { |
419 | showDialog(d,nomax); | 423 | showDialog(d,nomax); |
420 | return d->exec(); | 424 | return d->exec(); |
421 | } | 425 | } |
422 | void QPEApplication::setKeepRunning() { | 426 | void QPEApplication::setKeepRunning() { |
423 | if ( qApp && qApp->inherits( "QPEApplication" ) ) { | 427 | if ( qApp && qApp->inherits( "QPEApplication" ) ) { |
424 | QPEApplication * qpeApp = ( QPEApplication* ) qApp; | 428 | QPEApplication * qpeApp = ( QPEApplication* ) qApp; |
425 | qpeApp->d->keep_running = TRUE; | 429 | qpeApp->d->keep_running = TRUE; |
426 | } | 430 | } |
427 | } | 431 | } |
428 | bool QPEApplication::keepRunning()const { | 432 | bool QPEApplication::keepRunning()const { |
429 | return d->keep_running; | 433 | return d->keep_running; |
430 | } | 434 | } |
431 | bool QPEApplication::keyboardGrabbed()const { | 435 | bool QPEApplication::keyboardGrabbed()const { |
432 | return d->kbgrabber; | 436 | return d->kbgrabber; |
433 | } | 437 | } |
434 | int QPEApplication::exec() { | 438 | int QPEApplication::exec() { |
435 | /* now send the QCOP stuff gotten from the file */ | 439 | /* now send the QCOP stuff gotten from the file */ |
436 | d->sendQCopQ(); | 440 | d->sendQCopQ(); |
437 | 441 | ||
438 | if ( d->keep_running ) | 442 | if ( d->keep_running ) { |
439 | return QApplication::exec(); | 443 | qWarning("going to exec"); |
444 | int a = QApplication::exec(); | ||
445 | qWarning("left"); | ||
446 | return a; | ||
447 | } | ||
440 | 448 | ||
441 | { | 449 | { |
442 | QCopEnvelope e( "QPE/System", "closing(QString)" ); | 450 | QCopEnvelope e( "QPE/System", "closing(QString)" ); |
443 | e << d->appName; | 451 | e << d->appName; |
444 | } | 452 | } |
453 | qWarning("processing events!"); | ||
445 | processEvents(); | 454 | processEvents(); |
446 | return 0; | 455 | return 0; |
447 | } | 456 | } |
448 | void QPEApplication::internalSetStyle( const QString& ) { | 457 | void QPEApplication::internalSetStyle( const QString& ) { |
449 | 458 | ||
450 | } | 459 | } |
460 | void QPEApplication::systemMessage( const QCString&, const QByteArray& ) { | ||
461 | |||
462 | } | ||
463 | void QPEApplication::pidMessage( const QCString&, const QByteArray& ) { | ||
464 | |||
465 | } | ||
466 | void QPEApplication::timerEvent( QTimerEvent* e ) { | ||
467 | if ( e->timerId() == d->presstimer && d->presswidget ) { | ||
468 | // Right pressed | ||
469 | postEvent( d->presswidget, | ||
470 | new QMouseEvent( QEvent::MouseButtonPress, d->presspos, | ||
471 | RightButton, LeftButton ) ); | ||
472 | killTimer( d->presstimer ); | ||
473 | d->presstimer = 0; | ||
474 | } | ||
475 | } | ||
476 | |||
477 | // InputMethods Hints | ||
478 | namespace { | ||
479 | static QPtrDict<void>* inputMethodDict = 0; | ||
480 | static void createInputMethodDict(){ | ||
481 | if ( !inputMethodDict ) | ||
482 | inputMethodDict = new QPtrDict<void>; | ||
483 | } | ||
484 | |||
485 | static QPtrDict<void>* stylusDict = 0; | ||
486 | static void createDict() { | ||
487 | if ( !stylusDict ) | ||
488 | stylusDict = new QPtrDict<void>; | ||
489 | } | ||
490 | }; | ||
491 | |||
492 | void QPEApplication::setInputMethodHint( QWidget* w, InputMethodHint mode ) { | ||
493 | createInputMethodDict(); | ||
494 | if ( mode == Normal ) { | ||
495 | inputMethodDict->remove | ||
496 | ( w ); | ||
497 | }else { | ||
498 | inputMethodDict->insert( w, ( void* ) mode ); | ||
499 | } | ||
500 | } | ||
501 | QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget* w) { | ||
502 | if ( inputMethodDict && w ) | ||
503 | return ( InputMethodHint ) ( int ) inputMethodDict->find( w ); | ||
504 | return Normal; | ||
505 | } | ||
451 | 506 | ||
452 | 507 | ||
508 | void QPEApplication::removeSenderFromStylusDict() { | ||
509 | stylusDict->remove( ( void* ) sender() ); | ||
510 | if ( d->presswidget == sender() ) | ||
511 | d->presswidget = 0; | ||
512 | } | ||
513 | void QPEApplication::setStylusOperation( QWidget* w, StylusMode mode) { | ||
514 | createDict(); | ||
515 | if ( mode == LeftOnly ) { | ||
516 | stylusDict->remove | ||
517 | ( w ); | ||
518 | w->removeEventFilter( qApp ); | ||
519 | }else { | ||
520 | stylusDict->insert( w, ( void* ) mode ); | ||
521 | connect( w, SIGNAL( destroyed() ), qApp, SLOT( removeSenderFromStylusDict() ) ); | ||
522 | w->installEventFilter( qApp ); | ||
523 | } | ||
524 | } | ||
525 | QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget* w) { | ||
526 | if ( stylusDict ) | ||
527 | return ( StylusMode ) ( int ) stylusDict->find( w ); | ||
528 | return LeftOnly; | ||
529 | } | ||
530 | |||
531 | // eventFilter...... | ||
532 | bool QPEApplication::eventFilter( QObject* o, QEvent* e ) { | ||
533 | if ( stylusDict && e->type() >= QEvent::MouseButtonPress && e->type() <= QEvent::MouseMove ) { | ||
534 | QMouseEvent * me = ( QMouseEvent* ) e; | ||
535 | StylusMode mode = (StylusMode)(int)stylusDict->find(o); | ||
536 | switch (mode) { | ||
537 | case RightOnHold: | ||
538 | switch ( me->type() ) { | ||
539 | case QEvent::MouseButtonPress: | ||
540 | if ( me->button() == LeftButton ) { | ||
541 | d->presstimer = startTimer(500); // #### pref. | ||
542 | d->presswidget = (QWidget*)o; | ||
543 | d->presspos = me->pos(); | ||
544 | d->rightpressed = FALSE; | ||
545 | } | ||
546 | break; | ||
547 | case QEvent::MouseMove: | ||
548 | if (d->presstimer && (me->pos() - d->presspos).manhattanLength() > 8) { | ||
549 | killTimer(d->presstimer); | ||
550 | d->presstimer = 0; | ||
551 | } | ||
552 | break; | ||
553 | case QEvent::MouseButtonRelease: | ||
554 | if ( me->button() == LeftButton ) { | ||
555 | if ( d->presstimer ) { | ||
556 | killTimer(d->presstimer); | ||
557 | d->presstimer = 0; | ||
558 | } | ||
559 | if ( d->rightpressed && d->presswidget ) { | ||
560 | // Right released | ||
561 | postEvent( d->presswidget, | ||
562 | new QMouseEvent( QEvent::MouseButtonRelease, me->pos(), | ||
563 | RightButton, LeftButton + RightButton ) ); | ||
564 | // Left released, off-widget | ||
565 | postEvent( d->presswidget, | ||
566 | new QMouseEvent( QEvent::MouseMove, QPoint( -1, -1), | ||
567 | LeftButton, LeftButton ) ); | ||
568 | postEvent( d->presswidget, | ||
569 | new QMouseEvent( QEvent::MouseButtonRelease, QPoint( -1, -1), | ||
570 | LeftButton, LeftButton ) ); | ||
571 | d->rightpressed = FALSE; | ||
572 | return TRUE; // don't send the real Left release | ||
573 | } | ||
574 | } | ||
575 | break; | ||
576 | default: | ||
577 | break; | ||
578 | } | ||
579 | break; | ||
580 | default: | ||
581 | ; | ||
582 | } | ||
583 | } | ||
584 | else if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ) { | ||
585 | QKeyEvent *ke = (QKeyEvent *)e; | ||
586 | if ( ke->key() == Key_Enter ) { | ||
587 | if ( o->isA( "QRadioButton" ) || o->isA( "QCheckBox" ) ) { | ||
588 | postEvent( o, new QKeyEvent( e->type(), Key_Space, ' ', | ||
589 | ke->state(), " ", ke->isAutoRepeat(), ke->count() ) ); | ||
590 | return TRUE; | ||
591 | } | ||
592 | } | ||
593 | } | ||
594 | return FALSE; | ||
595 | } | ||
596 | |||
597 | // Quit stuff | ||
598 | void QPEApplication::restart() { | ||
599 | |||
600 | } | ||
601 | void QPEApplication::shutdown() { | ||
602 | |||
603 | } | ||
604 | void QPEApplication::tryQuit() { | ||
605 | qWarning("TryQuit!!"); | ||
606 | if ( activeModalWidget() || strcmp( argv() [ 0 ], "embeddedkonsole" ) == 0 ) | ||
607 | return ; // Inside modal loop or konsole. Too hard to save state. | ||
608 | { | ||
609 | QCopEnvelope e( "QPE/System", "closing(QString)" ); | ||
610 | e << d->appName; | ||
611 | } | ||
612 | processEvents(); | ||
613 | |||
614 | quit(); | ||
615 | } | ||
616 | void QPEApplication::hideOrQuit() { | ||
617 | qWarning("hide or close"); | ||
618 | processEvents(); | ||
619 | qWarning("past processing"); | ||
620 | |||
621 | // If we are a preloaded application we don't actually quit, so emit | ||
622 | // a System message indicating we're quasi-closing. | ||
623 | if ( d->preloaded && d->qpe_main_widget ) | ||
624 | |||
625 | { | ||
626 | qWarning("hiding"); | ||
627 | QCopEnvelope e("QPE/System", "fastAppHiding(QString)" ); | ||
628 | e << d->appName; | ||
629 | d->qpe_main_widget->hide(); | ||
630 | } | ||
631 | else | ||
632 | quit(); | ||
633 | } | ||
453 | 634 | ||
454 | #if defined(QT_QWS_IPAQ) || defined(QT_QWS_EBX) | 635 | #if defined(QT_QWS_IPAQ) || defined(QT_QWS_EBX) |
455 | 636 | ||
456 | // The libraries with the skiff package (and possibly others) have | 637 | // The libraries with the skiff package (and possibly others) have |
457 | // completely useless implementations of builtin new and delete that | 638 | // completely useless implementations of builtin new and delete that |
458 | // use about 50% of your CPU. Here we revert to the simple libc | 639 | // use about 50% of your CPU. Here we revert to the simple libc |
459 | // functions. | 640 | // functions. |
460 | 641 | ||
461 | void* operator new[]( size_t size ) | 642 | void* operator new[]( size_t size ) |
462 | { | 643 | { |
463 | return malloc( size ); | 644 | return malloc( size ); |
464 | } | 645 | } |
465 | 646 | ||
466 | void* operator new( size_t size ) | 647 | void* operator new( size_t size ) |
467 | { | 648 | { |
468 | return malloc( size ); | 649 | return malloc( size ); |
469 | } | 650 | } |
470 | 651 | ||
471 | void operator delete[]( void* p ) | 652 | void operator delete[]( void* p ) |
472 | { | 653 | { |
473 | free( p ); | 654 | free( p ); |
474 | } | 655 | } |
475 | 656 | ||
476 | void operator delete[]( void* p, size_t /*size*/ ) | 657 | void operator delete[]( void* p, size_t /*size*/ ) |