summaryrefslogtreecommitdiff
path: root/library/qpeapplication.cpp
Unidiff
Diffstat (limited to 'library/qpeapplication.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpeapplication.cpp15
1 files changed, 7 insertions, 8 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index 6f2e43b..c7ef2b7 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -391,97 +391,97 @@ static void setMic( int t = 0, int percent = -1 )
391 391
392static void setBass( int t = 0, int percent = -1 ) 392static void setBass( int t = 0, int percent = -1 )
393{ 393{
394 switch ( t ) { 394 switch ( t ) {
395 case 0: { 395 case 0: {
396 Config cfg( "qpe" ); 396 Config cfg( "qpe" );
397 cfg.setGroup( "Volume" ); 397 cfg.setGroup( "Volume" );
398 if ( percent < 0 ) 398 if ( percent < 0 )
399 percent = cfg.readNumEntry( "BassPercent", 50 ); 399 percent = cfg.readNumEntry( "BassPercent", 50 );
400 400
401#ifndef QT_NO_SOUND 401#ifndef QT_NO_SOUND
402 int fd = 0; 402 int fd = 0;
403 int bass = percent; 403 int bass = percent;
404 if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) { 404 if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) {
405 ioctl( fd, MIXER_WRITE( SOUND_MIXER_BASS ), &bass ); 405 ioctl( fd, MIXER_WRITE( SOUND_MIXER_BASS ), &bass );
406 ::close( fd ); 406 ::close( fd );
407 } 407 }
408#endif 408#endif
409 } 409 }
410 break; 410 break;
411 } 411 }
412} 412}
413 413
414 414
415static void setTreble( int t = 0, int percent = -1 ) 415static void setTreble( int t = 0, int percent = -1 )
416{ 416{
417 switch ( t ) { 417 switch ( t ) {
418 case 0: { 418 case 0: {
419 Config cfg( "qpe" ); 419 Config cfg( "qpe" );
420 cfg.setGroup( "Volume" ); 420 cfg.setGroup( "Volume" );
421 if ( percent < 0 ) 421 if ( percent < 0 )
422 percent = cfg.readNumEntry( "TreblePercent", 50 ); 422 percent = cfg.readNumEntry( "TreblePercent", 50 );
423 423
424#ifndef QT_NO_SOUND 424#ifndef QT_NO_SOUND
425 int fd = 0; 425 int fd = 0;
426 int treble = percent; 426 int treble = percent;
427 if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) { 427 if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) {
428 ioctl( fd, MIXER_WRITE( SOUND_MIXER_TREBLE ), &treble ); 428 ioctl( fd, MIXER_WRITE( SOUND_MIXER_TREBLE ), &treble );
429 ::close( fd ); 429 ::close( fd );
430 } 430 }
431#endif 431#endif
432 } 432 }
433 break; 433 break;
434 } 434 }
435} 435}
436 436
437 437
438/** 438/**
439 \class QPEApplication 439 \class QPEApplication
440 \brief The QPEApplication class implements various system services 440 \brief The QPEApplication class implements various system services
441 that are available to all Qtopia applications. 441 that are available to all Qtopia applications.
442 442
443 Simply by using QPEApplication instead of QApplication, a standard Qt 443 Simply by using QPEApplication instead of QApplication, a standard Qt
444 application becomes a Qtopia application. It automatically follows 444 application becomes a Qtopia application. It automatically follows
445 style changes, quits and raises, and in the 445 style changes, quits and raises, and in the
446 case of \link docwidget.html document-oriented\endlink applications, 446 case of \link docwidget.html document-oriented\endlink applications,
447 changes the currently displayed document in response to the environment. 447 changes the currently displayed document in response to the environment.
448 448
449 To create a \link docwidget.html document-oriented\endlink 449 To create a \link docwidget.html document-oriented\endlink
450 application use showMainDocumentWidget(); to create a 450 application use showMainDocumentWidget(); to create a
451 non-document-oriented application use showMainWidget(). The 451 non-document-oriented application use showMainWidget(). The
452 keepRunning() function indicates whether the application will 452 keepRunning() function indicates whether the application will
453 continue running after it's processed the last \link qcop.html 453 continue running after it's processed the last \link qcop.html
454 QCop\endlink message. This can be changed using setKeepRunning(). 454 QCop\endlink message. This can be changed using setKeepRunning().
455 455
456 A variety of signals are emitted when certain events occur, for 456 A variety of signals are emitted when certain events occur, for
457 example, timeChanged(), clockChanged(), weekChanged(), 457 example, timeChanged(), clockChanged(), weekChanged(),
458 dateFormatChanged() and volumeChanged(). If the application receives 458 dateFormatChanged() and volumeChanged(). If the application receives
459 a \link qcop.html QCop\endlink message on the application's 459 a \link qcop.html QCop\endlink message on the application's
460 QPE/Application/\e{appname} channel, the appMessage() signal is 460 QPE/Application/\e{appname} channel, the appMessage() signal is
461 emitted. There are also flush() and reload() signals, which 461 emitted. There are also flush() and reload() signals, which
462 are emitted when synching begins and ends respectively - upon these 462 are emitted when synching begins and ends respectively - upon these
463 signals, the application should save and reload any data 463 signals, the application should save and reload any data
464 files that are involved in synching. Most of these signals will initially 464 files that are involved in synching. Most of these signals will initially
465 be received and unfiltered through the appMessage() signal. 465 be received and unfiltered through the appMessage() signal.
466 466
467 This class also provides a set of useful static functions. The 467 This class also provides a set of useful static functions. The
468 qpeDir() and documentDir() functions return the respective paths. 468 qpeDir() and documentDir() functions return the respective paths.
469 The grabKeyboard() and ungrabKeyboard() functions are used to 469 The grabKeyboard() and ungrabKeyboard() functions are used to
470 control whether the application takes control of the device's 470 control whether the application takes control of the device's
471 physical buttons (e.g. application launch keys). The stylus' mode of 471 physical buttons (e.g. application launch keys). The stylus' mode of
472 operation is set with setStylusOperation() and retrieved with 472 operation is set with setStylusOperation() and retrieved with
473 stylusOperation(). There are also setInputMethodHint() and 473 stylusOperation(). There are also setInputMethodHint() and
474 inputMethodHint() functions. 474 inputMethodHint() functions.
475 475
476 \ingroup qtopiaemb 476 \ingroup qtopiaemb
477*/ 477*/
478 478
479/*! 479/*!
480 \fn void QPEApplication::clientMoused() 480 \fn void QPEApplication::clientMoused()
481 481
482 \internal 482 \internal
483*/ 483*/
484 484
485/*! 485/*!
486 \fn void QPEApplication::timeChanged(); 486 \fn void QPEApplication::timeChanged();
487 This signal is emitted when the time changes outside the normal 487 This signal is emitted when the time changes outside the normal
@@ -690,120 +690,119 @@ QPEApplication::QPEApplication( int & argc, char **argv, Type t )
690#endif 690#endif
691#else 691#else
692 initApp( argc, argv ); 692 initApp( argc, argv );
693#endif 693#endif
694 // qwsSetDecoration( new QPEDecoration() ); 694 // qwsSetDecoration( new QPEDecoration() );
695 695
696#ifndef QT_NO_TRANSLATION 696#ifndef QT_NO_TRANSLATION
697 697
698 d->langs = Global::languageList(); 698 d->langs = Global::languageList();
699 for ( QStringList::ConstIterator it = d->langs.begin(); it != d->langs.end(); ++it ) { 699 for ( QStringList::ConstIterator it = d->langs.begin(); it != d->langs.end(); ++it ) {
700 QString lang = *it; 700 QString lang = *it;
701 701
702 installTranslation( lang + "/libopie.qm"); 702 installTranslation( lang + "/libopie.qm");
703 installTranslation( lang + "/libqpe.qm" ); 703 installTranslation( lang + "/libqpe.qm" );
704 installTranslation( lang + "/" + d->appName + ".qm" ); 704 installTranslation( lang + "/" + d->appName + ".qm" );
705 705
706 706
707 //###language/font hack; should look it up somewhere 707 //###language/font hack; should look it up somewhere
708#ifdef QWS 708#ifdef QWS
709 709
710 if ( lang == "ja" || lang == "zh_CN" || lang == "zh_TW" || lang == "ko" ) { 710 if ( lang == "ja" || lang == "zh_CN" || lang == "zh_TW" || lang == "ko" ) {
711 QFont fn = FontManager::unicodeFont( FontManager::Proportional ); 711 QFont fn = FontManager::unicodeFont( FontManager::Proportional );
712 setFont( fn ); 712 setFont( fn );
713 } 713 }
714#endif 714#endif
715 } 715 }
716#endif 716#endif
717 717
718 applyStyle(); 718 applyStyle();
719 719
720 if ( type() == GuiServer ) { 720 if ( type() == GuiServer ) {
721 setVolume(); 721 setVolume();
722 } 722 }
723 723
724 installEventFilter( this ); 724 installEventFilter( this );
725 725
726 QPEMenuToolFocusManager::initialize(); 726 QPEMenuToolFocusManager::initialize();
727 727
728#ifdef QT_NO_QWS_CURSOR 728#ifdef QT_NO_QWS_CURSOR
729 // if we have no cursor, probably don't want tooltips 729 // if we have no cursor, probably don't want tooltips
730 QToolTip::setEnabled( FALSE ); 730 QToolTip::setEnabled( FALSE );
731#endif 731#endif
732} 732}
733 733
734 734
735#ifdef QTOPIA_INTERNAL_INITAPP 735#ifdef QTOPIA_INTERNAL_INITAPP
736void QPEApplication::initApp( int argc, char **argv ) 736void QPEApplication::initApp( int argc, char **argv )
737{ 737{
738 bool initial = pidChannel; // was set to 0 in the initializer
739 delete pidChannel; 738 delete pidChannel;
740 d->keep_running = TRUE; 739 d->keep_running = TRUE;
741 d->preloaded = FALSE; 740 d->preloaded = FALSE;
742 d->forceshow = FALSE; 741 d->forceshow = FALSE;
743 742
744 QCString channel = QCString(argv[0]); 743 QCString channel = QCString(argv[0]);
745 744
746 channel.replace(QRegExp(".*/"),""); 745 channel.replace(QRegExp(".*/"),"");
747 d->appName = channel; 746 d->appName = channel;
748 747
749 #if QT_VERSION > 235 748 #if QT_VERSION > 235
750 qt_fbdpy->setIdentity( channel ); // In Qt/E 2.3.6 749 qt_fbdpy->setIdentity( channel ); // In Qt/E 2.3.6
751 #endif 750 #endif
752 751
753 channel = "QPE/Application/" + channel; 752 channel = "QPE/Application/" + channel;
754 pidChannel = new QCopChannel( channel, this); 753 pidChannel = new QCopChannel( channel, this);
755 connect( pidChannel, SIGNAL(received(const QCString &, const QByteArray &)), 754 connect( pidChannel, SIGNAL(received(const QCString &, const QByteArray &)),
756 this, SLOT(pidMessage(const QCString &, const QByteArray &))); 755 this, SLOT(pidMessage(const QCString &, const QByteArray &)));
757 756
758 if (!initial) { 757
759 processQCopFile(); 758
760 d->keep_running = d->qcopq.isEmpty(); 759 processQCopFile();
761 } 760 d->keep_running = d->qcopq.isEmpty();
762 761
763 for (int a=0; a<argc; a++) { 762 for (int a=0; a<argc; a++) {
764 if ( qstrcmp(argv[a],"-preload")==0 ) { 763 if ( qstrcmp(argv[a],"-preload")==0 ) {
765 argv[a] = argv[a+1]; 764 argv[a] = argv[a+1];
766 a++; 765 a++;
767 d->preloaded = TRUE; 766 d->preloaded = TRUE;
768 argc-=1; 767 argc-=1;
769 } else if ( qstrcmp(argv[a],"-preload-show")==0 ) { 768 } else if ( qstrcmp(argv[a],"-preload-show")==0 ) {
770 argv[a] = argv[a+1]; 769 argv[a] = argv[a+1];
771 a++; 770 a++;
772 d->preloaded = TRUE; 771 d->preloaded = TRUE;
773 d->forceshow = TRUE; 772 d->forceshow = TRUE;
774 argc-=1; 773 argc-=1;
775 } 774 }
776 } 775 }
777 776
778 /* overide stored arguments */ 777 /* overide stored arguments */
779 setArgs(argc, argv); 778 setArgs(argc, argv);
780 779
781 /* install translation here */ 780 /* install translation here */
782 for ( QStringList::ConstIterator it = d->langs.begin(); it != d->langs.end(); ++it ) 781 for ( QStringList::ConstIterator it = d->langs.begin(); it != d->langs.end(); ++it )
783 installTranslation( (*it) + "/" + d->appName + ".qm" ); 782 installTranslation( (*it) + "/" + d->appName + ".qm" );
784} 783}
785#endif 784#endif
786 785
787 786
788static QPtrDict<void>* inputMethodDict = 0; 787static QPtrDict<void>* inputMethodDict = 0;
789static void createInputMethodDict() 788static void createInputMethodDict()
790{ 789{
791 if ( !inputMethodDict ) 790 if ( !inputMethodDict )
792 inputMethodDict = new QPtrDict<void>; 791 inputMethodDict = new QPtrDict<void>;
793} 792}
794 793
795/*! 794/*!
796 Returns the currently set hint to the system as to whether 795 Returns the currently set hint to the system as to whether
797 widget \a w has any use for text input methods. 796 widget \a w has any use for text input methods.
798 797
799 798
800 \sa setInputMethodHint() InputMethodHint 799 \sa setInputMethodHint() InputMethodHint
801*/ 800*/
802QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w ) 801QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w )
803{ 802{
804 if ( inputMethodDict && w ) 803 if ( inputMethodDict && w )
805 return ( InputMethodHint ) ( int ) inputMethodDict->find( w ); 804 return ( InputMethodHint ) ( int ) inputMethodDict->find( w );
806 return Normal; 805 return Normal;
807} 806}
808 807
809/*! 808/*!
@@ -1526,118 +1525,118 @@ void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data)
1526 else if ( msg == "reload()" ) { 1525 else if ( msg == "reload()" ) {
1527 emit reload(); 1526 emit reload();
1528 } 1527 }
1529 else if ( msg == "setDocument(QString)" ) { 1528 else if ( msg == "setDocument(QString)" ) {
1530 d->keep_running = TRUE; 1529 d->keep_running = TRUE;
1531 QDataStream stream( data, IO_ReadOnly ); 1530 QDataStream stream( data, IO_ReadOnly );
1532 QString doc; 1531 QString doc;
1533 stream >> doc; 1532 stream >> doc;
1534 QWidget *mw = mainWidget(); 1533 QWidget *mw = mainWidget();
1535 if ( !mw ) 1534 if ( !mw )
1536 mw = d->qpe_main_widget; 1535 mw = d->qpe_main_widget;
1537 if ( mw ) 1536 if ( mw )
1538 Global::setDocument( mw, doc ); 1537 Global::setDocument( mw, doc );
1539 1538
1540 } else if ( msg == "QPEProcessQCop()" ) { 1539 } else if ( msg == "QPEProcessQCop()" ) {
1541 processQCopFile(); 1540 processQCopFile();
1542 d->sendQCopQ(); 1541 d->sendQCopQ();
1543 }else 1542 }else
1544 { 1543 {
1545 bool p = d->keep_running; 1544 bool p = d->keep_running;
1546 d->keep_running = FALSE; 1545 d->keep_running = FALSE;
1547 emit appMessage( msg, data); 1546 emit appMessage( msg, data);
1548 if ( d->keep_running ) { 1547 if ( d->keep_running ) {
1549 d->notbusysent = FALSE; 1548 d->notbusysent = FALSE;
1550 raiseAppropriateWindow(); 1549 raiseAppropriateWindow();
1551 if ( !p ) { 1550 if ( !p ) {
1552 // Tell the system we're still chugging along... 1551 // Tell the system we're still chugging along...
1553#ifndef QT_NO_COP 1552#ifndef QT_NO_COP
1554 QCopEnvelope e("QPE/System", "appRaised(QString)"); 1553 QCopEnvelope e("QPE/System", "appRaised(QString)");
1555 e << d->appName; 1554 e << d->appName;
1556#endif 1555#endif
1557 } 1556 }
1558 } 1557 }
1559 if ( p ) 1558 if ( p )
1560 d->keep_running = p; 1559 d->keep_running = p;
1561 } 1560 }
1562#endif 1561#endif
1563} 1562}
1564 1563
1565 1564
1566/*! 1565/*!
1567 Sets widget \a mw as the mainWidget() and shows it. For small windows, 1566 Sets widget \a mw as the mainWidget() and shows it. For small windows,
1568 consider passing TRUE for \a nomaximize rather than the default FALSE. 1567 consider passing TRUE for \a nomaximize rather than the default FALSE.
1569 1568
1570 \sa showMainDocumentWidget() 1569 \sa showMainDocumentWidget()
1571*/ 1570*/
1572void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize ) 1571void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize )
1573{ 1572{
1574 setMainWidget(mw); 1573 // setMainWidget(mw); this breaks FastLoading because lastWindowClose() would quit
1575 d->show(mw, nomaximize ); 1574 d->show(mw, nomaximize );
1576} 1575}
1577 1576
1578/*! 1577/*!
1579 Sets widget \a mw as the mainWidget() and shows it. For small windows, 1578 Sets widget \a mw as the mainWidget() and shows it. For small windows,
1580 consider passing TRUE for \a nomaximize rather than the default FALSE. 1579 consider passing TRUE for \a nomaximize rather than the default FALSE.
1581 1580
1582 This calls designates the application as 1581 This calls designates the application as
1583 a \link docwidget.html document-oriented\endlink application. 1582 a \link docwidget.html document-oriented\endlink application.
1584 1583
1585 The \a mw widget \e must have this slot: setDocument(const QString&). 1584 The \a mw widget \e must have this slot: setDocument(const QString&).
1586 1585
1587 \sa showMainWidget() 1586 \sa showMainWidget()
1588*/ 1587*/
1589void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize ) 1588void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize )
1590{ 1589{
1591 if ( mw && argc() == 2 ) 1590 if ( mw && argc() == 2 )
1592 Global::setDocument( mw, QString::fromUtf8(argv()[1]) ); 1591 Global::setDocument( mw, QString::fromUtf8(argv()[1]) );
1593 1592
1594 1593
1595 setMainWidget(mw); 1594 //setMainWidget(mw); see above
1596 d->show(mw, nomaximize ); 1595 d->show(mw, nomaximize );
1597} 1596}
1598 1597
1599 1598
1600/*! 1599/*!
1601 If an application is started via a \link qcop.html QCop\endlink 1600 If an application is started via a \link qcop.html QCop\endlink
1602 message, the application will process the \link qcop.html 1601 message, the application will process the \link qcop.html
1603 QCop\endlink message and then quit. If the application calls this 1602 QCop\endlink message and then quit. If the application calls this
1604 function while processing a \link qcop.html QCop\endlink message, 1603 function while processing a \link qcop.html QCop\endlink message,
1605 after processing its outstanding \link qcop.html QCop\endlink 1604 after processing its outstanding \link qcop.html QCop\endlink
1606 messages the application will start 'properly' and show itself. 1605 messages the application will start 'properly' and show itself.
1607 1606
1608 \sa keepRunning() 1607 \sa keepRunning()
1609*/ 1608*/
1610void QPEApplication::setKeepRunning() 1609void QPEApplication::setKeepRunning()
1611{ 1610{
1612 if ( qApp && qApp->inherits( "QPEApplication" ) ) { 1611 if ( qApp && qApp->inherits( "QPEApplication" ) ) {
1613 QPEApplication * qpeApp = ( QPEApplication* ) qApp; 1612 QPEApplication * qpeApp = ( QPEApplication* ) qApp;
1614 qpeApp->d->keep_running = TRUE; 1613 qpeApp->d->keep_running = TRUE;
1615 } 1614 }
1616} 1615}
1617 1616
1618/*! 1617/*!
1619 Returns TRUE if the application will quit after processing the 1618 Returns TRUE if the application will quit after processing the
1620 current list of qcop messages; otherwise returns FALSE. 1619 current list of qcop messages; otherwise returns FALSE.
1621 1620
1622 \sa setKeepRunning() 1621 \sa setKeepRunning()
1623*/ 1622*/
1624bool QPEApplication::keepRunning() const 1623bool QPEApplication::keepRunning() const
1625{ 1624{
1626 return d->keep_running; 1625 return d->keep_running;
1627} 1626}
1628 1627
1629/*! 1628/*!
1630 \internal 1629 \internal
1631*/ 1630*/
1632void QPEApplication::internalSetStyle( const QString &style ) 1631void QPEApplication::internalSetStyle( const QString &style )
1633{ 1632{
1634#if QT_VERSION >= 300 1633#if QT_VERSION >= 300
1635 if ( style == "QPE" ) { 1634 if ( style == "QPE" ) {
1636 setStyle( new QPEStyle ); 1635 setStyle( new QPEStyle );
1637 } 1636 }
1638 else { 1637 else {
1639 QStyle *s = QStyleFactory::create( style ); 1638 QStyle *s = QStyleFactory::create( style );
1640 if ( s ) 1639 if ( s )
1641 setStyle( s ); 1640 setStyle( s );
1642 } 1641 }
1643#else 1642#else