summaryrefslogtreecommitdiff
path: root/library/qpeapplication.cpp
Unidiff
Diffstat (limited to 'library/qpeapplication.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpeapplication.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index b686e2e..f4a7f74 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -35,96 +35,97 @@
35#else 35#else
36#include "qcopenvelope_qws.h" 36#include "qcopenvelope_qws.h"
37#endif 37#endif
38#endif 38#endif
39#include <qwindowsystem_qws.h> 39#include <qwindowsystem_qws.h>
40#endif 40#endif
41#include <qtextstream.h> 41#include <qtextstream.h>
42#include <qpalette.h> 42#include <qpalette.h>
43#include <qbuffer.h> 43#include <qbuffer.h>
44#include <qptrdict.h> 44#include <qptrdict.h>
45#include <qregexp.h> 45#include <qregexp.h>
46#include <qdir.h> 46#include <qdir.h>
47#include <qlabel.h> 47#include <qlabel.h>
48#include <qdialog.h> 48#include <qdialog.h>
49#include <qdragobject.h> 49#include <qdragobject.h>
50#include <qtextcodec.h> 50#include <qtextcodec.h>
51#include <qevent.h> 51#include <qevent.h>
52#include <qtooltip.h> 52#include <qtooltip.h>
53#include <qsignal.h> 53#include <qsignal.h>
54#include <qmainwindow.h> 54#include <qmainwindow.h>
55#include <qwidgetlist.h> 55#include <qwidgetlist.h>
56#include <qpixmapcache.h> 56#include <qpixmapcache.h>
57 57
58#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 58#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
59#define QTOPIA_INTERNAL_INITAPP 59#define QTOPIA_INTERNAL_INITAPP
60#include "qpeapplication.h" 60#include "qpeapplication.h"
61#include "qpestyle.h" 61#include "qpestyle.h"
62#include "styleinterface.h" 62#include "styleinterface.h"
63#if QT_VERSION >= 300 63#if QT_VERSION >= 300
64#include <qstylefactory.h> 64#include <qstylefactory.h>
65#else 65#else
66#include <qplatinumstyle.h> 66#include <qplatinumstyle.h>
67#include <qwindowsstyle.h> 67#include <qwindowsstyle.h>
68#include <qmotifstyle.h> 68#include <qmotifstyle.h>
69#include <qmotifplusstyle.h> 69#include <qmotifplusstyle.h>
70#include "lightstyle.h" 70#include "lightstyle.h"
71 71
72#include <qpe/qlibrary.h> 72#include <qpe/qlibrary.h>
73#endif 73#endif
74#include "global.h" 74#include "global.h"
75#include "resource.h" 75#include "resource.h"
76#if QT_VERSION <= 230 && defined(QT_NO_CODECS) 76#if QT_VERSION <= 230 && defined(QT_NO_CODECS)
77#include "qutfcodec.h" 77#include "qutfcodec.h"
78#endif 78#endif
79#include "config.h" 79#include "config.h"
80#include "network.h" 80#include "network.h"
81#ifdef QWS 81#ifdef QWS
82#include "fontmanager.h" 82#include "fontmanager.h"
83#include "fontdatabase.h"
83#endif 84#endif
84 85
85#include "alarmserver.h" 86#include "alarmserver.h"
86#include "applnk.h" 87#include "applnk.h"
87#include "qpemenubar.h" 88#include "qpemenubar.h"
88#include "textcodecinterface.h" 89#include "textcodecinterface.h"
89#include "imagecodecinterface.h" 90#include "imagecodecinterface.h"
90 91
91#include <unistd.h> 92#include <unistd.h>
92#include <sys/file.h> 93#include <sys/file.h>
93#include <sys/ioctl.h> 94#include <sys/ioctl.h>
94#ifndef QT_NO_SOUND 95#ifndef QT_NO_SOUND
95#include <sys/soundcard.h> 96#include <sys/soundcard.h>
96#endif 97#endif
97#include "qt_override_p.h" 98#include "qt_override_p.h"
98 99
99static bool useBigPixmaps = 0; 100static bool useBigPixmaps = 0;
100 101
101class HackWidget : public QWidget 102class HackWidget : public QWidget
102{ 103{
103public: 104public:
104 bool needsOk() 105 bool needsOk()
105 { return (getWState() & WState_Reserved1 ); } 106 { return (getWState() & WState_Reserved1 ); }
106 107
107 QRect normalGeometry() 108 QRect normalGeometry()
108 { return topData()->normalGeometry; }; 109 { return topData()->normalGeometry; };
109}; 110};
110 111
111class QPEApplicationData 112class QPEApplicationData
112{ 113{
113public: 114public:
114 QPEApplicationData ( ) 115 QPEApplicationData ( )
115 : presstimer( 0 ), presswidget( 0 ), rightpressed( false ), kbgrabbed( false ), 116 : presstimer( 0 ), presswidget( 0 ), rightpressed( false ), kbgrabbed( false ),
116 notbusysent( false ), preloaded( false ), forceshow( false ), nomaximize( false ), 117 notbusysent( false ), preloaded( false ), forceshow( false ), nomaximize( false ),
117 keep_running( true ), qcopQok( false ), 118 keep_running( true ), qcopQok( false ),
118 fontFamily( "Vera" ), fontSize( 10 ), smallIconSize( 14 ), 119 fontFamily( "Vera" ), fontSize( 10 ), smallIconSize( 14 ),
119 bigIconSize( 32 ), qpe_main_widget( 0 ) 120 bigIconSize( 32 ), qpe_main_widget( 0 )
120 { 121 {
121 Config cfg( "qpe" ); 122 Config cfg( "qpe" );
122 cfg.setGroup( "Appearance" ); 123 cfg.setGroup( "Appearance" );
123 useBigPixmaps = cfg.readBoolEntry( "useBigPixmaps", false ); 124 useBigPixmaps = cfg.readBoolEntry( "useBigPixmaps", false );
124 fontFamily = cfg.readEntry( "FontFamily", "Vera" ); 125 fontFamily = cfg.readEntry( "FontFamily", "Vera" );
125 fontSize = cfg.readNumEntry( "FontSize", 10 ); 126 fontSize = cfg.readNumEntry( "FontSize", 10 );
126 smallIconSize = cfg.readNumEntry( "SmallIconSize", 14 ); 127 smallIconSize = cfg.readNumEntry( "SmallIconSize", 14 );
127 bigIconSize = cfg.readNumEntry( "BigIconSize", 32 ); 128 bigIconSize = cfg.readNumEntry( "BigIconSize", 32 );
128 } 129 }
129 130
130 int presstimer; 131 int presstimer;
@@ -758,173 +759,174 @@ void QPEApplication::processQCopFile()
758#endif 759#endif
759} 760}
760 761
761 762
762/*! 763/*!
763 \fn void QPEApplication::appMessage( const QCString& msg, const QByteArray& data ) 764 \fn void QPEApplication::appMessage( const QCString& msg, const QByteArray& data )
764 765
765 This signal is emitted when a message is received on this 766 This signal is emitted when a message is received on this
766 application's QPE/Application/<i>appname</i> \link qcop.html 767 application's QPE/Application/<i>appname</i> \link qcop.html
767 QCop\endlink channel. 768 QCop\endlink channel.
768 769
769 The slot to which you connect this signal uses \a msg and \a data 770 The slot to which you connect this signal uses \a msg and \a data
770 in the following way: 771 in the following way:
771 772
772\code 773\code
773 void MyWidget::receive( const QCString& msg, const QByteArray& data ) 774 void MyWidget::receive( const QCString& msg, const QByteArray& data )
774 { 775 {
775 QDataStream stream( data, IO_ReadOnly ); 776 QDataStream stream( data, IO_ReadOnly );
776 if ( msg == "someMessage(int,int,int)" ) { 777 if ( msg == "someMessage(int,int,int)" ) {
777 int a,b,c; 778 int a,b,c;
778 stream >> a >> b >> c; 779 stream >> a >> b >> c;
779 ... 780 ...
780 } else if ( msg == "otherMessage(QString)" ) { 781 } else if ( msg == "otherMessage(QString)" ) {
781 ... 782 ...
782 } 783 }
783 } 784 }
784\endcode 785\endcode
785 786
786 \sa qcop.html 787 \sa qcop.html
787 Note that messages received here may be processed by qpe application 788 Note that messages received here may be processed by qpe application
788 and emitted as signals, such as flush() and reload(). 789 and emitted as signals, such as flush() and reload().
789*/ 790*/
790 791
791/*! 792/*!
792 Constructs a QPEApplication just as you would construct 793 Constructs a QPEApplication just as you would construct
793 a QApplication, passing \a argc, \a argv, and \a t. 794 a QApplication, passing \a argc, \a argv, and \a t.
794 795
795 For applications, \a t should be the default, GuiClient. Only 796 For applications, \a t should be the default, GuiClient. Only
796 the Qtopia server passes GuiServer. 797 the Qtopia server passes GuiServer.
797*/ 798*/
798QPEApplication::QPEApplication( int & argc, char **argv, Type t ) 799QPEApplication::QPEApplication( int & argc, char **argv, Type t )
799 : QApplication( hack(argc), argv, t ), pidChannel( 0 ) 800 : QApplication( hack(argc), argv, t ), pidChannel( 0 )
800{ 801{
801 QPixmapCache::setCacheLimit(256); // sensible default for smaller devices. 802 QPixmapCache::setCacheLimit(256); // sensible default for smaller devices.
802 803
803 d = new QPEApplicationData; 804 d = new QPEApplicationData;
804 d->loadTextCodecs(); 805 d->loadTextCodecs();
805 d->loadImageCodecs(); 806 d->loadImageCodecs();
806 int dw = desktop() ->width();
807 807
808 setFont( QFont( d->fontFamily, d->fontSize ) ); 808 setFont( QFont( d->fontFamily, d->fontSize ) );
809 AppLnk::setSmallIconSize( d->smallIconSize ); 809 AppLnk::setSmallIconSize( d->smallIconSize );
810 AppLnk::setBigIconSize( d->bigIconSize ); 810 AppLnk::setBigIconSize( d->bigIconSize );
811 811
812 QMimeSourceFactory::setDefaultFactory( new ResourceMimeFactory ); 812 QMimeSourceFactory::setDefaultFactory( new ResourceMimeFactory );
813 813
814 connect( this, SIGNAL( lastWindowClosed() ), this, SLOT( hideOrQuit() ) ); 814 connect( this, SIGNAL( lastWindowClosed() ), this, SLOT( hideOrQuit() ) );
815 815
816 816
817 sysChannel = new QCopChannel( "QPE/System", this ); 817 sysChannel = new QCopChannel( "QPE/System", this );
818 connect( sysChannel, SIGNAL( received(const QCString&,const QByteArray&) ), 818 connect( sysChannel, SIGNAL( received(const QCString&,const QByteArray&) ),
819 this, SLOT( systemMessage(const QCString&,const QByteArray&) ) ); 819 this, SLOT( systemMessage(const QCString&,const QByteArray&) ) );
820 820
821/* COde now in initapp */ 821/* COde now in initapp */
822#if 0 822#if 0
823#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 823#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
824 824
825 QString qcopfn( "/tmp/qcop-msg-" ); 825 QString qcopfn( "/tmp/qcop-msg-" );
826 qcopfn += QString( argv[ 0 ] ); // append command name 826 qcopfn += QString( argv[ 0 ] ); // append command name
827 827
828 QFile f( qcopfn ); 828 QFile f( qcopfn );
829 if ( f.open( IO_ReadOnly ) ) { 829 if ( f.open( IO_ReadOnly ) ) {
830 flock( f.handle(), LOCK_EX ); 830 flock( f.handle(), LOCK_EX );
831 } 831 }
832 832
833 833
834 834
835 QCString channel = QCString( argv[ 0 ] ); 835 QCString channel = QCString( argv[ 0 ] );
836 channel.replace( QRegExp( ".*/" ), "" ); 836 channel.replace( QRegExp( ".*/" ), "" );
837 d->appName = channel; 837 d->appName = channel;
838 channel = "QPE/Application/" + channel; 838 channel = "QPE/Application/" + channel;
839 pidChannel = new QCopChannel( channel, this ); 839 pidChannel = new QCopChannel( channel, this );
840 connect( pidChannel, SIGNAL( received(const QCString&,const QByteArray&) ), 840 connect( pidChannel, SIGNAL( received(const QCString&,const QByteArray&) ),
841 this, SLOT( pidMessage(const QCString&,const QByteArray&) ) ); 841 this, SLOT( pidMessage(const QCString&,const QByteArray&) ) );
842 842
843 if ( f.isOpen() ) { 843 if ( f.isOpen() ) {
844 d->keep_running = FALSE; 844 d->keep_running = FALSE;
845 QDataStream ds( &f ); 845 QDataStream ds( &f );
846 QCString channel, message; 846 QCString channel, message;
847 QByteArray data; 847 QByteArray data;
848 while ( !ds.atEnd() ) { 848 while ( !ds.atEnd() ) {
849 ds >> channel >> message >> data; 849 ds >> channel >> message >> data;
850 d->enqueueQCop( channel, message, data ); 850 d->enqueueQCop( channel, message, data );
851 } 851 }
852 852
853 flock( f.handle(), LOCK_UN ); 853 flock( f.handle(), LOCK_UN );
854 f.close(); 854 f.close();
855 f.remove(); 855 f.remove();
856 } 856 }
857 857
858 for ( int a = 0; a < argc; a++ ) { 858 for ( int a = 0; a < argc; a++ ) {
859 if ( qstrcmp( argv[ a ], "-preload" ) == 0 ) { 859 if ( qstrcmp( argv[ a ], "-preload" ) == 0 ) {
860 argv[ a ] = argv[ a + 1 ]; 860 argv[ a ] = argv[ a + 1 ];
861 a++; 861 a++;
862 d->preloaded = TRUE; 862 d->preloaded = TRUE;
863 argc -= 1; 863 argc -= 1;
864 } 864 }
865 else if ( qstrcmp( argv[ a ], "-preload-show" ) == 0 ) { 865 else if ( qstrcmp( argv[ a ], "-preload-show" ) == 0 ) {
866 argv[ a ] = argv[ a + 1 ]; 866 argv[ a ] = argv[ a + 1 ];
867 a++; 867 a++;
868 d->preloaded = TRUE; 868 d->preloaded = TRUE;
869 d->forceshow = TRUE; 869 d->forceshow = TRUE;
870 argc -= 1; 870 argc -= 1;
871 } 871 }
872 } 872 }
873 873
874 /* overide stored arguments */ 874 /* overide stored arguments */
875 setArgs( argc, argv ); 875 setArgs( argc, argv );
876 876
877#endif 877#endif
878#else 878#else
879 initApp( argc, argv ); 879 initApp( argc, argv );
880#endif 880#endif
881 // qwsSetDecoration( new QPEDecoration() ); 881#ifdef Q_WS_QWS
882 882 /* load the font renderer factories */
883 FontDatabase::loadRenderers();
884#endif
883#ifndef QT_NO_TRANSLATION 885#ifndef QT_NO_TRANSLATION
884 886
885 d->langs = Global::languageList(); 887 d->langs = Global::languageList();
886 for ( QStringList::ConstIterator it = d->langs.begin(); it != d->langs.end(); ++it ) { 888 for ( QStringList::ConstIterator it = d->langs.begin(); it != d->langs.end(); ++it ) {
887 QString lang = *it; 889 QString lang = *it;
888 890
889 installTranslation( lang + "/libopie.qm"); 891 installTranslation( lang + "/libopie.qm");
890 installTranslation( lang + "/libqpe.qm" ); 892 installTranslation( lang + "/libqpe.qm" );
891 installTranslation( lang + "/" + d->appName + ".qm" ); 893 installTranslation( lang + "/" + d->appName + ".qm" );
892 894
893 895
894 //###language/font hack; should look it up somewhere 896 //###language/font hack; should look it up somewhere
895#ifdef QWS 897#ifdef QWS
896 898
897 if ( lang == "ja" || lang == "zh_CN" || lang == "zh_TW" || lang == "ko" ) { 899 if ( lang == "ja" || lang == "zh_CN" || lang == "zh_TW" || lang == "ko" ) {
898 QFont fn = FontManager::unicodeFont( FontManager::Proportional ); 900 QFont fn = FontManager::unicodeFont( FontManager::Proportional );
899 setFont( fn ); 901 setFont( fn );
900 } 902 }
901#endif 903#endif
902 } 904 }
903#endif 905#endif
904 906
905 applyStyle(); 907 applyStyle();
906 908
907 if ( type() == GuiServer ) { 909 if ( type() == GuiServer ) {
908 setVolume(); 910 setVolume();
909 } 911 }
910 912
911 installEventFilter( this ); 913 installEventFilter( this );
912 914
913 QPEMenuToolFocusManager::initialize(); 915 QPEMenuToolFocusManager::initialize();
914 916
915#ifdef QT_NO_QWS_CURSOR 917#ifdef QT_NO_QWS_CURSOR
916 // if we have no cursor, probably don't want tooltips 918 // if we have no cursor, probably don't want tooltips
917 QToolTip::setEnabled( FALSE ); 919 QToolTip::setEnabled( FALSE );
918#endif 920#endif
919} 921}
920 922
921 923
922#ifdef QTOPIA_INTERNAL_INITAPP 924#ifdef QTOPIA_INTERNAL_INITAPP
923void QPEApplication::initApp( int argc, char **argv ) 925void QPEApplication::initApp( int argc, char **argv )
924{ 926{
925 delete pidChannel; 927 delete pidChannel;
926 d->keep_running = TRUE; 928 d->keep_running = TRUE;
927 d->preloaded = FALSE; 929 d->preloaded = FALSE;
928 d->forceshow = FALSE; 930 d->forceshow = FALSE;
929 931
930 QCString channel = QCString(argv[0]); 932 QCString channel = QCString(argv[0]);