summaryrefslogtreecommitdiff
path: root/library
Unidiff
Diffstat (limited to 'library') (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpeapplication.cpp8
-rw-r--r--library/qpeapplication.h5
2 files changed, 3 insertions, 10 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index f5bf0c5..7463074 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -686,773 +686,771 @@ void QPEApplication::setInputMethodHint( QWidget * w, InputMethodHint mode )
686 else { 686 else {
687 inputMethodDict->insert( w, ( void* ) mode ); 687 inputMethodDict->insert( w, ( void* ) mode );
688 } 688 }
689} 689}
690 690
691class HackDialog : public QDialog 691class HackDialog : public QDialog
692{ 692{
693public: 693public:
694 void acceptIt() 694 void acceptIt()
695 { 695 {
696 accept(); 696 accept();
697 } 697 }
698 void rejectIt() 698 void rejectIt()
699 { 699 {
700 reject(); 700 reject();
701 } 701 }
702}; 702};
703 703
704 704
705void QPEApplication::mapToDefaultAction( QWSKeyEvent * ke, int key ) 705void QPEApplication::mapToDefaultAction( QWSKeyEvent * ke, int key )
706{ 706{
707 // specialised actions for certain widgets. May want to 707 // specialised actions for certain widgets. May want to
708 // add more stuff here. 708 // add more stuff here.
709 if ( activePopupWidget() && activePopupWidget() ->inherits( "QListBox" ) 709 if ( activePopupWidget() && activePopupWidget() ->inherits( "QListBox" )
710 && activePopupWidget() ->parentWidget() 710 && activePopupWidget() ->parentWidget()
711 && activePopupWidget() ->parentWidget() ->inherits( "QComboBox" ) ) 711 && activePopupWidget() ->parentWidget() ->inherits( "QComboBox" ) )
712 key = Qt::Key_Return; 712 key = Qt::Key_Return;
713 713
714 if ( activePopupWidget() && activePopupWidget() ->inherits( "QPopupMenu" ) ) 714 if ( activePopupWidget() && activePopupWidget() ->inherits( "QPopupMenu" ) )
715 key = Qt::Key_Return; 715 key = Qt::Key_Return;
716 716
717#ifdef QWS 717#ifdef QWS
718 718
719 ke->simpleData.keycode = key; 719 ke->simpleData.keycode = key;
720#endif 720#endif
721} 721}
722 722
723class HackWidget : public QWidget 723class HackWidget : public QWidget
724{ 724{
725public: 725public:
726 bool needsOk() 726 bool needsOk()
727 { 727 {
728 return ( getWState() & WState_Reserved1 ); 728 return ( getWState() & WState_Reserved1 );
729 } 729 }
730}; 730};
731 731
732/*! 732/*!
733 \internal 733 \internal
734*/ 734*/
735 735
736#ifdef QWS 736#ifdef QWS
737bool QPEApplication::qwsEventFilter( QWSEvent * e ) 737bool QPEApplication::qwsEventFilter( QWSEvent * e )
738{ 738{
739 if ( !d->notbusysent && e->type == QWSEvent::Focus ) { 739 if ( !d->notbusysent && e->type == QWSEvent::Focus ) {
740 if ( qApp->type() != QApplication::GuiServer ) { 740 if ( qApp->type() != QApplication::GuiServer ) {
741 QCopEnvelope e( "QPE/System", "notBusy(QString)" ); 741 QCopEnvelope e( "QPE/System", "notBusy(QString)" );
742 e << d->appName; 742 e << d->appName;
743 } 743 }
744 d->notbusysent = TRUE; 744 d->notbusysent = TRUE;
745 } 745 }
746 if ( type() == GuiServer ) { 746 if ( type() == GuiServer ) {
747 switch ( e->type ) { 747 switch ( e->type ) {
748 case QWSEvent::Mouse: 748 case QWSEvent::Mouse:
749 if ( e->asMouse() ->simpleData.state && !QWidget::find( e->window() ) ) 749 if ( e->asMouse() ->simpleData.state && !QWidget::find( e->window() ) )
750 emit clientMoused(); 750 emit clientMoused();
751 break; 751 break;
752 default: 752 default:
753 break; 753 break;
754 } 754 }
755 } 755 }
756 if ( e->type == QWSEvent::Key ) { 756 if ( e->type == QWSEvent::Key ) {
757 QWSKeyEvent *ke = ( QWSKeyEvent * ) e; 757 QWSKeyEvent *ke = ( QWSKeyEvent * ) e;
758 if ( ke->simpleData.keycode == Qt::Key_F33 ) { 758 if ( ke->simpleData.keycode == Qt::Key_F33 ) {
759 // Use special "OK" key to press "OK" on top level widgets 759 // Use special "OK" key to press "OK" on top level widgets
760 QWidget * active = activeWindow(); 760 QWidget * active = activeWindow();
761 QWidget *popup = 0; 761 QWidget *popup = 0;
762 if ( active && active->isPopup() ) { 762 if ( active && active->isPopup() ) {
763 popup = active; 763 popup = active;
764 active = active->parentWidget(); 764 active = active->parentWidget();
765 } 765 }
766 if ( active && ( int ) active->winId() == ke->simpleData.window && 766 if ( active && ( int ) active->winId() == ke->simpleData.window &&
767 !active->testWFlags( WStyle_Customize | WType_Popup | WType_Desktop ) ) { 767 !active->testWFlags( WStyle_Customize | WType_Popup | WType_Desktop ) ) {
768 if ( ke->simpleData.is_press ) { 768 if ( ke->simpleData.is_press ) {
769 if ( popup ) 769 if ( popup )
770 popup->close(); 770 popup->close();
771 if ( active->inherits( "QDialog" ) ) { 771 if ( active->inherits( "QDialog" ) ) {
772 HackDialog * d = ( HackDialog * ) active; 772 HackDialog * d = ( HackDialog * ) active;
773 d->acceptIt(); 773 d->acceptIt();
774 return TRUE; 774 return TRUE;
775 } 775 }
776 else if ( ( ( HackWidget * ) active ) ->needsOk() ) { 776 else if ( ( ( HackWidget * ) active ) ->needsOk() ) {
777 QSignal s; 777 QSignal s;
778 s.connect( active, SLOT( accept() ) ); 778 s.connect( active, SLOT( accept() ) );
779 s.activate(); 779 s.activate();
780 } 780 }
781 else { 781 else {
782 // do the same as with the select key: Map to the default action of the widget: 782 // do the same as with the select key: Map to the default action of the widget:
783 mapToDefaultAction( ke, Qt::Key_Return ); 783 mapToDefaultAction( ke, Qt::Key_Return );
784 } 784 }
785 } 785 }
786 } 786 }
787 } 787 }
788 else if ( ke->simpleData.keycode == Qt::Key_F30 ) { 788 else if ( ke->simpleData.keycode == Qt::Key_F30 ) {
789 // Use special "select" key to do whatever default action a widget has 789 // Use special "select" key to do whatever default action a widget has
790 mapToDefaultAction( ke, Qt::Key_Space ); 790 mapToDefaultAction( ke, Qt::Key_Space );
791 } 791 }
792 else if ( ke->simpleData.keycode == Qt::Key_Escape && 792 else if ( ke->simpleData.keycode == Qt::Key_Escape &&
793 ke->simpleData.is_press ) { 793 ke->simpleData.is_press ) {
794 // Escape key closes app if focus on toplevel 794 // Escape key closes app if focus on toplevel
795 QWidget * active = activeWindow(); 795 QWidget * active = activeWindow();
796 if ( active && active->testWFlags( WType_TopLevel ) && 796 if ( active && active->testWFlags( WType_TopLevel ) &&
797 ( int ) active->winId() == ke->simpleData.window && 797 ( int ) active->winId() == ke->simpleData.window &&
798 !active->testWFlags( WStyle_Dialog | WStyle_Customize | WType_Popup | WType_Desktop ) ) { 798 !active->testWFlags( WStyle_Dialog | WStyle_Customize | WType_Popup | WType_Desktop ) ) {
799 if ( active->inherits( "QDialog" ) ) { 799 if ( active->inherits( "QDialog" ) ) {
800 HackDialog * d = ( HackDialog * ) active; 800 HackDialog * d = ( HackDialog * ) active;
801 d->rejectIt(); 801 d->rejectIt();
802 return TRUE; 802 return TRUE;
803 } 803 }
804 else if ( strcmp( argv() [ 0 ], "embeddedkonsole" ) != 0 ) { 804 else if ( strcmp( argv() [ 0 ], "embeddedkonsole" ) != 0 ) {
805 active->close(); 805 active->close();
806 } 806 }
807 } 807 }
808 } 808 }
809 else if ( ke->simpleData.keycode >= Qt::Key_F1 && ke->simpleData.keycode <= Qt::Key_F29 ) { 809 else if ( ke->simpleData.keycode >= Qt::Key_F1 && ke->simpleData.keycode <= Qt::Key_F29 ) {
810 // this should be if ( ODevice::inst ( )-> buttonForKeycode ( ... )) 810 // this should be if ( ODevice::inst ( )-> buttonForKeycode ( ... ))
811 // but we cannot access libopie function within libqpe :( 811 // but we cannot access libopie function within libqpe :(
812 812
813 QWidget * active = activeWindow ( ); 813 QWidget * active = activeWindow ( );
814 if ( active && ((int) active-> winId ( ) == ke-> simpleData.window )) { 814 if ( active && ((int) active-> winId ( ) == ke-> simpleData.window )) {
815 if ( d-> kbgrabbed ) { // we grabbed the keyboard 815 if ( d-> kbgrabbed ) { // we grabbed the keyboard
816 QChar ch ( ke-> simpleData.unicode ); 816 QChar ch ( ke-> simpleData.unicode );
817 QKeyEvent qke ( ke-> simpleData. is_press ? QEvent::KeyPress : QEvent::KeyRelease, 817 QKeyEvent qke ( ke-> simpleData. is_press ? QEvent::KeyPress : QEvent::KeyRelease,
818 ke-> simpleData.keycode, 818 ke-> simpleData.keycode,
819 ch. latin1 ( ), 819 ch. latin1 ( ),
820 ke-> simpleData.modifiers, 820 ke-> simpleData.modifiers,
821 QString ( ch ), 821 QString ( ch ),
822 ke-> simpleData.is_auto_repeat, 1 ); 822 ke-> simpleData.is_auto_repeat, 1 );
823 823
824 QObject *which = QWidget::keyboardGrabber ( ); 824 QObject *which = QWidget::keyboardGrabber ( );
825 if ( !which ) 825 if ( !which )
826 which = QApplication::focusWidget ( ); 826 which = QApplication::focusWidget ( );
827 if ( !which ) 827 if ( !which )
828 which = QApplication::activeWindow ( ); 828 which = QApplication::activeWindow ( );
829 if ( !which ) 829 if ( !which )
830 which = qApp; 830 which = qApp;
831 831
832 QApplication::sendEvent ( which, &qke ); 832 QApplication::sendEvent ( which, &qke );
833 } 833 }
834 else { // we didn't grab the keyboard, so send the event to the launcher 834 else { // we didn't grab the keyboard, so send the event to the launcher
835 QCopEnvelope e ( "QPE/Launcher", "deviceButton(int,int,int)" ); 835 QCopEnvelope e ( "QPE/Launcher", "deviceButton(int,int,int)" );
836 e << int( ke-> simpleData.keycode ) << int( ke-> simpleData. is_press ) << int( ke-> simpleData.is_auto_repeat ); 836 e << int( ke-> simpleData.keycode ) << int( ke-> simpleData. is_press ) << int( ke-> simpleData.is_auto_repeat );
837 } 837 }
838 } 838 }
839 return true; 839 return true;
840 } 840 }
841 } 841 }
842 if ( e->type == QWSEvent::Focus ) { 842 if ( e->type == QWSEvent::Focus ) {
843 QWSFocusEvent * fe = ( QWSFocusEvent* ) e; 843 QWSFocusEvent * fe = ( QWSFocusEvent* ) e;
844 if ( !fe->simpleData.get_focus ) { 844 if ( !fe->simpleData.get_focus ) {
845 QWidget * active = activeWindow(); 845 QWidget * active = activeWindow();
846 while ( active && active->isPopup() ) { 846 while ( active && active->isPopup() ) {
847 active->close(); 847 active->close();
848 active = activeWindow(); 848 active = activeWindow();
849 } 849 }
850 } 850 }
851 else { 851 else {
852 // make sure our modal widget is ALWAYS on top 852 // make sure our modal widget is ALWAYS on top
853 QWidget *topm = activeModalWidget(); 853 QWidget *topm = activeModalWidget();
854 if ( topm ) { 854 if ( topm ) {
855 topm->raise(); 855 topm->raise();
856 } 856 }
857 } 857 }
858 if ( fe->simpleData.get_focus && inputMethodDict ) { 858 if ( fe->simpleData.get_focus && inputMethodDict ) {
859 InputMethodHint m = inputMethodHint( QWidget::find( e->window() ) ); 859 InputMethodHint m = inputMethodHint( QWidget::find( e->window() ) );
860 if ( m == AlwaysOff ) 860 if ( m == AlwaysOff )
861 Global::hideInputMethod(); 861 Global::hideInputMethod();
862 if ( m == AlwaysOn ) 862 if ( m == AlwaysOn )
863 Global::showInputMethod(); 863 Global::showInputMethod();
864 } 864 }
865 } 865 }
866 return QApplication::qwsEventFilter( e ); 866 return QApplication::qwsEventFilter( e );
867} 867}
868#endif 868#endif
869 869
870/*! 870/*!
871 Destroys the QPEApplication. 871 Destroys the QPEApplication.
872*/ 872*/
873QPEApplication::~QPEApplication() 873QPEApplication::~QPEApplication()
874{ 874{
875 ungrabKeyboard(); 875 ungrabKeyboard();
876#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 876#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
877 // Need to delete QCopChannels early, since the display will 877 // Need to delete QCopChannels early, since the display will
878 // be gone by the time we get to ~QObject(). 878 // be gone by the time we get to ~QObject().
879 delete sysChannel; 879 delete sysChannel;
880 delete pidChannel; 880 delete pidChannel;
881#endif 881#endif
882 882
883 delete d; 883 delete d;
884} 884}
885 885
886/*! 886/*!
887 Returns <tt>$OPIEDIR/</tt>. 887 Returns <tt>$OPIEDIR/</tt>.
888*/ 888*/
889QString QPEApplication::qpeDir() 889QString QPEApplication::qpeDir()
890{ 890{
891 const char * base = getenv( "OPIEDIR" ); 891 const char * base = getenv( "OPIEDIR" );
892 if ( base ) 892 if ( base )
893 return QString( base ) + "/"; 893 return QString( base ) + "/";
894 894
895 return QString( "../" ); 895 return QString( "../" );
896} 896}
897 897
898/*! 898/*!
899 Returns the user's current Document directory. There is a trailing "/". 899 Returns the user's current Document directory. There is a trailing "/".
900 .. well, it does now,, and there's no trailing '/' 900 .. well, it does now,, and there's no trailing '/'
901*/ 901*/
902QString QPEApplication::documentDir() 902QString QPEApplication::documentDir()
903{ 903{
904 const char* base = getenv( "HOME"); 904 const char* base = getenv( "HOME");
905 if ( base ) 905 if ( base )
906 return QString( base ) + "/Documents"; 906 return QString( base ) + "/Documents";
907 907
908 return QString( "../Documents" ); 908 return QString( "../Documents" );
909} 909}
910 910
911static int deforient = -1; 911static int deforient = -1;
912 912
913/*! 913/*!
914 \internal 914 \internal
915*/ 915*/
916int QPEApplication::defaultRotation() 916int QPEApplication::defaultRotation()
917{ 917{
918 if ( deforient < 0 ) { 918 if ( deforient < 0 ) {
919 QString d = getenv( "QWS_DISPLAY" ); 919 QString d = getenv( "QWS_DISPLAY" );
920 if ( d.contains( "Rot90" ) ) { 920 if ( d.contains( "Rot90" ) ) {
921 deforient = 90; 921 deforient = 90;
922 } 922 }
923 else if ( d.contains( "Rot180" ) ) { 923 else if ( d.contains( "Rot180" ) ) {
924 deforient = 180; 924 deforient = 180;
925 } 925 }
926 else if ( d.contains( "Rot270" ) ) { 926 else if ( d.contains( "Rot270" ) ) {
927 deforient = 270; 927 deforient = 270;
928 } 928 }
929 else { 929 else {
930 deforient = 0; 930 deforient = 0;
931 } 931 }
932 } 932 }
933 return deforient; 933 return deforient;
934} 934}
935 935
936/*! 936/*!
937 \internal 937 \internal
938*/ 938*/
939void QPEApplication::setDefaultRotation( int r ) 939void QPEApplication::setDefaultRotation( int r )
940{ 940{
941 if ( qApp->type() == GuiServer ) { 941 if ( qApp->type() == GuiServer ) {
942 deforient = r; 942 deforient = r;
943 setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 ); 943 setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 );
944 Config config("qpe"); 944 Config config("qpe");
945 config.setGroup( "Rotation" ); 945 config.setGroup( "Rotation" );
946 config.writeEntry( "Screen", getenv("QWS_DISPLAY") ); 946 config.writeEntry( "Screen", getenv("QWS_DISPLAY") );
947 } 947 }
948 else { 948 else {
949#ifndef QT_NO_COP 949#ifndef QT_NO_COP
950 { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" ); 950 { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" );
951 e << r; 951 e << r;
952 } 952 }
953#endif 953#endif
954 954
955 } 955 }
956} 956}
957 957
958 958
959/*! 959/*!
960 \internal 960 \internal
961*/ 961*/
962void QPEApplication::applyStyle() 962void QPEApplication::applyStyle()
963{ 963{
964 Config config( "qpe" ); 964 Config config( "qpe" );
965 config.setGroup( "Appearance" ); 965 config.setGroup( "Appearance" );
966 966
967 // don't block ourselves ... 967 // don't block ourselves ...
968 Opie::force_appearance = 0; 968 Opie::force_appearance = 0;
969 969
970 static QString appname = Opie::binaryName ( ); 970 static QString appname = Opie::binaryName ( );
971 971
972 QStringList ex = config. readListEntry ( "NoStyle", ';' ); 972 QStringList ex = config. readListEntry ( "NoStyle", ';' );
973 int nostyle = 0; 973 int nostyle = 0;
974 for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) { 974 for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) {
975 if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) { 975 if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) {
976 nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 ); 976 nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 );
977 break; 977 break;
978 } 978 }
979 } 979 }
980 980
981 // Widget style 981 // Widget style
982 QString style = config.readEntry( "Style", "Light" ); 982 QString style = config.readEntry( "Style", "Light" );
983 983
984 // don't set a custom style 984 // don't set a custom style
985 if ( nostyle & Opie::Force_Style ) 985 if ( nostyle & Opie::Force_Style )
986 style = "Light"; 986 style = "Light";
987 987
988 internalSetStyle ( style ); 988 internalSetStyle ( style );
989 989
990 // Colors 990 // Colors
991 QColor bgcolor( config.readEntry( "Background", "#E5E1D5" ) ); 991 QColor bgcolor( config.readEntry( "Background", "#E5E1D5" ) );
992 QColor btncolor( config.readEntry( "Button", "#D6CDBB" ) ); 992 QColor btncolor( config.readEntry( "Button", "#D6CDBB" ) );
993 QPalette pal( btncolor, bgcolor ); 993 QPalette pal( btncolor, bgcolor );
994 QString color = config.readEntry( "Highlight", "#800000" ); 994 QString color = config.readEntry( "Highlight", "#800000" );
995 pal.setColor( QColorGroup::Highlight, QColor( color ) ); 995 pal.setColor( QColorGroup::Highlight, QColor( color ) );
996 color = config.readEntry( "HighlightedText", "#FFFFFF" ); 996 color = config.readEntry( "HighlightedText", "#FFFFFF" );
997 pal.setColor( QColorGroup::HighlightedText, QColor( color ) ); 997 pal.setColor( QColorGroup::HighlightedText, QColor( color ) );
998 color = config.readEntry( "Text", "#000000" ); 998 color = config.readEntry( "Text", "#000000" );
999 pal.setColor( QColorGroup::Text, QColor( color ) ); 999 pal.setColor( QColorGroup::Text, QColor( color ) );
1000 color = config.readEntry( "ButtonText", "#000000" ); 1000 color = config.readEntry( "ButtonText", "#000000" );
1001 pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) ); 1001 pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) );
1002 color = config.readEntry( "Base", "#FFFFFF" ); 1002 color = config.readEntry( "Base", "#FFFFFF" );
1003 pal.setColor( QColorGroup::Base, QColor( color ) ); 1003 pal.setColor( QColorGroup::Base, QColor( color ) );
1004 1004
1005 pal.setColor( QPalette::Disabled, QColorGroup::Text, 1005 pal.setColor( QPalette::Disabled, QColorGroup::Text,
1006 pal.color( QPalette::Active, QColorGroup::Background ).dark() ); 1006 pal.color( QPalette::Active, QColorGroup::Background ).dark() );
1007 1007
1008 setPalette( pal, TRUE ); 1008 setPalette( pal, TRUE );
1009 1009
1010 // Window Decoration 1010 // Window Decoration
1011 QString dec = config.readEntry( "Decoration", "Qtopia" ); 1011 QString dec = config.readEntry( "Decoration", "Qtopia" );
1012 1012
1013 // don't set a custom deco 1013 // don't set a custom deco
1014 if ( nostyle & Opie::Force_Decoration ) 1014 if ( nostyle & Opie::Force_Decoration )
1015 dec = ""; 1015 dec = "";
1016 1016
1017 //qDebug ( "Setting Deco: %s -- old %s (%d)", dec.latin1(), d-> decorationName.latin1(), nostyle); 1017 //qDebug ( "Setting Deco: %s -- old %s (%d)", dec.latin1(), d-> decorationName.latin1(), nostyle);
1018 1018
1019 if ( dec != d->decorationName ) { 1019 if ( dec != d->decorationName ) {
1020 qwsSetDecoration( new QPEDecoration( dec ) ); 1020 qwsSetDecoration( new QPEDecoration( dec ) );
1021 d->decorationName = dec; 1021 d->decorationName = dec;
1022 } 1022 }
1023 1023
1024 // Font 1024 // Font
1025 QString ff = config.readEntry( "FontFamily", font().family() ); 1025 QString ff = config.readEntry( "FontFamily", font().family() );
1026 int fs = config.readNumEntry( "FontSize", font().pointSize() ); 1026 int fs = config.readNumEntry( "FontSize", font().pointSize() );
1027 1027
1028 // don't set a custom font 1028 // don't set a custom font
1029 if ( nostyle & Opie::Force_Font ) { 1029 if ( nostyle & Opie::Force_Font ) {
1030 ff = "Helvetica"; 1030 ff = "Helvetica";
1031 fs = 10; 1031 fs = 10;
1032 } 1032 }
1033 1033
1034 setFont ( QFont ( ff, fs ), true ); 1034 setFont ( QFont ( ff, fs ), true );
1035 1035
1036 // revert to global blocking policy ... 1036 // revert to global blocking policy ...
1037 Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None; 1037 Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None;
1038 Opie::force_appearance &= ~nostyle; 1038 Opie::force_appearance &= ~nostyle;
1039} 1039}
1040 1040
1041void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data ) 1041void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data )
1042{ 1042{
1043#ifdef Q_WS_QWS 1043#ifdef Q_WS_QWS
1044 QDataStream stream( data, IO_ReadOnly ); 1044 QDataStream stream( data, IO_ReadOnly );
1045 if ( msg == "applyStyle()" ) { 1045 if ( msg == "applyStyle()" ) {
1046 applyStyle(); 1046 applyStyle();
1047 } 1047 }
1048 else if ( msg == "toggleApplicationMenu()" ) { 1048 else if ( msg == "toggleApplicationMenu()" ) {
1049 QWidget *active = activeWindow ( ); 1049 QWidget *active = activeWindow ( );
1050 1050
1051 if ( active ) { 1051 if ( active ) {
1052 QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( ); 1052 QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( );
1053 bool oldactive = man-> isActive ( ); 1053 bool oldactive = man-> isActive ( );
1054 1054
1055 man-> setActive( !man-> isActive() ); 1055 man-> setActive( !man-> isActive() );
1056 1056
1057 if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu 1057 if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu
1058 QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" ); 1058 QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" );
1059 } 1059 }
1060 } 1060 }
1061 } 1061 }
1062 else if ( msg == "setDefaultRotation(int)" ) { 1062 else if ( msg == "setDefaultRotation(int)" ) {
1063 if ( type() == GuiServer ) { 1063 if ( type() == GuiServer ) {
1064 int r; 1064 int r;
1065 stream >> r; 1065 stream >> r;
1066 setDefaultRotation( r ); 1066 setDefaultRotation( r );
1067 } 1067 }
1068 } 1068 }
1069 else if ( msg == "setCurrentRotation(int)" ) { 1069 else if ( msg == "setCurrentRotation(int)" ) {
1070 if ( type() == GuiServer ) { 1070 int r;
1071 int r; 1071 stream >> r;
1072 stream >> r; 1072 setCurrentRotation( r );
1073 setCurrentRotation( r );
1074 }
1075 } 1073 }
1076 else if ( msg == "shutdown()" ) { 1074 else if ( msg == "shutdown()" ) {
1077 if ( type() == GuiServer ) 1075 if ( type() == GuiServer )
1078 shutdown(); 1076 shutdown();
1079 } 1077 }
1080 else if ( msg == "quit()" ) { 1078 else if ( msg == "quit()" ) {
1081 if ( type() != GuiServer ) 1079 if ( type() != GuiServer )
1082 tryQuit(); 1080 tryQuit();
1083 } 1081 }
1084 else if ( msg == "forceQuit()" ) { 1082 else if ( msg == "forceQuit()" ) {
1085 if ( type() != GuiServer ) 1083 if ( type() != GuiServer )
1086 quit(); 1084 quit();
1087 } 1085 }
1088 else if ( msg == "restart()" ) { 1086 else if ( msg == "restart()" ) {
1089 if ( type() == GuiServer ) 1087 if ( type() == GuiServer )
1090 restart(); 1088 restart();
1091 } 1089 }
1092 else if ( msg == "language(QString)" ) { 1090 else if ( msg == "language(QString)" ) {
1093 if ( type() == GuiServer ) { 1091 if ( type() == GuiServer ) {
1094 QString l; 1092 QString l;
1095 stream >> l; 1093 stream >> l;
1096 QString cl = getenv( "LANG" ); 1094 QString cl = getenv( "LANG" );
1097 if ( cl != l ) { 1095 if ( cl != l ) {
1098 if ( l.isNull() ) 1096 if ( l.isNull() )
1099 unsetenv( "LANG" ); 1097 unsetenv( "LANG" );
1100 else 1098 else
1101 setenv( "LANG", l.latin1(), 1 ); 1099 setenv( "LANG", l.latin1(), 1 );
1102 restart(); 1100 restart();
1103 } 1101 }
1104 } 1102 }
1105 } 1103 }
1106 else if ( msg == "timeChange(QString)" ) { 1104 else if ( msg == "timeChange(QString)" ) {
1107 QString t; 1105 QString t;
1108 stream >> t; 1106 stream >> t;
1109 if ( t.isNull() ) 1107 if ( t.isNull() )
1110 unsetenv( "TZ" ); 1108 unsetenv( "TZ" );
1111 else 1109 else
1112 setenv( "TZ", t.latin1(), 1 ); 1110 setenv( "TZ", t.latin1(), 1 );
1113 // emit the signal so everyone else knows... 1111 // emit the signal so everyone else knows...
1114 emit timeChanged(); 1112 emit timeChanged();
1115 } 1113 }
1116 else if ( msg == "execute(QString)" ) { 1114 else if ( msg == "execute(QString)" ) {
1117 if ( type() == GuiServer ) { 1115 if ( type() == GuiServer ) {
1118 QString t; 1116 QString t;
1119 stream >> t; 1117 stream >> t;
1120 Global::execute( t ); 1118 Global::execute( t );
1121 } 1119 }
1122 } 1120 }
1123 else if ( msg == "execute(QString,QString)" ) { 1121 else if ( msg == "execute(QString,QString)" ) {
1124 if ( type() == GuiServer ) { 1122 if ( type() == GuiServer ) {
1125 QString t, d; 1123 QString t, d;
1126 stream >> t >> d; 1124 stream >> t >> d;
1127 Global::execute( t, d ); 1125 Global::execute( t, d );
1128 } 1126 }
1129 } 1127 }
1130 else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) { 1128 else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) {
1131 if ( type() == GuiServer ) { 1129 if ( type() == GuiServer ) {
1132 QDateTime when; 1130 QDateTime when;
1133 QCString channel, message; 1131 QCString channel, message;
1134 int data; 1132 int data;
1135 stream >> when >> channel >> message >> data; 1133 stream >> when >> channel >> message >> data;
1136 AlarmServer::addAlarm( when, channel, message, data ); 1134 AlarmServer::addAlarm( when, channel, message, data );
1137 } 1135 }
1138 } 1136 }
1139 else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) { 1137 else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) {
1140 if ( type() == GuiServer ) { 1138 if ( type() == GuiServer ) {
1141 QDateTime when; 1139 QDateTime when;
1142 QCString channel, message; 1140 QCString channel, message;
1143 int data; 1141 int data;
1144 stream >> when >> channel >> message >> data; 1142 stream >> when >> channel >> message >> data;
1145 AlarmServer::deleteAlarm( when, channel, message, data ); 1143 AlarmServer::deleteAlarm( when, channel, message, data );
1146 } 1144 }
1147 } 1145 }
1148 else if ( msg == "clockChange(bool)" ) { 1146 else if ( msg == "clockChange(bool)" ) {
1149 int tmp; 1147 int tmp;
1150 stream >> tmp; 1148 stream >> tmp;
1151 emit clockChanged( tmp ); 1149 emit clockChanged( tmp );
1152 } 1150 }
1153 else if ( msg == "weekChange(bool)" ) { 1151 else if ( msg == "weekChange(bool)" ) {
1154 int tmp; 1152 int tmp;
1155 stream >> tmp; 1153 stream >> tmp;
1156 emit weekChanged( tmp ); 1154 emit weekChanged( tmp );
1157 } 1155 }
1158 else if ( msg == "setDateFormat(DateFormat)" ) { 1156 else if ( msg == "setDateFormat(DateFormat)" ) {
1159 DateFormat tmp; 1157 DateFormat tmp;
1160 stream >> tmp; 1158 stream >> tmp;
1161 emit dateFormatChanged( tmp ); 1159 emit dateFormatChanged( tmp );
1162 } 1160 }
1163 else if ( msg == "setVolume(int,int)" ) { 1161 else if ( msg == "setVolume(int,int)" ) {
1164 int t, v; 1162 int t, v;
1165 stream >> t >> v; 1163 stream >> t >> v;
1166 setVolume( t, v ); 1164 setVolume( t, v );
1167 emit volumeChanged( muted ); 1165 emit volumeChanged( muted );
1168 } 1166 }
1169 else if ( msg == "volumeChange(bool)" ) { 1167 else if ( msg == "volumeChange(bool)" ) {
1170 stream >> muted; 1168 stream >> muted;
1171 setVolume(); 1169 setVolume();
1172 emit volumeChanged( muted ); 1170 emit volumeChanged( muted );
1173 } 1171 }
1174 else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> 1172 else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
1175 int t, v; 1173 int t, v;
1176 stream >> t >> v; 1174 stream >> t >> v;
1177 setMic( t, v ); 1175 setMic( t, v );
1178 emit micChanged( micMuted ); 1176 emit micChanged( micMuted );
1179 } 1177 }
1180 else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> 1178 else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
1181 stream >> micMuted; 1179 stream >> micMuted;
1182 setMic(); 1180 setMic();
1183 emit micChanged( micMuted ); 1181 emit micChanged( micMuted );
1184 } 1182 }
1185 else if ( msg == "setBass(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1183 else if ( msg == "setBass(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1186 int t, v; 1184 int t, v;
1187 stream >> t >> v; 1185 stream >> t >> v;
1188 setBass( t, v ); 1186 setBass( t, v );
1189 } 1187 }
1190 else if ( msg == "bassChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1188 else if ( msg == "bassChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1191 setBass(); 1189 setBass();
1192 } 1190 }
1193 else if ( msg == "setTreble(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1191 else if ( msg == "setTreble(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1194 int t, v; 1192 int t, v;
1195 stream >> t >> v; 1193 stream >> t >> v;
1196 setTreble( t, v ); 1194 setTreble( t, v );
1197 } 1195 }
1198 else if ( msg == "trebleChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> 1196 else if ( msg == "trebleChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
1199 setTreble(); 1197 setTreble();
1200 } 1198 }
1201 1199
1202 1200
1203 1201
1204#endif 1202#endif
1205} 1203}
1206 1204
1207/*! 1205/*!
1208 \internal 1206 \internal
1209*/ 1207*/
1210bool QPEApplication::raiseAppropriateWindow() 1208bool QPEApplication::raiseAppropriateWindow()
1211{ 1209{
1212 bool r = FALSE; 1210 bool r = FALSE;
1213 // ########## raise()ing main window should raise and set active 1211 // ########## raise()ing main window should raise and set active
1214 // ########## it and then all childen. This belongs in Qt/Embedded 1212 // ########## it and then all childen. This belongs in Qt/Embedded
1215 QWidget *top = d->qpe_main_widget; 1213 QWidget *top = d->qpe_main_widget;
1216 if ( !top ) 1214 if ( !top )
1217 top = mainWidget(); 1215 top = mainWidget();
1218 if ( top && d->keep_running ) { 1216 if ( top && d->keep_running ) {
1219 if ( top->isVisible() ) 1217 if ( top->isVisible() )
1220 r = TRUE; 1218 r = TRUE;
1221 else if (d->preloaded) { 1219 else if (d->preloaded) {
1222 // We are preloaded and not visible.. pretend we just started.. 1220 // We are preloaded and not visible.. pretend we just started..
1223 QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); 1221 QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
1224 e << d->appName; 1222 e << d->appName;
1225 } 1223 }
1226 1224
1227 d->show_mx(top, d->nomaximize); 1225 d->show_mx(top, d->nomaximize);
1228 top->raise(); 1226 top->raise();
1229 top->setActiveWindow(); 1227 top->setActiveWindow();
1230 } 1228 }
1231 QWidget *topm = activeModalWidget(); 1229 QWidget *topm = activeModalWidget();
1232 if ( topm && topm != top ) { 1230 if ( topm && topm != top ) {
1233 topm->show(); 1231 topm->show();
1234 topm->raise(); 1232 topm->raise();
1235 topm->setActiveWindow(); 1233 topm->setActiveWindow();
1236 // If we haven't already handled the fastAppShowing message 1234 // If we haven't already handled the fastAppShowing message
1237 if (!top && d->preloaded) { 1235 if (!top && d->preloaded) {
1238 QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); 1236 QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
1239 e << d->appName; 1237 e << d->appName;
1240 } 1238 }
1241 r = FALSE; 1239 r = FALSE;
1242 } 1240 }
1243 return r; 1241 return r;
1244} 1242}
1245 1243
1246void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data) 1244void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data)
1247{ 1245{
1248#ifdef Q_WS_QWS 1246#ifdef Q_WS_QWS
1249 1247
1250 if ( msg == "quit()" ) { 1248 if ( msg == "quit()" ) {
1251 tryQuit(); 1249 tryQuit();
1252 } 1250 }
1253 else if ( msg == "quitIfInvisible()" ) { 1251 else if ( msg == "quitIfInvisible()" ) {
1254 if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() ) 1252 if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() )
1255 quit(); 1253 quit();
1256 } 1254 }
1257 else if ( msg == "close()" ) { 1255 else if ( msg == "close()" ) {
1258 hideOrQuit(); 1256 hideOrQuit();
1259 } 1257 }
1260 else if ( msg == "disablePreload()" ) { 1258 else if ( msg == "disablePreload()" ) {
1261 d->preloaded = FALSE; 1259 d->preloaded = FALSE;
1262 d->keep_running = TRUE; 1260 d->keep_running = TRUE;
1263 /* so that quit will quit */ 1261 /* so that quit will quit */
1264 } 1262 }
1265 else if ( msg == "enablePreload()" ) { 1263 else if ( msg == "enablePreload()" ) {
1266 if (d->qpe_main_widget) 1264 if (d->qpe_main_widget)
1267 d->preloaded = TRUE; 1265 d->preloaded = TRUE;
1268 d->keep_running = TRUE; 1266 d->keep_running = TRUE;
1269 /* so next quit won't quit */ 1267 /* so next quit won't quit */
1270 } 1268 }
1271 else if ( msg == "raise()" ) { 1269 else if ( msg == "raise()" ) {
1272 d->keep_running = TRUE; 1270 d->keep_running = TRUE;
1273 d->notbusysent = FALSE; 1271 d->notbusysent = FALSE;
1274 raiseAppropriateWindow(); 1272 raiseAppropriateWindow();
1275 // Tell the system we're still chugging along... 1273 // Tell the system we're still chugging along...
1276 QCopEnvelope e("QPE/System", "appRaised(QString)"); 1274 QCopEnvelope e("QPE/System", "appRaised(QString)");
1277 e << d->appName; 1275 e << d->appName;
1278 } 1276 }
1279 else if ( msg == "flush()" ) { 1277 else if ( msg == "flush()" ) {
1280 emit flush(); 1278 emit flush();
1281 // we need to tell the desktop 1279 // we need to tell the desktop
1282 QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" ); 1280 QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" );
1283 e << d->appName; 1281 e << d->appName;
1284 } 1282 }
1285 else if ( msg == "reload()" ) { 1283 else if ( msg == "reload()" ) {
1286 emit reload(); 1284 emit reload();
1287 } 1285 }
1288 else if ( msg == "setDocument(QString)" ) { 1286 else if ( msg == "setDocument(QString)" ) {
1289 d->keep_running = TRUE; 1287 d->keep_running = TRUE;
1290 QDataStream stream( data, IO_ReadOnly ); 1288 QDataStream stream( data, IO_ReadOnly );
1291 QString doc; 1289 QString doc;
1292 stream >> doc; 1290 stream >> doc;
1293 QWidget *mw = mainWidget(); 1291 QWidget *mw = mainWidget();
1294 if ( !mw ) 1292 if ( !mw )
1295 mw = d->qpe_main_widget; 1293 mw = d->qpe_main_widget;
1296 if ( mw ) 1294 if ( mw )
1297 Global::setDocument( mw, doc ); 1295 Global::setDocument( mw, doc );
1298 } 1296 }
1299 else if ( msg == "nextView()" ) { 1297 else if ( msg == "nextView()" ) {
1300 qDebug("got nextView()"); 1298 qDebug("got nextView()");
1301 /* 1299 /*
1302 if ( raiseAppropriateWindow() ) 1300 if ( raiseAppropriateWindow() )
1303 */ 1301 */
1304 emit appMessage( msg, data); 1302 emit appMessage( msg, data);
1305 } 1303 }
1306 else { 1304 else {
1307 emit appMessage( msg, data); 1305 emit appMessage( msg, data);
1308 } 1306 }
1309 1307
1310#endif 1308#endif
1311} 1309}
1312 1310
1313 1311
1314/*! 1312/*!
1315 Sets widget \a mw as the mainWidget() and shows it. For small windows, 1313 Sets widget \a mw as the mainWidget() and shows it. For small windows,
1316 consider passing TRUE for \a nomaximize rather than the default FALSE. 1314 consider passing TRUE for \a nomaximize rather than the default FALSE.
1317 1315
1318 \sa showMainDocumentWidget() 1316 \sa showMainDocumentWidget()
1319*/ 1317*/
1320void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize ) 1318void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize )
1321{ 1319{
1322 d->show(mw, nomaximize ); 1320 d->show(mw, nomaximize );
1323} 1321}
1324 1322
1325/*! 1323/*!
1326 Sets widget \a mw as the mainWidget() and shows it. For small windows, 1324 Sets widget \a mw as the mainWidget() and shows it. For small windows,
1327 consider passing TRUE for \a nomaximize rather than the default FALSE. 1325 consider passing TRUE for \a nomaximize rather than the default FALSE.
1328 1326
1329 This calls designates the application as 1327 This calls designates the application as
1330 a \link docwidget.html document-oriented\endlink application. 1328 a \link docwidget.html document-oriented\endlink application.
1331 1329
1332 The \a mw widget \e must have this slot: setDocument(const QString&). 1330 The \a mw widget \e must have this slot: setDocument(const QString&).
1333 1331
1334 \sa showMainWidget() 1332 \sa showMainWidget()
1335*/ 1333*/
1336void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize ) 1334void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize )
1337{ 1335{
1338 if ( mw && argc() == 2 ) 1336 if ( mw && argc() == 2 )
1339 Global::setDocument( mw, QString::fromUtf8(argv()[1]) ); 1337 Global::setDocument( mw, QString::fromUtf8(argv()[1]) );
1340 1338
1341 d->show(mw, nomaximize ); 1339 d->show(mw, nomaximize );
1342} 1340}
1343 1341
1344 1342
1345/*! 1343/*!
1346 If an application is started via a \link qcop.html QCop\endlink 1344 If an application is started via a \link qcop.html QCop\endlink
1347 message, the application will process the \link qcop.html 1345 message, the application will process the \link qcop.html
1348 QCop\endlink message and then quit. If the application calls this 1346 QCop\endlink message and then quit. If the application calls this
1349 function while processing a \link qcop.html QCop\endlink message, 1347 function while processing a \link qcop.html QCop\endlink message,
1350 after processing its outstanding \link qcop.html QCop\endlink 1348 after processing its outstanding \link qcop.html QCop\endlink
1351 messages the application will start 'properly' and show itself. 1349 messages the application will start 'properly' and show itself.
1352 1350
1353 \sa keepRunning() 1351 \sa keepRunning()
1354*/ 1352*/
1355void QPEApplication::setKeepRunning() 1353void QPEApplication::setKeepRunning()
1356{ 1354{
1357 if ( qApp && qApp->inherits( "QPEApplication" ) ) { 1355 if ( qApp && qApp->inherits( "QPEApplication" ) ) {
1358 QPEApplication * qpeApp = ( QPEApplication* ) qApp; 1356 QPEApplication * qpeApp = ( QPEApplication* ) qApp;
1359 qpeApp->d->keep_running = TRUE; 1357 qpeApp->d->keep_running = TRUE;
1360 } 1358 }
1361} 1359}
1362 1360
1363/*! 1361/*!
1364 Returns TRUE if the application will quit after processing the 1362 Returns TRUE if the application will quit after processing the
1365 current list of qcop messages; otherwise returns FALSE. 1363 current list of qcop messages; otherwise returns FALSE.
1366 1364
1367 \sa setKeepRunning() 1365 \sa setKeepRunning()
1368*/ 1366*/
1369bool QPEApplication::keepRunning() const 1367bool QPEApplication::keepRunning() const
1370{ 1368{
1371 return d->keep_running; 1369 return d->keep_running;
1372} 1370}
1373 1371
1374/*! 1372/*!
1375 \internal 1373 \internal
1376*/ 1374*/
1377void QPEApplication::internalSetStyle( const QString &style ) 1375void QPEApplication::internalSetStyle( const QString &style )
1378{ 1376{
1379#if QT_VERSION >= 300 1377#if QT_VERSION >= 300
1380 if ( style == "QPE" ) { 1378 if ( style == "QPE" ) {
1381 setStyle( new QPEStyle ); 1379 setStyle( new QPEStyle );
1382 } 1380 }
1383 else { 1381 else {
1384 QStyle *s = QStyleFactory::create( style ); 1382 QStyle *s = QStyleFactory::create( style );
1385 if ( s ) 1383 if ( s )
1386 setStyle( s ); 1384 setStyle( s );
1387 } 1385 }
1388#else 1386#else
1389 if ( style == "Windows" ) { 1387 if ( style == "Windows" ) {
1390 setStyle( new QWindowsStyle ); 1388 setStyle( new QWindowsStyle );
1391 } 1389 }
1392 else if ( style == "QPE" ) { 1390 else if ( style == "QPE" ) {
1393 setStyle( new QPEStyle ); 1391 setStyle( new QPEStyle );
1394 } 1392 }
1395 else if ( style == "Light" ) { 1393 else if ( style == "Light" ) {
1396 setStyle( new LightStyle ); 1394 setStyle( new LightStyle );
1397 } 1395 }
1398#ifndef QT_NO_STYLE_PLATINUM 1396#ifndef QT_NO_STYLE_PLATINUM
1399 else if ( style == "Platinum" ) { 1397 else if ( style == "Platinum" ) {
1400 setStyle( new QPlatinumStyle ); 1398 setStyle( new QPlatinumStyle );
1401 } 1399 }
1402#endif 1400#endif
1403#ifndef QT_NO_STYLE_MOTIF 1401#ifndef QT_NO_STYLE_MOTIF
1404 else if ( style == "Motif" ) { 1402 else if ( style == "Motif" ) {
1405 setStyle( new QMotifStyle ); 1403 setStyle( new QMotifStyle );
1406 } 1404 }
1407#endif 1405#endif
1408#ifndef QT_NO_STYLE_MOTIFPLUS 1406#ifndef QT_NO_STYLE_MOTIFPLUS
1409 else if ( style == "MotifPlus" ) { 1407 else if ( style == "MotifPlus" ) {
1410 setStyle( new QMotifPlusStyle ); 1408 setStyle( new QMotifPlusStyle );
1411 } 1409 }
1412#endif 1410#endif
1413 1411
1414 else { 1412 else {
1415 QStyle *sty = 0; 1413 QStyle *sty = 0;
1416 QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/"; 1414 QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/";
1417 1415
1418 if ( style. find ( ".so" ) > 0 ) 1416 if ( style. find ( ".so" ) > 0 )
1419 path += style; 1417 path += style;
1420 else 1418 else
1421 path = path + "lib" + style. lower ( ) + ".so"; // compatibility 1419 path = path + "lib" + style. lower ( ) + ".so"; // compatibility
1422 1420
1423 static QLibrary *lastlib = 0; 1421 static QLibrary *lastlib = 0;
1424 static StyleInterface *lastiface = 0; 1422 static StyleInterface *lastiface = 0;
1425 1423
1426 QLibrary *lib = new QLibrary ( path ); 1424 QLibrary *lib = new QLibrary ( path );
1427 StyleInterface *iface = 0; 1425 StyleInterface *iface = 0;
1428 1426
1429 if (( lib-> queryInterface ( IID_Style, ( QUnknownInterface ** ) &iface ) == QS_OK ) && iface ) 1427 if (( lib-> queryInterface ( IID_Style, ( QUnknownInterface ** ) &iface ) == QS_OK ) && iface )
1430 sty = iface-> style ( ); 1428 sty = iface-> style ( );
1431 1429
1432 if ( sty ) { 1430 if ( sty ) {
1433 setStyle ( sty ); 1431 setStyle ( sty );
1434 1432
1435 if ( lastiface ) 1433 if ( lastiface )
1436 lastiface-> release ( ); 1434 lastiface-> release ( );
1437 lastiface = iface; 1435 lastiface = iface;
1438 1436
1439 if ( lastlib ) { 1437 if ( lastlib ) {
1440 lastlib-> unload ( ); 1438 lastlib-> unload ( );
1441 delete lastlib; 1439 delete lastlib;
1442 } 1440 }
1443 lastlib = lib; 1441 lastlib = lib;
1444 } 1442 }
1445 else { 1443 else {
1446 if ( iface ) 1444 if ( iface )
1447 iface-> release ( ); 1445 iface-> release ( );
1448 delete lib; 1446 delete lib;
1449 1447
1450 setStyle ( new LightStyle ( )); 1448 setStyle ( new LightStyle ( ));
1451 } 1449 }
1452 } 1450 }
1453#endif 1451#endif
1454} 1452}
1455 1453
1456/*! 1454/*!
1457 \internal 1455 \internal
1458*/ 1456*/
diff --git a/library/qpeapplication.h b/library/qpeapplication.h
index 82954d0..4c37ea6 100644
--- a/library/qpeapplication.h
+++ b/library/qpeapplication.h
@@ -1,197 +1,192 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#ifndef __QPE_APPLICATION_H__ 20#ifndef __QPE_APPLICATION_H__
21#define __QPE_APPLICATION_H__ 21#define __QPE_APPLICATION_H__
22 22
23 23
24#include <qglobal.h> 24#include <qglobal.h>
25#include <qapplication.h> 25#include <qapplication.h>
26#include <qdialog.h> 26#include <qdialog.h>
27#include <qwsdisplay_qws.h> 27#include <qwsdisplay_qws.h>
28#if defined(_WS_QWS_) && !defined(Q_WS_QWS) 28#if defined(_WS_QWS_) && !defined(Q_WS_QWS)
29#define Q_WS_QWS 29#define Q_WS_QWS
30#endif 30#endif
31#include "qpedecoration_qws.h" 31#include "qpedecoration_qws.h"
32#include "timestring.h" 32#include "timestring.h"
33 33
34#if ( defined Q_WS_QWS || defined( _WS_QWS_ ) ) && !defined( QT_NO_COP ) 34#if ( defined Q_WS_QWS || defined( _WS_QWS_ ) ) && !defined( QT_NO_COP )
35#include <qpe/qcopenvelope_qws.h> 35#include <qpe/qcopenvelope_qws.h>
36#endif 36#endif
37 37
38class QCopChannel; 38class QCopChannel;
39class QPEApplicationData; 39class QPEApplicationData;
40class QWSEvent; 40class QWSEvent;
41class QWSKeyEvent; 41class QWSKeyEvent;
42 42
43 43
44class QPEApplication : public QApplication 44class QPEApplication : public QApplication
45{ 45{
46 Q_OBJECT 46 Q_OBJECT
47public: 47public:
48 QPEApplication( int& argc, char **argv, Type=GuiClient ); 48 QPEApplication( int& argc, char **argv, Type=GuiClient );
49 ~QPEApplication(); 49 ~QPEApplication();
50 50
51 static QString qpeDir(); 51 static QString qpeDir();
52 static QString documentDir(); 52 static QString documentDir();
53 void applyStyle(); 53 void applyStyle();
54 static int defaultRotation(); 54 static int defaultRotation();
55 static void setDefaultRotation(int r); 55 static void setDefaultRotation(int r);
56 static void setCurrentRotation(int r); 56 static void setCurrentRotation(int r);
57 static void grabKeyboard(); 57 static void grabKeyboard();
58 static void ungrabKeyboard(); 58 static void ungrabKeyboard();
59 59
60 enum StylusMode { 60 enum StylusMode {
61 LeftOnly, 61 LeftOnly,
62 RightOnHold 62 RightOnHold
63 // RightOnHoldLeftDelayed, etc. 63 // RightOnHoldLeftDelayed, etc.
64 }; 64 };
65 static void setStylusOperation( QWidget*, StylusMode ); 65 static void setStylusOperation( QWidget*, StylusMode );
66 static StylusMode stylusOperation( QWidget* ); 66 static StylusMode stylusOperation( QWidget* );
67 67
68 enum InputMethodHint { 68 enum InputMethodHint {
69 Normal, 69 Normal,
70 AlwaysOff, 70 AlwaysOff,
71 AlwaysOn 71 AlwaysOn
72 }; 72 };
73 73
74 enum screenSaverHint { 74 enum screenSaverHint {
75 Disable = 0, 75 Disable = 0,
76 DisableLightOff = 1, 76 DisableLightOff = 1,
77 DisableSuspend = 2, 77 DisableSuspend = 2,
78 Enable = 100 78 Enable = 100
79 }; 79 };
80 80
81 static void setInputMethodHint( QWidget *, InputMethodHint ); 81 static void setInputMethodHint( QWidget *, InputMethodHint );
82 static InputMethodHint inputMethodHint( QWidget * ); 82 static InputMethodHint inputMethodHint( QWidget * );
83 83
84 void showMainWidget( QWidget*, bool nomax=FALSE ); 84 void showMainWidget( QWidget*, bool nomax=FALSE );
85 void showMainDocumentWidget( QWidget*, bool nomax=FALSE ); 85 void showMainDocumentWidget( QWidget*, bool nomax=FALSE );
86 static void showDialog( QDialog*, bool nomax=FALSE ); 86 static void showDialog( QDialog*, bool nomax=FALSE );
87 static int execDialog( QDialog*, bool nomax=FALSE ); 87 static int execDialog( QDialog*, bool nomax=FALSE );
88 88
89 static void setKeepRunning(); 89 static void setKeepRunning();
90 bool keepRunning() const; 90 bool keepRunning() const;
91 91
92 bool keyboardGrabbed() const; 92 bool keyboardGrabbed() const;
93 93
94 int exec(); 94 int exec();
95 95
96signals: 96signals:
97 void clientMoused(); 97 void clientMoused();
98 void timeChanged(); 98 void timeChanged();
99 void clockChanged( bool pm ); 99 void clockChanged( bool pm );
100 void micChanged( bool muted ); 100 void micChanged( bool muted );
101 void volumeChanged( bool muted ); 101 void volumeChanged( bool muted );
102 void appMessage( const QCString& msg, const QByteArray& data); 102 void appMessage( const QCString& msg, const QByteArray& data);
103 void weekChanged( bool startOnMonday ); 103 void weekChanged( bool startOnMonday );
104 void dateFormatChanged( DateFormat ); 104 void dateFormatChanged( DateFormat );
105 void flush(); 105 void flush();
106 void reload(); 106 void reload();
107 107
108private slots: 108private slots:
109 void systemMessage( const QCString &msg, const QByteArray &data ); 109 void systemMessage( const QCString &msg, const QByteArray &data );
110 void pidMessage( const QCString &msg, const QByteArray &data ); 110 void pidMessage( const QCString &msg, const QByteArray &data );
111 void removeSenderFromStylusDict(); 111 void removeSenderFromStylusDict();
112 void hideOrQuit(); 112 void hideOrQuit();
113 113
114protected: 114protected:
115 bool qwsEventFilter( QWSEvent * ); 115 bool qwsEventFilter( QWSEvent * );
116 void internalSetStyle( const QString &style ); 116 void internalSetStyle( const QString &style );
117 void prepareForTermination(bool willrestart); 117 void prepareForTermination(bool willrestart);
118 virtual void restart(); 118 virtual void restart();
119 virtual void shutdown(); 119 virtual void shutdown();
120 bool eventFilter( QObject *, QEvent * ); 120 bool eventFilter( QObject *, QEvent * );
121 void timerEvent( QTimerEvent * ); 121 void timerEvent( QTimerEvent * );
122 bool raiseAppropriateWindow(); 122 bool raiseAppropriateWindow();
123 virtual void tryQuit(); 123 virtual void tryQuit();
124 124
125 virtual void polish ( QWidget * ); // this is actually implemented in qt_override.cpp (!) 125 virtual void polish ( QWidget * ); // this is actually implemented in qt_override.cpp (!)
126 126
127private: 127private:
128 void mapToDefaultAction( QWSKeyEvent *ke, int defKey ); 128 void mapToDefaultAction( QWSKeyEvent *ke, int defKey );
129 129
130#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 130#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
131 QCopChannel *sysChannel; 131 QCopChannel *sysChannel;
132 QCopChannel *pidChannel; 132 QCopChannel *pidChannel;
133#endif 133#endif
134 QPEApplicationData *d; 134 QPEApplicationData *d;
135 135
136 bool reserved_sh; 136 bool reserved_sh;
137 137
138 138
139 139
140}; 140};
141 141
142inline void QPEApplication::showDialog( QDialog* d, bool nomax ) 142inline void QPEApplication::showDialog( QDialog* d, bool nomax )
143{ 143{
144 QSize sh = d->sizeHint(); 144 QSize sh = d->sizeHint();
145 int w = QMAX(sh.width(),d->width()); 145 int w = QMAX(sh.width(),d->width());
146 int h = QMAX(sh.height(),d->height()); 146 int h = QMAX(sh.height(),d->height());
147 if ( !nomax 147 if ( !nomax
148 && ( w > qApp->desktop()->width()*3/4 148 && ( w > qApp->desktop()->width()*3/4
149 || h > qApp->desktop()->height()*3/4 ) ) 149 || h > qApp->desktop()->height()*3/4 ) )
150 { 150 {
151 d->showMaximized(); 151 d->showMaximized();
152 } else { 152 } else {
153 d->resize(w,h); 153 d->resize(w,h);
154 d->show(); 154 d->show();
155 } 155 }
156} 156}
157 157
158inline int QPEApplication::execDialog( QDialog* d, bool nomax ) 158inline int QPEApplication::execDialog( QDialog* d, bool nomax )
159{ 159{
160 showDialog(d,nomax); 160 showDialog(d,nomax);
161 return d->exec(); 161 return d->exec();
162} 162}
163 163
164enum Transformation { Rot0, Rot90, Rot180, Rot270 }; /* from qgfxtransformed_qws.cpp */ 164enum Transformation { Rot0, Rot90, Rot180, Rot270 }; /* from qgfxtransformed_qws.cpp */
165 165
166inline void QPEApplication::setCurrentRotation( int r ) 166inline void QPEApplication::setCurrentRotation( int r )
167{ 167{
168 if ( qApp->type() != GuiServer ) {
169 QCopEnvelope e( "QPE/System", "setCurrentRotation(int)" );
170 e << r;
171 return;
172 }
173 Transformation e; 168 Transformation e;
174 169
175 switch (r) { 170 switch (r) {
176 case 0: 171 case 0:
177 e = Rot0; 172 e = Rot0;
178 break; 173 break;
179 case 90: 174 case 90:
180 e = Rot90; 175 e = Rot90;
181 break; 176 break;
182 case 180: 177 case 180:
183 e = Rot180; 178 e = Rot180;
184 break; 179 break;
185 case 270: 180 case 270:
186 e = Rot270; 181 e = Rot270;
187 break; 182 break;
188 default: 183 default:
189 return; 184 return;
190 } 185 }
191 186
192 qDebug("calling qApp->desktop()->qwsDisplay()->setTransformation( %d )\n", e); 187 qDebug("calling qApp->desktop()->qwsDisplay()->setTransformation( %d )\n", e);
193 qApp->desktop()->qwsDisplay()->setTransformation( e ); 188 qApp->desktop()->qwsDisplay()->setTransformation( e );
194} 189}
195 190
196 191
197#endif 192#endif