summaryrefslogtreecommitdiff
path: root/library
authorzecke <zecke>2004-07-12 20:01:26 (UTC)
committer zecke <zecke>2004-07-12 20:01:26 (UTC)
commit5d2ec2e9b1dce49e914c260fe16a82ddccbaa92d (patch) (unidiff)
treecbac9fa8c94900e3486c3251206bdc22028b4a66 /library
parente18cb7bddb3461a40ae1e8810ef408ceef101d38 (diff)
downloadopie-5d2ec2e9b1dce49e914c260fe16a82ddccbaa92d.zip
opie-5d2ec2e9b1dce49e914c260fe16a82ddccbaa92d.tar.gz
opie-5d2ec2e9b1dce49e914c260fe16a82ddccbaa92d.tar.bz2
Query for FontFactories which implement the FontFactoryInterface on
QPEApplication creation. Also update the comment in the API docu as now FontFactories are loaded
Diffstat (limited to 'library') (more/less context) (ignore whitespace changes)
-rw-r--r--library/fontfactoryinterface.h2
-rw-r--r--library/qpeapplication.cpp8
2 files changed, 5 insertions, 5 deletions
diff --git a/library/fontfactoryinterface.h b/library/fontfactoryinterface.h
index 68b0be5..36f430f 100644
--- a/library/fontfactoryinterface.h
+++ b/library/fontfactoryinterface.h
@@ -1,56 +1,54 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of 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 FONTFACTORYINTERFACE_H 20#ifndef FONTFACTORYINTERFACE_H
21#define FONTFACTORYINTERFACE_H 21#define FONTFACTORYINTERFACE_H
22 22
23#include <qnamespace.h> 23#include <qnamespace.h>
24#include <qstring.h> 24#include <qstring.h>
25#include <qpe/qcom.h> 25#include <qpe/qcom.h>
26 26
27class QFontFactory; 27class QFontFactory;
28 28
29#ifndef QT_NO_COMPONENT 29#ifndef QT_NO_COMPONENT
30// {7F194DD6-FAA3-498F-8F30-9C297A570DFA} 30// {7F194DD6-FAA3-498F-8F30-9C297A570DFA}
31#ifndef IID_FontFactory 31#ifndef IID_FontFactory
32#define IID_FontFactory QUuid( 0x7f194dd6, 0xfaa3, 0x498f, 0x8f, 0x30, 0x9c, 0x29, 0x7a, 0x57, 0x0d, 0xfa) 32#define IID_FontFactory QUuid( 0x7f194dd6, 0xfaa3, 0x498f, 0x8f, 0x30, 0x9c, 0x29, 0x7a, 0x57, 0x0d, 0xfa)
33#endif 33#endif
34#endif 34#endif
35 35
36 36
37/** 37/**
38 * \brief Interface for additional Font Factories 38 * \brief Interface for additional Font Factories
39 * 39 *
40 * To add special types of fonts TrueTypes or your very own 40 * To add special types of fonts TrueTypes or your very own
41 * format. If you implement this Interface you can add 41 * format. If you implement this Interface you can add
42 * custom font loading. 42 * custom font loading.
43 * 43 *
44 * The dynamic shared object goes to 44 * The dynamic shared object goes to
45 * OPIEDIR/plugins/fontfactories. 45 * OPIEDIR/plugins/fontfactories.
46 * 46 *
47 * As of version Opie 1.0.2 loading of the plugins is not
48 * yet implemented
49 * 47 *
50 */ 48 */
51struct FontFactoryInterface : public QUnknownInterface 49struct FontFactoryInterface : public QUnknownInterface
52{ 50{
53 virtual QFontFactory *fontFactory() = 0; 51 virtual QFontFactory *fontFactory() = 0;
54}; 52};
55 53
56#endif 54#endif
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index b686e2e..f4a7f74 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -1,210 +1,211 @@
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#define QTOPIA_INTERNAL_LANGLIST 20#define QTOPIA_INTERNAL_LANGLIST
21#include <stdlib.h> 21#include <stdlib.h>
22#include <unistd.h> 22#include <unistd.h>
23#ifndef Q_OS_MACX 23#ifndef Q_OS_MACX
24#include <linux/limits.h> // needed for some toolchains (PATH_MAX) 24#include <linux/limits.h> // needed for some toolchains (PATH_MAX)
25#endif 25#endif
26#include <qfile.h> 26#include <qfile.h>
27#include <qqueue.h> 27#include <qqueue.h>
28#ifdef Q_WS_QWS 28#ifdef Q_WS_QWS
29#ifndef QT_NO_COP 29#ifndef QT_NO_COP
30#if QT_VERSION <= 231 30#if QT_VERSION <= 231
31#define private public 31#define private public
32#define sendLocally processEvent 32#define sendLocally processEvent
33#include "qcopenvelope_qws.h" 33#include "qcopenvelope_qws.h"
34#undef private 34#undef private
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;
131 QWidget* presswidget; 132 QWidget* presswidget;
132 QPoint presspos; 133 QPoint presspos;
133 134
134 bool rightpressed : 1; 135 bool rightpressed : 1;
135 bool kbgrabbed : 1; 136 bool kbgrabbed : 1;
136 bool notbusysent : 1; 137 bool notbusysent : 1;
137 bool preloaded : 1; 138 bool preloaded : 1;
138 bool forceshow : 1; 139 bool forceshow : 1;
139 bool nomaximize : 1; 140 bool nomaximize : 1;
140 bool keep_running : 1; 141 bool keep_running : 1;
141 bool qcopQok : 1; 142 bool qcopQok : 1;
142 143
143 QCString fontFamily; 144 QCString fontFamily;
144 int fontSize; 145 int fontSize;
145 int smallIconSize; 146 int smallIconSize;
146 int bigIconSize; 147 int bigIconSize;
147 148
148 QStringList langs; 149 QStringList langs;
149 QString appName; 150 QString appName;
150 struct QCopRec 151 struct QCopRec
151 { 152 {
152 QCopRec( const QCString &ch, const QCString &msg, 153 QCopRec( const QCString &ch, const QCString &msg,
153 const QByteArray &d ) : 154 const QByteArray &d ) :
154 channel( ch ), message( msg ), data( d ) 155 channel( ch ), message( msg ), data( d )
155 { } 156 { }
156 157
157 QCString channel; 158 QCString channel;
158 QCString message; 159 QCString message;
159 QByteArray data; 160 QByteArray data;
160 }; 161 };
161 QWidget* qpe_main_widget; 162 QWidget* qpe_main_widget;
162 QGuardedPtr<QWidget> lastraised; 163 QGuardedPtr<QWidget> lastraised;
163 QQueue<QCopRec> qcopq; 164 QQueue<QCopRec> qcopq;
164 QString styleName; 165 QString styleName;
165 QString decorationName; 166 QString decorationName;
166 167
167 void enqueueQCop( const QCString &ch, const QCString &msg, 168 void enqueueQCop( const QCString &ch, const QCString &msg,
168 const QByteArray &data ) 169 const QByteArray &data )
169 { 170 {
170 qcopq.enqueue( new QCopRec( ch, msg, data ) ); 171 qcopq.enqueue( new QCopRec( ch, msg, data ) );
171 } 172 }
172 void sendQCopQ() 173 void sendQCopQ()
173 { 174 {
174 if (!qcopQok ) 175 if (!qcopQok )
175 return; 176 return;
176 177
177 QCopRec * r; 178 QCopRec * r;
178 179
179 while((r=qcopq.dequeue())) { 180 while((r=qcopq.dequeue())) {
180 // remove from queue before sending... 181 // remove from queue before sending...
181 // event loop can come around again before getting 182 // event loop can come around again before getting
182 // back from sendLocally 183 // back from sendLocally
183#ifndef QT_NO_COP 184#ifndef QT_NO_COP
184 QCopChannel::sendLocally( r->channel, r->message, r->data ); 185 QCopChannel::sendLocally( r->channel, r->message, r->data );
185#endif 186#endif
186 187
187 delete r; 188 delete r;
188 } 189 }
189 } 190 }
190 191
191 static void show_mx(QWidget* mw, bool nomaximize, QString &strName) 192 static void show_mx(QWidget* mw, bool nomaximize, QString &strName)
192 { 193 {
193 if ( mw->inherits("QMainWindow") || mw->isA("QMainWindow") ) 194 if ( mw->inherits("QMainWindow") || mw->isA("QMainWindow") )
194 { 195 {
195 ( ( QMainWindow* ) mw )->setUsesBigPixmaps( useBigPixmaps ); 196 ( ( QMainWindow* ) mw )->setUsesBigPixmaps( useBigPixmaps );
196 } 197 }
197 QPoint p; 198 QPoint p;
198 QSize s; 199 QSize s;
199 bool max; 200 bool max;
200 if ( mw->isVisible() ) { 201 if ( mw->isVisible() ) {
201 if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) { 202 if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) {
202 mw->resize(s); 203 mw->resize(s);
203 mw->move(p); 204 mw->move(p);
204 } 205 }
205 mw->raise(); 206 mw->raise();
206 } else { 207 } else {
207 208
208 if ( mw->layout() && mw->inherits("QDialog") ) { 209 if ( mw->layout() && mw->inherits("QDialog") ) {
209 if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) { 210 if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) {
210 mw->resize(s); 211 mw->resize(s);
@@ -678,333 +679,334 @@ static void setTreble( int t = 0, int percent = -1 )
678*/ 679*/
679 680
680/*! 681/*!
681 \fn void QPEApplication::clientMoused() 682 \fn void QPEApplication::clientMoused()
682 683
683 \internal 684 \internal
684*/ 685*/
685 686
686/*! 687/*!
687 \fn void QPEApplication::timeChanged(); 688 \fn void QPEApplication::timeChanged();
688 This signal is emitted when the time changes outside the normal 689 This signal is emitted when the time changes outside the normal
689 passage of time, i.e. if the time is set backwards or forwards. 690 passage of time, i.e. if the time is set backwards or forwards.
690*/ 691*/
691 692
692/*! 693/*!
693 \fn void QPEApplication::clockChanged( bool ampm ); 694 \fn void QPEApplication::clockChanged( bool ampm );
694 695
695 This signal is emitted when the user changes the clock's style. If 696 This signal is emitted when the user changes the clock's style. If
696 \a ampm is TRUE, the user wants a 12-hour AM/PM clock, otherwise, 697 \a ampm is TRUE, the user wants a 12-hour AM/PM clock, otherwise,
697 they want a 24-hour clock. 698 they want a 24-hour clock.
698*/ 699*/
699 700
700/*! 701/*!
701 \fn void QPEApplication::volumeChanged( bool muted ) 702 \fn void QPEApplication::volumeChanged( bool muted )
702 703
703 This signal is emitted whenever the mute state is changed. If \a 704 This signal is emitted whenever the mute state is changed. If \a
704 muted is TRUE, then sound output has been muted. 705 muted is TRUE, then sound output has been muted.
705*/ 706*/
706 707
707/*! 708/*!
708 \fn void QPEApplication::weekChanged( bool startOnMonday ) 709 \fn void QPEApplication::weekChanged( bool startOnMonday )
709 710
710 This signal is emitted if the week start day is changed. If \a 711 This signal is emitted if the week start day is changed. If \a
711 startOnMonday is TRUE then the first day of the week is Monday; if 712 startOnMonday is TRUE then the first day of the week is Monday; if
712 \a startOnMonday is FALSE then the first day of the week is 713 \a startOnMonday is FALSE then the first day of the week is
713 Sunday. 714 Sunday.
714*/ 715*/
715 716
716/*! 717/*!
717 \fn void QPEApplication::dateFormatChanged(DateFormat) 718 \fn void QPEApplication::dateFormatChanged(DateFormat)
718 719
719 This signal is emitted whenever the date format is changed. 720 This signal is emitted whenever the date format is changed.
720*/ 721*/
721 722
722/*! 723/*!
723 \fn void QPEApplication::flush() 724 \fn void QPEApplication::flush()
724 725
725 ### 726 ###
726*/ 727*/
727 728
728/*! 729/*!
729 \fn void QPEApplication::reload() 730 \fn void QPEApplication::reload()
730 731
731*/ 732*/
732 733
733 734
734 735
735void QPEApplication::processQCopFile() 736void QPEApplication::processQCopFile()
736{ 737{
737 QString qcopfn("/tmp/qcop-msg-"); 738 QString qcopfn("/tmp/qcop-msg-");
738 qcopfn += d->appName; // append command name 739 qcopfn += d->appName; // append command name
739 740
740 QFile f(qcopfn); 741 QFile f(qcopfn);
741 if ( f.open(IO_ReadWrite) ) { 742 if ( f.open(IO_ReadWrite) ) {
742#ifndef Q_OS_WIN32 743#ifndef Q_OS_WIN32
743 flock(f.handle(), LOCK_EX); 744 flock(f.handle(), LOCK_EX);
744#endif 745#endif
745 QDataStream ds(&f); 746 QDataStream ds(&f);
746 QCString channel, message; 747 QCString channel, message;
747 QByteArray data; 748 QByteArray data;
748 while(!ds.atEnd()) { 749 while(!ds.atEnd()) {
749 ds >> channel >> message >> data; 750 ds >> channel >> message >> data;
750 d->enqueueQCop(channel,message,data); 751 d->enqueueQCop(channel,message,data);
751 } 752 }
752 ::ftruncate(f.handle(), 0); 753 ::ftruncate(f.handle(), 0);
753#ifndef Q_OS_WIN32 754#ifndef Q_OS_WIN32
754 f.flush(); 755 f.flush();
755 flock(f.handle(), LOCK_UN); 756 flock(f.handle(), LOCK_UN);
756#endif 757#endif
757 } 758 }
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]);
931 933
932 channel.replace(QRegExp(".*/"),""); 934 channel.replace(QRegExp(".*/"),"");
933 d->appName = channel; 935 d->appName = channel;
934 936
935 #if QT_VERSION > 235 937 #if QT_VERSION > 235
936 qt_fbdpy->setIdentity( channel ); // In Qt/E 2.3.6 938 qt_fbdpy->setIdentity( channel ); // In Qt/E 2.3.6
937 #endif 939 #endif
938 940
939 channel = "QPE/Application/" + channel; 941 channel = "QPE/Application/" + channel;
940 pidChannel = new QCopChannel( channel, this); 942 pidChannel = new QCopChannel( channel, this);
941 connect( pidChannel, SIGNAL(received(const QCString&,const QByteArray&)), 943 connect( pidChannel, SIGNAL(received(const QCString&,const QByteArray&)),
942 this, SLOT(pidMessage(const QCString&,const QByteArray&))); 944 this, SLOT(pidMessage(const QCString&,const QByteArray&)));
943 945
944 946
945 947
946 processQCopFile(); 948 processQCopFile();
947 d->keep_running = d->qcopq.isEmpty(); 949 d->keep_running = d->qcopq.isEmpty();
948 950
949 for (int a=0; a<argc; a++) { 951 for (int a=0; a<argc; a++) {
950 if ( qstrcmp(argv[a],"-preload")==0 ) { 952 if ( qstrcmp(argv[a],"-preload")==0 ) {
951 argv[a] = argv[a+1]; 953 argv[a] = argv[a+1];
952 a++; 954 a++;
953 d->preloaded = TRUE; 955 d->preloaded = TRUE;
954 argc-=1; 956 argc-=1;
955 } else if ( qstrcmp(argv[a],"-preload-show")==0 ) { 957 } else if ( qstrcmp(argv[a],"-preload-show")==0 ) {
956 argv[a] = argv[a+1]; 958 argv[a] = argv[a+1];
957 a++; 959 a++;
958 d->preloaded = TRUE; 960 d->preloaded = TRUE;
959 d->forceshow = TRUE; 961 d->forceshow = TRUE;
960 argc-=1; 962 argc-=1;
961 } 963 }
962 } 964 }
963 965
964 /* overide stored arguments */ 966 /* overide stored arguments */
965 setArgs(argc, argv); 967 setArgs(argc, argv);
966 968
967 /* install translation here */ 969 /* install translation here */
968 for ( QStringList::ConstIterator it = d->langs.begin(); it != d->langs.end(); ++it ) 970 for ( QStringList::ConstIterator it = d->langs.begin(); it != d->langs.end(); ++it )
969 installTranslation( (*it) + "/" + d->appName + ".qm" ); 971 installTranslation( (*it) + "/" + d->appName + ".qm" );
970} 972}
971#endif 973#endif
972 974
973 975
974static QPtrDict<void>* inputMethodDict = 0; 976static QPtrDict<void>* inputMethodDict = 0;
975static void createInputMethodDict() 977static void createInputMethodDict()
976{ 978{
977 if ( !inputMethodDict ) 979 if ( !inputMethodDict )
978 inputMethodDict = new QPtrDict<void>; 980 inputMethodDict = new QPtrDict<void>;
979} 981}
980 982
981/*! 983/*!
982 Returns the currently set hint to the system as to whether 984 Returns the currently set hint to the system as to whether
983 widget \a w has any use for text input methods. 985 widget \a w has any use for text input methods.
984 986
985 987
986 \sa setInputMethodHint() InputMethodHint 988 \sa setInputMethodHint() InputMethodHint
987*/ 989*/
988QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w ) 990QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w )
989{ 991{
990 if ( inputMethodDict && w ) 992 if ( inputMethodDict && w )
991 return ( InputMethodHint ) ( int ) inputMethodDict->find( w ); 993 return ( InputMethodHint ) ( int ) inputMethodDict->find( w );
992 return Normal; 994 return Normal;
993} 995}
994 996
995/*! 997/*!
996 \enum QPEApplication::InputMethodHint 998 \enum QPEApplication::InputMethodHint
997 999
998 \value Normal the application sometimes needs text input (the default). 1000 \value Normal the application sometimes needs text input (the default).
999 \value AlwaysOff the application never needs text input. 1001 \value AlwaysOff the application never needs text input.
1000 \value AlwaysOn the application always needs text input. 1002 \value AlwaysOn the application always needs text input.
1001*/ 1003*/
1002 1004
1003/*! 1005/*!
1004 Hints to the system that widget \a w has use for text input methods 1006 Hints to the system that widget \a w has use for text input methods
1005 as specified by \a mode. 1007 as specified by \a mode.
1006 1008
1007 \sa inputMethodHint() InputMethodHint 1009 \sa inputMethodHint() InputMethodHint
1008*/ 1010*/
1009void QPEApplication::setInputMethodHint( QWidget * w, InputMethodHint mode ) 1011void QPEApplication::setInputMethodHint( QWidget * w, InputMethodHint mode )
1010{ 1012{