summaryrefslogtreecommitdiff
authorzecke <zecke>2003-08-18 10:51:18 (UTC)
committer zecke <zecke>2003-08-18 10:51:18 (UTC)
commit58a2e0e7804a01f53153ee0dc58725e654d8d191 (patch) (unidiff)
treeb5079fc7b5b4674d906fafd4caa09d938fb13dc7
parentbbe788821dd43351b96c7a8826f1b7d904f33fdb (diff)
downloadopie-58a2e0e7804a01f53153ee0dc58725e654d8d191.zip
opie-58a2e0e7804a01f53153ee0dc58725e654d8d191.tar.gz
opie-58a2e0e7804a01f53153ee0dc58725e654d8d191.tar.bz2
If gnuc > 2 define our own __cxa_pure_virtual
this allows us to link with gcc with latest gcc3.3.1pre1 toolchain
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpeapplication.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index 4e08a1f..d1a7cd2 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -751,1089 +751,1101 @@ bool QPEApplication::qwsEventFilter( QWSEvent * e )
751 e << d->appName; 751 e << d->appName;
752 } 752 }
753 d->notbusysent = TRUE; 753 d->notbusysent = TRUE;
754 } 754 }
755 if ( type() == GuiServer ) { 755 if ( type() == GuiServer ) {
756 switch ( e->type ) { 756 switch ( e->type ) {
757 case QWSEvent::Mouse: 757 case QWSEvent::Mouse:
758 if ( e->asMouse() ->simpleData.state && !QWidget::find( e->window() ) ) 758 if ( e->asMouse() ->simpleData.state && !QWidget::find( e->window() ) )
759 emit clientMoused(); 759 emit clientMoused();
760 break; 760 break;
761 default: 761 default:
762 break; 762 break;
763 } 763 }
764 } 764 }
765 if ( e->type == QWSEvent::Key ) { 765 if ( e->type == QWSEvent::Key ) {
766 QWSKeyEvent *ke = ( QWSKeyEvent * ) e; 766 QWSKeyEvent *ke = ( QWSKeyEvent * ) e;
767 if ( ke->simpleData.keycode == Qt::Key_F33 ) { 767 if ( ke->simpleData.keycode == Qt::Key_F33 ) {
768 // Use special "OK" key to press "OK" on top level widgets 768 // Use special "OK" key to press "OK" on top level widgets
769 QWidget * active = activeWindow(); 769 QWidget * active = activeWindow();
770 QWidget *popup = 0; 770 QWidget *popup = 0;
771 if ( active && active->isPopup() ) { 771 if ( active && active->isPopup() ) {
772 popup = active; 772 popup = active;
773 active = active->parentWidget(); 773 active = active->parentWidget();
774 } 774 }
775 if ( active && ( int ) active->winId() == ke->simpleData.window && 775 if ( active && ( int ) active->winId() == ke->simpleData.window &&
776 !active->testWFlags( WStyle_Customize | WType_Popup | WType_Desktop ) ) { 776 !active->testWFlags( WStyle_Customize | WType_Popup | WType_Desktop ) ) {
777 if ( ke->simpleData.is_press ) { 777 if ( ke->simpleData.is_press ) {
778 if ( popup ) 778 if ( popup )
779 popup->close(); 779 popup->close();
780 if ( active->inherits( "QDialog" ) ) { 780 if ( active->inherits( "QDialog" ) ) {
781 HackDialog * d = ( HackDialog * ) active; 781 HackDialog * d = ( HackDialog * ) active;
782 d->acceptIt(); 782 d->acceptIt();
783 return TRUE; 783 return TRUE;
784 } 784 }
785 else if ( ( ( HackWidget * ) active ) ->needsOk() ) { 785 else if ( ( ( HackWidget * ) active ) ->needsOk() ) {
786 QSignal s; 786 QSignal s;
787 s.connect( active, SLOT( accept() ) ); 787 s.connect( active, SLOT( accept() ) );
788 s.activate(); 788 s.activate();
789 } 789 }
790 else { 790 else {
791 // do the same as with the select key: Map to the default action of the widget: 791 // do the same as with the select key: Map to the default action of the widget:
792 mapToDefaultAction( ke, Qt::Key_Return ); 792 mapToDefaultAction( ke, Qt::Key_Return );
793 } 793 }
794 } 794 }
795 } 795 }
796 } 796 }
797 else if ( ke->simpleData.keycode == Qt::Key_F30 ) { 797 else if ( ke->simpleData.keycode == Qt::Key_F30 ) {
798 // Use special "select" key to do whatever default action a widget has 798 // Use special "select" key to do whatever default action a widget has
799 mapToDefaultAction( ke, Qt::Key_Space ); 799 mapToDefaultAction( ke, Qt::Key_Space );
800 } 800 }
801 else if ( ke->simpleData.keycode == Qt::Key_Escape && 801 else if ( ke->simpleData.keycode == Qt::Key_Escape &&
802 ke->simpleData.is_press ) { 802 ke->simpleData.is_press ) {
803 // Escape key closes app if focus on toplevel 803 // Escape key closes app if focus on toplevel
804 QWidget * active = activeWindow(); 804 QWidget * active = activeWindow();
805 if ( active && active->testWFlags( WType_TopLevel ) && 805 if ( active && active->testWFlags( WType_TopLevel ) &&
806 ( int ) active->winId() == ke->simpleData.window && 806 ( int ) active->winId() == ke->simpleData.window &&
807 !active->testWFlags( WStyle_Dialog | WStyle_Customize | WType_Popup | WType_Desktop ) ) { 807 !active->testWFlags( WStyle_Dialog | WStyle_Customize | WType_Popup | WType_Desktop ) ) {
808 if ( active->inherits( "QDialog" ) ) { 808 if ( active->inherits( "QDialog" ) ) {
809 HackDialog * d = ( HackDialog * ) active; 809 HackDialog * d = ( HackDialog * ) active;
810 d->rejectIt(); 810 d->rejectIt();
811 return TRUE; 811 return TRUE;
812 } 812 }
813 else if ( strcmp( argv() [ 0 ], "embeddedkonsole" ) != 0 ) { 813 else if ( strcmp( argv() [ 0 ], "embeddedkonsole" ) != 0 ) {
814 active->close(); 814 active->close();
815 } 815 }
816 } 816 }
817 } 817 }
818 else if ( ke->simpleData.keycode >= Qt::Key_F1 && ke->simpleData.keycode <= Qt::Key_F29 ) { 818 else if ( ke->simpleData.keycode >= Qt::Key_F1 && ke->simpleData.keycode <= Qt::Key_F29 ) {
819 // this should be if ( ODevice::inst ( )-> buttonForKeycode ( ... )) 819 // this should be if ( ODevice::inst ( )-> buttonForKeycode ( ... ))
820 // but we cannot access libopie function within libqpe :( 820 // but we cannot access libopie function within libqpe :(
821 821
822 QWidget * active = activeWindow ( ); 822 QWidget * active = activeWindow ( );
823 if ( active && ((int) active-> winId ( ) == ke-> simpleData.window )) { 823 if ( active && ((int) active-> winId ( ) == ke-> simpleData.window )) {
824 if ( d-> kbgrabbed ) { // we grabbed the keyboard 824 if ( d-> kbgrabbed ) { // we grabbed the keyboard
825 QChar ch ( ke-> simpleData.unicode ); 825 QChar ch ( ke-> simpleData.unicode );
826 QKeyEvent qke ( ke-> simpleData. is_press ? QEvent::KeyPress : QEvent::KeyRelease, 826 QKeyEvent qke ( ke-> simpleData. is_press ? QEvent::KeyPress : QEvent::KeyRelease,
827 ke-> simpleData.keycode, 827 ke-> simpleData.keycode,
828 ch. latin1 ( ), 828 ch. latin1 ( ),
829 ke-> simpleData.modifiers, 829 ke-> simpleData.modifiers,
830 QString ( ch ), 830 QString ( ch ),
831 ke-> simpleData.is_auto_repeat, 1 ); 831 ke-> simpleData.is_auto_repeat, 1 );
832 832
833 QObject *which = QWidget::keyboardGrabber ( ); 833 QObject *which = QWidget::keyboardGrabber ( );
834 if ( !which ) 834 if ( !which )
835 which = QApplication::focusWidget ( ); 835 which = QApplication::focusWidget ( );
836 if ( !which ) 836 if ( !which )
837 which = QApplication::activeWindow ( ); 837 which = QApplication::activeWindow ( );
838 if ( !which ) 838 if ( !which )
839 which = qApp; 839 which = qApp;
840 840
841 QApplication::sendEvent ( which, &qke ); 841 QApplication::sendEvent ( which, &qke );
842 } 842 }
843 else { // we didn't grab the keyboard, so send the event to the launcher 843 else { // we didn't grab the keyboard, so send the event to the launcher
844 QCopEnvelope e ( "QPE/Launcher", "deviceButton(int,int,int)" ); 844 QCopEnvelope e ( "QPE/Launcher", "deviceButton(int,int,int)" );
845 e << int( ke-> simpleData.keycode ) << int( ke-> simpleData. is_press ) << int( ke-> simpleData.is_auto_repeat ); 845 e << int( ke-> simpleData.keycode ) << int( ke-> simpleData. is_press ) << int( ke-> simpleData.is_auto_repeat );
846 } 846 }
847 } 847 }
848 return true; 848 return true;
849 } 849 }
850 } 850 }
851 if ( e->type == QWSEvent::Focus ) { 851 if ( e->type == QWSEvent::Focus ) {
852 QWSFocusEvent * fe = ( QWSFocusEvent* ) e; 852 QWSFocusEvent * fe = ( QWSFocusEvent* ) e;
853 if ( !fe->simpleData.get_focus ) { 853 if ( !fe->simpleData.get_focus ) {
854 QWidget * active = activeWindow(); 854 QWidget * active = activeWindow();
855 while ( active && active->isPopup() ) { 855 while ( active && active->isPopup() ) {
856 active->close(); 856 active->close();
857 active = activeWindow(); 857 active = activeWindow();
858 } 858 }
859 } 859 }
860 else { 860 else {
861 // make sure our modal widget is ALWAYS on top 861 // make sure our modal widget is ALWAYS on top
862 QWidget *topm = activeModalWidget(); 862 QWidget *topm = activeModalWidget();
863 if ( topm ) { 863 if ( topm ) {
864 topm->raise(); 864 topm->raise();
865 } 865 }
866 } 866 }
867 if ( fe->simpleData.get_focus && inputMethodDict ) { 867 if ( fe->simpleData.get_focus && inputMethodDict ) {
868 InputMethodHint m = inputMethodHint( QWidget::find( e->window() ) ); 868 InputMethodHint m = inputMethodHint( QWidget::find( e->window() ) );
869 if ( m == AlwaysOff ) 869 if ( m == AlwaysOff )
870 Global::hideInputMethod(); 870 Global::hideInputMethod();
871 if ( m == AlwaysOn ) 871 if ( m == AlwaysOn )
872 Global::showInputMethod(); 872 Global::showInputMethod();
873 } 873 }
874 } 874 }
875 875
876 876
877 return QApplication::qwsEventFilter( e ); 877 return QApplication::qwsEventFilter( e );
878} 878}
879#endif 879#endif
880 880
881/*! 881/*!
882 Destroys the QPEApplication. 882 Destroys the QPEApplication.
883*/ 883*/
884QPEApplication::~QPEApplication() 884QPEApplication::~QPEApplication()
885{ 885{
886 ungrabKeyboard(); 886 ungrabKeyboard();
887#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 887#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
888 // Need to delete QCopChannels early, since the display will 888 // Need to delete QCopChannels early, since the display will
889 // be gone by the time we get to ~QObject(). 889 // be gone by the time we get to ~QObject().
890 delete sysChannel; 890 delete sysChannel;
891 delete pidChannel; 891 delete pidChannel;
892#endif 892#endif
893 893
894 delete d; 894 delete d;
895} 895}
896 896
897/*! 897/*!
898 Returns <tt>$OPIEDIR/</tt>. 898 Returns <tt>$OPIEDIR/</tt>.
899*/ 899*/
900QString QPEApplication::qpeDir() 900QString QPEApplication::qpeDir()
901{ 901{
902 const char * base = getenv( "OPIEDIR" ); 902 const char * base = getenv( "OPIEDIR" );
903 if ( base ) 903 if ( base )
904 return QString( base ) + "/"; 904 return QString( base ) + "/";
905 905
906 return QString( "../" ); 906 return QString( "../" );
907} 907}
908 908
909/*! 909/*!
910 Returns the user's current Document directory. There is a trailing "/". 910 Returns the user's current Document directory. There is a trailing "/".
911 .. well, it does now,, and there's no trailing '/' 911 .. well, it does now,, and there's no trailing '/'
912*/ 912*/
913QString QPEApplication::documentDir() 913QString QPEApplication::documentDir()
914{ 914{
915 const char* base = getenv( "HOME"); 915 const char* base = getenv( "HOME");
916 if ( base ) 916 if ( base )
917 return QString( base ) + "/Documents"; 917 return QString( base ) + "/Documents";
918 918
919 return QString( "../Documents" ); 919 return QString( "../Documents" );
920} 920}
921 921
922static int deforient = -1; 922static int deforient = -1;
923 923
924/*! 924/*!
925 \internal 925 \internal
926*/ 926*/
927int QPEApplication::defaultRotation() 927int QPEApplication::defaultRotation()
928{ 928{
929 if ( deforient < 0 ) { 929 if ( deforient < 0 ) {
930 QString d = getenv( "QWS_DISPLAY" ); 930 QString d = getenv( "QWS_DISPLAY" );
931 if ( d.contains( "Rot90" ) ) { 931 if ( d.contains( "Rot90" ) ) {
932 deforient = 90; 932 deforient = 90;
933 } 933 }
934 else if ( d.contains( "Rot180" ) ) { 934 else if ( d.contains( "Rot180" ) ) {
935 deforient = 180; 935 deforient = 180;
936 } 936 }
937 else if ( d.contains( "Rot270" ) ) { 937 else if ( d.contains( "Rot270" ) ) {
938 deforient = 270; 938 deforient = 270;
939 } 939 }
940 else { 940 else {
941 deforient = 0; 941 deforient = 0;
942 } 942 }
943 } 943 }
944 return deforient; 944 return deforient;
945} 945}
946 946
947/*! 947/*!
948 \internal 948 \internal
949*/ 949*/
950void QPEApplication::setDefaultRotation( int r ) 950void QPEApplication::setDefaultRotation( int r )
951{ 951{
952 if ( qApp->type() == GuiServer ) { 952 if ( qApp->type() == GuiServer ) {
953 deforient = r; 953 deforient = r;
954 setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 ); 954 setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 );
955 Config config("qpe"); 955 Config config("qpe");
956 config.setGroup( "Rotation" ); 956 config.setGroup( "Rotation" );
957 config.writeEntry( "Rot", r ); 957 config.writeEntry( "Rot", r );
958 } 958 }
959 else { 959 else {
960#ifndef QT_NO_COP 960#ifndef QT_NO_COP
961 { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" ); 961 { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" );
962 e << r; 962 e << r;
963 } 963 }
964#endif 964#endif
965 965
966 } 966 }
967} 967}
968 968
969 969
970/*! 970/*!
971 \internal 971 \internal
972*/ 972*/
973void QPEApplication::applyStyle() 973void QPEApplication::applyStyle()
974{ 974{
975 Config config( "qpe" ); 975 Config config( "qpe" );
976 config.setGroup( "Appearance" ); 976 config.setGroup( "Appearance" );
977 977
978 #if QT_VERSION > 233 978 #if QT_VERSION > 233
979 // don't block ourselves ... 979 // don't block ourselves ...
980 Opie::force_appearance = 0; 980 Opie::force_appearance = 0;
981 981
982 static QString appname = Opie::binaryName ( ); 982 static QString appname = Opie::binaryName ( );
983 983
984 QStringList ex = config. readListEntry ( "NoStyle", ';' ); 984 QStringList ex = config. readListEntry ( "NoStyle", ';' );
985 int nostyle = 0; 985 int nostyle = 0;
986 for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) { 986 for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) {
987 if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) { 987 if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) {
988 nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 ); 988 nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 );
989 break; 989 break;
990 } 990 }
991 } 991 }
992 992
993 // Widget style 993 // Widget style
994 QString style = config.readEntry( "Style", "FlatStyle" ); 994 QString style = config.readEntry( "Style", "FlatStyle" );
995 995
996 // don't set a custom style 996 // don't set a custom style
997 if ( nostyle & Opie::Force_Style ) 997 if ( nostyle & Opie::Force_Style )
998 style = "FlatStyle"; 998 style = "FlatStyle";
999 999
1000 internalSetStyle ( style ); 1000 internalSetStyle ( style );
1001 1001
1002 // Colors - from /etc/colors/Liquid.scheme 1002 // Colors - from /etc/colors/Liquid.scheme
1003 QColor bgcolor( config.readEntry( "Background", "#E0E0E0" ) ); 1003 QColor bgcolor( config.readEntry( "Background", "#E0E0E0" ) );
1004 QColor btncolor( config.readEntry( "Button", "#96c8fa" ) ); 1004 QColor btncolor( config.readEntry( "Button", "#96c8fa" ) );
1005 QPalette pal( btncolor, bgcolor ); 1005 QPalette pal( btncolor, bgcolor );
1006 QString color = config.readEntry( "Highlight", "#73adef" ); 1006 QString color = config.readEntry( "Highlight", "#73adef" );
1007 pal.setColor( QColorGroup::Highlight, QColor( color ) ); 1007 pal.setColor( QColorGroup::Highlight, QColor( color ) );
1008 color = config.readEntry( "HighlightedText", "#FFFFFF" ); 1008 color = config.readEntry( "HighlightedText", "#FFFFFF" );
1009 pal.setColor( QColorGroup::HighlightedText, QColor( color ) ); 1009 pal.setColor( QColorGroup::HighlightedText, QColor( color ) );
1010 color = config.readEntry( "Text", "#000000" ); 1010 color = config.readEntry( "Text", "#000000" );
1011 pal.setColor( QColorGroup::Text, QColor( color ) ); 1011 pal.setColor( QColorGroup::Text, QColor( color ) );
1012 color = config.readEntry( "ButtonText", "#000000" ); 1012 color = config.readEntry( "ButtonText", "#000000" );
1013 pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) ); 1013 pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) );
1014 color = config.readEntry( "Base", "#FFFFFF" ); 1014 color = config.readEntry( "Base", "#FFFFFF" );
1015 pal.setColor( QColorGroup::Base, QColor( color ) ); 1015 pal.setColor( QColorGroup::Base, QColor( color ) );
1016 1016
1017 pal.setColor( QPalette::Disabled, QColorGroup::Text, 1017 pal.setColor( QPalette::Disabled, QColorGroup::Text,
1018 pal.color( QPalette::Active, QColorGroup::Background ).dark() ); 1018 pal.color( QPalette::Active, QColorGroup::Background ).dark() );
1019 1019
1020 setPalette( pal, TRUE ); 1020 setPalette( pal, TRUE );
1021 1021
1022 // Window Decoration 1022 // Window Decoration
1023 QString dec = config.readEntry( "Decoration", "Flat" ); 1023 QString dec = config.readEntry( "Decoration", "Flat" );
1024 1024
1025 // don't set a custom deco 1025 // don't set a custom deco
1026 if ( nostyle & Opie::Force_Decoration ) 1026 if ( nostyle & Opie::Force_Decoration )
1027 dec = ""; 1027 dec = "";
1028 1028
1029 //qDebug ( "Setting Deco: %s -- old %s (%d)", dec.latin1(), d-> decorationName.latin1(), nostyle); 1029 //qDebug ( "Setting Deco: %s -- old %s (%d)", dec.latin1(), d-> decorationName.latin1(), nostyle);
1030 1030
1031 if ( dec != d->decorationName ) { 1031 if ( dec != d->decorationName ) {
1032 qwsSetDecoration( new QPEDecoration( dec ) ); 1032 qwsSetDecoration( new QPEDecoration( dec ) );
1033 d->decorationName = dec; 1033 d->decorationName = dec;
1034 } 1034 }
1035 1035
1036 // Font 1036 // Font
1037 QString ff = config.readEntry( "FontFamily", font().family() ); 1037 QString ff = config.readEntry( "FontFamily", font().family() );
1038 int fs = config.readNumEntry( "FontSize", font().pointSize() ); 1038 int fs = config.readNumEntry( "FontSize", font().pointSize() );
1039 1039
1040 // don't set a custom font 1040 // don't set a custom font
1041 if ( nostyle & Opie::Force_Font ) { 1041 if ( nostyle & Opie::Force_Font ) {
1042 ff = "Vera"; 1042 ff = "Vera";
1043 fs = 10; 1043 fs = 10;
1044 } 1044 }
1045 1045
1046 setFont ( QFont ( ff, fs ), true ); 1046 setFont ( QFont ( ff, fs ), true );
1047 1047
1048 // revert to global blocking policy ... 1048 // revert to global blocking policy ...
1049 Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None; 1049 Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None;
1050 Opie::force_appearance &= ~nostyle; 1050 Opie::force_appearance &= ~nostyle;
1051 #endif 1051 #endif
1052} 1052}
1053 1053
1054void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data ) 1054void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data )
1055{ 1055{
1056#ifdef Q_WS_QWS 1056#ifdef Q_WS_QWS
1057 QDataStream stream( data, IO_ReadOnly ); 1057 QDataStream stream( data, IO_ReadOnly );
1058 if ( msg == "applyStyle()" ) { 1058 if ( msg == "applyStyle()" ) {
1059 applyStyle(); 1059 applyStyle();
1060 } 1060 }
1061 else if ( msg == "toggleApplicationMenu()" ) { 1061 else if ( msg == "toggleApplicationMenu()" ) {
1062 QWidget *active = activeWindow ( ); 1062 QWidget *active = activeWindow ( );
1063 1063
1064 if ( active ) { 1064 if ( active ) {
1065 QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( ); 1065 QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( );
1066 bool oldactive = man-> isActive ( ); 1066 bool oldactive = man-> isActive ( );
1067 1067
1068 man-> setActive( !man-> isActive() ); 1068 man-> setActive( !man-> isActive() );
1069 1069
1070 if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu 1070 if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu
1071 QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" ); 1071 QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" );
1072 } 1072 }
1073 } 1073 }
1074 } 1074 }
1075 else if ( msg == "setDefaultRotation(int)" ) { 1075 else if ( msg == "setDefaultRotation(int)" ) {
1076 if ( type() == GuiServer ) { 1076 if ( type() == GuiServer ) {
1077 int r; 1077 int r;
1078 stream >> r; 1078 stream >> r;
1079 setDefaultRotation( r ); 1079 setDefaultRotation( r );
1080 } 1080 }
1081 } 1081 }
1082 else if ( msg == "setCurrentRotation(int)" ) { 1082 else if ( msg == "setCurrentRotation(int)" ) {
1083 int r; 1083 int r;
1084 stream >> r; 1084 stream >> r;
1085 setCurrentRotation( r ); 1085 setCurrentRotation( r );
1086 } 1086 }
1087 else if ( msg == "shutdown()" ) { 1087 else if ( msg == "shutdown()" ) {
1088 if ( type() == GuiServer ) 1088 if ( type() == GuiServer )
1089 shutdown(); 1089 shutdown();
1090 } 1090 }
1091 else if ( msg == "quit()" ) { 1091 else if ( msg == "quit()" ) {
1092 if ( type() != GuiServer ) 1092 if ( type() != GuiServer )
1093 tryQuit(); 1093 tryQuit();
1094 } 1094 }
1095 else if ( msg == "forceQuit()" ) { 1095 else if ( msg == "forceQuit()" ) {
1096 if ( type() != GuiServer ) 1096 if ( type() != GuiServer )
1097 quit(); 1097 quit();
1098 } 1098 }
1099 else if ( msg == "restart()" ) { 1099 else if ( msg == "restart()" ) {
1100 if ( type() == GuiServer ) 1100 if ( type() == GuiServer )
1101 restart(); 1101 restart();
1102 } 1102 }
1103 else if ( msg == "language(QString)" ) { 1103 else if ( msg == "language(QString)" ) {
1104 if ( type() == GuiServer ) { 1104 if ( type() == GuiServer ) {
1105 QString l; 1105 QString l;
1106 stream >> l; 1106 stream >> l;
1107 QString cl = getenv( "LANG" ); 1107 QString cl = getenv( "LANG" );
1108 if ( cl != l ) { 1108 if ( cl != l ) {
1109 if ( l.isNull() ) 1109 if ( l.isNull() )
1110 unsetenv( "LANG" ); 1110 unsetenv( "LANG" );
1111 else 1111 else
1112 setenv( "LANG", l.latin1(), 1 ); 1112 setenv( "LANG", l.latin1(), 1 );
1113 restart(); 1113 restart();
1114 } 1114 }
1115 } 1115 }
1116 } 1116 }
1117 else if ( msg == "timeChange(QString)" ) { 1117 else if ( msg == "timeChange(QString)" ) {
1118 QString t; 1118 QString t;
1119 stream >> t; 1119 stream >> t;
1120 if ( t.isNull() ) 1120 if ( t.isNull() )
1121 unsetenv( "TZ" ); 1121 unsetenv( "TZ" );
1122 else 1122 else
1123 setenv( "TZ", t.latin1(), 1 ); 1123 setenv( "TZ", t.latin1(), 1 );
1124 // emit the signal so everyone else knows... 1124 // emit the signal so everyone else knows...
1125 emit timeChanged(); 1125 emit timeChanged();
1126 } 1126 }
1127 else if ( msg == "execute(QString)" ) { 1127 else if ( msg == "execute(QString)" ) {
1128 if ( type() == GuiServer ) { 1128 if ( type() == GuiServer ) {
1129 QString t; 1129 QString t;
1130 stream >> t; 1130 stream >> t;
1131 Global::execute( t ); 1131 Global::execute( t );
1132 } 1132 }
1133 } 1133 }
1134 else if ( msg == "execute(QString,QString)" ) { 1134 else if ( msg == "execute(QString,QString)" ) {
1135 if ( type() == GuiServer ) { 1135 if ( type() == GuiServer ) {
1136 QString t, d; 1136 QString t, d;
1137 stream >> t >> d; 1137 stream >> t >> d;
1138 Global::execute( t, d ); 1138 Global::execute( t, d );
1139 } 1139 }
1140 } 1140 }
1141 else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) { 1141 else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) {
1142 if ( type() == GuiServer ) { 1142 if ( type() == GuiServer ) {
1143 QDateTime when; 1143 QDateTime when;
1144 QCString channel, message; 1144 QCString channel, message;
1145 int data; 1145 int data;
1146 stream >> when >> channel >> message >> data; 1146 stream >> when >> channel >> message >> data;
1147 AlarmServer::addAlarm( when, channel, message, data ); 1147 AlarmServer::addAlarm( when, channel, message, data );
1148 } 1148 }
1149 } 1149 }
1150 else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) { 1150 else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) {
1151 if ( type() == GuiServer ) { 1151 if ( type() == GuiServer ) {
1152 QDateTime when; 1152 QDateTime when;
1153 QCString channel, message; 1153 QCString channel, message;
1154 int data; 1154 int data;
1155 stream >> when >> channel >> message >> data; 1155 stream >> when >> channel >> message >> data;
1156 AlarmServer::deleteAlarm( when, channel, message, data ); 1156 AlarmServer::deleteAlarm( when, channel, message, data );
1157 } 1157 }
1158 } 1158 }
1159 else if ( msg == "clockChange(bool)" ) { 1159 else if ( msg == "clockChange(bool)" ) {
1160 int tmp; 1160 int tmp;
1161 stream >> tmp; 1161 stream >> tmp;
1162 emit clockChanged( tmp ); 1162 emit clockChanged( tmp );
1163 } 1163 }
1164 else if ( msg == "weekChange(bool)" ) { 1164 else if ( msg == "weekChange(bool)" ) {
1165 int tmp; 1165 int tmp;
1166 stream >> tmp; 1166 stream >> tmp;
1167 emit weekChanged( tmp ); 1167 emit weekChanged( tmp );
1168 } 1168 }
1169 else if ( msg == "setDateFormat(DateFormat)" ) { 1169 else if ( msg == "setDateFormat(DateFormat)" ) {
1170 DateFormat tmp; 1170 DateFormat tmp;
1171 stream >> tmp; 1171 stream >> tmp;
1172 emit dateFormatChanged( tmp ); 1172 emit dateFormatChanged( tmp );
1173 } 1173 }
1174 else if ( msg == "setVolume(int,int)" ) { 1174 else if ( msg == "setVolume(int,int)" ) {
1175 int t, v; 1175 int t, v;
1176 stream >> t >> v; 1176 stream >> t >> v;
1177 setVolume( t, v ); 1177 setVolume( t, v );
1178 emit volumeChanged( muted ); 1178 emit volumeChanged( muted );
1179 } 1179 }
1180 else if ( msg == "volumeChange(bool)" ) { 1180 else if ( msg == "volumeChange(bool)" ) {
1181 stream >> muted; 1181 stream >> muted;
1182 setVolume(); 1182 setVolume();
1183 emit volumeChanged( muted ); 1183 emit volumeChanged( muted );
1184 } 1184 }
1185 else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> 1185 else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
1186 int t, v; 1186 int t, v;
1187 stream >> t >> v; 1187 stream >> t >> v;
1188 setMic( t, v ); 1188 setMic( t, v );
1189 emit micChanged( micMuted ); 1189 emit micChanged( micMuted );
1190 } 1190 }
1191 else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> 1191 else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
1192 stream >> micMuted; 1192 stream >> micMuted;
1193 setMic(); 1193 setMic();
1194 emit micChanged( micMuted ); 1194 emit micChanged( micMuted );
1195 } 1195 }
1196 else if ( msg == "setBass(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1196 else if ( msg == "setBass(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1197 int t, v; 1197 int t, v;
1198 stream >> t >> v; 1198 stream >> t >> v;
1199 setBass( t, v ); 1199 setBass( t, v );
1200 } 1200 }
1201 else if ( msg == "bassChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1201 else if ( msg == "bassChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1202 setBass(); 1202 setBass();
1203 } 1203 }
1204 else if ( msg == "setTreble(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1204 else if ( msg == "setTreble(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1205 int t, v; 1205 int t, v;
1206 stream >> t >> v; 1206 stream >> t >> v;
1207 setTreble( t, v ); 1207 setTreble( t, v );
1208 } 1208 }
1209 else if ( msg == "trebleChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1209 else if ( msg == "trebleChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1210 setTreble(); 1210 setTreble();
1211 } 1211 }
1212 1212
1213 1213
1214 1214
1215#endif 1215#endif
1216} 1216}
1217 1217
1218/*! 1218/*!
1219 \internal 1219 \internal
1220*/ 1220*/
1221bool QPEApplication::raiseAppropriateWindow() 1221bool QPEApplication::raiseAppropriateWindow()
1222{ 1222{
1223 bool r = FALSE; 1223 bool r = FALSE;
1224 // ########## raise()ing main window should raise and set active 1224 // ########## raise()ing main window should raise and set active
1225 // ########## it and then all childen. This belongs in Qt/Embedded 1225 // ########## it and then all childen. This belongs in Qt/Embedded
1226 QWidget *top = d->qpe_main_widget; 1226 QWidget *top = d->qpe_main_widget;
1227 if ( !top ) 1227 if ( !top )
1228 top = mainWidget(); 1228 top = mainWidget();
1229 if ( top && d->keep_running ) { 1229 if ( top && d->keep_running ) {
1230 if ( top->isVisible() ) 1230 if ( top->isVisible() )
1231 r = TRUE; 1231 r = TRUE;
1232 else if (d->preloaded) { 1232 else if (d->preloaded) {
1233 // We are preloaded and not visible.. pretend we just started.. 1233 // We are preloaded and not visible.. pretend we just started..
1234 QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); 1234 QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
1235 e << d->appName; 1235 e << d->appName;
1236 } 1236 }
1237 1237
1238 d->show_mx(top, d->nomaximize); 1238 d->show_mx(top, d->nomaximize);
1239 top->raise(); 1239 top->raise();
1240 top->setActiveWindow(); 1240 top->setActiveWindow();
1241 } 1241 }
1242 QWidget *topm = activeModalWidget(); 1242 QWidget *topm = activeModalWidget();
1243 if ( topm && topm != top ) { 1243 if ( topm && topm != top ) {
1244 topm->show(); 1244 topm->show();
1245 topm->raise(); 1245 topm->raise();
1246 topm->setActiveWindow(); 1246 topm->setActiveWindow();
1247 // If we haven't already handled the fastAppShowing message 1247 // If we haven't already handled the fastAppShowing message
1248 if (!top && d->preloaded) { 1248 if (!top && d->preloaded) {
1249 QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); 1249 QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
1250 e << d->appName; 1250 e << d->appName;
1251 } 1251 }
1252 r = FALSE; 1252 r = FALSE;
1253 } 1253 }
1254 return r; 1254 return r;
1255} 1255}
1256 1256
1257void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data) 1257void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data)
1258{ 1258{
1259#ifdef Q_WS_QWS 1259#ifdef Q_WS_QWS
1260 1260
1261 if ( msg == "quit()" ) { 1261 if ( msg == "quit()" ) {
1262 tryQuit(); 1262 tryQuit();
1263 } 1263 }
1264 else if ( msg == "quitIfInvisible()" ) { 1264 else if ( msg == "quitIfInvisible()" ) {
1265 if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() ) 1265 if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() )
1266 quit(); 1266 quit();
1267 } 1267 }
1268 else if ( msg == "close()" ) { 1268 else if ( msg == "close()" ) {
1269 hideOrQuit(); 1269 hideOrQuit();
1270 } 1270 }
1271 else if ( msg == "disablePreload()" ) { 1271 else if ( msg == "disablePreload()" ) {
1272 d->preloaded = FALSE; 1272 d->preloaded = FALSE;
1273 d->keep_running = TRUE; 1273 d->keep_running = TRUE;
1274 /* so that quit will quit */ 1274 /* so that quit will quit */
1275 } 1275 }
1276 else if ( msg == "enablePreload()" ) { 1276 else if ( msg == "enablePreload()" ) {
1277 if (d->qpe_main_widget) 1277 if (d->qpe_main_widget)
1278 d->preloaded = TRUE; 1278 d->preloaded = TRUE;
1279 d->keep_running = TRUE; 1279 d->keep_running = TRUE;
1280 /* so next quit won't quit */ 1280 /* so next quit won't quit */
1281 } 1281 }
1282 else if ( msg == "raise()" ) { 1282 else if ( msg == "raise()" ) {
1283 d->keep_running = TRUE; 1283 d->keep_running = TRUE;
1284 d->notbusysent = FALSE; 1284 d->notbusysent = FALSE;
1285 raiseAppropriateWindow(); 1285 raiseAppropriateWindow();
1286 // Tell the system we're still chugging along... 1286 // Tell the system we're still chugging along...
1287 QCopEnvelope e("QPE/System", "appRaised(QString)"); 1287 QCopEnvelope e("QPE/System", "appRaised(QString)");
1288 e << d->appName; 1288 e << d->appName;
1289 } 1289 }
1290 else if ( msg == "flush()" ) { 1290 else if ( msg == "flush()" ) {
1291 emit flush(); 1291 emit flush();
1292 // we need to tell the desktop 1292 // we need to tell the desktop
1293 QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" ); 1293 QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" );
1294 e << d->appName; 1294 e << d->appName;
1295 } 1295 }
1296 else if ( msg == "reload()" ) { 1296 else if ( msg == "reload()" ) {
1297 emit reload(); 1297 emit reload();
1298 } 1298 }
1299 else if ( msg == "setDocument(QString)" ) { 1299 else if ( msg == "setDocument(QString)" ) {
1300 d->keep_running = TRUE; 1300 d->keep_running = TRUE;
1301 QDataStream stream( data, IO_ReadOnly ); 1301 QDataStream stream( data, IO_ReadOnly );
1302 QString doc; 1302 QString doc;
1303 stream >> doc; 1303 stream >> doc;
1304 QWidget *mw = mainWidget(); 1304 QWidget *mw = mainWidget();
1305 if ( !mw ) 1305 if ( !mw )
1306 mw = d->qpe_main_widget; 1306 mw = d->qpe_main_widget;
1307 if ( mw ) 1307 if ( mw )
1308 Global::setDocument( mw, doc ); 1308 Global::setDocument( mw, doc );
1309 } else { 1309 } else {
1310 bool p = d->keep_running; 1310 bool p = d->keep_running;
1311 d->keep_running = FALSE; 1311 d->keep_running = FALSE;
1312 emit appMessage( msg, data); 1312 emit appMessage( msg, data);
1313 if ( d->keep_running ) { 1313 if ( d->keep_running ) {
1314 d->notbusysent = FALSE; 1314 d->notbusysent = FALSE;
1315 raiseAppropriateWindow(); 1315 raiseAppropriateWindow();
1316 if ( !p ) { 1316 if ( !p ) {
1317 // Tell the system we're still chugging along... 1317 // Tell the system we're still chugging along...
1318#ifndef QT_NO_COP 1318#ifndef QT_NO_COP
1319 QCopEnvelope e("QPE/System", "appRaised(QString)"); 1319 QCopEnvelope e("QPE/System", "appRaised(QString)");
1320 e << d->appName; 1320 e << d->appName;
1321#endif 1321#endif
1322 } 1322 }
1323 } 1323 }
1324 if ( p ) 1324 if ( p )
1325 d->keep_running = p; 1325 d->keep_running = p;
1326 } 1326 }
1327#endif 1327#endif
1328} 1328}
1329 1329
1330 1330
1331/*! 1331/*!
1332 Sets widget \a mw as the mainWidget() and shows it. For small windows, 1332 Sets widget \a mw as the mainWidget() and shows it. For small windows,
1333 consider passing TRUE for \a nomaximize rather than the default FALSE. 1333 consider passing TRUE for \a nomaximize rather than the default FALSE.
1334 1334
1335 \sa showMainDocumentWidget() 1335 \sa showMainDocumentWidget()
1336*/ 1336*/
1337void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize ) 1337void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize )
1338{ 1338{
1339 d->show(mw, nomaximize ); 1339 d->show(mw, nomaximize );
1340} 1340}
1341 1341
1342/*! 1342/*!
1343 Sets widget \a mw as the mainWidget() and shows it. For small windows, 1343 Sets widget \a mw as the mainWidget() and shows it. For small windows,
1344 consider passing TRUE for \a nomaximize rather than the default FALSE. 1344 consider passing TRUE for \a nomaximize rather than the default FALSE.
1345 1345
1346 This calls designates the application as 1346 This calls designates the application as
1347 a \link docwidget.html document-oriented\endlink application. 1347 a \link docwidget.html document-oriented\endlink application.
1348 1348
1349 The \a mw widget \e must have this slot: setDocument(const QString&). 1349 The \a mw widget \e must have this slot: setDocument(const QString&).
1350 1350
1351 \sa showMainWidget() 1351 \sa showMainWidget()
1352*/ 1352*/
1353void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize ) 1353void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize )
1354{ 1354{
1355 if ( mw && argc() == 2 ) 1355 if ( mw && argc() == 2 )
1356 Global::setDocument( mw, QString::fromUtf8(argv()[1]) ); 1356 Global::setDocument( mw, QString::fromUtf8(argv()[1]) );
1357 1357
1358 1358
1359 d->show(mw, nomaximize ); 1359 d->show(mw, nomaximize );
1360} 1360}
1361 1361
1362 1362
1363/*! 1363/*!
1364 If an application is started via a \link qcop.html QCop\endlink 1364 If an application is started via a \link qcop.html QCop\endlink
1365 message, the application will process the \link qcop.html 1365 message, the application will process the \link qcop.html
1366 QCop\endlink message and then quit. If the application calls this 1366 QCop\endlink message and then quit. If the application calls this
1367 function while processing a \link qcop.html QCop\endlink message, 1367 function while processing a \link qcop.html QCop\endlink message,
1368 after processing its outstanding \link qcop.html QCop\endlink 1368 after processing its outstanding \link qcop.html QCop\endlink
1369 messages the application will start 'properly' and show itself. 1369 messages the application will start 'properly' and show itself.
1370 1370
1371 \sa keepRunning() 1371 \sa keepRunning()
1372*/ 1372*/
1373void QPEApplication::setKeepRunning() 1373void QPEApplication::setKeepRunning()
1374{ 1374{
1375 if ( qApp && qApp->inherits( "QPEApplication" ) ) { 1375 if ( qApp && qApp->inherits( "QPEApplication" ) ) {
1376 QPEApplication * qpeApp = ( QPEApplication* ) qApp; 1376 QPEApplication * qpeApp = ( QPEApplication* ) qApp;
1377 qpeApp->d->keep_running = TRUE; 1377 qpeApp->d->keep_running = TRUE;
1378 } 1378 }
1379} 1379}
1380 1380
1381/*! 1381/*!
1382 Returns TRUE if the application will quit after processing the 1382 Returns TRUE if the application will quit after processing the
1383 current list of qcop messages; otherwise returns FALSE. 1383 current list of qcop messages; otherwise returns FALSE.
1384 1384
1385 \sa setKeepRunning() 1385 \sa setKeepRunning()
1386*/ 1386*/
1387bool QPEApplication::keepRunning() const 1387bool QPEApplication::keepRunning() const
1388{ 1388{
1389 return d->keep_running; 1389 return d->keep_running;
1390} 1390}
1391 1391
1392/*! 1392/*!
1393 \internal 1393 \internal
1394*/ 1394*/
1395void QPEApplication::internalSetStyle( const QString &style ) 1395void QPEApplication::internalSetStyle( const QString &style )
1396{ 1396{
1397#if QT_VERSION >= 300 1397#if QT_VERSION >= 300
1398 if ( style == "QPE" ) { 1398 if ( style == "QPE" ) {
1399 setStyle( new QPEStyle ); 1399 setStyle( new QPEStyle );
1400 } 1400 }
1401 else { 1401 else {
1402 QStyle *s = QStyleFactory::create( style ); 1402 QStyle *s = QStyleFactory::create( style );
1403 if ( s ) 1403 if ( s )
1404 setStyle( s ); 1404 setStyle( s );
1405 } 1405 }
1406#else 1406#else
1407 if ( style == "Windows" ) { 1407 if ( style == "Windows" ) {
1408 setStyle( new QWindowsStyle ); 1408 setStyle( new QWindowsStyle );
1409 } 1409 }
1410 else if ( style == "QPE" ) { 1410 else if ( style == "QPE" ) {
1411 setStyle( new QPEStyle ); 1411 setStyle( new QPEStyle );
1412 } 1412 }
1413 else if ( style == "Light" ) { 1413 else if ( style == "Light" ) {
1414 setStyle( new LightStyle ); 1414 setStyle( new LightStyle );
1415 } 1415 }
1416#ifndef QT_NO_STYLE_PLATINUM 1416#ifndef QT_NO_STYLE_PLATINUM
1417 else if ( style == "Platinum" ) { 1417 else if ( style == "Platinum" ) {
1418 setStyle( new QPlatinumStyle ); 1418 setStyle( new QPlatinumStyle );
1419 } 1419 }
1420#endif 1420#endif
1421#ifndef QT_NO_STYLE_MOTIF 1421#ifndef QT_NO_STYLE_MOTIF
1422 else if ( style == "Motif" ) { 1422 else if ( style == "Motif" ) {
1423 setStyle( new QMotifStyle ); 1423 setStyle( new QMotifStyle );
1424 } 1424 }
1425#endif 1425#endif
1426#ifndef QT_NO_STYLE_MOTIFPLUS 1426#ifndef QT_NO_STYLE_MOTIFPLUS
1427 else if ( style == "MotifPlus" ) { 1427 else if ( style == "MotifPlus" ) {
1428 setStyle( new QMotifPlusStyle ); 1428 setStyle( new QMotifPlusStyle );
1429 } 1429 }
1430#endif 1430#endif
1431 1431
1432 else { 1432 else {
1433 QStyle *sty = 0; 1433 QStyle *sty = 0;
1434 QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/"; 1434 QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/";
1435 1435
1436 if ( style. find ( ".so" ) > 0 ) 1436 if ( style. find ( ".so" ) > 0 )
1437 path += style; 1437 path += style;
1438 else 1438 else
1439 path = path + "lib" + style. lower ( ) + ".so"; // compatibility 1439 path = path + "lib" + style. lower ( ) + ".so"; // compatibility
1440 1440
1441 static QLibrary *lastlib = 0; 1441 static QLibrary *lastlib = 0;
1442 static StyleInterface *lastiface = 0; 1442 static StyleInterface *lastiface = 0;
1443 1443
1444 QLibrary *lib = new QLibrary ( path ); 1444 QLibrary *lib = new QLibrary ( path );
1445 StyleInterface *iface = 0; 1445 StyleInterface *iface = 0;
1446 1446
1447 if (( lib-> queryInterface ( IID_Style, ( QUnknownInterface ** ) &iface ) == QS_OK ) && iface ) 1447 if (( lib-> queryInterface ( IID_Style, ( QUnknownInterface ** ) &iface ) == QS_OK ) && iface )
1448 sty = iface-> style ( ); 1448 sty = iface-> style ( );
1449 1449
1450 if ( sty ) { 1450 if ( sty ) {
1451 setStyle ( sty ); 1451 setStyle ( sty );
1452 1452
1453 if ( lastiface ) 1453 if ( lastiface )
1454 lastiface-> release ( ); 1454 lastiface-> release ( );
1455 lastiface = iface; 1455 lastiface = iface;
1456 1456
1457 if ( lastlib ) { 1457 if ( lastlib ) {
1458 lastlib-> unload ( ); 1458 lastlib-> unload ( );
1459 delete lastlib; 1459 delete lastlib;
1460 } 1460 }
1461 lastlib = lib; 1461 lastlib = lib;
1462 } 1462 }
1463 else { 1463 else {
1464 if ( iface ) 1464 if ( iface )
1465 iface-> release ( ); 1465 iface-> release ( );
1466 delete lib; 1466 delete lib;
1467 1467
1468 setStyle ( new LightStyle ( )); 1468 setStyle ( new LightStyle ( ));
1469 } 1469 }
1470 } 1470 }
1471#endif 1471#endif
1472} 1472}
1473 1473
1474/*! 1474/*!
1475 \internal 1475 \internal
1476*/ 1476*/
1477void QPEApplication::prepareForTermination( bool willrestart ) 1477void QPEApplication::prepareForTermination( bool willrestart )
1478{ 1478{
1479 if ( willrestart ) { 1479 if ( willrestart ) {
1480 // Draw a big wait icon, the image can be altered in later revisions 1480 // Draw a big wait icon, the image can be altered in later revisions
1481 // QWidget *d = QApplication::desktop(); 1481 // QWidget *d = QApplication::desktop();
1482 QImage img = Resource::loadImage( "launcher/new_wait" ); 1482 QImage img = Resource::loadImage( "launcher/new_wait" );
1483 QPixmap pix; 1483 QPixmap pix;
1484 pix.convertFromImage( img.smoothScale( 1 * img.width(), 1 * img.height() ) ); 1484 pix.convertFromImage( img.smoothScale( 1 * img.width(), 1 * img.height() ) );
1485 QLabel *lblWait = new QLabel( 0, "wait hack!", QWidget::WStyle_Customize | 1485 QLabel *lblWait = new QLabel( 0, "wait hack!", QWidget::WStyle_Customize |
1486 QWidget::WStyle_NoBorder | QWidget::WStyle_Tool ); 1486 QWidget::WStyle_NoBorder | QWidget::WStyle_Tool );
1487 lblWait->setPixmap( pix ); 1487 lblWait->setPixmap( pix );
1488 lblWait->setAlignment( QWidget::AlignCenter ); 1488 lblWait->setAlignment( QWidget::AlignCenter );
1489 lblWait->show(); 1489 lblWait->show();
1490 lblWait->showMaximized(); 1490 lblWait->showMaximized();
1491 } 1491 }
1492#ifndef SINGLE_APP 1492#ifndef SINGLE_APP
1493 { QCopEnvelope envelope( "QPE/System", "forceQuit()" ); 1493 { QCopEnvelope envelope( "QPE/System", "forceQuit()" );
1494 } 1494 }
1495 processEvents(); // ensure the message goes out. 1495 processEvents(); // ensure the message goes out.
1496 sleep( 1 ); // You have 1 second to comply. 1496 sleep( 1 ); // You have 1 second to comply.
1497#endif 1497#endif
1498} 1498}
1499 1499
1500/*! 1500/*!
1501 \internal 1501 \internal
1502*/ 1502*/
1503void QPEApplication::shutdown() 1503void QPEApplication::shutdown()
1504{ 1504{
1505 // Implement in server's QPEApplication subclass 1505 // Implement in server's QPEApplication subclass
1506} 1506}
1507 1507
1508/*! 1508/*!
1509 \internal 1509 \internal
1510*/ 1510*/
1511void QPEApplication::restart() 1511void QPEApplication::restart()
1512{ 1512{
1513 // Implement in server's QPEApplication subclass 1513 // Implement in server's QPEApplication subclass
1514} 1514}
1515 1515
1516static QPtrDict<void>* stylusDict = 0; 1516static QPtrDict<void>* stylusDict = 0;
1517static void createDict() 1517static void createDict()
1518{ 1518{
1519 if ( !stylusDict ) 1519 if ( !stylusDict )
1520 stylusDict = new QPtrDict<void>; 1520 stylusDict = new QPtrDict<void>;
1521} 1521}
1522 1522
1523/*! 1523/*!
1524 Returns the current StylusMode for widget \a w. 1524 Returns the current StylusMode for widget \a w.
1525 1525
1526 \sa setStylusOperation() StylusMode 1526 \sa setStylusOperation() StylusMode
1527*/ 1527*/
1528QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget* w ) 1528QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget* w )
1529{ 1529{
1530 if ( stylusDict ) 1530 if ( stylusDict )
1531 return ( StylusMode ) ( int ) stylusDict->find( w ); 1531 return ( StylusMode ) ( int ) stylusDict->find( w );
1532 return LeftOnly; 1532 return LeftOnly;
1533} 1533}
1534 1534
1535/*! 1535/*!
1536 \enum QPEApplication::StylusMode 1536 \enum QPEApplication::StylusMode
1537 1537
1538 \value LeftOnly the stylus only generates LeftButton 1538 \value LeftOnly the stylus only generates LeftButton
1539 events (the default). 1539 events (the default).
1540 \value RightOnHold the stylus generates RightButton events 1540 \value RightOnHold the stylus generates RightButton events
1541 if the user uses the press-and-hold gesture. 1541 if the user uses the press-and-hold gesture.
1542 1542
1543 \sa setStylusOperation() stylusOperation() 1543 \sa setStylusOperation() stylusOperation()
1544*/ 1544*/
1545 1545
1546/*! 1546/*!
1547 Causes widget \a w to receive mouse events according to the stylus 1547 Causes widget \a w to receive mouse events according to the stylus
1548 \a mode. 1548 \a mode.
1549 1549
1550 \sa stylusOperation() StylusMode 1550 \sa stylusOperation() StylusMode
1551*/ 1551*/
1552void QPEApplication::setStylusOperation( QWidget * w, StylusMode mode ) 1552void QPEApplication::setStylusOperation( QWidget * w, StylusMode mode )
1553{ 1553{
1554 createDict(); 1554 createDict();
1555 if ( mode == LeftOnly ) { 1555 if ( mode == LeftOnly ) {
1556 stylusDict->remove 1556 stylusDict->remove
1557 ( w ); 1557 ( w );
1558 w->removeEventFilter( qApp ); 1558 w->removeEventFilter( qApp );
1559 } 1559 }
1560 else { 1560 else {
1561 stylusDict->insert( w, ( void* ) mode ); 1561 stylusDict->insert( w, ( void* ) mode );
1562 connect( w, SIGNAL( destroyed() ), qApp, SLOT( removeSenderFromStylusDict() ) ); 1562 connect( w, SIGNAL( destroyed() ), qApp, SLOT( removeSenderFromStylusDict() ) );
1563 w->installEventFilter( qApp ); 1563 w->installEventFilter( qApp );
1564 } 1564 }
1565} 1565}
1566 1566
1567 1567
1568/*! 1568/*!
1569 \reimp 1569 \reimp
1570*/ 1570*/
1571bool QPEApplication::eventFilter( QObject *o, QEvent *e ) 1571bool QPEApplication::eventFilter( QObject *o, QEvent *e )
1572{ 1572{
1573 if ( stylusDict && e->type() >= QEvent::MouseButtonPress && e->type() <= QEvent::MouseMove ) { 1573 if ( stylusDict && e->type() >= QEvent::MouseButtonPress && e->type() <= QEvent::MouseMove ) {
1574 QMouseEvent * me = ( QMouseEvent* ) e; 1574 QMouseEvent * me = ( QMouseEvent* ) e;
1575 StylusMode mode = (StylusMode)(int)stylusDict->find(o); 1575 StylusMode mode = (StylusMode)(int)stylusDict->find(o);
1576 switch (mode) { 1576 switch (mode) {
1577 case RightOnHold: 1577 case RightOnHold:
1578 switch ( me->type() ) { 1578 switch ( me->type() ) {
1579 case QEvent::MouseButtonPress: 1579 case QEvent::MouseButtonPress:
1580 if ( me->button() == LeftButton ) { 1580 if ( me->button() == LeftButton ) {
1581 d->presstimer = startTimer(500); // #### pref. 1581 d->presstimer = startTimer(500); // #### pref.
1582 d->presswidget = (QWidget*)o; 1582 d->presswidget = (QWidget*)o;
1583 d->presspos = me->pos(); 1583 d->presspos = me->pos();
1584 d->rightpressed = FALSE; 1584 d->rightpressed = FALSE;
1585 } 1585 }
1586 break; 1586 break;
1587 case QEvent::MouseMove: 1587 case QEvent::MouseMove:
1588 if (d->presstimer && (me->pos() - d->presspos).manhattanLength() > 8) { 1588 if (d->presstimer && (me->pos() - d->presspos).manhattanLength() > 8) {
1589 killTimer(d->presstimer); 1589 killTimer(d->presstimer);
1590 d->presstimer = 0; 1590 d->presstimer = 0;
1591 } 1591 }
1592 break; 1592 break;
1593 case QEvent::MouseButtonRelease: 1593 case QEvent::MouseButtonRelease:
1594 if ( me->button() == LeftButton ) { 1594 if ( me->button() == LeftButton ) {
1595 if ( d->presstimer ) { 1595 if ( d->presstimer ) {
1596 killTimer(d->presstimer); 1596 killTimer(d->presstimer);
1597 d->presstimer = 0; 1597 d->presstimer = 0;
1598 } 1598 }
1599 if ( d->rightpressed && d->presswidget ) { 1599 if ( d->rightpressed && d->presswidget ) {
1600 // Right released 1600 // Right released
1601 postEvent( d->presswidget, 1601 postEvent( d->presswidget,
1602 new QMouseEvent( QEvent::MouseButtonRelease, me->pos(), 1602 new QMouseEvent( QEvent::MouseButtonRelease, me->pos(),
1603 RightButton, LeftButton + RightButton ) ); 1603 RightButton, LeftButton + RightButton ) );
1604 // Left released, off-widget 1604 // Left released, off-widget
1605 postEvent( d->presswidget, 1605 postEvent( d->presswidget,
1606 new QMouseEvent( QEvent::MouseMove, QPoint( -1, -1), 1606 new QMouseEvent( QEvent::MouseMove, QPoint( -1, -1),
1607 LeftButton, LeftButton ) ); 1607 LeftButton, LeftButton ) );
1608 postEvent( d->presswidget, 1608 postEvent( d->presswidget,
1609 new QMouseEvent( QEvent::MouseButtonRelease, QPoint( -1, -1), 1609 new QMouseEvent( QEvent::MouseButtonRelease, QPoint( -1, -1),
1610 LeftButton, LeftButton ) ); 1610 LeftButton, LeftButton ) );
1611 d->rightpressed = FALSE; 1611 d->rightpressed = FALSE;
1612 return TRUE; // don't send the real Left release 1612 return TRUE; // don't send the real Left release
1613 } 1613 }
1614 } 1614 }
1615 break; 1615 break;
1616 default: 1616 default:
1617 break; 1617 break;
1618 } 1618 }
1619 break; 1619 break;
1620 default: 1620 default:
1621 ; 1621 ;
1622 } 1622 }
1623 } 1623 }
1624 else if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ) { 1624 else if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ) {
1625 QKeyEvent *ke = (QKeyEvent *)e; 1625 QKeyEvent *ke = (QKeyEvent *)e;
1626 if ( ke->key() == Key_Enter ) { 1626 if ( ke->key() == Key_Enter ) {
1627 if ( o->isA( "QRadioButton" ) || o->isA( "QCheckBox" ) ) { 1627 if ( o->isA( "QRadioButton" ) || o->isA( "QCheckBox" ) ) {
1628 postEvent( o, new QKeyEvent( e->type(), Key_Space, ' ', 1628 postEvent( o, new QKeyEvent( e->type(), Key_Space, ' ',
1629 ke->state(), " ", ke->isAutoRepeat(), ke->count() ) ); 1629 ke->state(), " ", ke->isAutoRepeat(), ke->count() ) );
1630 return TRUE; 1630 return TRUE;
1631 } 1631 }
1632 } 1632 }
1633 } 1633 }
1634 return FALSE; 1634 return FALSE;
1635} 1635}
1636 1636
1637/*! 1637/*!
1638 \reimp 1638 \reimp
1639*/ 1639*/
1640void QPEApplication::timerEvent( QTimerEvent *e ) 1640void QPEApplication::timerEvent( QTimerEvent *e )
1641{ 1641{
1642 if ( e->timerId() == d->presstimer && d->presswidget ) { 1642 if ( e->timerId() == d->presstimer && d->presswidget ) {
1643 // Right pressed 1643 // Right pressed
1644 postEvent( d->presswidget, 1644 postEvent( d->presswidget,
1645 new QMouseEvent( QEvent::MouseButtonPress, d->presspos, 1645 new QMouseEvent( QEvent::MouseButtonPress, d->presspos,
1646 RightButton, LeftButton ) ); 1646 RightButton, LeftButton ) );
1647 killTimer( d->presstimer ); 1647 killTimer( d->presstimer );
1648 d->presstimer = 0; 1648 d->presstimer = 0;
1649 d->rightpressed = TRUE; 1649 d->rightpressed = TRUE;
1650 } 1650 }
1651} 1651}
1652 1652
1653void QPEApplication::removeSenderFromStylusDict() 1653void QPEApplication::removeSenderFromStylusDict()
1654{ 1654{
1655 stylusDict->remove 1655 stylusDict->remove
1656 ( ( void* ) sender() ); 1656 ( ( void* ) sender() );
1657 if ( d->presswidget == sender() ) 1657 if ( d->presswidget == sender() )
1658 d->presswidget = 0; 1658 d->presswidget = 0;
1659} 1659}
1660 1660
1661/*! 1661/*!
1662 \internal 1662 \internal
1663*/ 1663*/
1664bool QPEApplication::keyboardGrabbed() const 1664bool QPEApplication::keyboardGrabbed() const
1665{ 1665{
1666 return d->kbgrabbed; 1666 return d->kbgrabbed;
1667} 1667}
1668 1668
1669 1669
1670/*! 1670/*!
1671 Reverses the effect of grabKeyboard(). This is called automatically 1671 Reverses the effect of grabKeyboard(). This is called automatically
1672 on program exit. 1672 on program exit.
1673*/ 1673*/
1674void QPEApplication::ungrabKeyboard() 1674void QPEApplication::ungrabKeyboard()
1675{ 1675{
1676 ((QPEApplication *) qApp )-> d-> kbgrabbed = false; 1676 ((QPEApplication *) qApp )-> d-> kbgrabbed = false;
1677} 1677}
1678 1678
1679/*! 1679/*!
1680 Grabs the physical keyboard keys, e.g. the application's launching 1680 Grabs the physical keyboard keys, e.g. the application's launching
1681 keys. Instead of launching applications when these keys are pressed 1681 keys. Instead of launching applications when these keys are pressed
1682 the signals emitted are sent to this application instead. Some games 1682 the signals emitted are sent to this application instead. Some games
1683 programs take over the launch keys in this way to make interaction 1683 programs take over the launch keys in this way to make interaction
1684 easier. 1684 easier.
1685 1685
1686 \sa ungrabKeyboard() 1686 \sa ungrabKeyboard()
1687*/ 1687*/
1688void QPEApplication::grabKeyboard() 1688void QPEApplication::grabKeyboard()
1689{ 1689{
1690 ((QPEApplication *) qApp )-> d-> kbgrabbed = true; 1690 ((QPEApplication *) qApp )-> d-> kbgrabbed = true;
1691} 1691}
1692 1692
1693/*! 1693/*!
1694 \reimp 1694 \reimp
1695*/ 1695*/
1696int QPEApplication::exec() 1696int QPEApplication::exec()
1697{ 1697{
1698#ifndef QT_NO_COP 1698#ifndef QT_NO_COP
1699 d->sendQCopQ(); 1699 d->sendQCopQ();
1700#endif 1700#endif
1701 1701
1702 if ( d->keep_running ) 1702 if ( d->keep_running )
1703 //|| d->qpe_main_widget && d->qpe_main_widget->isVisible() ) 1703 //|| d->qpe_main_widget && d->qpe_main_widget->isVisible() )
1704 return QApplication::exec(); 1704 return QApplication::exec();
1705 1705
1706#ifndef QT_NO_COP 1706#ifndef QT_NO_COP
1707 1707
1708 { 1708 {
1709 QCopEnvelope e( "QPE/System", "closing(QString)" ); 1709 QCopEnvelope e( "QPE/System", "closing(QString)" );
1710 e << d->appName; 1710 e << d->appName;
1711 } 1711 }
1712#endif 1712#endif
1713 processEvents(); 1713 processEvents();
1714 return 0; 1714 return 0;
1715} 1715}
1716 1716
1717/*! 1717/*!
1718 \internal 1718 \internal
1719 External request for application to quit. Quits if possible without 1719 External request for application to quit. Quits if possible without
1720 loosing state. 1720 loosing state.
1721*/ 1721*/
1722void QPEApplication::tryQuit() 1722void QPEApplication::tryQuit()
1723{ 1723{
1724 if ( activeModalWidget() || strcmp( argv() [ 0 ], "embeddedkonsole" ) == 0 ) 1724 if ( activeModalWidget() || strcmp( argv() [ 0 ], "embeddedkonsole" ) == 0 )
1725 return ; // Inside modal loop or konsole. Too hard to save state. 1725 return ; // Inside modal loop or konsole. Too hard to save state.
1726#ifndef QT_NO_COP 1726#ifndef QT_NO_COP
1727 1727
1728 { 1728 {
1729 QCopEnvelope e( "QPE/System", "closing(QString)" ); 1729 QCopEnvelope e( "QPE/System", "closing(QString)" );
1730 e << d->appName; 1730 e << d->appName;
1731 } 1731 }
1732#endif 1732#endif
1733 processEvents(); 1733 processEvents();
1734 1734
1735 quit(); 1735 quit();
1736} 1736}
1737 1737
1738/*! 1738/*!
1739 \internal 1739 \internal
1740*/ 1740*/
1741void QPEApplication::installTranslation( const QString& baseName ) { 1741void QPEApplication::installTranslation( const QString& baseName ) {
1742 QTranslator* trans = new QTranslator(this); 1742 QTranslator* trans = new QTranslator(this);
1743 QString tfn = qpeDir() + "/i18n/"+baseName; 1743 QString tfn = qpeDir() + "/i18n/"+baseName;
1744 if ( trans->load( tfn ) ) 1744 if ( trans->load( tfn ) )
1745 installTranslator( trans ); 1745 installTranslator( trans );
1746 else 1746 else
1747 delete trans; 1747 delete trans;
1748} 1748}
1749 1749
1750/*! 1750/*!
1751 \internal 1751 \internal
1752 User initiated quit. Makes the window 'Go Away'. If preloaded this means 1752 User initiated quit. Makes the window 'Go Away'. If preloaded this means
1753 hiding the window. If not it means quitting the application. 1753 hiding the window. If not it means quitting the application.
1754 As this is user initiated we don't need to check state. 1754 As this is user initiated we don't need to check state.
1755*/ 1755*/
1756void QPEApplication::hideOrQuit() 1756void QPEApplication::hideOrQuit()
1757{ 1757{
1758 processEvents(); 1758 processEvents();
1759 1759
1760 // If we are a preloaded application we don't actually quit, so emit 1760 // If we are a preloaded application we don't actually quit, so emit
1761 // a System message indicating we're quasi-closing. 1761 // a System message indicating we're quasi-closing.
1762 if ( d->preloaded && d->qpe_main_widget ) 1762 if ( d->preloaded && d->qpe_main_widget )
1763#ifndef QT_NO_COP 1763#ifndef QT_NO_COP
1764 1764
1765 { 1765 {
1766 QCopEnvelope e("QPE/System", "fastAppHiding(QString)" ); 1766 QCopEnvelope e("QPE/System", "fastAppHiding(QString)" );
1767 e << d->appName; 1767 e << d->appName;
1768 d->qpe_main_widget->hide(); 1768 d->qpe_main_widget->hide();
1769 } 1769 }
1770#endif 1770#endif
1771 else 1771 else
1772 quit(); 1772 quit();
1773} 1773}
1774 1774
1775#if (__GNUC__ > 2 )
1776extern "C" void __cxa_pure_virtual();
1777
1778void __cxa_pure_virtual()
1779{
1780 fprintf( stderr, "Pure virtual called\n");
1781 abort();
1782
1783}
1784
1785#endif
1786
1775 1787
1776#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_RAMSES) 1788#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_RAMSES)
1777 1789
1778// The libraries with the skiff package (and possibly others) have 1790// The libraries with the skiff package (and possibly others) have
1779// completely useless implementations of builtin new and delete that 1791// completely useless implementations of builtin new and delete that
1780// use about 50% of your CPU. Here we revert to the simple libc 1792// use about 50% of your CPU. Here we revert to the simple libc
1781// functions. 1793// functions.
1782 1794
1783void* operator new[]( size_t size ) 1795void* operator new[]( size_t size )
1784{ 1796{
1785 return malloc( size ); 1797 return malloc( size );
1786} 1798}
1787 1799
1788void* operator new( size_t size ) 1800void* operator new( size_t size )
1789{ 1801{
1790 return malloc( size ); 1802 return malloc( size );
1791} 1803}
1792 1804
1793void operator delete[]( void* p ) 1805void operator delete[]( void* p )
1794{ 1806{
1795 free( p ); 1807 free( p );
1796} 1808}
1797 1809
1798void operator delete[]( void* p, size_t /*size*/ ) 1810void operator delete[]( void* p, size_t /*size*/ )
1799{ 1811{
1800 free( p ); 1812 free( p );
1801} 1813}
1802 1814
1803 1815
1804void operator delete( void* p ) 1816void operator delete( void* p )
1805{ 1817{
1806 free( p ); 1818 free( p );
1807} 1819}
1808 1820
1809void operator delete( void* p, size_t /*size*/ ) 1821void operator delete( void* p, size_t /*size*/ )
1810{ 1822{
1811 free( p ); 1823 free( p );
1812} 1824}
1813 1825
1814#endif 1826#endif
1815 1827
1816#if ( QT_VERSION <= 230 ) && !defined(SINGLE_APP) 1828#if ( QT_VERSION <= 230 ) && !defined(SINGLE_APP)
1817#include <qwidgetlist.h> 1829#include <qwidgetlist.h>
1818#ifdef QWS 1830#ifdef QWS
1819#include <qgfx_qws.h> 1831#include <qgfx_qws.h>
1820extern QRect qt_maxWindowRect; 1832extern QRect qt_maxWindowRect;
1821void qt_setMaxWindowRect(const QRect& r ) 1833void qt_setMaxWindowRect(const QRect& r )
1822{ 1834{
1823 qt_maxWindowRect = qt_screen->mapFromDevice( r, 1835 qt_maxWindowRect = qt_screen->mapFromDevice( r,
1824 qt_screen->mapToDevice( QSize( qt_screen->width(), qt_screen->height() ) ) ); 1836 qt_screen->mapToDevice( QSize( qt_screen->width(), qt_screen->height() ) ) );
1825 // Re-resize any maximized windows 1837 // Re-resize any maximized windows
1826 QWidgetList* l = QApplication::topLevelWidgets(); 1838 QWidgetList* l = QApplication::topLevelWidgets();
1827 if ( l ) { 1839 if ( l ) {
1828 QWidget * w = l->first(); 1840 QWidget * w = l->first();
1829 while ( w ) { 1841 while ( w ) {
1830 if ( w->isVisible() && w->isMaximized() ) { 1842 if ( w->isVisible() && w->isMaximized() ) {
1831 w->showMaximized(); 1843 w->showMaximized();
1832 } 1844 }
1833 w = l->next(); 1845 w = l->next();
1834 } 1846 }
1835 delete l; 1847 delete l;
1836 } 1848 }
1837} 1849}
1838#endif 1850#endif
1839#endif 1851#endif