-rw-r--r-- | library/global.cpp | 16 | ||||
-rw-r--r-- | library/qpeapplication.cpp | 60 |
2 files changed, 72 insertions, 4 deletions
diff --git a/library/global.cpp b/library/global.cpp index 9b3c51e..42c2729 100644 --- a/library/global.cpp +++ b/library/global.cpp | |||
@@ -559,105 +559,121 @@ void Global::invoke(const QString &c) | |||
559 | // XXX should lock file /tmp/qcop-msg-ap | 559 | // XXX should lock file /tmp/qcop-msg-ap |
560 | if ( QCopChannel::isRegistered( ("QPE/Application/" + ap).latin1() ) ) { | 560 | if ( QCopChannel::isRegistered( ("QPE/Application/" + ap).latin1() ) ) { |
561 | // If the channel is already register, the app is already running, so show it. | 561 | // If the channel is already register, the app is already running, so show it. |
562 | { QCopEnvelope env( ("QPE/Application/" + ap).latin1(), "raise()" ); } | 562 | { QCopEnvelope env( ("QPE/Application/" + ap).latin1(), "raise()" ); } |
563 | 563 | ||
564 | QCopEnvelope e("QPE/System", "notBusy(QString)" ); | 564 | QCopEnvelope e("QPE/System", "notBusy(QString)" ); |
565 | e << ap; | 565 | e << ap; |
566 | return; | 566 | return; |
567 | } | 567 | } |
568 | // XXX should unlock file /tmp/qcop-msg-ap | 568 | // XXX should unlock file /tmp/qcop-msg-ap |
569 | //see if it is being started | 569 | //see if it is being started |
570 | if ( StartingAppList::isStarting( ap ) ) { | 570 | if ( StartingAppList::isStarting( ap ) ) { |
571 | QCopEnvelope e("QPE/System", "notBusy(QString)" ); | 571 | QCopEnvelope e("QPE/System", "notBusy(QString)" ); |
572 | e << ap; | 572 | e << ap; |
573 | return; | 573 | return; |
574 | } | 574 | } |
575 | 575 | ||
576 | #endif | 576 | #endif |
577 | 577 | ||
578 | #ifdef QT_NO_QWS_MULTIPROCESS | 578 | #ifdef QT_NO_QWS_MULTIPROCESS |
579 | QMessageBox::warning( 0, "Error", "Could not find the application " + c, "Ok", 0, 0, 0, 1 ); | 579 | QMessageBox::warning( 0, "Error", "Could not find the application " + c, "Ok", 0, 0, 0, 1 ); |
580 | #else | 580 | #else |
581 | 581 | ||
582 | QStrList slist; | 582 | QStrList slist; |
583 | unsigned int j; | 583 | unsigned int j; |
584 | for ( j = 0; j < list.count(); j++ ) | 584 | for ( j = 0; j < list.count(); j++ ) |
585 | slist.append( list[j].utf8() ); | 585 | slist.append( list[j].utf8() ); |
586 | 586 | ||
587 | const char **args = new (const char *)[slist.count() + 1]; | 587 | const char **args = new (const char *)[slist.count() + 1]; |
588 | for ( j = 0; j < slist.count(); j++ ) | 588 | for ( j = 0; j < slist.count(); j++ ) |
589 | args[j] = slist.at(j); | 589 | args[j] = slist.at(j); |
590 | args[j] = NULL; | 590 | args[j] = NULL; |
591 | 591 | ||
592 | #if !defined(QT_NO_COP) | 592 | #if !defined(QT_NO_COP) |
593 | // an attempt to show a wait... | 593 | // an attempt to show a wait... |
594 | // more logic should be used, but this will be fine for the moment... | 594 | // more logic should be used, but this will be fine for the moment... |
595 | QCopEnvelope ( "QPE/System", "busy()" ); | 595 | QCopEnvelope ( "QPE/System", "busy()" ); |
596 | #endif | 596 | #endif |
597 | 597 | ||
598 | #ifdef HAVE_QUICKEXEC | 598 | #ifdef HAVE_QUICKEXEC |
599 | QString libexe = qpeDir()+"/binlib/lib"+args[0] + ".so"; | 599 | QString libexe = qpeDir()+"/binlib/lib"+args[0] + ".so"; |
600 | qDebug("libfile = %s", libexe.latin1() ); | 600 | qDebug("libfile = %s", libexe.latin1() ); |
601 | if ( QFile::exists( libexe ) ) { | 601 | if ( QFile::exists( libexe ) ) { |
602 | qDebug("calling quickexec %s", libexe.latin1() ); | 602 | qDebug("calling quickexec %s", libexe.latin1() ); |
603 | quickexecv( libexe.utf8().data(), (const char **)args ); | 603 | quickexecv( libexe.utf8().data(), (const char **)args ); |
604 | } else | 604 | } else |
605 | #endif | 605 | #endif |
606 | { | 606 | { |
607 | char *oldpre = ::getenv ( "LD_PRELOAD" ); | ||
608 | |||
609 | extern bool opie_block_style; | ||
610 | |||
611 | QString newpre = QPEApplication::qpeDir ( ) + "/lib/libpreload.so"; | ||
612 | if ( opie_block_style && QFile::exists ( newpre )) { | ||
613 | if ( oldpre && oldpre [0] ) | ||
614 | newpre = newpre + ":" + oldpre; | ||
615 | ::setenv ( "LD_PRELOAD", newpre. latin1( ), 1 ); | ||
616 | qDebug ( "\nPRELOADING\n" ); | ||
617 | } | ||
618 | |||
607 | if ( !::vfork() ) { | 619 | if ( !::vfork() ) { |
608 | for ( int fd = 3; fd < 100; fd++ ) | 620 | for ( int fd = 3; fd < 100; fd++ ) |
609 | ::close( fd ); | 621 | ::close( fd ); |
610 | ::setpgid( ::getpid(), ::getppid() ); | 622 | ::setpgid( ::getpid(), ::getppid() ); |
611 | // Try bindir first, so that foo/bar works too | 623 | // Try bindir first, so that foo/bar works too |
612 | ::execv( qpeDir()+"/bin/"+args[0], (char * const *)args ); | 624 | ::execv( qpeDir()+"/bin/"+args[0], (char * const *)args ); |
613 | ::execvp( args[0], (char * const *)args ); | 625 | ::execvp( args[0], (char * const *)args ); |
614 | _exit( -1 ); | 626 | _exit( -1 ); |
615 | } | 627 | } |
628 | if ( oldpre ) | ||
629 | ::setenv ( "LD_PRELOAD", oldpre, 1 ); | ||
630 | else | ||
631 | ::unsetenv ( "LD_PRELOAD" ); | ||
616 | } | 632 | } |
617 | StartingAppList::add( list[0] ); | 633 | StartingAppList::add( list[0] ); |
618 | #endif //QT_NO_QWS_MULTIPROCESS | 634 | #endif //QT_NO_QWS_MULTIPROCESS |
619 | } | 635 | } |
620 | 636 | ||
621 | 637 | ||
622 | /*! | 638 | /*! |
623 | Executes the application identfied by \a c, passing \a | 639 | Executes the application identfied by \a c, passing \a |
624 | document if it isn't null. | 640 | document if it isn't null. |
625 | 641 | ||
626 | Note that a better approach might be to send a QCop message to the | 642 | Note that a better approach might be to send a QCop message to the |
627 | application's QPE/Application/\e{appname} channel. | 643 | application's QPE/Application/\e{appname} channel. |
628 | */ | 644 | */ |
629 | void Global::execute( const QString &c, const QString& document ) | 645 | void Global::execute( const QString &c, const QString& document ) |
630 | { | 646 | { |
631 | if ( qApp->type() != QApplication::GuiServer ) { | 647 | if ( qApp->type() != QApplication::GuiServer ) { |
632 | // ask the server to do the work | 648 | // ask the server to do the work |
633 | #if !defined(QT_NO_COP) | 649 | #if !defined(QT_NO_COP) |
634 | if ( document.isNull() ) { | 650 | if ( document.isNull() ) { |
635 | QCopEnvelope e( "QPE/System", "execute(QString)" ); | 651 | QCopEnvelope e( "QPE/System", "execute(QString)" ); |
636 | e << c; | 652 | e << c; |
637 | } else { | 653 | } else { |
638 | QCopEnvelope e( "QPE/System", "execute(QString,QString)" ); | 654 | QCopEnvelope e( "QPE/System", "execute(QString,QString)" ); |
639 | e << c << document; | 655 | e << c << document; |
640 | } | 656 | } |
641 | #endif | 657 | #endif |
642 | return; | 658 | return; |
643 | } | 659 | } |
644 | 660 | ||
645 | // Attempt to execute the app using a builtin class for the app first | 661 | // Attempt to execute the app using a builtin class for the app first |
646 | // else try and find it in the bin directory | 662 | // else try and find it in the bin directory |
647 | if (builtin) { | 663 | if (builtin) { |
648 | for (int i = 0; builtin[i].file; i++) { | 664 | for (int i = 0; builtin[i].file; i++) { |
649 | if ( builtin[i].file == c ) { | 665 | if ( builtin[i].file == c ) { |
650 | if ( running[i] ) { | 666 | if ( running[i] ) { |
651 | if ( !document.isNull() && builtin[i].documentary ) | 667 | if ( !document.isNull() && builtin[i].documentary ) |
652 | setDocument(running[i], document); | 668 | setDocument(running[i], document); |
653 | running[i]->raise(); | 669 | running[i]->raise(); |
654 | running[i]->show(); | 670 | running[i]->show(); |
655 | running[i]->setActiveWindow(); | 671 | running[i]->setActiveWindow(); |
656 | } else { | 672 | } else { |
657 | running[i] = builtin[i].func( builtin[i].maximized ); | 673 | running[i] = builtin[i].func( builtin[i].maximized ); |
658 | } | 674 | } |
659 | #ifndef QT_NO_COP | 675 | #ifndef QT_NO_COP |
660 | QCopEnvelope e("QPE/System", "notBusy(QString)" ); | 676 | QCopEnvelope e("QPE/System", "notBusy(QString)" ); |
661 | e << c; // that was quick ;-) | 677 | e << c; // that was quick ;-) |
662 | #endif | 678 | #endif |
663 | return; | 679 | return; |
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp index efa65bc..a54fb20 100644 --- a/library/qpeapplication.cpp +++ b/library/qpeapplication.cpp | |||
@@ -853,140 +853,192 @@ QString QPEApplication::documentDir() | |||
853 | 853 | ||
854 | static int deforient = -1; | 854 | static int deforient = -1; |
855 | 855 | ||
856 | /*! | 856 | /*! |
857 | \internal | 857 | \internal |
858 | */ | 858 | */ |
859 | int QPEApplication::defaultRotation() | 859 | int QPEApplication::defaultRotation() |
860 | { | 860 | { |
861 | if ( deforient < 0 ) { | 861 | if ( deforient < 0 ) { |
862 | QString d = getenv( "QWS_DISPLAY" ); | 862 | QString d = getenv( "QWS_DISPLAY" ); |
863 | if ( d.contains( "Rot90" ) ) { | 863 | if ( d.contains( "Rot90" ) ) { |
864 | deforient = 90; | 864 | deforient = 90; |
865 | } | 865 | } |
866 | else if ( d.contains( "Rot180" ) ) { | 866 | else if ( d.contains( "Rot180" ) ) { |
867 | deforient = 180; | 867 | deforient = 180; |
868 | } | 868 | } |
869 | else if ( d.contains( "Rot270" ) ) { | 869 | else if ( d.contains( "Rot270" ) ) { |
870 | deforient = 270; | 870 | deforient = 270; |
871 | } | 871 | } |
872 | else { | 872 | else { |
873 | deforient = 0; | 873 | deforient = 0; |
874 | } | 874 | } |
875 | } | 875 | } |
876 | return deforient; | 876 | return deforient; |
877 | } | 877 | } |
878 | 878 | ||
879 | /*! | 879 | /*! |
880 | \internal | 880 | \internal |
881 | */ | 881 | */ |
882 | void QPEApplication::setDefaultRotation( int r ) | 882 | void QPEApplication::setDefaultRotation( int r ) |
883 | { | 883 | { |
884 | if ( qApp->type() == GuiServer ) { | 884 | if ( qApp->type() == GuiServer ) { |
885 | deforient = r; | 885 | deforient = r; |
886 | setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 ); | 886 | setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 ); |
887 | Config config("qpe"); | 887 | Config config("qpe"); |
888 | config.setGroup( "Rotation" ); | 888 | config.setGroup( "Rotation" ); |
889 | config.writeEntry( "Screen", getenv("QWS_DISPLAY") ); | 889 | config.writeEntry( "Screen", getenv("QWS_DISPLAY") ); |
890 | } | 890 | } |
891 | else { | 891 | else { |
892 | #ifndef QT_NO_COP | 892 | #ifndef QT_NO_COP |
893 | { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" ); | 893 | { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" ); |
894 | e << r; | 894 | e << r; |
895 | } | 895 | } |
896 | #endif | 896 | #endif |
897 | 897 | ||
898 | } | 898 | } |
899 | } | 899 | } |
900 | 900 | ||
901 | // exported to libpreload.so | ||
902 | bool opie_block_style = false; | ||
903 | |||
901 | /*! | 904 | /*! |
902 | \internal | 905 | \internal |
903 | */ | 906 | */ |
904 | void QPEApplication::applyStyle() | 907 | void QPEApplication::applyStyle() |
905 | { | 908 | { |
906 | Config config( "qpe" ); | 909 | Config config( "qpe" ); |
907 | |||
908 | config.setGroup( "Appearance" ); | 910 | config.setGroup( "Appearance" ); |
909 | 911 | ||
912 | // don't block ourselves ... | ||
913 | opie_block_style = false; | ||
914 | |||
915 | |||
916 | static QString appname; | ||
917 | |||
918 | if ( appname. isNull ( )) { | ||
919 | char src [32]; | ||
920 | char dst [PATH_MAX + 1]; | ||
921 | ::sprintf ( src, "/proc/%d/exe", ::getpid ( )); | ||
922 | int l = ::readlink ( src, dst, PATH_MAX ); | ||
923 | if ( l > 0 ) { | ||
924 | dst [l] = 0; | ||
925 | const char *b = ::strrchr ( dst, '/' ); | ||
926 | appname = ( b ? b + 1 : dst ); | ||
927 | } | ||
928 | else | ||
929 | appname = ""; | ||
930 | } | ||
931 | |||
932 | |||
933 | QStringList ex = config. readListEntry ( "NoStyle", ';' ); | ||
934 | int nostyle = 0; | ||
935 | for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) { | ||
936 | if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) { | ||
937 | nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 ); | ||
938 | break; | ||
939 | } | ||
940 | } | ||
941 | |||
910 | // Widget style | 942 | // Widget style |
911 | QString style = config.readEntry( "Style", "Light" ); | 943 | QString style = config.readEntry( "Style", "Light" ); |
912 | internalSetStyle( style ); | 944 | |
945 | // don't set a custom style | ||
946 | if ( nostyle & 0x01 ) | ||
947 | style = "Light"; | ||
948 | |||
949 | internalSetStyle ( style ); | ||
913 | 950 | ||
914 | // Colors | 951 | // Colors |
915 | QColor bgcolor( config.readEntry( "Background", "#E5E1D5" ) ); | 952 | QColor bgcolor( config.readEntry( "Background", "#E5E1D5" ) ); |
916 | QColor btncolor( config.readEntry( "Button", "#D6CDBB" ) ); | 953 | QColor btncolor( config.readEntry( "Button", "#D6CDBB" ) ); |
917 | QPalette pal( btncolor, bgcolor ); | 954 | QPalette pal( btncolor, bgcolor ); |
918 | QString color = config.readEntry( "Highlight", "#800000" ); | 955 | QString color = config.readEntry( "Highlight", "#800000" ); |
919 | pal.setColor( QColorGroup::Highlight, QColor( color ) ); | 956 | pal.setColor( QColorGroup::Highlight, QColor( color ) ); |
920 | color = config.readEntry( "HighlightedText", "#FFFFFF" ); | 957 | color = config.readEntry( "HighlightedText", "#FFFFFF" ); |
921 | pal.setColor( QColorGroup::HighlightedText, QColor( color ) ); | 958 | pal.setColor( QColorGroup::HighlightedText, QColor( color ) ); |
922 | color = config.readEntry( "Text", "#000000" ); | 959 | color = config.readEntry( "Text", "#000000" ); |
923 | pal.setColor( QColorGroup::Text, QColor( color ) ); | 960 | pal.setColor( QColorGroup::Text, QColor( color ) ); |
924 | color = config.readEntry( "ButtonText", "#000000" ); | 961 | color = config.readEntry( "ButtonText", "#000000" ); |
925 | pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) ); | 962 | pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) ); |
926 | color = config.readEntry( "Base", "#FFFFFF" ); | 963 | color = config.readEntry( "Base", "#FFFFFF" ); |
927 | pal.setColor( QColorGroup::Base, QColor( color ) ); | 964 | pal.setColor( QColorGroup::Base, QColor( color ) ); |
928 | 965 | ||
929 | pal.setColor( QPalette::Disabled, QColorGroup::Text, | 966 | pal.setColor( QPalette::Disabled, QColorGroup::Text, |
930 | pal.color( QPalette::Active, QColorGroup::Background ).dark() ); | 967 | pal.color( QPalette::Active, QColorGroup::Background ).dark() ); |
931 | 968 | ||
932 | setPalette( pal, TRUE ); | 969 | setPalette( pal, TRUE ); |
933 | 970 | ||
934 | // Window Decoration | 971 | // Window Decoration |
935 | QString dec = config.readEntry( "Decoration", "Qtopia" ); | 972 | QString dec = config.readEntry( "Decoration", "Qtopia" ); |
973 | |||
974 | // don't set a custom deco | ||
975 | if ( nostyle & 0x04 ) | ||
976 | dec = ""; | ||
977 | |||
936 | if ( dec != d->decorationName ) { | 978 | if ( dec != d->decorationName ) { |
937 | qwsSetDecoration( new QPEDecoration( dec ) ); | 979 | qwsSetDecoration( new QPEDecoration( dec ) ); |
938 | d->decorationName = dec; | 980 | d->decorationName = dec; |
939 | } | 981 | } |
940 | 982 | ||
941 | // Font | 983 | // Font |
942 | QString ff = config.readEntry( "FontFamily", font().family() ); | 984 | QString ff = config.readEntry( "FontFamily", font().family() ); |
943 | int fs = config.readNumEntry( "FontSize", font().pointSize() ); | 985 | int fs = config.readNumEntry( "FontSize", font().pointSize() ); |
986 | |||
987 | // don't set a custom font | ||
988 | if ( nostyle & 0x02 ) { | ||
989 | ff = "Helvetica"; | ||
990 | fs = 10; | ||
991 | } | ||
992 | |||
944 | setFont( QFont(ff, fs) ); | 993 | setFont( QFont(ff, fs) ); |
994 | |||
995 | // revert to global blocking policy ... | ||
996 | opie_block_style = config. readBoolEntry ( "ForceStyle", false ); | ||
945 | } | 997 | } |
946 | 998 | ||
947 | void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data ) | 999 | void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data ) |
948 | { | 1000 | { |
949 | #ifdef Q_WS_QWS | 1001 | #ifdef Q_WS_QWS |
950 | QDataStream stream( data, IO_ReadOnly ); | 1002 | QDataStream stream( data, IO_ReadOnly ); |
951 | if ( msg == "applyStyle()" ) { | 1003 | if ( msg == "applyStyle()" ) { |
952 | applyStyle(); | 1004 | applyStyle(); |
953 | } | 1005 | } |
954 | else if ( msg == "setDefaultRotation(int)" ) { | 1006 | else if ( msg == "setDefaultRotation(int)" ) { |
955 | if ( type() == GuiServer ) { | 1007 | if ( type() == GuiServer ) { |
956 | int r; | 1008 | int r; |
957 | stream >> r; | 1009 | stream >> r; |
958 | setDefaultRotation( r ); | 1010 | setDefaultRotation( r ); |
959 | } | 1011 | } |
960 | } | 1012 | } |
961 | else if ( msg == "shutdown()" ) { | 1013 | else if ( msg == "shutdown()" ) { |
962 | if ( type() == GuiServer ) | 1014 | if ( type() == GuiServer ) |
963 | shutdown(); | 1015 | shutdown(); |
964 | } | 1016 | } |
965 | else if ( msg == "quit()" ) { | 1017 | else if ( msg == "quit()" ) { |
966 | if ( type() != GuiServer ) | 1018 | if ( type() != GuiServer ) |
967 | tryQuit(); | 1019 | tryQuit(); |
968 | } | 1020 | } |
969 | else if ( msg == "forceQuit()" ) { | 1021 | else if ( msg == "forceQuit()" ) { |
970 | if ( type() != GuiServer ) | 1022 | if ( type() != GuiServer ) |
971 | quit(); | 1023 | quit(); |
972 | } | 1024 | } |
973 | else if ( msg == "restart()" ) { | 1025 | else if ( msg == "restart()" ) { |
974 | if ( type() == GuiServer ) | 1026 | if ( type() == GuiServer ) |
975 | restart(); | 1027 | restart(); |
976 | } | 1028 | } |
977 | else if ( msg == "grabKeyboard(QString)" ) { | 1029 | else if ( msg == "grabKeyboard(QString)" ) { |
978 | QString who; | 1030 | QString who; |
979 | stream >> who; | 1031 | stream >> who; |
980 | if ( who.isEmpty() ) | 1032 | if ( who.isEmpty() ) |
981 | d->kbgrabber = 0; | 1033 | d->kbgrabber = 0; |
982 | else if ( who != d->appName ) | 1034 | else if ( who != d->appName ) |
983 | d->kbgrabber = 1; | 1035 | d->kbgrabber = 1; |
984 | else | 1036 | else |
985 | d->kbgrabber = 2; | 1037 | d->kbgrabber = 2; |
986 | } | 1038 | } |
987 | else if ( msg == "language(QString)" ) { | 1039 | else if ( msg == "language(QString)" ) { |
988 | if ( type() == GuiServer ) { | 1040 | if ( type() == GuiServer ) { |
989 | QString l; | 1041 | QString l; |
990 | stream >> l; | 1042 | stream >> l; |
991 | QString cl = getenv( "LANG" ); | 1043 | QString cl = getenv( "LANG" ); |
992 | if ( cl != l ) { | 1044 | if ( cl != l ) { |
@@ -1278,97 +1330,97 @@ void QPEApplication::internalSetStyle( const QString &style ) | |||
1278 | #endif | 1330 | #endif |
1279 | #ifndef QT_NO_STYLE_MOTIF | 1331 | #ifndef QT_NO_STYLE_MOTIF |
1280 | else if ( style == "Motif" ) { | 1332 | else if ( style == "Motif" ) { |
1281 | setStyle( new QMotifStyle ); | 1333 | setStyle( new QMotifStyle ); |
1282 | } | 1334 | } |
1283 | #endif | 1335 | #endif |
1284 | #ifndef QT_NO_STYLE_MOTIFPLUS | 1336 | #ifndef QT_NO_STYLE_MOTIFPLUS |
1285 | else if ( style == "MotifPlus" ) { | 1337 | else if ( style == "MotifPlus" ) { |
1286 | setStyle( new QMotifPlusStyle ); | 1338 | setStyle( new QMotifPlusStyle ); |
1287 | } | 1339 | } |
1288 | #endif | 1340 | #endif |
1289 | 1341 | ||
1290 | else { | 1342 | else { |
1291 | QStyle *sty = 0; | 1343 | QStyle *sty = 0; |
1292 | QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/"; | 1344 | QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/"; |
1293 | 1345 | ||
1294 | if ( style. find ( ".so" ) > 0 ) | 1346 | if ( style. find ( ".so" ) > 0 ) |
1295 | path += style; | 1347 | path += style; |
1296 | else | 1348 | else |
1297 | path = path + "lib" + style. lower ( ) + ".so"; // compatibility | 1349 | path = path + "lib" + style. lower ( ) + ".so"; // compatibility |
1298 | 1350 | ||
1299 | static QLibrary *lastlib = 0; | 1351 | static QLibrary *lastlib = 0; |
1300 | static StyleInterface *lastiface = 0; | 1352 | static StyleInterface *lastiface = 0; |
1301 | 1353 | ||
1302 | QLibrary *lib = new QLibrary ( path ); | 1354 | QLibrary *lib = new QLibrary ( path ); |
1303 | StyleInterface *iface = 0; | 1355 | StyleInterface *iface = 0; |
1304 | 1356 | ||
1305 | if (( lib-> queryInterface ( IID_Style, ( QUnknownInterface ** ) &iface ) == QS_OK ) && iface ) | 1357 | if (( lib-> queryInterface ( IID_Style, ( QUnknownInterface ** ) &iface ) == QS_OK ) && iface ) |
1306 | sty = iface-> style ( ); | 1358 | sty = iface-> style ( ); |
1307 | 1359 | ||
1308 | if ( sty ) { | 1360 | if ( sty ) { |
1309 | setStyle ( sty ); | 1361 | setStyle ( sty ); |
1310 | 1362 | ||
1311 | if ( lastiface ) | 1363 | if ( lastiface ) |
1312 | lastiface-> release ( ); | 1364 | lastiface-> release ( ); |
1313 | lastiface = iface; | 1365 | lastiface = iface; |
1314 | 1366 | ||
1315 | if ( lastlib ) { | 1367 | if ( lastlib ) { |
1316 | lastlib-> unload ( ); | 1368 | lastlib-> unload ( ); |
1317 | delete lastlib; | 1369 | delete lastlib; |
1318 | } | 1370 | } |
1319 | lastlib = lib; | 1371 | lastlib = lib; |
1320 | } | 1372 | } |
1321 | else { | 1373 | else { |
1322 | if ( iface ) | 1374 | if ( iface ) |
1323 | iface-> release ( ); | 1375 | iface-> release ( ); |
1324 | delete lib; | 1376 | delete lib; |
1325 | 1377 | ||
1326 | setStyle ( new QPEStyle ( )); | 1378 | setStyle ( new LightStyle ( )); |
1327 | } | 1379 | } |
1328 | } | 1380 | } |
1329 | #endif | 1381 | #endif |
1330 | } | 1382 | } |
1331 | 1383 | ||
1332 | /*! | 1384 | /*! |
1333 | \internal | 1385 | \internal |
1334 | */ | 1386 | */ |
1335 | void QPEApplication::prepareForTermination( bool willrestart ) | 1387 | void QPEApplication::prepareForTermination( bool willrestart ) |
1336 | { | 1388 | { |
1337 | if ( willrestart ) { | 1389 | if ( willrestart ) { |
1338 | // Draw a big wait icon, the image can be altered in later revisions | 1390 | // Draw a big wait icon, the image can be altered in later revisions |
1339 | // QWidget *d = QApplication::desktop(); | 1391 | // QWidget *d = QApplication::desktop(); |
1340 | QImage img = Resource::loadImage( "launcher/new_wait" ); | 1392 | QImage img = Resource::loadImage( "launcher/new_wait" ); |
1341 | QPixmap pix; | 1393 | QPixmap pix; |
1342 | pix.convertFromImage( img.smoothScale( 1 * img.width(), 1 * img.height() ) ); | 1394 | pix.convertFromImage( img.smoothScale( 1 * img.width(), 1 * img.height() ) ); |
1343 | QLabel *lblWait = new QLabel( 0, "wait hack!", QWidget::WStyle_Customize | | 1395 | QLabel *lblWait = new QLabel( 0, "wait hack!", QWidget::WStyle_Customize | |
1344 | QWidget::WStyle_NoBorder | QWidget::WStyle_Tool ); | 1396 | QWidget::WStyle_NoBorder | QWidget::WStyle_Tool ); |
1345 | lblWait->setPixmap( pix ); | 1397 | lblWait->setPixmap( pix ); |
1346 | lblWait->setAlignment( QWidget::AlignCenter ); | 1398 | lblWait->setAlignment( QWidget::AlignCenter ); |
1347 | lblWait->show(); | 1399 | lblWait->show(); |
1348 | lblWait->showMaximized(); | 1400 | lblWait->showMaximized(); |
1349 | } | 1401 | } |
1350 | #ifndef SINGLE_APP | 1402 | #ifndef SINGLE_APP |
1351 | { QCopEnvelope envelope( "QPE/System", "forceQuit()" ); | 1403 | { QCopEnvelope envelope( "QPE/System", "forceQuit()" ); |
1352 | } | 1404 | } |
1353 | processEvents(); // ensure the message goes out. | 1405 | processEvents(); // ensure the message goes out. |
1354 | sleep( 1 ); // You have 1 second to comply. | 1406 | sleep( 1 ); // You have 1 second to comply. |
1355 | #endif | 1407 | #endif |
1356 | } | 1408 | } |
1357 | 1409 | ||
1358 | /*! | 1410 | /*! |
1359 | \internal | 1411 | \internal |
1360 | */ | 1412 | */ |
1361 | void QPEApplication::shutdown() | 1413 | void QPEApplication::shutdown() |
1362 | { | 1414 | { |
1363 | // Implement in server's QPEApplication subclass | 1415 | // Implement in server's QPEApplication subclass |
1364 | } | 1416 | } |
1365 | 1417 | ||
1366 | /*! | 1418 | /*! |
1367 | \internal | 1419 | \internal |
1368 | */ | 1420 | */ |
1369 | void QPEApplication::restart() | 1421 | void QPEApplication::restart() |
1370 | { | 1422 | { |
1371 | // Implement in server's QPEApplication subclass | 1423 | // Implement in server's QPEApplication subclass |
1372 | } | 1424 | } |
1373 | 1425 | ||
1374 | static QPtrDict<void>* stylusDict = 0; | 1426 | static QPtrDict<void>* stylusDict = 0; |