summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpeapplication.cpp76
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*/
549QPEApplication::QPEApplication( int & argc, char **argv, Type t ) 549QPEApplication::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*/
699QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w ) 705QPEApplication::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*/
720void QPEApplication::setInputMethodHint( QWidget * w, InputMethodHint mode ) 726void 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*/
1293void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize ) 1299void 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*/
1333void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize ) 1339void 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*/
1374void QPEApplication::setKeepRunning() 1380void 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*/
1388bool QPEApplication::keepRunning() const 1394bool 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;
1559static void createDict() 1565static 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*/
1570QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget * w ) 1576QPEApplication::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*/
1593void QPEApplication::setStylusOperation( QWidget * w, StylusMode mode ) 1599void 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*/
1726void QPEApplication::grabKeyboard() 1732void 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 {