summaryrefslogtreecommitdiff
path: root/library/qpeapplication.cpp
Unidiff
Diffstat (limited to 'library/qpeapplication.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpeapplication.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index 5d05ed5..3370264 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -741,984 +741,984 @@ void QPEApplication::initApp( int argc, char **argv )
741 d->forceshow = FALSE; 741 d->forceshow = FALSE;
742 742
743 QCString channel = QCString(argv[0]); 743 QCString channel = QCString(argv[0]);
744 744
745 channel.replace(QRegExp(".*/"),""); 745 channel.replace(QRegExp(".*/"),"");
746 d->appName = channel; 746 d->appName = channel;
747 747
748 #if QT_VERSION > 235 748 #if QT_VERSION > 235
749 qt_fbdpy->setIdentity( channel ); // In Qt/E 2.3.6 749 qt_fbdpy->setIdentity( channel ); // In Qt/E 2.3.6
750 #endif 750 #endif
751 751
752 channel = "QPE/Application/" + channel; 752 channel = "QPE/Application/" + channel;
753 pidChannel = new QCopChannel( channel, this); 753 pidChannel = new QCopChannel( channel, this);
754 connect( pidChannel, SIGNAL(received(const QCString&,const QByteArray&)), 754 connect( pidChannel, SIGNAL(received(const QCString&,const QByteArray&)),
755 this, SLOT(pidMessage(const QCString&,const QByteArray&))); 755 this, SLOT(pidMessage(const QCString&,const QByteArray&)));
756 756
757 757
758 758
759 processQCopFile(); 759 processQCopFile();
760 d->keep_running = d->qcopq.isEmpty(); 760 d->keep_running = d->qcopq.isEmpty();
761 761
762 for (int a=0; a<argc; a++) { 762 for (int a=0; a<argc; a++) {
763 if ( qstrcmp(argv[a],"-preload")==0 ) { 763 if ( qstrcmp(argv[a],"-preload")==0 ) {
764 argv[a] = argv[a+1]; 764 argv[a] = argv[a+1];
765 a++; 765 a++;
766 d->preloaded = TRUE; 766 d->preloaded = TRUE;
767 argc-=1; 767 argc-=1;
768 } else if ( qstrcmp(argv[a],"-preload-show")==0 ) { 768 } else if ( qstrcmp(argv[a],"-preload-show")==0 ) {
769 argv[a] = argv[a+1]; 769 argv[a] = argv[a+1];
770 a++; 770 a++;
771 d->preloaded = TRUE; 771 d->preloaded = TRUE;
772 d->forceshow = TRUE; 772 d->forceshow = TRUE;
773 argc-=1; 773 argc-=1;
774 } 774 }
775 } 775 }
776 776
777 /* overide stored arguments */ 777 /* overide stored arguments */
778 setArgs(argc, argv); 778 setArgs(argc, argv);
779 779
780 /* install translation here */ 780 /* install translation here */
781 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 )
782 installTranslation( (*it) + "/" + d->appName + ".qm" ); 782 installTranslation( (*it) + "/" + d->appName + ".qm" );
783} 783}
784#endif 784#endif
785 785
786 786
787static QPtrDict<void>* inputMethodDict = 0; 787static QPtrDict<void>* inputMethodDict = 0;
788static void createInputMethodDict() 788static void createInputMethodDict()
789{ 789{
790 if ( !inputMethodDict ) 790 if ( !inputMethodDict )
791 inputMethodDict = new QPtrDict<void>; 791 inputMethodDict = new QPtrDict<void>;
792} 792}
793 793
794/*! 794/*!
795 Returns the currently set hint to the system as to whether 795 Returns the currently set hint to the system as to whether
796 widget \a w has any use for text input methods. 796 widget \a w has any use for text input methods.
797 797
798 798
799 \sa setInputMethodHint() InputMethodHint 799 \sa setInputMethodHint() InputMethodHint
800*/ 800*/
801QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w ) 801QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w )
802{ 802{
803 if ( inputMethodDict && w ) 803 if ( inputMethodDict && w )
804 return ( InputMethodHint ) ( int ) inputMethodDict->find( w ); 804 return ( InputMethodHint ) ( int ) inputMethodDict->find( w );
805 return Normal; 805 return Normal;
806} 806}
807 807
808/*! 808/*!
809 \enum QPEApplication::InputMethodHint 809 \enum QPEApplication::InputMethodHint
810 810
811 \value Normal the application sometimes needs text input (the default). 811 \value Normal the application sometimes needs text input (the default).
812 \value AlwaysOff the application never needs text input. 812 \value AlwaysOff the application never needs text input.
813 \value AlwaysOn the application always needs text input. 813 \value AlwaysOn the application always needs text input.
814*/ 814*/
815 815
816/*! 816/*!
817 Hints to the system that widget \a w has use for text input methods 817 Hints to the system that widget \a w has use for text input methods
818 as specified by \a mode. 818 as specified by \a mode.
819 819
820 \sa inputMethodHint() InputMethodHint 820 \sa inputMethodHint() InputMethodHint
821*/ 821*/
822void QPEApplication::setInputMethodHint( QWidget * w, InputMethodHint mode ) 822void QPEApplication::setInputMethodHint( QWidget * w, InputMethodHint mode )
823{ 823{
824 createInputMethodDict(); 824 createInputMethodDict();
825 if ( mode == Normal ) { 825 if ( mode == Normal ) {
826 inputMethodDict->remove 826 inputMethodDict->remove
827 ( w ); 827 ( w );
828 } 828 }
829 else { 829 else {
830 inputMethodDict->insert( w, ( void* ) mode ); 830 inputMethodDict->insert( w, ( void* ) mode );
831 } 831 }
832} 832}
833 833
834class HackDialog : public QDialog 834class HackDialog : public QDialog
835{ 835{
836public: 836public:
837 void acceptIt() 837 void acceptIt()
838 { 838 {
839 accept(); 839 accept();
840 } 840 }
841 void rejectIt() 841 void rejectIt()
842 { 842 {
843 reject(); 843 reject();
844 } 844 }
845}; 845};
846 846
847 847
848void QPEApplication::mapToDefaultAction( QWSKeyEvent * ke, int key ) 848void QPEApplication::mapToDefaultAction( QWSKeyEvent * ke, int key )
849{ 849{
850 // specialised actions for certain widgets. May want to 850 // specialised actions for certain widgets. May want to
851 // add more stuff here. 851 // add more stuff here.
852 if ( activePopupWidget() && activePopupWidget() ->inherits( "QListBox" ) 852 if ( activePopupWidget() && activePopupWidget() ->inherits( "QListBox" )
853 && activePopupWidget() ->parentWidget() 853 && activePopupWidget() ->parentWidget()
854 && activePopupWidget() ->parentWidget() ->inherits( "QComboBox" ) ) 854 && activePopupWidget() ->parentWidget() ->inherits( "QComboBox" ) )
855 key = Qt::Key_Return; 855 key = Qt::Key_Return;
856 856
857 if ( activePopupWidget() && activePopupWidget() ->inherits( "QPopupMenu" ) ) 857 if ( activePopupWidget() && activePopupWidget() ->inherits( "QPopupMenu" ) )
858 key = Qt::Key_Return; 858 key = Qt::Key_Return;
859 859
860#ifdef QWS 860#ifdef QWS
861 861
862 ke->simpleData.keycode = key; 862 ke->simpleData.keycode = key;
863#endif 863#endif
864} 864}
865 865
866class HackWidget : public QWidget 866class HackWidget : public QWidget
867{ 867{
868public: 868public:
869 bool needsOk() 869 bool needsOk()
870 { 870 {
871 return ( getWState() & WState_Reserved1 ); 871 return ( getWState() & WState_Reserved1 );
872 } 872 }
873}; 873};
874 874
875/*! 875/*!
876 \internal 876 \internal
877*/ 877*/
878 878
879#ifdef QWS 879#ifdef QWS
880bool QPEApplication::qwsEventFilter( QWSEvent * e ) 880bool QPEApplication::qwsEventFilter( QWSEvent * e )
881{ 881{
882 if ( !d->notbusysent && e->type == QWSEvent::Focus ) { 882 if ( !d->notbusysent && e->type == QWSEvent::Focus ) {
883 if ( qApp->type() != QApplication::GuiServer ) { 883 if ( qApp->type() != QApplication::GuiServer ) {
884 QCopEnvelope e( "QPE/System", "notBusy(QString)" ); 884 QCopEnvelope e( "QPE/System", "notBusy(QString)" );
885 e << d->appName; 885 e << d->appName;
886 } 886 }
887 d->notbusysent = TRUE; 887 d->notbusysent = TRUE;
888 } 888 }
889 if ( type() == GuiServer ) { 889 if ( type() == GuiServer ) {
890 switch ( e->type ) { 890 switch ( e->type ) {
891 case QWSEvent::Mouse: 891 case QWSEvent::Mouse:
892 if ( e->asMouse() ->simpleData.state && !QWidget::find( e->window() ) ) 892 if ( e->asMouse() ->simpleData.state && !QWidget::find( e->window() ) )
893 emit clientMoused(); 893 emit clientMoused();
894 break; 894 break;
895 default: 895 default:
896 break; 896 break;
897 } 897 }
898 } 898 }
899 if ( e->type == QWSEvent::Key ) { 899 if ( e->type == QWSEvent::Key ) {
900 QWSKeyEvent *ke = ( QWSKeyEvent * ) e; 900 QWSKeyEvent *ke = ( QWSKeyEvent * ) e;
901 if ( ke->simpleData.keycode == Qt::Key_F33 ) { 901 if ( ke->simpleData.keycode == Qt::Key_F33 ) {
902 // Use special "OK" key to press "OK" on top level widgets 902 // Use special "OK" key to press "OK" on top level widgets
903 QWidget * active = activeWindow(); 903 QWidget * active = activeWindow();
904 QWidget *popup = 0; 904 QWidget *popup = 0;
905 if ( active && active->isPopup() ) { 905 if ( active && active->isPopup() ) {
906 popup = active; 906 popup = active;
907 active = active->parentWidget(); 907 active = active->parentWidget();
908 } 908 }
909 if ( active && ( int ) active->winId() == ke->simpleData.window && 909 if ( active && ( int ) active->winId() == ke->simpleData.window &&
910 !active->testWFlags( WStyle_Customize | WType_Popup | WType_Desktop ) ) { 910 !active->testWFlags( WStyle_Customize | WType_Popup | WType_Desktop ) ) {
911 if ( ke->simpleData.is_press ) { 911 if ( ke->simpleData.is_press ) {
912 if ( popup ) 912 if ( popup )
913 popup->close(); 913 popup->close();
914 if ( active->inherits( "QDialog" ) ) { 914 if ( active->inherits( "QDialog" ) ) {
915 HackDialog * d = ( HackDialog * ) active; 915 HackDialog * d = ( HackDialog * ) active;
916 d->acceptIt(); 916 d->acceptIt();
917 return TRUE; 917 return TRUE;
918 } 918 }
919 else if ( ( ( HackWidget * ) active ) ->needsOk() ) { 919 else if ( ( ( HackWidget * ) active ) ->needsOk() ) {
920 QSignal s; 920 QSignal s;
921 s.connect( active, SLOT( accept() ) ); 921 s.connect( active, SLOT( accept() ) );
922 s.activate(); 922 s.activate();
923 } 923 }
924 else { 924 else {
925 // do the same as with the select key: Map to the default action of the widget: 925 // do the same as with the select key: Map to the default action of the widget:
926 mapToDefaultAction( ke, Qt::Key_Return ); 926 mapToDefaultAction( ke, Qt::Key_Return );
927 } 927 }
928 } 928 }
929 } 929 }
930 } 930 }
931 else if ( ke->simpleData.keycode == Qt::Key_F30 ) { 931 else if ( ke->simpleData.keycode == Qt::Key_F30 ) {
932 // Use special "select" key to do whatever default action a widget has 932 // Use special "select" key to do whatever default action a widget has
933 mapToDefaultAction( ke, Qt::Key_Space ); 933 mapToDefaultAction( ke, Qt::Key_Space );
934 } 934 }
935 else if ( ke->simpleData.keycode == Qt::Key_Escape && 935 else if ( ke->simpleData.keycode == Qt::Key_Escape &&
936 ke->simpleData.is_press ) { 936 ke->simpleData.is_press ) {
937 // Escape key closes app if focus on toplevel 937 // Escape key closes app if focus on toplevel
938 QWidget * active = activeWindow(); 938 QWidget * active = activeWindow();
939 if ( active && active->testWFlags( WType_TopLevel ) && 939 if ( active && active->testWFlags( WType_TopLevel ) &&
940 ( int ) active->winId() == ke->simpleData.window && 940 ( int ) active->winId() == ke->simpleData.window &&
941 !active->testWFlags( WStyle_Dialog | WStyle_Customize | WType_Popup | WType_Desktop ) ) { 941 !active->testWFlags( WStyle_Dialog | WStyle_Customize | WType_Popup | WType_Desktop ) ) {
942 if ( active->inherits( "QDialog" ) ) { 942 if ( active->inherits( "QDialog" ) ) {
943 HackDialog * d = ( HackDialog * ) active; 943 HackDialog * d = ( HackDialog * ) active;
944 d->rejectIt(); 944 d->rejectIt();
945 return TRUE; 945 return TRUE;
946 } 946 }
947 else if ( strcmp( argv() [ 0 ], "embeddedkonsole" ) != 0 ) { 947 else if ( strcmp( argv() [ 0 ], "embeddedkonsole" ) != 0 ) {
948 active->close(); 948 active->close();
949 } 949 }
950 } 950 }
951 } 951 }
952 else if ( ke->simpleData.keycode >= Qt::Key_F1 && ke->simpleData.keycode <= Qt::Key_F29 ) { 952 else if ( ke->simpleData.keycode >= Qt::Key_F1 && ke->simpleData.keycode <= Qt::Key_F29 ) {
953 // this should be if ( ODevice::inst ( )-> buttonForKeycode ( ... )) 953 // this should be if ( ODevice::inst ( )-> buttonForKeycode ( ... ))
954 // but we cannot access libopie function within libqpe :( 954 // but we cannot access libopie function within libqpe :(
955 955
956 QWidget * active = activeWindow ( ); 956 QWidget * active = activeWindow ( );
957 if ( active && ((int) active-> winId ( ) == ke-> simpleData.window )) { 957 if ( active && ((int) active-> winId ( ) == ke-> simpleData.window )) {
958 if ( d-> kbgrabbed ) { // we grabbed the keyboard 958 if ( d-> kbgrabbed ) { // we grabbed the keyboard
959 QChar ch ( ke-> simpleData.unicode ); 959 QChar ch ( ke-> simpleData.unicode );
960 QKeyEvent qke ( ke-> simpleData. is_press ? QEvent::KeyPress : QEvent::KeyRelease, 960 QKeyEvent qke ( ke-> simpleData. is_press ? QEvent::KeyPress : QEvent::KeyRelease,
961 ke-> simpleData.keycode, 961 ke-> simpleData.keycode,
962 ch. latin1 ( ), 962 ch. latin1 ( ),
963 ke-> simpleData.modifiers, 963 ke-> simpleData.modifiers,
964 QString ( ch ), 964 QString ( ch ),
965 ke-> simpleData.is_auto_repeat, 1 ); 965 ke-> simpleData.is_auto_repeat, 1 );
966 966
967 QObject *which = QWidget::keyboardGrabber ( ); 967 QObject *which = QWidget::keyboardGrabber ( );
968 if ( !which ) 968 if ( !which )
969 which = QApplication::focusWidget ( ); 969 which = QApplication::focusWidget ( );
970 if ( !which ) 970 if ( !which )
971 which = QApplication::activeWindow ( ); 971 which = QApplication::activeWindow ( );
972 if ( !which ) 972 if ( !which )
973 which = qApp; 973 which = qApp;
974 974
975 QApplication::sendEvent ( which, &qke ); 975 QApplication::sendEvent ( which, &qke );
976 } 976 }
977 else { // we didn't grab the keyboard, so send the event to the launcher 977 else { // we didn't grab the keyboard, so send the event to the launcher
978 QCopEnvelope e ( "QPE/Launcher", "deviceButton(int,int,int)" ); 978 QCopEnvelope e ( "QPE/Launcher", "deviceButton(int,int,int)" );
979 e << int( ke-> simpleData.keycode ) << int( ke-> simpleData. is_press ) << int( ke-> simpleData.is_auto_repeat ); 979 e << int( ke-> simpleData.keycode ) << int( ke-> simpleData. is_press ) << int( ke-> simpleData.is_auto_repeat );
980 } 980 }
981 } 981 }
982 return true; 982 return true;
983 } 983 }
984 } 984 }
985 if ( e->type == QWSEvent::Focus ) { 985 if ( e->type == QWSEvent::Focus ) {
986 QWSFocusEvent * fe = ( QWSFocusEvent* ) e; 986 QWSFocusEvent * fe = ( QWSFocusEvent* ) e;
987 if ( !fe->simpleData.get_focus ) { 987 if ( !fe->simpleData.get_focus ) {
988 QWidget * active = activeWindow(); 988 QWidget * active = activeWindow();
989 while ( active && active->isPopup() ) { 989 while ( active && active->isPopup() ) {
990 active->close(); 990 active->close();
991 active = activeWindow(); 991 active = activeWindow();
992 } 992 }
993 } 993 }
994 else { 994 else {
995 // make sure our modal widget is ALWAYS on top 995 // make sure our modal widget is ALWAYS on top
996 QWidget *topm = activeModalWidget(); 996 QWidget *topm = activeModalWidget();
997 if ( topm ) { 997 if ( topm && static_cast<int>( topm->winId() ) != fe->simpleData.window) {
998 topm->raise(); 998 topm->raise();
999 } 999 }
1000 } 1000 }
1001 if ( fe->simpleData.get_focus && inputMethodDict ) { 1001 if ( fe->simpleData.get_focus && inputMethodDict ) {
1002 InputMethodHint m = inputMethodHint( QWidget::find( e->window() ) ); 1002 InputMethodHint m = inputMethodHint( QWidget::find( e->window() ) );
1003 if ( m == AlwaysOff ) 1003 if ( m == AlwaysOff )
1004 Global::hideInputMethod(); 1004 Global::hideInputMethod();
1005 if ( m == AlwaysOn ) 1005 if ( m == AlwaysOn )
1006 Global::showInputMethod(); 1006 Global::showInputMethod();
1007 } 1007 }
1008 } 1008 }
1009 1009
1010 1010
1011 return QApplication::qwsEventFilter( e ); 1011 return QApplication::qwsEventFilter( e );
1012} 1012}
1013#endif 1013#endif
1014 1014
1015/*! 1015/*!
1016 Destroys the QPEApplication. 1016 Destroys the QPEApplication.
1017*/ 1017*/
1018QPEApplication::~QPEApplication() 1018QPEApplication::~QPEApplication()
1019{ 1019{
1020 ungrabKeyboard(); 1020 ungrabKeyboard();
1021#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 1021#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
1022 // Need to delete QCopChannels early, since the display will 1022 // Need to delete QCopChannels early, since the display will
1023 // be gone by the time we get to ~QObject(). 1023 // be gone by the time we get to ~QObject().
1024 delete sysChannel; 1024 delete sysChannel;
1025 delete pidChannel; 1025 delete pidChannel;
1026#endif 1026#endif
1027 1027
1028 delete d; 1028 delete d;
1029} 1029}
1030 1030
1031/*! 1031/*!
1032 Returns <tt>$OPIEDIR/</tt>. 1032 Returns <tt>$OPIEDIR/</tt>.
1033*/ 1033*/
1034QString QPEApplication::qpeDir() 1034QString QPEApplication::qpeDir()
1035{ 1035{
1036 const char * base = getenv( "OPIEDIR" ); 1036 const char * base = getenv( "OPIEDIR" );
1037 if ( base ) 1037 if ( base )
1038 return QString( base ) + "/"; 1038 return QString( base ) + "/";
1039 1039
1040 return QString( "../" ); 1040 return QString( "../" );
1041} 1041}
1042 1042
1043/*! 1043/*!
1044 Returns the user's current Document directory. There is a trailing "/". 1044 Returns the user's current Document directory. There is a trailing "/".
1045 .. well, it does now,, and there's no trailing '/' 1045 .. well, it does now,, and there's no trailing '/'
1046*/ 1046*/
1047QString QPEApplication::documentDir() 1047QString QPEApplication::documentDir()
1048{ 1048{
1049 const char* base = getenv( "HOME"); 1049 const char* base = getenv( "HOME");
1050 if ( base ) 1050 if ( base )
1051 return QString( base ) + "/Documents"; 1051 return QString( base ) + "/Documents";
1052 1052
1053 return QString( "../Documents" ); 1053 return QString( "../Documents" );
1054} 1054}
1055 1055
1056static int deforient = -1; 1056static int deforient = -1;
1057 1057
1058/*! 1058/*!
1059 \internal 1059 \internal
1060*/ 1060*/
1061int QPEApplication::defaultRotation() 1061int QPEApplication::defaultRotation()
1062{ 1062{
1063 if ( deforient < 0 ) { 1063 if ( deforient < 0 ) {
1064 QString d = getenv( "QWS_DISPLAY" ); 1064 QString d = getenv( "QWS_DISPLAY" );
1065 if ( d.contains( "Rot90" ) ) { 1065 if ( d.contains( "Rot90" ) ) {
1066 deforient = 90; 1066 deforient = 90;
1067 } 1067 }
1068 else if ( d.contains( "Rot180" ) ) { 1068 else if ( d.contains( "Rot180" ) ) {
1069 deforient = 180; 1069 deforient = 180;
1070 } 1070 }
1071 else if ( d.contains( "Rot270" ) ) { 1071 else if ( d.contains( "Rot270" ) ) {
1072 deforient = 270; 1072 deforient = 270;
1073 } 1073 }
1074 else { 1074 else {
1075 deforient = 0; 1075 deforient = 0;
1076 } 1076 }
1077 } 1077 }
1078 return deforient; 1078 return deforient;
1079} 1079}
1080 1080
1081/*! 1081/*!
1082 \internal 1082 \internal
1083*/ 1083*/
1084void QPEApplication::setDefaultRotation( int r ) 1084void QPEApplication::setDefaultRotation( int r )
1085{ 1085{
1086 if ( qApp->type() == GuiServer ) { 1086 if ( qApp->type() == GuiServer ) {
1087 deforient = r; 1087 deforient = r;
1088 setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 ); 1088 setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 );
1089 Config config("qpe"); 1089 Config config("qpe");
1090 config.setGroup( "Rotation" ); 1090 config.setGroup( "Rotation" );
1091 config.writeEntry( "Rot", r ); 1091 config.writeEntry( "Rot", r );
1092 } 1092 }
1093 else { 1093 else {
1094#ifndef QT_NO_COP 1094#ifndef QT_NO_COP
1095 { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" ); 1095 { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" );
1096 e << r; 1096 e << r;
1097 } 1097 }
1098#endif 1098#endif
1099 1099
1100 } 1100 }
1101} 1101}
1102 1102
1103#include <qgfx_qws.h> 1103#include <qgfx_qws.h>
1104#include <qwindowsystem_qws.h> 1104#include <qwindowsystem_qws.h>
1105 1105
1106extern void qws_clearLoadedFonts(); 1106extern void qws_clearLoadedFonts();
1107 1107
1108void QPEApplication::setCurrentMode( int x, int y, int depth ) 1108void QPEApplication::setCurrentMode( int x, int y, int depth )
1109{ 1109{
1110 // Reset the caches 1110 // Reset the caches
1111 qws_clearLoadedFonts(); 1111 qws_clearLoadedFonts();
1112 QPixmapCache::clear(); 1112 QPixmapCache::clear();
1113 1113
1114 // Change the screen mode 1114 // Change the screen mode
1115 qt_screen->setMode(x, y, depth); 1115 qt_screen->setMode(x, y, depth);
1116 1116
1117 if ( qApp->type() == GuiServer ) { 1117 if ( qApp->type() == GuiServer ) {
1118 // Reconfigure the GuiServer 1118 // Reconfigure the GuiServer
1119 qwsServer->beginDisplayReconfigure(); 1119 qwsServer->beginDisplayReconfigure();
1120 qwsServer->endDisplayReconfigure(); 1120 qwsServer->endDisplayReconfigure();
1121 1121
1122 // Get all the running apps to reset 1122 // Get all the running apps to reset
1123 QCopEnvelope env( "QPE/System", "reset()" ); 1123 QCopEnvelope env( "QPE/System", "reset()" );
1124 } 1124 }
1125} 1125}
1126 1126
1127void QPEApplication::reset() { 1127void QPEApplication::reset() {
1128 // Reconnect to the screen 1128 // Reconnect to the screen
1129 qt_screen->disconnect(); 1129 qt_screen->disconnect();
1130 qt_screen->connect( QString::null ); 1130 qt_screen->connect( QString::null );
1131 1131
1132 // Redraw everything 1132 // Redraw everything
1133 applyStyle(); 1133 applyStyle();
1134} 1134}
1135 1135
1136/*! 1136/*!
1137 \internal 1137 \internal
1138*/ 1138*/
1139void QPEApplication::applyStyle() 1139void QPEApplication::applyStyle()
1140{ 1140{
1141 Config config( "qpe" ); 1141 Config config( "qpe" );
1142 config.setGroup( "Appearance" ); 1142 config.setGroup( "Appearance" );
1143 1143
1144#if QT_VERSION > 233 1144#if QT_VERSION > 233
1145#if !defined(OPIE_NO_OVERRIDE_QT) 1145#if !defined(OPIE_NO_OVERRIDE_QT)
1146 // don't block ourselves ... 1146 // don't block ourselves ...
1147 Opie::force_appearance = 0; 1147 Opie::force_appearance = 0;
1148 1148
1149 static QString appname = Opie::binaryName ( ); 1149 static QString appname = Opie::binaryName ( );
1150 1150
1151 QStringList ex = config. readListEntry ( "NoStyle", ';' ); 1151 QStringList ex = config. readListEntry ( "NoStyle", ';' );
1152 int nostyle = 0; 1152 int nostyle = 0;
1153 for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) { 1153 for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) {
1154 if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) { 1154 if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) {
1155 nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 ); 1155 nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 );
1156 break; 1156 break;
1157 } 1157 }
1158 } 1158 }
1159#else 1159#else
1160 int nostyle = 0; 1160 int nostyle = 0;
1161#endif 1161#endif
1162 1162
1163 // Widget style 1163 // Widget style
1164 QString style = config.readEntry( "Style", "FlatStyle" ); 1164 QString style = config.readEntry( "Style", "FlatStyle" );
1165 1165
1166 // don't set a custom style 1166 // don't set a custom style
1167 if ( nostyle & Opie::Force_Style ) 1167 if ( nostyle & Opie::Force_Style )
1168 style = "FlatStyle"; 1168 style = "FlatStyle";
1169 1169
1170 internalSetStyle ( style ); 1170 internalSetStyle ( style );
1171 1171
1172 // Colors - from /etc/colors/Liquid.scheme 1172 // Colors - from /etc/colors/Liquid.scheme
1173 QColor bgcolor( config.readEntry( "Background", "#E0E0E0" ) ); 1173 QColor bgcolor( config.readEntry( "Background", "#E0E0E0" ) );
1174 QColor btncolor( config.readEntry( "Button", "#96c8fa" ) ); 1174 QColor btncolor( config.readEntry( "Button", "#96c8fa" ) );
1175 QPalette pal( btncolor, bgcolor ); 1175 QPalette pal( btncolor, bgcolor );
1176 QString color = config.readEntry( "Highlight", "#73adef" ); 1176 QString color = config.readEntry( "Highlight", "#73adef" );
1177 pal.setColor( QColorGroup::Highlight, QColor( color ) ); 1177 pal.setColor( QColorGroup::Highlight, QColor( color ) );
1178 color = config.readEntry( "HighlightedText", "#FFFFFF" ); 1178 color = config.readEntry( "HighlightedText", "#FFFFFF" );
1179 pal.setColor( QColorGroup::HighlightedText, QColor( color ) ); 1179 pal.setColor( QColorGroup::HighlightedText, QColor( color ) );
1180 color = config.readEntry( "Text", "#000000" ); 1180 color = config.readEntry( "Text", "#000000" );
1181 pal.setColor( QColorGroup::Text, QColor( color ) ); 1181 pal.setColor( QColorGroup::Text, QColor( color ) );
1182 color = config.readEntry( "ButtonText", "#000000" ); 1182 color = config.readEntry( "ButtonText", "#000000" );
1183 pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) ); 1183 pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) );
1184 color = config.readEntry( "Base", "#FFFFFF" ); 1184 color = config.readEntry( "Base", "#FFFFFF" );
1185 pal.setColor( QColorGroup::Base, QColor( color ) ); 1185 pal.setColor( QColorGroup::Base, QColor( color ) );
1186 1186
1187 pal.setColor( QPalette::Disabled, QColorGroup::Text, 1187 pal.setColor( QPalette::Disabled, QColorGroup::Text,
1188 pal.color( QPalette::Active, QColorGroup::Background ).dark() ); 1188 pal.color( QPalette::Active, QColorGroup::Background ).dark() );
1189 1189
1190 setPalette( pal, TRUE ); 1190 setPalette( pal, TRUE );
1191 1191
1192 // Window Decoration 1192 // Window Decoration
1193 QString dec = config.readEntry( "Decoration", "Flat" ); 1193 QString dec = config.readEntry( "Decoration", "Flat" );
1194 1194
1195 // don't set a custom deco 1195 // don't set a custom deco
1196 if ( nostyle & Opie::Force_Decoration ) 1196 if ( nostyle & Opie::Force_Decoration )
1197 dec = ""; 1197 dec = "";
1198 1198
1199 //qDebug ( "Setting Deco: %s -- old %s (%d)", dec.latin1(), d-> decorationName.latin1(), nostyle); 1199 //qDebug ( "Setting Deco: %s -- old %s (%d)", dec.latin1(), d-> decorationName.latin1(), nostyle);
1200 1200
1201 if ( dec != d->decorationName ) { 1201 if ( dec != d->decorationName ) {
1202 qwsSetDecoration( new QPEDecoration( dec ) ); 1202 qwsSetDecoration( new QPEDecoration( dec ) );
1203 d->decorationName = dec; 1203 d->decorationName = dec;
1204 } 1204 }
1205 1205
1206 // Font 1206 // Font
1207 QString ff = config.readEntry( "FontFamily", font().family() ); 1207 QString ff = config.readEntry( "FontFamily", font().family() );
1208 int fs = config.readNumEntry( "FontSize", font().pointSize() ); 1208 int fs = config.readNumEntry( "FontSize", font().pointSize() );
1209 1209
1210 // don't set a custom font 1210 // don't set a custom font
1211 if ( nostyle & Opie::Force_Font ) { 1211 if ( nostyle & Opie::Force_Font ) {
1212 ff = "Vera"; 1212 ff = "Vera";
1213 fs = 10; 1213 fs = 10;
1214 } 1214 }
1215 1215
1216 setFont ( QFont ( ff, fs ), true ); 1216 setFont ( QFont ( ff, fs ), true );
1217 1217
1218#if !defined(OPIE_NO_OVERRIDE_QT) 1218#if !defined(OPIE_NO_OVERRIDE_QT)
1219 // revert to global blocking policy ... 1219 // revert to global blocking policy ...
1220 Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None; 1220 Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None;
1221 Opie::force_appearance &= ~nostyle; 1221 Opie::force_appearance &= ~nostyle;
1222#endif 1222#endif
1223#endif 1223#endif
1224} 1224}
1225 1225
1226void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data ) 1226void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data )
1227{ 1227{
1228#ifdef Q_WS_QWS 1228#ifdef Q_WS_QWS
1229 QDataStream stream( data, IO_ReadOnly ); 1229 QDataStream stream( data, IO_ReadOnly );
1230 if ( msg == "applyStyle()" ) { 1230 if ( msg == "applyStyle()" ) {
1231 applyStyle(); 1231 applyStyle();
1232 } 1232 }
1233 else if ( msg == "toggleApplicationMenu()" ) { 1233 else if ( msg == "toggleApplicationMenu()" ) {
1234 QWidget *active = activeWindow ( ); 1234 QWidget *active = activeWindow ( );
1235 1235
1236 if ( active ) { 1236 if ( active ) {
1237 QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( ); 1237 QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( );
1238 bool oldactive = man-> isActive ( ); 1238 bool oldactive = man-> isActive ( );
1239 1239
1240 man-> setActive( !man-> isActive() ); 1240 man-> setActive( !man-> isActive() );
1241 1241
1242 if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu 1242 if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu
1243 QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" ); 1243 QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" );
1244 } 1244 }
1245 } 1245 }
1246 } 1246 }
1247 else if ( msg == "setDefaultRotation(int)" ) { 1247 else if ( msg == "setDefaultRotation(int)" ) {
1248 if ( type() == GuiServer ) { 1248 if ( type() == GuiServer ) {
1249 int r; 1249 int r;
1250 stream >> r; 1250 stream >> r;
1251 setDefaultRotation( r ); 1251 setDefaultRotation( r );
1252 } 1252 }
1253 } 1253 }
1254 else if ( msg == "setCurrentMode(int,int,int)" ) { // Added: 2003-06-11 by Tim Ansell <mithro@mithis.net> 1254 else if ( msg == "setCurrentMode(int,int,int)" ) { // Added: 2003-06-11 by Tim Ansell <mithro@mithis.net>
1255 if ( type() == GuiServer ) { 1255 if ( type() == GuiServer ) {
1256 int x, y, depth; 1256 int x, y, depth;
1257 stream >> x; 1257 stream >> x;
1258 stream >> y; 1258 stream >> y;
1259 stream >> depth; 1259 stream >> depth;
1260 setCurrentMode( x, y, depth ); 1260 setCurrentMode( x, y, depth );
1261 } 1261 }
1262 } 1262 }
1263 else if ( msg == "reset()" ) { 1263 else if ( msg == "reset()" ) {
1264 if ( type() != GuiServer ) 1264 if ( type() != GuiServer )
1265 reset(); 1265 reset();
1266 } 1266 }
1267 else if ( msg == "setCurrentRotation(int)" ) { 1267 else if ( msg == "setCurrentRotation(int)" ) {
1268 int r; 1268 int r;
1269 stream >> r; 1269 stream >> r;
1270 setCurrentRotation( r ); 1270 setCurrentRotation( r );
1271 } 1271 }
1272 else if ( msg == "shutdown()" ) { 1272 else if ( msg == "shutdown()" ) {
1273 if ( type() == GuiServer ) 1273 if ( type() == GuiServer )
1274 shutdown(); 1274 shutdown();
1275 } 1275 }
1276 else if ( msg == "quit()" ) { 1276 else if ( msg == "quit()" ) {
1277 if ( type() != GuiServer ) 1277 if ( type() != GuiServer )
1278 tryQuit(); 1278 tryQuit();
1279 } 1279 }
1280 else if ( msg == "forceQuit()" ) { 1280 else if ( msg == "forceQuit()" ) {
1281 if ( type() != GuiServer ) 1281 if ( type() != GuiServer )
1282 quit(); 1282 quit();
1283 } 1283 }
1284 else if ( msg == "restart()" ) { 1284 else if ( msg == "restart()" ) {
1285 if ( type() == GuiServer ) 1285 if ( type() == GuiServer )
1286 restart(); 1286 restart();
1287 } 1287 }
1288 else if ( msg == "language(QString)" ) { 1288 else if ( msg == "language(QString)" ) {
1289 if ( type() == GuiServer ) { 1289 if ( type() == GuiServer ) {
1290 QString l; 1290 QString l;
1291 stream >> l; 1291 stream >> l;
1292 QString cl = getenv( "LANG" ); 1292 QString cl = getenv( "LANG" );
1293 if ( cl != l ) { 1293 if ( cl != l ) {
1294 if ( l.isNull() ) 1294 if ( l.isNull() )
1295 unsetenv( "LANG" ); 1295 unsetenv( "LANG" );
1296 else 1296 else
1297 setenv( "LANG", l.latin1(), 1 ); 1297 setenv( "LANG", l.latin1(), 1 );
1298 restart(); 1298 restart();
1299 } 1299 }
1300 } 1300 }
1301 } 1301 }
1302 else if ( msg == "timeChange(QString)" ) { 1302 else if ( msg == "timeChange(QString)" ) {
1303 QString t; 1303 QString t;
1304 stream >> t; 1304 stream >> t;
1305 if ( t.isNull() ) 1305 if ( t.isNull() )
1306 unsetenv( "TZ" ); 1306 unsetenv( "TZ" );
1307 else 1307 else
1308 setenv( "TZ", t.latin1(), 1 ); 1308 setenv( "TZ", t.latin1(), 1 );
1309 // emit the signal so everyone else knows... 1309 // emit the signal so everyone else knows...
1310 emit timeChanged(); 1310 emit timeChanged();
1311 } 1311 }
1312 else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) { 1312 else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) {
1313 if ( type() == GuiServer ) { 1313 if ( type() == GuiServer ) {
1314 QDateTime when; 1314 QDateTime when;
1315 QCString channel, message; 1315 QCString channel, message;
1316 int data; 1316 int data;
1317 stream >> when >> channel >> message >> data; 1317 stream >> when >> channel >> message >> data;
1318 AlarmServer::addAlarm( when, channel, message, data ); 1318 AlarmServer::addAlarm( when, channel, message, data );
1319 } 1319 }
1320 } 1320 }
1321 else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) { 1321 else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) {
1322 if ( type() == GuiServer ) { 1322 if ( type() == GuiServer ) {
1323 QDateTime when; 1323 QDateTime when;
1324 QCString channel, message; 1324 QCString channel, message;
1325 int data; 1325 int data;
1326 stream >> when >> channel >> message >> data; 1326 stream >> when >> channel >> message >> data;
1327 AlarmServer::deleteAlarm( when, channel, message, data ); 1327 AlarmServer::deleteAlarm( when, channel, message, data );
1328 } 1328 }
1329 } 1329 }
1330 else if ( msg == "clockChange(bool)" ) { 1330 else if ( msg == "clockChange(bool)" ) {
1331 int tmp; 1331 int tmp;
1332 stream >> tmp; 1332 stream >> tmp;
1333 emit clockChanged( tmp ); 1333 emit clockChanged( tmp );
1334 } 1334 }
1335 else if ( msg == "weekChange(bool)" ) { 1335 else if ( msg == "weekChange(bool)" ) {
1336 int tmp; 1336 int tmp;
1337 stream >> tmp; 1337 stream >> tmp;
1338 emit weekChanged( tmp ); 1338 emit weekChanged( tmp );
1339 } 1339 }
1340 else if ( msg == "setDateFormat(DateFormat)" ) { 1340 else if ( msg == "setDateFormat(DateFormat)" ) {
1341 DateFormat tmp; 1341 DateFormat tmp;
1342 stream >> tmp; 1342 stream >> tmp;
1343 emit dateFormatChanged( tmp ); 1343 emit dateFormatChanged( tmp );
1344 } 1344 }
1345 else if ( msg == "setVolume(int,int)" ) { 1345 else if ( msg == "setVolume(int,int)" ) {
1346 int t, v; 1346 int t, v;
1347 stream >> t >> v; 1347 stream >> t >> v;
1348 setVolume( t, v ); 1348 setVolume( t, v );
1349 emit volumeChanged( muted ); 1349 emit volumeChanged( muted );
1350 } 1350 }
1351 else if ( msg == "volumeChange(bool)" ) { 1351 else if ( msg == "volumeChange(bool)" ) {
1352 stream >> muted; 1352 stream >> muted;
1353 setVolume(); 1353 setVolume();
1354 emit volumeChanged( muted ); 1354 emit volumeChanged( muted );
1355 } 1355 }
1356 else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> 1356 else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
1357 int t, v; 1357 int t, v;
1358 stream >> t >> v; 1358 stream >> t >> v;
1359 setMic( t, v ); 1359 setMic( t, v );
1360 emit micChanged( micMuted ); 1360 emit micChanged( micMuted );
1361 } 1361 }
1362 else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> 1362 else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
1363 stream >> micMuted; 1363 stream >> micMuted;
1364 setMic(); 1364 setMic();
1365 emit micChanged( micMuted ); 1365 emit micChanged( micMuted );
1366 } 1366 }
1367 else if ( msg == "setBass(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1367 else if ( msg == "setBass(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1368 int t, v; 1368 int t, v;
1369 stream >> t >> v; 1369 stream >> t >> v;
1370 setBass( t, v ); 1370 setBass( t, v );
1371 } 1371 }
1372 else if ( msg == "bassChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1372 else if ( msg == "bassChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1373 setBass(); 1373 setBass();
1374 } 1374 }
1375 else if ( msg == "setTreble(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1375 else if ( msg == "setTreble(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1376 int t, v; 1376 int t, v;
1377 stream >> t >> v; 1377 stream >> t >> v;
1378 setTreble( t, v ); 1378 setTreble( t, v );
1379 } 1379 }
1380 else if ( msg == "trebleChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1380 else if ( msg == "trebleChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1381 setTreble(); 1381 setTreble();
1382 } else if ( msg == "getMarkedText()" ) { 1382 } else if ( msg == "getMarkedText()" ) {
1383 if ( type() == GuiServer ) { 1383 if ( type() == GuiServer ) {
1384 const ushort unicode = 'C'-'@'; 1384 const ushort unicode = 'C'-'@';
1385 const int scan = Key_C; 1385 const int scan = Key_C;
1386 qwsServer->processKeyEvent( unicode, scan, ControlButton, TRUE, FALSE ); 1386 qwsServer->processKeyEvent( unicode, scan, ControlButton, TRUE, FALSE );
1387 qwsServer->processKeyEvent( unicode, scan, ControlButton, FALSE, FALSE ); 1387 qwsServer->processKeyEvent( unicode, scan, ControlButton, FALSE, FALSE );
1388 } 1388 }
1389 } else if ( msg == "newChannel(QString)") { 1389 } else if ( msg == "newChannel(QString)") {
1390 QString myChannel = "QPE/Application/" + d->appName; 1390 QString myChannel = "QPE/Application/" + d->appName;
1391 QString channel; 1391 QString channel;
1392 stream >> channel; 1392 stream >> channel;
1393 if (channel == myChannel) { 1393 if (channel == myChannel) {
1394 processQCopFile(); 1394 processQCopFile();
1395 d->sendQCopQ(); 1395 d->sendQCopQ();
1396 } 1396 }
1397 } 1397 }
1398 1398
1399 1399
1400#endif 1400#endif
1401} 1401}
1402 1402
1403 1403
1404 1404
1405 1405
1406 1406
1407/*! 1407/*!
1408 \internal 1408 \internal
1409*/ 1409*/
1410bool QPEApplication::raiseAppropriateWindow() 1410bool QPEApplication::raiseAppropriateWindow()
1411{ 1411{
1412 bool r=FALSE; 1412 bool r=FALSE;
1413 1413
1414 // 1. Raise the main widget 1414 // 1. Raise the main widget
1415 QWidget *top = d->qpe_main_widget; 1415 QWidget *top = d->qpe_main_widget;
1416 if ( !top ) top = mainWidget(); 1416 if ( !top ) top = mainWidget();
1417 1417
1418 if ( top && d->keep_running ) { 1418 if ( top && d->keep_running ) {
1419 if ( top->isVisible() ) 1419 if ( top->isVisible() )
1420 r = TRUE; 1420 r = TRUE;
1421 else if (d->preloaded) { 1421 else if (d->preloaded) {
1422 // We are preloaded and not visible.. pretend we just started.. 1422 // We are preloaded and not visible.. pretend we just started..
1423#ifndef QT_NO_COP 1423#ifndef QT_NO_COP
1424 QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); 1424 QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
1425 e << d->appName; 1425 e << d->appName;
1426#endif 1426#endif
1427 } 1427 }
1428 1428
1429 d->show_mx(top,d->nomaximize, d->appName); 1429 d->show_mx(top,d->nomaximize, d->appName);
1430 top->raise(); 1430 top->raise();
1431 } 1431 }
1432 1432
1433 QWidget *topm = activeModalWidget(); 1433 QWidget *topm = activeModalWidget();
1434 1434
1435 // 2. Raise any parentless widgets (except top and topm, as they 1435 // 2. Raise any parentless widgets (except top and topm, as they
1436 // are raised before and after this loop). Order from most 1436 // are raised before and after this loop). Order from most
1437 // recently raised as deepest to least recently as top, so 1437 // recently raised as deepest to least recently as top, so
1438 // that repeated calls cycle through widgets. 1438 // that repeated calls cycle through widgets.
1439 QWidgetList *list = topLevelWidgets(); 1439 QWidgetList *list = topLevelWidgets();
1440 if ( list ) { 1440 if ( list ) {
1441 bool foundlast = FALSE; 1441 bool foundlast = FALSE;
1442 QWidget* topsub = 0; 1442 QWidget* topsub = 0;
1443 if ( d->lastraised ) { 1443 if ( d->lastraised ) {
1444 for (QWidget* w = list->first(); w; w = list->next()) { 1444 for (QWidget* w = list->first(); w; w = list->next()) {
1445 if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) { 1445 if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) {
1446 if ( w == d->lastraised ) 1446 if ( w == d->lastraised )
1447 foundlast = TRUE; 1447 foundlast = TRUE;
1448 if ( foundlast ) { 1448 if ( foundlast ) {
1449 w->raise(); 1449 w->raise();
1450 topsub = w; 1450 topsub = w;
1451 } 1451 }
1452 } 1452 }
1453 } 1453 }
1454 } 1454 }
1455 for (QWidget* w = list->first(); w; w = list->next()) { 1455 for (QWidget* w = list->first(); w; w = list->next()) {
1456 if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) { 1456 if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) {
1457 if ( w == d->lastraised ) 1457 if ( w == d->lastraised )
1458 break; 1458 break;
1459 w->raise(); 1459 w->raise();
1460 topsub = w; 1460 topsub = w;
1461 } 1461 }
1462 } 1462 }
1463 d->lastraised = topsub; 1463 d->lastraised = topsub;
1464 delete list; 1464 delete list;
1465 } 1465 }
1466 1466
1467 // 3. Raise the active modal widget. 1467 // 3. Raise the active modal widget.
1468 if ( topm && topm != top ) { 1468 if ( topm ) {
1469 topm->show(); 1469 topm->show();
1470 topm->raise(); 1470 topm->raise();
1471 // If we haven't already handled the fastAppShowing message 1471 // If we haven't already handled the fastAppShowing message
1472 if (!top && d->preloaded) { 1472 if (!top && d->preloaded) {
1473#ifndef QT_NO_COP 1473#ifndef QT_NO_COP
1474 QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); 1474 QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
1475 e << d->appName; 1475 e << d->appName;
1476#endif 1476#endif
1477 } 1477 }
1478 r = FALSE; 1478 r = FALSE;
1479 } 1479 }
1480 1480
1481 return r; 1481 return r;
1482} 1482}
1483 1483
1484 1484
1485void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data) 1485void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data)
1486{ 1486{
1487#ifdef Q_WS_QWS 1487#ifdef Q_WS_QWS
1488 1488
1489 if ( msg == "quit()" ) { 1489 if ( msg == "quit()" ) {
1490 tryQuit(); 1490 tryQuit();
1491 } 1491 }
1492 else if ( msg == "quitIfInvisible()" ) { 1492 else if ( msg == "quitIfInvisible()" ) {
1493 if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() ) 1493 if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() )
1494 quit(); 1494 quit();
1495 } 1495 }
1496 else if ( msg == "close()" ) { 1496 else if ( msg == "close()" ) {
1497 hideOrQuit(); 1497 hideOrQuit();
1498 } 1498 }
1499 else if ( msg == "disablePreload()" ) { 1499 else if ( msg == "disablePreload()" ) {
1500 d->preloaded = FALSE; 1500 d->preloaded = FALSE;
1501 d->keep_running = TRUE; 1501 d->keep_running = TRUE;
1502 /* so that quit will quit */ 1502 /* so that quit will quit */
1503 } 1503 }
1504 else if ( msg == "enablePreload()" ) { 1504 else if ( msg == "enablePreload()" ) {
1505 if (d->qpe_main_widget) 1505 if (d->qpe_main_widget)
1506 d->preloaded = TRUE; 1506 d->preloaded = TRUE;
1507 d->keep_running = TRUE; 1507 d->keep_running = TRUE;
1508 /* so next quit won't quit */ 1508 /* so next quit won't quit */
1509 } 1509 }
1510 else if ( msg == "raise()" ) { 1510 else if ( msg == "raise()" ) {
1511 d->keep_running = TRUE; 1511 d->keep_running = TRUE;
1512 d->notbusysent = FALSE; 1512 d->notbusysent = FALSE;
1513 raiseAppropriateWindow(); 1513 raiseAppropriateWindow();
1514 // Tell the system we're still chugging along... 1514 // Tell the system we're still chugging along...
1515 QCopEnvelope e("QPE/System", "appRaised(QString)"); 1515 QCopEnvelope e("QPE/System", "appRaised(QString)");
1516 e << d->appName; 1516 e << d->appName;
1517 } 1517 }
1518 else if ( msg == "flush()" ) { 1518 else if ( msg == "flush()" ) {
1519 emit flush(); 1519 emit flush();
1520 // we need to tell the desktop 1520 // we need to tell the desktop
1521 QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" ); 1521 QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" );
1522 e << d->appName; 1522 e << d->appName;
1523 } 1523 }
1524 else if ( msg == "reload()" ) { 1524 else if ( msg == "reload()" ) {
1525 emit reload(); 1525 emit reload();
1526 } 1526 }
1527 else if ( msg == "setDocument(QString)" ) { 1527 else if ( msg == "setDocument(QString)" ) {
1528 d->keep_running = TRUE; 1528 d->keep_running = TRUE;
1529 QDataStream stream( data, IO_ReadOnly ); 1529 QDataStream stream( data, IO_ReadOnly );
1530 QString doc; 1530 QString doc;
1531 stream >> doc; 1531 stream >> doc;
1532 QWidget *mw = mainWidget(); 1532 QWidget *mw = mainWidget();
1533 if ( !mw ) 1533 if ( !mw )
1534 mw = d->qpe_main_widget; 1534 mw = d->qpe_main_widget;
1535 if ( mw ) 1535 if ( mw )
1536 Global::setDocument( mw, doc ); 1536 Global::setDocument( mw, doc );
1537 1537
1538 } else if ( msg == "QPEProcessQCop()" ) { 1538 } else if ( msg == "QPEProcessQCop()" ) {
1539 processQCopFile(); 1539 processQCopFile();
1540 d->sendQCopQ(); 1540 d->sendQCopQ();
1541 }else 1541 }else
1542 { 1542 {
1543 bool p = d->keep_running; 1543 bool p = d->keep_running;
1544 d->keep_running = FALSE; 1544 d->keep_running = FALSE;
1545 emit appMessage( msg, data); 1545 emit appMessage( msg, data);
1546 if ( d->keep_running ) { 1546 if ( d->keep_running ) {
1547 d->notbusysent = FALSE; 1547 d->notbusysent = FALSE;
1548 raiseAppropriateWindow(); 1548 raiseAppropriateWindow();
1549 if ( !p ) { 1549 if ( !p ) {
1550 // Tell the system we're still chugging along... 1550 // Tell the system we're still chugging along...
1551#ifndef QT_NO_COP 1551#ifndef QT_NO_COP
1552 QCopEnvelope e("QPE/System", "appRaised(QString)"); 1552 QCopEnvelope e("QPE/System", "appRaised(QString)");
1553 e << d->appName; 1553 e << d->appName;
1554#endif 1554#endif
1555 } 1555 }
1556 } 1556 }
1557 if ( p ) 1557 if ( p )
1558 d->keep_running = p; 1558 d->keep_running = p;
1559 } 1559 }
1560#endif 1560#endif
1561} 1561}
1562 1562
1563 1563
1564/*! 1564/*!
1565 Sets widget \a mw as the mainWidget() and shows it. For small windows, 1565 Sets widget \a mw as the mainWidget() and shows it. For small windows,
1566 consider passing TRUE for \a nomaximize rather than the default FALSE. 1566 consider passing TRUE for \a nomaximize rather than the default FALSE.
1567 1567
1568 \sa showMainDocumentWidget() 1568 \sa showMainDocumentWidget()
1569*/ 1569*/
1570void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize ) 1570void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize )
1571{ 1571{
1572 // setMainWidget(mw); this breaks FastLoading because lastWindowClose() would quit 1572 // setMainWidget(mw); this breaks FastLoading because lastWindowClose() would quit
1573 d->show(mw, nomaximize ); 1573 d->show(mw, nomaximize );
1574} 1574}
1575 1575
1576/*! 1576/*!
1577 Sets widget \a mw as the mainWidget() and shows it. For small windows, 1577 Sets widget \a mw as the mainWidget() and shows it. For small windows,
1578 consider passing TRUE for \a nomaximize rather than the default FALSE. 1578 consider passing TRUE for \a nomaximize rather than the default FALSE.
1579 1579
1580 This calls designates the application as 1580 This calls designates the application as
1581 a \link docwidget.html document-oriented\endlink application. 1581 a \link docwidget.html document-oriented\endlink application.
1582 1582
1583 The \a mw widget \e must have this slot: setDocument(const QString&). 1583 The \a mw widget \e must have this slot: setDocument(const QString&).
1584 1584
1585 \sa showMainWidget() 1585 \sa showMainWidget()
1586*/ 1586*/
1587void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize ) 1587void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize )
1588{ 1588{
1589 if ( mw && argc() == 2 ) 1589 if ( mw && argc() == 2 )
1590 Global::setDocument( mw, QString::fromUtf8(argv()[1]) ); 1590 Global::setDocument( mw, QString::fromUtf8(argv()[1]) );
1591 1591
1592 1592
1593 //setMainWidget(mw); see above 1593 //setMainWidget(mw); see above
1594 d->show(mw, nomaximize ); 1594 d->show(mw, nomaximize );
1595} 1595}
1596 1596
1597 1597
1598/*! 1598/*!
1599 If an application is started via a \link qcop.html QCop\endlink 1599 If an application is started via a \link qcop.html QCop\endlink
1600 message, the application will process the \link qcop.html 1600 message, the application will process the \link qcop.html
1601 QCop\endlink message and then quit. If the application calls this 1601 QCop\endlink message and then quit. If the application calls this
1602 function while processing a \link qcop.html QCop\endlink message, 1602 function while processing a \link qcop.html QCop\endlink message,
1603 after processing its outstanding \link qcop.html QCop\endlink 1603 after processing its outstanding \link qcop.html QCop\endlink
1604 messages the application will start 'properly' and show itself. 1604 messages the application will start 'properly' and show itself.
1605 1605
1606 \sa keepRunning() 1606 \sa keepRunning()
1607*/ 1607*/
1608void QPEApplication::setKeepRunning() 1608void QPEApplication::setKeepRunning()
1609{ 1609{
1610 if ( qApp && qApp->inherits( "QPEApplication" ) ) { 1610 if ( qApp && qApp->inherits( "QPEApplication" ) ) {
1611 QPEApplication * qpeApp = ( QPEApplication* ) qApp; 1611 QPEApplication * qpeApp = ( QPEApplication* ) qApp;
1612 qpeApp->d->keep_running = TRUE; 1612 qpeApp->d->keep_running = TRUE;
1613 } 1613 }
1614} 1614}
1615 1615
1616/*! 1616/*!
1617 Returns TRUE if the application will quit after processing the 1617 Returns TRUE if the application will quit after processing the
1618 current list of qcop messages; otherwise returns FALSE. 1618 current list of qcop messages; otherwise returns FALSE.
1619 1619
1620 \sa setKeepRunning() 1620 \sa setKeepRunning()
1621*/ 1621*/
1622bool QPEApplication::keepRunning() const 1622bool QPEApplication::keepRunning() const
1623{ 1623{
1624 return d->keep_running; 1624 return d->keep_running;
1625} 1625}
1626 1626
1627/*! 1627/*!
1628 \internal 1628 \internal
1629*/ 1629*/
1630void QPEApplication::internalSetStyle( const QString &style ) 1630void QPEApplication::internalSetStyle( const QString &style )
1631{ 1631{
1632#if QT_VERSION >= 300 1632#if QT_VERSION >= 300
1633 if ( style == "QPE" ) { 1633 if ( style == "QPE" ) {
1634 setStyle( new QPEStyle ); 1634 setStyle( new QPEStyle );
1635 } 1635 }
1636 else { 1636 else {
1637 QStyle *s = QStyleFactory::create( style ); 1637 QStyle *s = QStyleFactory::create( style );
1638 if ( s ) 1638 if ( s )
1639 setStyle( s ); 1639 setStyle( s );
1640 } 1640 }
1641#else 1641#else
1642 if ( style == "Windows" ) { 1642 if ( style == "Windows" ) {
1643 setStyle( new QWindowsStyle ); 1643 setStyle( new QWindowsStyle );
1644 } 1644 }
1645 else if ( style == "QPE" ) { 1645 else if ( style == "QPE" ) {
1646 setStyle( new QPEStyle ); 1646 setStyle( new QPEStyle );
1647 } 1647 }
1648 else if ( style == "Light" ) { 1648 else if ( style == "Light" ) {
1649 setStyle( new LightStyle ); 1649 setStyle( new LightStyle );
1650 } 1650 }
1651#ifndef QT_NO_STYLE_PLATINUM 1651#ifndef QT_NO_STYLE_PLATINUM
1652 else if ( style == "Platinum" ) { 1652 else if ( style == "Platinum" ) {
1653 setStyle( new QPlatinumStyle ); 1653 setStyle( new QPlatinumStyle );
1654 } 1654 }
1655#endif 1655#endif
1656#ifndef QT_NO_STYLE_MOTIF 1656#ifndef QT_NO_STYLE_MOTIF
1657 else if ( style == "Motif" ) { 1657 else if ( style == "Motif" ) {
1658 setStyle( new QMotifStyle ); 1658 setStyle( new QMotifStyle );
1659 } 1659 }
1660#endif 1660#endif
1661#ifndef QT_NO_STYLE_MOTIFPLUS 1661#ifndef QT_NO_STYLE_MOTIFPLUS
1662 else if ( style == "MotifPlus" ) { 1662 else if ( style == "MotifPlus" ) {
1663 setStyle( new QMotifPlusStyle ); 1663 setStyle( new QMotifPlusStyle );
1664 } 1664 }
1665#endif 1665#endif
1666 1666
1667 else { 1667 else {
1668 QStyle *sty = 0; 1668 QStyle *sty = 0;
1669 QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/"; 1669 QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/";
1670 1670
1671#ifdef Q_OS_MACX 1671#ifdef Q_OS_MACX
1672 if ( style. find ( ".dylib" ) > 0 ) 1672 if ( style. find ( ".dylib" ) > 0 )
1673 path += style; 1673 path += style;
1674 else 1674 else
1675 path = path + "lib" + style. lower ( ) + ".dylib"; // compatibility 1675 path = path + "lib" + style. lower ( ) + ".dylib"; // compatibility
1676#else 1676#else
1677 if ( style. find ( ".so" ) > 0 ) 1677 if ( style. find ( ".so" ) > 0 )
1678 path += style; 1678 path += style;
1679 else 1679 else
1680 path = path + "lib" + style. lower ( ) + ".so"; // compatibility 1680 path = path + "lib" + style. lower ( ) + ".so"; // compatibility
1681#endif 1681#endif
1682 static QLibrary *lastlib = 0; 1682 static QLibrary *lastlib = 0;
1683 static StyleInterface *lastiface = 0; 1683 static StyleInterface *lastiface = 0;
1684 1684
1685 QLibrary *lib = new QLibrary ( path ); 1685 QLibrary *lib = new QLibrary ( path );
1686 StyleInterface *iface = 0; 1686 StyleInterface *iface = 0;
1687 1687
1688 if (( lib-> queryInterface ( IID_Style, ( QUnknownInterface ** ) &iface ) == QS_OK ) && iface ) 1688 if (( lib-> queryInterface ( IID_Style, ( QUnknownInterface ** ) &iface ) == QS_OK ) && iface )
1689 sty = iface-> style ( ); 1689 sty = iface-> style ( );
1690 1690
1691 if ( sty ) { 1691 if ( sty ) {
1692 setStyle ( sty ); 1692 setStyle ( sty );
1693 1693
1694 if ( lastiface ) 1694 if ( lastiface )
1695 lastiface-> release ( ); 1695 lastiface-> release ( );
1696 lastiface = iface; 1696 lastiface = iface;
1697 1697
1698 if ( lastlib ) { 1698 if ( lastlib ) {
1699 lastlib-> unload ( ); 1699 lastlib-> unload ( );
1700 delete lastlib; 1700 delete lastlib;
1701 } 1701 }
1702 lastlib = lib; 1702 lastlib = lib;
1703 } 1703 }
1704 else { 1704 else {
1705 if ( iface ) 1705 if ( iface )
1706 iface-> release ( ); 1706 iface-> release ( );
1707 delete lib; 1707 delete lib;
1708 1708
1709 setStyle ( new LightStyle ( )); 1709 setStyle ( new LightStyle ( ));
1710 } 1710 }
1711 } 1711 }
1712#endif 1712#endif
1713} 1713}
1714 1714
1715/*! 1715/*!
1716 \internal 1716 \internal
1717*/ 1717*/
1718void QPEApplication::prepareForTermination( bool willrestart ) 1718void QPEApplication::prepareForTermination( bool willrestart )
1719{ 1719{
1720 if ( willrestart ) { 1720 if ( willrestart ) {
1721 // Draw a big wait icon, the image can be altered in later revisions 1721 // Draw a big wait icon, the image can be altered in later revisions
1722 // QWidget *d = QApplication::desktop(); 1722 // QWidget *d = QApplication::desktop();
1723 QImage img = Resource::loadImage( "launcher/new_wait" ); 1723 QImage img = Resource::loadImage( "launcher/new_wait" );
1724 QPixmap pix; 1724 QPixmap pix;