-rw-r--r-- | library/qpeapplication.cpp | 76 |
1 files changed, 41 insertions, 35 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp index 187a7e2..8448352 100644 --- a/library/qpeapplication.cpp +++ b/library/qpeapplication.cpp | |||
@@ -482,68 +482,68 @@ static void setScreenSaverInterval( int interval ) | |||
482 | setScreenSaverIntervals( -1, -1, interval ); | 482 | setScreenSaverIntervals( -1, -1, interval ); |
483 | } | 483 | } |
484 | 484 | ||
485 | 485 | ||
486 | /*! | 486 | /*! |
487 | \class QPEApplication qpeapplication.h | 487 | \class QPEApplication qpeapplication.h |
488 | \brief The QPEApplication class implements various system services | 488 | \brief The QPEApplication class implements various system services |
489 | that are available to all Qtopia applications. | 489 | that are available to all Qtopia applications. |
490 | 490 | ||
491 | Simply by using QPEApplication instead of QApplication, a plain Qt | 491 | Simply by using QPEApplication instead of QApplication, a plain Qt |
492 | application becomes a Qtopia application. It automatically follows | 492 | application becomes a Qtopia application. It automatically follows |
493 | style changes, quits and raises, and in the | 493 | style changes, quits and raises, and in the |
494 | case of \link docwidget.html document-oriented\endlink applications, | 494 | case of \link docwidget.html document-oriented\endlink applications, |
495 | changes the current displayed document in response to the environment. | 495 | changes the current displayed document in response to the environment. |
496 | */ | 496 | */ |
497 | 497 | ||
498 | /*! | 498 | /*! |
499 | \fn void QPEApplication::clientMoused() | 499 | \fn void QPEApplication::clientMoused() |
500 | 500 | ||
501 | \internal | 501 | \internal |
502 | */ | 502 | */ |
503 | 503 | ||
504 | /*! | 504 | /*! |
505 | \fn void QPEApplication::timeChanged(); | 505 | \fn void QPEApplication::timeChanged(); |
506 | 506 | ||
507 | This signal is emitted when the time jumps forward or backwards | 507 | This signal is emitted when the time jumps forward or backwards |
508 | by more than the normal passage of time. | 508 | by more than the normal passage of time. |
509 | */ | 509 | */ |
510 | 510 | ||
511 | /*! | 511 | /*! |
512 | \fn void QPEApplication::clockChanged( bool ampm ); | 512 | \fn void QPEApplication::clockChanged( bool ampm ); |
513 | 513 | ||
514 | This signal is emitted when the user changes the style | 514 | This signal is emitted when the user changes the style |
515 | of clock. If \a ampm is TRUE, the user wants a 12-hour | 515 | of clock. If \a ampm is TRUE, the user wants a 12-hour |
516 | AM/PM close, otherwise, they want a 24-hour clock. | 516 | AM/PM close, otherwise, they want a 24-hour clock. |
517 | */ | 517 | */ |
518 | 518 | ||
519 | /*! | 519 | /*! |
520 | \fn void QPEApplication::appMessage( const QCString& msg, const QByteArray& data ) | 520 | \fn void QPEApplication::appMessage( const QCString& msg, const QByteArray& data ) |
521 | 521 | ||
522 | This signal is emitted when a message is received on the | 522 | This signal is emitted when a message is received on the |
523 | QPE/Application/<i>appname</i> QCop channel for this application. | 523 | QPE/Application/<i>appname</i> QCop channel for this application. |
524 | 524 | ||
525 | The slot to which you connect this signal uses \a msg and \a data | 525 | The slot to which you connect this signal uses \a msg and \a data |
526 | in the following way: | 526 | in the following way: |
527 | 527 | ||
528 | \code | 528 | \code |
529 | void MyWidget::receive( const QCString& msg, const QByteArray& data ) | 529 | void MyWidget::receive( const QCString& msg, const QByteArray& data ) |
530 | { | 530 | { |
531 | QDataStream stream( data, IO_ReadOnly ); | 531 | QDataStream stream( data, IO_ReadOnly ); |
532 | if ( msg == "someMessage(int,int,int)" ) { | 532 | if ( msg == "someMessage(int,int,int)" ) { |
533 | int a,b,c; | 533 | int a,b,c; |
534 | stream >> a >> b >> c; | 534 | stream >> a >> b >> c; |
535 | ... | 535 | ... |
536 | } else if ( msg == "otherMessage(QString)" ) { | 536 | } else if ( msg == "otherMessage(QString)" ) { |
537 | ... | 537 | ... |
538 | } | 538 | } |
539 | } | 539 | } |
540 | \endcode | 540 | \endcode |
541 | 541 | ||
542 | \sa qcop.html | 542 | \sa qcop.html |
543 | */ | 543 | */ |
544 | 544 | ||
545 | /*! | 545 | /*! |
546 | Constructs a QPEApplication just as you would construct | 546 | Constructs a QPEApplication just as you would construct |
547 | a QApplication, passing \a argc, \a argv, and \a t. | 547 | a QApplication, passing \a argc, \a argv, and \a t. |
548 | */ | 548 | */ |
549 | QPEApplication::QPEApplication( int & argc, char **argv, Type t ) | 549 | QPEApplication::QPEApplication( int & argc, char **argv, Type t ) |
@@ -638,34 +638,40 @@ QPEApplication::QPEApplication( int & argc, char **argv, Type t ) | |||
638 | 638 | ||
639 | trans = new QTranslator( this ); | 639 | trans = new QTranslator( this ); |
640 | tfn = qpeDir() + "/i18n/" + lang + "/" + d->appName + ".qm"; | 640 | tfn = qpeDir() + "/i18n/" + lang + "/" + d->appName + ".qm"; |
641 | if ( trans->load( tfn ) ) | 641 | if ( trans->load( tfn ) ) |
642 | installTranslator( trans ); | 642 | installTranslator( trans ); |
643 | else | 643 | else |
644 | delete trans; | 644 | delete trans; |
645 | 645 | ||
646 | //###language/font hack; should look it up somewhere | 646 | /* |
647 | if ( lang == "ja" || lang == "zh_CN" || lang == "zh_TW" || lang == "ko" ) { | 647 | * not required. if using one of these languages, you might as well install |
648 | QFont fn = FontManager::unicodeFont( FontManager::Proportional ); | 648 | * a custom font. |
649 | setFont( fn ); | 649 | |
650 | } | 650 | //###language/font hack; should look it up somewhere |
651 | else { | 651 | if ( lang == "ja" || lang == "zh_CN" || lang == "zh_TW" || lang == "ko" ) { |
652 | Config config( "qpe" ); | 652 | QFont fn = FontManager::unicodeFont( FontManager::Proportional ); |
653 | setFont( fn ); | ||
654 | } | ||
655 | |||
656 | else { | ||
657 | */ | ||
658 | Config config( "qpe" ); | ||
653 | config.setGroup( "Appearance" ); | 659 | config.setGroup( "Appearance" ); |
654 | QString familyStr = config.readEntry( "FontFamily", "helvetica" ); | 660 | QString familyStr = config.readEntry( "FontFamily", "helvetica" ); |
655 | QString styleStr = config.readEntry( "FontStyle", "Regular" ); | 661 | QString styleStr = config.readEntry( "FontStyle", "Regular" ); |
656 | QString sizeStr = config.readEntry( "FontSize", "10" ); | 662 | QString sizeStr = config.readEntry( "FontSize", "10" ); |
657 | QString charSetStr = config.readEntry( "FontCharSet", QString::null ); | 663 | QString charSetStr = config.readEntry( "FontCharSet", QString::null ); |
658 | bool ok; | 664 | bool ok; |
659 | int i_size = sizeStr.toInt( &ok, 10 ); | 665 | int i_size = sizeStr.toInt( &ok, 10 ); |
660 | FontDatabase fdb; | 666 | FontDatabase fdb; |
661 | QFont selectedFont = fdb.font( familyStr, styleStr, i_size, charSetStr ); | 667 | QFont selectedFont = fdb.font( familyStr, styleStr, i_size, charSetStr ); |
662 | setFont( selectedFont ); | 668 | setFont( selectedFont ); |
663 | } | 669 | //} |
664 | } | 670 | } |
665 | 671 | ||
666 | #endif | 672 | #endif |
667 | 673 | ||
668 | applyStyle(); | 674 | applyStyle(); |
669 | 675 | ||
670 | if ( type() == GuiServer ) { | 676 | if ( type() == GuiServer ) { |
671 | setScreenSaverInterval( -1 ); | 677 | setScreenSaverInterval( -1 ); |
@@ -688,38 +694,38 @@ static void createInputMethodDict() | |||
688 | { | 694 | { |
689 | if ( !inputMethodDict ) | 695 | if ( !inputMethodDict ) |
690 | inputMethodDict = new QPtrDict<void>; | 696 | inputMethodDict = new QPtrDict<void>; |
691 | } | 697 | } |
692 | 698 | ||
693 | /*! | 699 | /*! |
694 | Returns the currently set hint to the system as to whether | 700 | Returns the currently set hint to the system as to whether |
695 | \a w has any use for text input methods. | 701 | \a w has any use for text input methods. |
696 | 702 | ||
697 | \sa setInputMethodHint() | 703 | \sa setInputMethodHint() |
698 | */ | 704 | */ |
699 | QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w ) | 705 | QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w ) |
700 | { | 706 | { |
701 | if ( inputMethodDict && w ) | 707 | if ( inputMethodDict && w ) |
702 | return ( InputMethodHint ) ( int ) inputMethodDict->find( w ); | 708 | return ( InputMethodHint ) ( int ) inputMethodDict->find( w ); |
703 | return Normal; | 709 | return Normal; |
704 | } | 710 | } |
705 | 711 | ||
706 | /*! | 712 | /*! |
707 | \enum QPEApplication::InputMethodHint | 713 | \enum QPEApplication::InputMethodHint |
708 | 714 | ||
709 | \value Normal the application sometimes needs text input (the default). | 715 | \value Normal the application sometimes needs text input (the default). |
710 | \value AlwaysOff the application never needs text input. | 716 | \value AlwaysOff the application never needs text input. |
711 | \value AlwaysOn the application always needs text input. | 717 | \value AlwaysOn the application always needs text input. |
712 | */ | 718 | */ |
713 | 719 | ||
714 | /*! | 720 | /*! |
715 | Hints to the system that \a w has use for text input methods | 721 | Hints to the system that \a w has use for text input methods |
716 | as specified by \a mode. | 722 | as specified by \a mode. |
717 | 723 | ||
718 | \sa inputMethodHint() | 724 | \sa inputMethodHint() |
719 | */ | 725 | */ |
720 | void QPEApplication::setInputMethodHint( QWidget * w, InputMethodHint mode ) | 726 | void QPEApplication::setInputMethodHint( QWidget * w, InputMethodHint mode ) |
721 | { | 727 | { |
722 | createInputMethodDict(); | 728 | createInputMethodDict(); |
723 | if ( mode == Normal ) { | 729 | if ( mode == Normal ) { |
724 | inputMethodDict->remove | 730 | inputMethodDict->remove |
725 | ( w ); | 731 | ( w ); |
@@ -1264,35 +1270,35 @@ static bool setWidgetCaptionFromAppName( QWidget* /*mw*/, const QString& /*appNa | |||
1264 | { | 1270 | { |
1265 | /* | 1271 | /* |
1266 | // This works but disable it for now until it is safe to apply | 1272 | // This works but disable it for now until it is safe to apply |
1267 | // What is does is scan the .desktop files of all the apps for | 1273 | // What is does is scan the .desktop files of all the apps for |
1268 | // the applnk that has the corresponding argv[0] as this program | 1274 | // the applnk that has the corresponding argv[0] as this program |
1269 | // then it uses the name stored in the .desktop file as the caption | 1275 | // then it uses the name stored in the .desktop file as the caption |
1270 | // for the main widget. This saves duplicating translations for | 1276 | // for the main widget. This saves duplicating translations for |
1271 | // the app name in the program and in the .desktop files. | 1277 | // the app name in the program and in the .desktop files. |
1272 | 1278 | ||
1273 | AppLnkSet apps( appsPath ); | 1279 | AppLnkSet apps( appsPath ); |
1274 | 1280 | ||
1275 | QList<AppLnk> appsList = apps.children(); | 1281 | QList<AppLnk> appsList = apps.children(); |
1276 | for ( QListIterator<AppLnk> it(appsList); it.current(); ++it ) { | 1282 | for ( QListIterator<AppLnk> it(appsList); it.current(); ++it ) { |
1277 | if ( (*it)->exec() == appName ) { | 1283 | if ( (*it)->exec() == appName ) { |
1278 | mw->setCaption( (*it)->name() ); | 1284 | mw->setCaption( (*it)->name() ); |
1279 | return TRUE; | 1285 | return TRUE; |
1280 | } | 1286 | } |
1281 | } | 1287 | } |
1282 | */ | 1288 | */ |
1283 | return FALSE; | 1289 | return FALSE; |
1284 | } | 1290 | } |
1285 | 1291 | ||
1286 | 1292 | ||
1287 | /*! | 1293 | /*! |
1288 | Sets \a mw as the mainWidget() and shows it. For small windows, | 1294 | Sets \a mw as the mainWidget() and shows it. For small windows, |
1289 | consider passing TRUE for \a nomaximize rather than the default FALSE. | 1295 | consider passing TRUE for \a nomaximize rather than the default FALSE. |
1290 | 1296 | ||
1291 | \sa showMainDocumentWidget() | 1297 | \sa showMainDocumentWidget() |
1292 | */ | 1298 | */ |
1293 | void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize ) | 1299 | void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize ) |
1294 | { | 1300 | { |
1295 | setWidgetCaptionFromAppName( mw, d->appName, qpeDir() + "apps" ); | 1301 | setWidgetCaptionFromAppName( mw, d->appName, qpeDir() + "apps" ); |
1296 | 1302 | ||
1297 | d->nomaximize = nomaximize; | 1303 | d->nomaximize = nomaximize; |
1298 | d->qpe_main_widget = mw; | 1304 | d->qpe_main_widget = mw; |
@@ -1317,22 +1323,22 @@ void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize ) | |||
1317 | 1323 | ||
1318 | mw->show(); | 1324 | mw->show(); |
1319 | } | 1325 | } |
1320 | } | 1326 | } |
1321 | 1327 | ||
1322 | /*! | 1328 | /*! |
1323 | Sets \a mw as the mainWidget() and shows it. For small windows, | 1329 | Sets \a mw as the mainWidget() and shows it. For small windows, |
1324 | consider passing TRUE for \a nomaximize rather than the default FALSE. | 1330 | consider passing TRUE for \a nomaximize rather than the default FALSE. |
1325 | 1331 | ||
1326 | This calls designates the application as | 1332 | This calls designates the application as |
1327 | a \link docwidget.html document-oriented\endlink application. | 1333 | a \link docwidget.html document-oriented\endlink application. |
1328 | 1334 | ||
1329 | The \a mw widget must have a slot: setDocument(const QString&). | 1335 | The \a mw widget must have a slot: setDocument(const QString&). |
1330 | 1336 | ||
1331 | \sa showMainWidget() | 1337 | \sa showMainWidget() |
1332 | */ | 1338 | */ |
1333 | void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize ) | 1339 | void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize ) |
1334 | { | 1340 | { |
1335 | setWidgetCaptionFromAppName( mw, d->appName, qpeDir() + "apps" ); | 1341 | setWidgetCaptionFromAppName( mw, d->appName, qpeDir() + "apps" ); |
1336 | 1342 | ||
1337 | if ( mw && argc() == 2 ) | 1343 | if ( mw && argc() == 2 ) |
1338 | Global::setDocument( mw, QString::fromUtf8( argv() [ 1 ] ) ); | 1344 | Global::setDocument( mw, QString::fromUtf8( argv() [ 1 ] ) ); |
@@ -1363,31 +1369,31 @@ void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize ) | |||
1363 | 1369 | ||
1364 | 1370 | ||
1365 | /*! | 1371 | /*! |
1366 | Sets that the application should continue running after processing | 1372 | Sets that the application should continue running after processing |
1367 | qcop messages. Normally if an application is started via a qcop message, | 1373 | qcop messages. Normally if an application is started via a qcop message, |
1368 | the application will process the qcop message and then quit. If while | 1374 | the application will process the qcop message and then quit. If while |
1369 | processing the qcop message it calls this function, then the application | 1375 | processing the qcop message it calls this function, then the application |
1370 | will show and start proper once it has finished processing qcop messages. | 1376 | will show and start proper once it has finished processing qcop messages. |
1371 | 1377 | ||
1372 | \sa keepRunning() | 1378 | \sa keepRunning() |
1373 | */ | 1379 | */ |
1374 | void QPEApplication::setKeepRunning() | 1380 | void QPEApplication::setKeepRunning() |
1375 | { | 1381 | { |
1376 | if ( qApp && qApp->inherits( "QPEApplication" ) ) { | 1382 | if ( qApp && qApp->inherits( "QPEApplication" ) ) { |
1377 | QPEApplication * qpeApp = ( QPEApplication* ) qApp; | 1383 | QPEApplication * qpeApp = ( QPEApplication* ) qApp; |
1378 | qpeApp->d->keep_running = TRUE; | 1384 | qpeApp->d->keep_running = TRUE; |
1379 | } | 1385 | } |
1380 | } | 1386 | } |
1381 | 1387 | ||
1382 | /*! | 1388 | /*! |
1383 | Returns whether the application will quit after processing the current | 1389 | Returns whether the application will quit after processing the current |
1384 | list of qcop messages. | 1390 | list of qcop messages. |
1385 | 1391 | ||
1386 | \sa setKeepRunning() | 1392 | \sa setKeepRunning() |
1387 | */ | 1393 | */ |
1388 | bool QPEApplication::keepRunning() const | 1394 | bool QPEApplication::keepRunning() const |
1389 | { | 1395 | { |
1390 | return d->keep_running; | 1396 | return d->keep_running; |
1391 | } | 1397 | } |
1392 | 1398 | ||
1393 | /*! | 1399 | /*! |
@@ -1459,17 +1465,17 @@ void QPEApplication::internalSetStyle( const QString &style ) | |||
1459 | delete lastlib; | 1465 | delete lastlib; |
1460 | } | 1466 | } |
1461 | lastlib = lib; | 1467 | lastlib = lib; |
1462 | } | 1468 | } |
1463 | else { | 1469 | else { |
1464 | if ( iface ) | 1470 | if ( iface ) |
1465 | iface-> release ( ); | 1471 | iface-> release ( ); |
1466 | delete lib; | 1472 | delete lib; |
1467 | 1473 | ||
1468 | setStyle ( new QPEStyle ( )); | 1474 | setStyle ( new QPEStyle ( )); |
1469 | } | 1475 | } |
1470 | 1476 | ||
1471 | #if 0 | 1477 | #if 0 |
1472 | // style == "Liquid Style (libliquid.so)" (or "Windows XP (libxp.so)" | 1478 | // style == "Liquid Style (libliquid.so)" (or "Windows XP (libxp.so)" |
1473 | 1479 | ||
1474 | int p2 = style. findRev ( ']' ); | 1480 | int p2 = style. findRev ( ']' ); |
1475 | int p1 = style. findRev ( '[' ); | 1481 | int p1 = style. findRev ( '[' ); |
@@ -1559,40 +1565,40 @@ static QPtrDict<void>* stylusDict = 0; | |||
1559 | static void createDict() | 1565 | static void createDict() |
1560 | { | 1566 | { |
1561 | if ( !stylusDict ) | 1567 | if ( !stylusDict ) |
1562 | stylusDict = new QPtrDict<void>; | 1568 | stylusDict = new QPtrDict<void>; |
1563 | } | 1569 | } |
1564 | 1570 | ||
1565 | /*! | 1571 | /*! |
1566 | Returns the current StylusMode for \a w. | 1572 | Returns the current StylusMode for \a w. |
1567 | 1573 | ||
1568 | \sa setStylusOperation() | 1574 | \sa setStylusOperation() |
1569 | */ | 1575 | */ |
1570 | QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget * w ) | 1576 | QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget * w ) |
1571 | { | 1577 | { |
1572 | if ( stylusDict ) | 1578 | if ( stylusDict ) |
1573 | return ( StylusMode ) ( int ) stylusDict->find( w ); | 1579 | return ( StylusMode ) ( int ) stylusDict->find( w ); |
1574 | return LeftOnly; | 1580 | return LeftOnly; |
1575 | } | 1581 | } |
1576 | 1582 | ||
1577 | /*! | 1583 | /*! |
1578 | \enum QPEApplication::StylusMode | 1584 | \enum QPEApplication::StylusMode |
1579 | 1585 | ||
1580 | \value LeftOnly the stylus only generates LeftButton | 1586 | \value LeftOnly the stylus only generates LeftButton |
1581 | events (the default). | 1587 | events (the default). |
1582 | \value RightOnHold the stylus generates RightButton events | 1588 | \value RightOnHold the stylus generates RightButton events |
1583 | if the user uses the press-and-hold gesture. | 1589 | if the user uses the press-and-hold gesture. |
1584 | 1590 | ||
1585 | See setStylusOperation(). | 1591 | See setStylusOperation(). |
1586 | */ | 1592 | */ |
1587 | 1593 | ||
1588 | /*! | 1594 | /*! |
1589 | Causes \a w to receive mouse events according to \a mode. | 1595 | Causes \a w to receive mouse events according to \a mode. |
1590 | 1596 | ||
1591 | \sa stylusOperation() | 1597 | \sa stylusOperation() |
1592 | */ | 1598 | */ |
1593 | void QPEApplication::setStylusOperation( QWidget * w, StylusMode mode ) | 1599 | void QPEApplication::setStylusOperation( QWidget * w, StylusMode mode ) |
1594 | { | 1600 | { |
1595 | createDict(); | 1601 | createDict(); |
1596 | if ( mode == LeftOnly ) { | 1602 | if ( mode == LeftOnly ) { |
1597 | stylusDict->remove | 1603 | stylusDict->remove |
1598 | ( w ); | 1604 | ( w ); |
@@ -1715,17 +1721,17 @@ void QPEApplication::ungrabKeyboard() | |||
1715 | d->kbgrabber = 0; | 1721 | d->kbgrabber = 0; |
1716 | } | 1722 | } |
1717 | } | 1723 | } |
1718 | 1724 | ||
1719 | /*! | 1725 | /*! |
1720 | Grabs the keyboard such that the system's application launching | 1726 | Grabs the keyboard such that the system's application launching |
1721 | keys no longer work, and instead they are receivable by this | 1727 | keys no longer work, and instead they are receivable by this |
1722 | application. | 1728 | application. |
1723 | 1729 | ||
1724 | \sa ungrabKeyboard() | 1730 | \sa ungrabKeyboard() |
1725 | */ | 1731 | */ |
1726 | void QPEApplication::grabKeyboard() | 1732 | void QPEApplication::grabKeyboard() |
1727 | { | 1733 | { |
1728 | QPEApplicationData * d = ( ( QPEApplication* ) qApp ) ->d; | 1734 | QPEApplicationData * d = ( ( QPEApplication* ) qApp ) ->d; |
1729 | if ( qApp->type() == QApplication::GuiServer ) | 1735 | if ( qApp->type() == QApplication::GuiServer ) |
1730 | d->kbgrabber = 0; | 1736 | d->kbgrabber = 0; |
1731 | else { | 1737 | else { |