summaryrefslogtreecommitdiff
authorkergoth <kergoth>2003-01-26 19:58:41 (UTC)
committer kergoth <kergoth>2003-01-26 19:58:41 (UTC)
commit808181587c1cea5a089c75df7d2833f100bddbf1 (patch) (unidiff)
tree94b59d3b5d649cf9c7a15f76f5b049030684913e
parentf389dd4e3d5ceacb15b5c0b751a618d7586d6c31 (diff)
downloadopie-808181587c1cea5a089c75df7d2833f100bddbf1.zip
opie-808181587c1cea5a089c75df7d2833f100bddbf1.tar.gz
opie-808181587c1cea5a089c75df7d2833f100bddbf1.tar.bz2
Add setCurrentRotation QCop call for later use of on the fly rotation. Also adapt depends to the actual required qt version.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/libqpe1.control2
-rw-r--r--library/qpeapplication.cpp5
-rw-r--r--library/qpeapplication.h63
3 files changed, 52 insertions, 18 deletions
diff --git a/library/libqpe1.control b/library/libqpe1.control
index 6743e28..94992b1 100644
--- a/library/libqpe1.control
+++ b/library/libqpe1.control
@@ -1,8 +1,8 @@
1Files: $OPIEDIR/lib/libqpe.so.1 $OPIEDIR/lib/libqpe.so.1.5 $OPIEDIR/lib/libqpe.so.1.5.0 1Files: $OPIEDIR/lib/libqpe.so.1 $OPIEDIR/lib/libqpe.so.1.5 $OPIEDIR/lib/libqpe.so.1.5.0
2Priority: required 2Priority: required
3Section: opie/system 3Section: opie/system
4Maintainer: Project Opie <opie@handhelds.org> 4Maintainer: Project Opie <opie@handhelds.org>
5Architecture: arm 5Architecture: arm
6Version: $QPE_VERSION-$SUB_VERSION.1 6Version: $QPE_VERSION-$SUB_VERSION.1
7Depends: libqt2-emb (>=$QTE_VERSION), libqt2-emb-fonts (>=$QTE_VERSION) 7Depends: libqt2-emb (>=2.3.4-beta4), libqt2-emb-fonts (>=$QTE_VERSION)
8Description: libqpe, base qtopia/opie library. 8Description: libqpe, base qtopia/opie library.
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index b21428a..95c4a1b 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -813,512 +813,517 @@ bool QPEApplication::qwsEventFilter( QWSEvent * e )
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)" ) {
1070 int r;
1071 stream >> r;
1072 setCurrentRotation( r );
1073 }
1069 else if ( msg == "shutdown()" ) { 1074 else if ( msg == "shutdown()" ) {
1070 if ( type() == GuiServer ) 1075 if ( type() == GuiServer )
1071 shutdown(); 1076 shutdown();
1072 } 1077 }
1073 else if ( msg == "quit()" ) { 1078 else if ( msg == "quit()" ) {
1074 if ( type() != GuiServer ) 1079 if ( type() != GuiServer )
1075 tryQuit(); 1080 tryQuit();
1076 } 1081 }
1077 else if ( msg == "forceQuit()" ) { 1082 else if ( msg == "forceQuit()" ) {
1078 if ( type() != GuiServer ) 1083 if ( type() != GuiServer )
1079 quit(); 1084 quit();
1080 } 1085 }
1081 else if ( msg == "restart()" ) { 1086 else if ( msg == "restart()" ) {
1082 if ( type() == GuiServer ) 1087 if ( type() == GuiServer )
1083 restart(); 1088 restart();
1084 } 1089 }
1085 else if ( msg == "language(QString)" ) { 1090 else if ( msg == "language(QString)" ) {
1086 if ( type() == GuiServer ) { 1091 if ( type() == GuiServer ) {
1087 QString l; 1092 QString l;
1088 stream >> l; 1093 stream >> l;
1089 QString cl = getenv( "LANG" ); 1094 QString cl = getenv( "LANG" );
1090 if ( cl != l ) { 1095 if ( cl != l ) {
1091 if ( l.isNull() ) 1096 if ( l.isNull() )
1092 unsetenv( "LANG" ); 1097 unsetenv( "LANG" );
1093 else 1098 else
1094 setenv( "LANG", l.latin1(), 1 ); 1099 setenv( "LANG", l.latin1(), 1 );
1095 restart(); 1100 restart();
1096 } 1101 }
1097 } 1102 }
1098 } 1103 }
1099 else if ( msg == "timeChange(QString)" ) { 1104 else if ( msg == "timeChange(QString)" ) {
1100 QString t; 1105 QString t;
1101 stream >> t; 1106 stream >> t;
1102 if ( t.isNull() ) 1107 if ( t.isNull() )
1103 unsetenv( "TZ" ); 1108 unsetenv( "TZ" );
1104 else 1109 else
1105 setenv( "TZ", t.latin1(), 1 ); 1110 setenv( "TZ", t.latin1(), 1 );
1106 // emit the signal so everyone else knows... 1111 // emit the signal so everyone else knows...
1107 emit timeChanged(); 1112 emit timeChanged();
1108 } 1113 }
1109 else if ( msg == "execute(QString)" ) { 1114 else if ( msg == "execute(QString)" ) {
1110 if ( type() == GuiServer ) { 1115 if ( type() == GuiServer ) {
1111 QString t; 1116 QString t;
1112 stream >> t; 1117 stream >> t;
1113 Global::execute( t ); 1118 Global::execute( t );
1114 } 1119 }
1115 } 1120 }
1116 else if ( msg == "execute(QString,QString)" ) { 1121 else if ( msg == "execute(QString,QString)" ) {
1117 if ( type() == GuiServer ) { 1122 if ( type() == GuiServer ) {
1118 QString t, d; 1123 QString t, d;
1119 stream >> t >> d; 1124 stream >> t >> d;
1120 Global::execute( t, d ); 1125 Global::execute( t, d );
1121 } 1126 }
1122 } 1127 }
1123 else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) { 1128 else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) {
1124 if ( type() == GuiServer ) { 1129 if ( type() == GuiServer ) {
1125 QDateTime when; 1130 QDateTime when;
1126 QCString channel, message; 1131 QCString channel, message;
1127 int data; 1132 int data;
1128 stream >> when >> channel >> message >> data; 1133 stream >> when >> channel >> message >> data;
1129 AlarmServer::addAlarm( when, channel, message, data ); 1134 AlarmServer::addAlarm( when, channel, message, data );
1130 } 1135 }
1131 } 1136 }
1132 else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) { 1137 else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) {
1133 if ( type() == GuiServer ) { 1138 if ( type() == GuiServer ) {
1134 QDateTime when; 1139 QDateTime when;
1135 QCString channel, message; 1140 QCString channel, message;
1136 int data; 1141 int data;
1137 stream >> when >> channel >> message >> data; 1142 stream >> when >> channel >> message >> data;
1138 AlarmServer::deleteAlarm( when, channel, message, data ); 1143 AlarmServer::deleteAlarm( when, channel, message, data );
1139 } 1144 }
1140 } 1145 }
1141 else if ( msg == "clockChange(bool)" ) { 1146 else if ( msg == "clockChange(bool)" ) {
1142 int tmp; 1147 int tmp;
1143 stream >> tmp; 1148 stream >> tmp;
1144 emit clockChanged( tmp ); 1149 emit clockChanged( tmp );
1145 } 1150 }
1146 else if ( msg == "weekChange(bool)" ) { 1151 else if ( msg == "weekChange(bool)" ) {
1147 int tmp; 1152 int tmp;
1148 stream >> tmp; 1153 stream >> tmp;
1149 emit weekChanged( tmp ); 1154 emit weekChanged( tmp );
1150 } 1155 }
1151 else if ( msg == "setDateFormat(DateFormat)" ) { 1156 else if ( msg == "setDateFormat(DateFormat)" ) {
1152 DateFormat tmp; 1157 DateFormat tmp;
1153 stream >> tmp; 1158 stream >> tmp;
1154 emit dateFormatChanged( tmp ); 1159 emit dateFormatChanged( tmp );
1155 } 1160 }
1156 else if ( msg == "setVolume(int,int)" ) { 1161 else if ( msg == "setVolume(int,int)" ) {
1157 int t, v; 1162 int t, v;
1158 stream >> t >> v; 1163 stream >> t >> v;
1159 setVolume( t, v ); 1164 setVolume( t, v );
1160 emit volumeChanged( muted ); 1165 emit volumeChanged( muted );
1161 } 1166 }
1162 else if ( msg == "volumeChange(bool)" ) { 1167 else if ( msg == "volumeChange(bool)" ) {
1163 stream >> muted; 1168 stream >> muted;
1164 setVolume(); 1169 setVolume();
1165 emit volumeChanged( muted ); 1170 emit volumeChanged( muted );
1166 } 1171 }
1167 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>
1168 int t, v; 1173 int t, v;
1169 stream >> t >> v; 1174 stream >> t >> v;
1170 setMic( t, v ); 1175 setMic( t, v );
1171 emit micChanged( micMuted ); 1176 emit micChanged( micMuted );
1172 } 1177 }
1173 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>
1174 stream >> micMuted; 1179 stream >> micMuted;
1175 setMic(); 1180 setMic();
1176 emit micChanged( micMuted ); 1181 emit micChanged( micMuted );
1177 } 1182 }
1178 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>
1179 int t, v; 1184 int t, v;
1180 stream >> t >> v; 1185 stream >> t >> v;
1181 setBass( t, v ); 1186 setBass( t, v );
1182 } 1187 }
1183 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>
1184 setBass(); 1189 setBass();
1185 } 1190 }
1186 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>
1187 int t, v; 1192 int t, v;
1188 stream >> t >> v; 1193 stream >> t >> v;
1189 setTreble( t, v ); 1194 setTreble( t, v );
1190 } 1195 }
1191 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>
1192 setTreble(); 1197 setTreble();
1193 } 1198 }
1194 1199
1195 1200
1196 1201
1197#endif 1202#endif
1198} 1203}
1199 1204
1200/*! 1205/*!
1201 \internal 1206 \internal
1202*/ 1207*/
1203bool QPEApplication::raiseAppropriateWindow() 1208bool QPEApplication::raiseAppropriateWindow()
1204{ 1209{
1205 bool r = FALSE; 1210 bool r = FALSE;
1206 // ########## raise()ing main window should raise and set active 1211 // ########## raise()ing main window should raise and set active
1207 // ########## it and then all childen. This belongs in Qt/Embedded 1212 // ########## it and then all childen. This belongs in Qt/Embedded
1208 QWidget *top = d->qpe_main_widget; 1213 QWidget *top = d->qpe_main_widget;
1209 if ( !top ) 1214 if ( !top )
1210 top = mainWidget(); 1215 top = mainWidget();
1211 if ( top && d->keep_running ) { 1216 if ( top && d->keep_running ) {
1212 if ( top->isVisible() ) 1217 if ( top->isVisible() )
1213 r = TRUE; 1218 r = TRUE;
1214 else if (d->preloaded) { 1219 else if (d->preloaded) {
1215 // We are preloaded and not visible.. pretend we just started.. 1220 // We are preloaded and not visible.. pretend we just started..
1216 QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); 1221 QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
1217 e << d->appName; 1222 e << d->appName;
1218 } 1223 }
1219 1224
1220 d->show_mx(top, d->nomaximize); 1225 d->show_mx(top, d->nomaximize);
1221 top->raise(); 1226 top->raise();
1222 top->setActiveWindow(); 1227 top->setActiveWindow();
1223 } 1228 }
1224 QWidget *topm = activeModalWidget(); 1229 QWidget *topm = activeModalWidget();
1225 if ( topm && topm != top ) { 1230 if ( topm && topm != top ) {
1226 topm->show(); 1231 topm->show();
1227 topm->raise(); 1232 topm->raise();
1228 topm->setActiveWindow(); 1233 topm->setActiveWindow();
1229 // If we haven't already handled the fastAppShowing message 1234 // If we haven't already handled the fastAppShowing message
1230 if (!top && d->preloaded) { 1235 if (!top && d->preloaded) {
1231 QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); 1236 QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
1232 e << d->appName; 1237 e << d->appName;
1233 } 1238 }
1234 r = FALSE; 1239 r = FALSE;
1235 } 1240 }
1236 return r; 1241 return r;
1237} 1242}
1238 1243
1239void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data) 1244void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data)
1240{ 1245{
1241#ifdef Q_WS_QWS 1246#ifdef Q_WS_QWS
1242 1247
1243 if ( msg == "quit()" ) { 1248 if ( msg == "quit()" ) {
1244 tryQuit(); 1249 tryQuit();
1245 } 1250 }
1246 else if ( msg == "quitIfInvisible()" ) { 1251 else if ( msg == "quitIfInvisible()" ) {
1247 if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() ) 1252 if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() )
1248 quit(); 1253 quit();
1249 } 1254 }
1250 else if ( msg == "close()" ) { 1255 else if ( msg == "close()" ) {
1251 hideOrQuit(); 1256 hideOrQuit();
1252 } 1257 }
1253 else if ( msg == "disablePreload()" ) { 1258 else if ( msg == "disablePreload()" ) {
1254 d->preloaded = FALSE; 1259 d->preloaded = FALSE;
1255 d->keep_running = TRUE; 1260 d->keep_running = TRUE;
1256 /* so that quit will quit */ 1261 /* so that quit will quit */
1257 } 1262 }
1258 else if ( msg == "enablePreload()" ) { 1263 else if ( msg == "enablePreload()" ) {
1259 if (d->qpe_main_widget) 1264 if (d->qpe_main_widget)
1260 d->preloaded = TRUE; 1265 d->preloaded = TRUE;
1261 d->keep_running = TRUE; 1266 d->keep_running = TRUE;
1262 /* so next quit won't quit */ 1267 /* so next quit won't quit */
1263 } 1268 }
1264 else if ( msg == "raise()" ) { 1269 else if ( msg == "raise()" ) {
1265 d->keep_running = TRUE; 1270 d->keep_running = TRUE;
1266 d->notbusysent = FALSE; 1271 d->notbusysent = FALSE;
1267 raiseAppropriateWindow(); 1272 raiseAppropriateWindow();
1268 // Tell the system we're still chugging along... 1273 // Tell the system we're still chugging along...
1269 QCopEnvelope e("QPE/System", "appRaised(QString)"); 1274 QCopEnvelope e("QPE/System", "appRaised(QString)");
1270 e << d->appName; 1275 e << d->appName;
1271 } 1276 }
1272 else if ( msg == "flush()" ) { 1277 else if ( msg == "flush()" ) {
1273 emit flush(); 1278 emit flush();
1274 // we need to tell the desktop 1279 // we need to tell the desktop
1275 QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" ); 1280 QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" );
1276 e << d->appName; 1281 e << d->appName;
1277 } 1282 }
1278 else if ( msg == "reload()" ) { 1283 else if ( msg == "reload()" ) {
1279 emit reload(); 1284 emit reload();
1280 } 1285 }
1281 else if ( msg == "setDocument(QString)" ) { 1286 else if ( msg == "setDocument(QString)" ) {
1282 d->keep_running = TRUE; 1287 d->keep_running = TRUE;
1283 QDataStream stream( data, IO_ReadOnly ); 1288 QDataStream stream( data, IO_ReadOnly );
1284 QString doc; 1289 QString doc;
1285 stream >> doc; 1290 stream >> doc;
1286 QWidget *mw = mainWidget(); 1291 QWidget *mw = mainWidget();
1287 if ( !mw ) 1292 if ( !mw )
1288 mw = d->qpe_main_widget; 1293 mw = d->qpe_main_widget;
1289 if ( mw ) 1294 if ( mw )
1290 Global::setDocument( mw, doc ); 1295 Global::setDocument( mw, doc );
1291 } 1296 }
1292 else if ( msg == "nextView()" ) { 1297 else if ( msg == "nextView()" ) {
1293 qDebug("got nextView()"); 1298 qDebug("got nextView()");
1294 /* 1299 /*
1295 if ( raiseAppropriateWindow() ) 1300 if ( raiseAppropriateWindow() )
1296 */ 1301 */
1297 emit appMessage( msg, data); 1302 emit appMessage( msg, data);
1298 } 1303 }
1299 else { 1304 else {
1300 emit appMessage( msg, data); 1305 emit appMessage( msg, data);
1301 } 1306 }
1302 1307
1303#endif 1308#endif
1304} 1309}
1305 1310
1306 1311
1307/*! 1312/*!
1308 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,
1309 consider passing TRUE for \a nomaximize rather than the default FALSE. 1314 consider passing TRUE for \a nomaximize rather than the default FALSE.
1310 1315
1311 \sa showMainDocumentWidget() 1316 \sa showMainDocumentWidget()
1312*/ 1317*/
1313void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize ) 1318void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize )
1314{ 1319{
1315 d->show(mw, nomaximize ); 1320 d->show(mw, nomaximize );
1316} 1321}
1317 1322
1318/*! 1323/*!
1319 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,
1320 consider passing TRUE for \a nomaximize rather than the default FALSE. 1325 consider passing TRUE for \a nomaximize rather than the default FALSE.
1321 1326
1322 This calls designates the application as 1327 This calls designates the application as
1323 a \link docwidget.html document-oriented\endlink application. 1328 a \link docwidget.html document-oriented\endlink application.
1324 1329
diff --git a/library/qpeapplication.h b/library/qpeapplication.h
index 7d956a3..7505115 100644
--- a/library/qpeapplication.h
+++ b/library/qpeapplication.h
@@ -1,159 +1,188 @@
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 <qapplication.h> 25#include <qapplication.h>
25#include <qdialog.h> 26#include <qdialog.h>
27#include <qwsdisplay_qws.h>
26#if defined(_WS_QWS_) && !defined(Q_WS_QWS) 28#if defined(_WS_QWS_) && !defined(Q_WS_QWS)
27#define Q_WS_QWS 29#define Q_WS_QWS
28#endif 30#endif
29#include "qpedecoration_qws.h" 31#include "qpedecoration_qws.h"
30#include "timestring.h" 32#include "timestring.h"
31 33
32class QCopChannel; 34class QCopChannel;
33class QPEApplicationData; 35class QPEApplicationData;
34class QWSEvent; 36class QWSEvent;
35class QWSKeyEvent; 37class QWSKeyEvent;
36 38
37 39
38class QPEApplication : public QApplication 40class QPEApplication : public QApplication
39{ 41{
40 Q_OBJECT 42 Q_OBJECT
41public: 43public:
42 QPEApplication( int& argc, char **argv, Type=GuiClient ); 44 QPEApplication( int& argc, char **argv, Type=GuiClient );
43 ~QPEApplication(); 45 ~QPEApplication();
44 46
45 static QString qpeDir(); 47 static QString qpeDir();
46 static QString documentDir(); 48 static QString documentDir();
47 void applyStyle(); 49 void applyStyle();
48 static int defaultRotation(); 50 static int defaultRotation();
49 static void setDefaultRotation(int r); 51 static void setDefaultRotation(int r);
52 static void setCurrentRotation(int r);
50 static void grabKeyboard(); 53 static void grabKeyboard();
51 static void ungrabKeyboard(); 54 static void ungrabKeyboard();
52 55
53 enum StylusMode { 56 enum StylusMode {
54 LeftOnly, 57 LeftOnly,
55 RightOnHold 58 RightOnHold
56 // RightOnHoldLeftDelayed, etc. 59 // RightOnHoldLeftDelayed, etc.
57 }; 60 };
58 static void setStylusOperation( QWidget*, StylusMode ); 61 static void setStylusOperation( QWidget*, StylusMode );
59 static StylusMode stylusOperation( QWidget* ); 62 static StylusMode stylusOperation( QWidget* );
60 63
61 enum InputMethodHint { 64 enum InputMethodHint {
62 Normal, 65 Normal,
63 AlwaysOff, 66 AlwaysOff,
64 AlwaysOn 67 AlwaysOn
65 }; 68 };
66 69
67 enum screenSaverHint { 70 enum screenSaverHint {
68 Disable = 0, 71 Disable = 0,
69 DisableLightOff = 1, 72 DisableLightOff = 1,
70 DisableSuspend = 2, 73 DisableSuspend = 2,
71 Enable = 100 74 Enable = 100
72 }; 75 };
73 76
74 static void setInputMethodHint( QWidget *, InputMethodHint ); 77 static void setInputMethodHint( QWidget *, InputMethodHint );
75 static InputMethodHint inputMethodHint( QWidget * ); 78 static InputMethodHint inputMethodHint( QWidget * );
76 79
77 void showMainWidget( QWidget*, bool nomax=FALSE ); 80 void showMainWidget( QWidget*, bool nomax=FALSE );
78 void showMainDocumentWidget( QWidget*, bool nomax=FALSE ); 81 void showMainDocumentWidget( QWidget*, bool nomax=FALSE );
79 static void showDialog( QDialog*, bool nomax=FALSE ); 82 static void showDialog( QDialog*, bool nomax=FALSE );
80 static int execDialog( QDialog*, bool nomax=FALSE ); 83 static int execDialog( QDialog*, bool nomax=FALSE );
81 84
82 static void setKeepRunning(); 85 static void setKeepRunning();
83 bool keepRunning() const; 86 bool keepRunning() const;
84 87
85 bool keyboardGrabbed() const; 88 bool keyboardGrabbed() const;
86 89
87 int exec(); 90 int exec();
88 91
89signals: 92signals:
90 void clientMoused(); 93 void clientMoused();
91 void timeChanged(); 94 void timeChanged();
92 void clockChanged( bool pm ); 95 void clockChanged( bool pm );
93 void micChanged( bool muted ); 96 void micChanged( bool muted );
94 void volumeChanged( bool muted ); 97 void volumeChanged( bool muted );
95 void appMessage( const QCString& msg, const QByteArray& data); 98 void appMessage( const QCString& msg, const QByteArray& data);
96 void weekChanged( bool startOnMonday ); 99 void weekChanged( bool startOnMonday );
97 void dateFormatChanged( DateFormat ); 100 void dateFormatChanged( DateFormat );
98 void flush(); 101 void flush();
99 void reload(); 102 void reload();
100 103
101private slots: 104private slots:
102 void systemMessage( const QCString &msg, const QByteArray &data ); 105 void systemMessage( const QCString &msg, const QByteArray &data );
103 void pidMessage( const QCString &msg, const QByteArray &data ); 106 void pidMessage( const QCString &msg, const QByteArray &data );
104 void removeSenderFromStylusDict(); 107 void removeSenderFromStylusDict();
105 void hideOrQuit(); 108 void hideOrQuit();
106 109
107protected: 110protected:
108 bool qwsEventFilter( QWSEvent * ); 111 bool qwsEventFilter( QWSEvent * );
109 void internalSetStyle( const QString &style ); 112 void internalSetStyle( const QString &style );
110 void prepareForTermination(bool willrestart); 113 void prepareForTermination(bool willrestart);
111 virtual void restart(); 114 virtual void restart();
112 virtual void shutdown(); 115 virtual void shutdown();
113 bool eventFilter( QObject *, QEvent * ); 116 bool eventFilter( QObject *, QEvent * );
114 void timerEvent( QTimerEvent * ); 117 void timerEvent( QTimerEvent * );
115 bool raiseAppropriateWindow(); 118 bool raiseAppropriateWindow();
116 virtual void tryQuit(); 119 virtual void tryQuit();
117 120
118 virtual void polish ( QWidget * ); // this is actually implemented in qt_override.cpp (!) 121 virtual void polish ( QWidget * ); // this is actually implemented in qt_override.cpp (!)
119 122
120private: 123private:
121 void mapToDefaultAction( QWSKeyEvent *ke, int defKey ); 124 void mapToDefaultAction( QWSKeyEvent *ke, int defKey );
122 125
123#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 126#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
124 QCopChannel *sysChannel; 127 QCopChannel *sysChannel;
125 QCopChannel *pidChannel; 128 QCopChannel *pidChannel;
126#endif 129#endif
127 QPEApplicationData *d; 130 QPEApplicationData *d;
128 131
129 bool reserved_sh; 132 bool reserved_sh;
130 133
131 134
132 135
133}; 136};
134 137
135inline void QPEApplication::showDialog( QDialog* d, bool nomax ) 138inline void QPEApplication::showDialog( QDialog* d, bool nomax )
136{ 139{
137 QSize sh = d->sizeHint(); 140 QSize sh = d->sizeHint();
138 int w = QMAX(sh.width(),d->width()); 141 int w = QMAX(sh.width(),d->width());
139 int h = QMAX(sh.height(),d->height()); 142 int h = QMAX(sh.height(),d->height());
140 if ( !nomax 143 if ( !nomax
141 && ( w > qApp->desktop()->width()*3/4 144 && ( w > qApp->desktop()->width()*3/4
142 || h > qApp->desktop()->height()*3/4 ) ) 145 || h > qApp->desktop()->height()*3/4 ) )
143 { 146 {
144 d->showMaximized(); 147 d->showMaximized();
145 } else { 148 } else {
146 d->resize(w,h); 149 d->resize(w,h);
147 d->show(); 150 d->show();
148 } 151 }
149} 152}
150 153
151inline int QPEApplication::execDialog( QDialog* d, bool nomax ) 154inline int QPEApplication::execDialog( QDialog* d, bool nomax )
152{ 155{
153 showDialog(d,nomax); 156 showDialog(d,nomax);
154 return d->exec(); 157 return d->exec();
155} 158}
156 159
160enum Transformation { None, Rot90, Rot180, Rot270 }; /* from qgfxtransformed_qws.cpp */
157 161
158#endif 162inline void QPEApplication::setCurrentRotation( int r )
163{
164 Transformation e;
165
166 switch (r) {
167 case 0:
168 e = None;
169 break;
170 case 90:
171 e = Rot90;
172 break;
173 case 180:
174 e = Rot180;
175 break;
176 case 270:
177 e = Rot270;
178 break;
179 default:
180 return;
181 }
159 182
183 qDebug("calling qApp->desktop()->qwsDisplay()->setTransformation( %d )\n", e);
184 qApp->desktop()->qwsDisplay()->setTransformation( e );
185}
186
187
188#endif