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, 7 insertions, 1 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index 86aa53d..4d0b0ea 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -5,236 +5,241 @@
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#include <linux/limits.h> // needed for some toolchains (PATH_MAX) 23#include <linux/limits.h> // needed for some toolchains (PATH_MAX)
24#include <qfile.h> 24#include <qfile.h>
25#ifdef Q_WS_QWS 25#ifdef Q_WS_QWS
26#ifndef QT_NO_COP 26#ifndef QT_NO_COP
27#if QT_VERSION <= 231 27#if QT_VERSION <= 231
28#define private public 28#define private public
29#define sendLocally processEvent 29#define sendLocally processEvent
30#include "qcopenvelope_qws.h" 30#include "qcopenvelope_qws.h"
31#undef private 31#undef private
32#else 32#else
33#include "qcopenvelope_qws.h" 33#include "qcopenvelope_qws.h"
34#endif 34#endif
35#endif 35#endif
36#include <qwindowsystem_qws.h> 36#include <qwindowsystem_qws.h>
37#endif 37#endif
38#include <qtextstream.h> 38#include <qtextstream.h>
39#include <qpalette.h> 39#include <qpalette.h>
40#include <qbuffer.h> 40#include <qbuffer.h>
41#include <qptrdict.h> 41#include <qptrdict.h>
42#include <qregexp.h> 42#include <qregexp.h>
43#include <qdir.h> 43#include <qdir.h>
44#include <qlabel.h> 44#include <qlabel.h>
45#include <qdialog.h> 45#include <qdialog.h>
46#include <qdragobject.h> 46#include <qdragobject.h>
47#include <qtextcodec.h> 47#include <qtextcodec.h>
48#include <qevent.h> 48#include <qevent.h>
49#include <qtooltip.h> 49#include <qtooltip.h>
50#include <qsignal.h> 50#include <qsignal.h>
51#include <qmainwindow.h> 51#include <qmainwindow.h>
52#include <qwidgetlist.h> 52#include <qwidgetlist.h>
53 53
54#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 54#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
55#define QTOPIA_INTERNAL_INITAPP 55#define QTOPIA_INTERNAL_INITAPP
56#include "qpeapplication.h" 56#include "qpeapplication.h"
57#include "qpestyle.h" 57#include "qpestyle.h"
58#include "styleinterface.h" 58#include "styleinterface.h"
59#if QT_VERSION >= 300 59#if QT_VERSION >= 300
60#include <qstylefactory.h> 60#include <qstylefactory.h>
61#else 61#else
62#include <qplatinumstyle.h> 62#include <qplatinumstyle.h>
63#include <qwindowsstyle.h> 63#include <qwindowsstyle.h>
64#include <qmotifstyle.h> 64#include <qmotifstyle.h>
65#include <qmotifplusstyle.h> 65#include <qmotifplusstyle.h>
66#include "lightstyle.h" 66#include "lightstyle.h"
67 67
68#include <qpe/qlibrary.h> 68#include <qpe/qlibrary.h>
69#endif 69#endif
70#include "global.h" 70#include "global.h"
71#include "resource.h" 71#include "resource.h"
72#if QT_VERSION <= 230 && defined(QT_NO_CODECS) 72#if QT_VERSION <= 230 && defined(QT_NO_CODECS)
73#include "qutfcodec.h" 73#include "qutfcodec.h"
74#endif 74#endif
75#include "config.h" 75#include "config.h"
76#include "network.h" 76#include "network.h"
77#ifdef QWS 77#ifdef QWS
78#include "fontmanager.h" 78#include "fontmanager.h"
79#endif 79#endif
80 80
81#include "alarmserver.h" 81#include "alarmserver.h"
82#include "applnk.h" 82#include "applnk.h"
83#include "qpemenubar.h" 83#include "qpemenubar.h"
84#include "textcodecinterface.h" 84#include "textcodecinterface.h"
85#include "imagecodecinterface.h" 85#include "imagecodecinterface.h"
86 86
87#include <unistd.h> 87#include <unistd.h>
88#include <sys/file.h> 88#include <sys/file.h>
89#include <sys/ioctl.h> 89#include <sys/ioctl.h>
90#include <sys/soundcard.h> 90#include <sys/soundcard.h>
91 91
92#include "qt_override_p.h" 92#include "qt_override_p.h"
93 93
94 94
95class QPEApplicationData 95class QPEApplicationData
96{ 96{
97public: 97public:
98 QPEApplicationData ( ) 98 QPEApplicationData ( )
99 : presstimer( 0 ), presswidget( 0 ), rightpressed( false ), kbgrabbed( false ), 99 : presstimer( 0 ), presswidget( 0 ), rightpressed( false ), kbgrabbed( false ),
100 notbusysent( false ), preloaded( false ), forceshow( false ), nomaximize( false ), 100 notbusysent( false ), preloaded( false ), forceshow( false ), nomaximize( false ),
101 keep_running( true ), qpe_main_widget( 0 ) 101 keep_running( true ), qpe_main_widget( 0 ), qcopQok( false )
102 102
103 { 103 {
104 qcopq.setAutoDelete( TRUE ); 104 qcopq.setAutoDelete( TRUE );
105 } 105 }
106 106
107 int presstimer; 107 int presstimer;
108 QWidget* presswidget; 108 QWidget* presswidget;
109 QPoint presspos; 109 QPoint presspos;
110 110
111 bool rightpressed : 1; 111 bool rightpressed : 1;
112 bool kbgrabbed : 1; 112 bool kbgrabbed : 1;
113 bool notbusysent : 1; 113 bool notbusysent : 1;
114 bool preloaded : 1; 114 bool preloaded : 1;
115 bool forceshow : 1; 115 bool forceshow : 1;
116 bool nomaximize : 1; 116 bool nomaximize : 1;
117 bool qcopQok : 1;
117 bool keep_running : 1; 118 bool keep_running : 1;
118 119
120
119 QStringList langs; 121 QStringList langs;
120 QString appName; 122 QString appName;
121 struct QCopRec 123 struct QCopRec
122 { 124 {
123 QCopRec( const QCString &ch, const QCString &msg, 125 QCopRec( const QCString &ch, const QCString &msg,
124 const QByteArray &d ) : 126 const QByteArray &d ) :
125 channel( ch ), message( msg ), data( d ) 127 channel( ch ), message( msg ), data( d )
126 { } 128 { }
127 129
128 QCString channel; 130 QCString channel;
129 QCString message; 131 QCString message;
130 QByteArray data; 132 QByteArray data;
131 }; 133 };
132 QWidget* qpe_main_widget; 134 QWidget* qpe_main_widget;
133 QGuardedPtr<QWidget> lastraised; 135 QGuardedPtr<QWidget> lastraised;
134 QList<QCopRec> qcopq; 136 QList<QCopRec> qcopq;
135 QString styleName; 137 QString styleName;
136 QString decorationName; 138 QString decorationName;
137 139
138 void enqueueQCop( const QCString &ch, const QCString &msg, 140 void enqueueQCop( const QCString &ch, const QCString &msg,
139 const QByteArray &data ) 141 const QByteArray &data )
140 { 142 {
141 qcopq.append( new QCopRec( ch, msg, data ) ); 143 qcopq.append( new QCopRec( ch, msg, data ) );
142 } 144 }
143 void sendQCopQ() 145 void sendQCopQ()
144 { 146 {
147 if (!qcopQok )
148 return;
149
145 QCopRec * r; 150 QCopRec * r;
146#ifndef QT_NO_COP 151#ifndef QT_NO_COP
147 152
148 for ( QListIterator<QCopRec> it( qcopq ); ( r = it.current() ); ++it ) 153 for ( QListIterator<QCopRec> it( qcopq ); ( r = it.current() ); ++it )
149 QCopChannel::sendLocally( r->channel, r->message, r->data ); 154 QCopChannel::sendLocally( r->channel, r->message, r->data );
150#endif 155#endif
151 156
152 qcopq.clear(); 157 qcopq.clear();
153 } 158 }
154 static void show_mx(QWidget* mw, bool nomaximize, const QString & = QString::null ) 159 static void show_mx(QWidget* mw, bool nomaximize, const QString & = QString::null )
155 { 160 {
156 161
157 // ugly hack, remove that later after finding a sane solution 162 // ugly hack, remove that later after finding a sane solution
158 // Addendum: Only Sharp currently has models with high resolution but (physically) small displays, 163 // Addendum: Only Sharp currently has models with high resolution but (physically) small displays,
159 // so this is only useful if QT_QWS_SIMPAD is NOT defined. E.g. SIMpad has 800x600 but has 164 // so this is only useful if QT_QWS_SIMPAD is NOT defined. E.g. SIMpad has 800x600 but has
160 // a (physically) large enough display to use the small icons 165 // a (physically) large enough display to use the small icons
161#ifndef QT_QWS_SIMPAD 166#ifndef QT_QWS_SIMPAD
162 if ( QPEApplication::desktop() ->width() >= 600 && ( mw->inherits("QMainWindow") || mw->isA("QMainWindow") ) ) { 167 if ( QPEApplication::desktop() ->width() >= 600 && ( mw->inherits("QMainWindow") || mw->isA("QMainWindow") ) ) {
163 ( ( QMainWindow* ) mw )->setUsesBigPixmaps( true ); 168 ( ( QMainWindow* ) mw )->setUsesBigPixmaps( true );
164 } 169 }
165#endif 170#endif
166 171
167 if ( mw->layout() && mw->inherits("QDialog") ) { 172 if ( mw->layout() && mw->inherits("QDialog") ) {
168 QPEApplication::showDialog((QDialog*)mw, nomaximize); 173 QPEApplication::showDialog((QDialog*)mw, nomaximize);
169 } 174 }
170 else { 175 else {
171#ifdef Q_WS_QWS 176#ifdef Q_WS_QWS
172 if ( !nomaximize ) 177 if ( !nomaximize )
173 mw->showMaximized(); 178 mw->showMaximized();
174 else 179 else
175#endif 180#endif
176 181
177 mw->show(); 182 mw->show();
178 } 183 }
179 } 184 }
180 static bool setWidgetCaptionFromAppName( QWidget* /*mw*/, const QString& /*appName*/, const QString& /*appsPath*/ ) 185 static bool setWidgetCaptionFromAppName( QWidget* /*mw*/, const QString& /*appName*/, const QString& /*appsPath*/ )
181 { 186 {
182 /* 187 /*
183 // This works but disable it for now until it is safe to apply 188 // This works but disable it for now until it is safe to apply
184 // What is does is scan the .desktop files of all the apps for 189 // What is does is scan the .desktop files of all the apps for
185 // the applnk that has the corresponding argv[0] as this program 190 // the applnk that has the corresponding argv[0] as this program
186 // then it uses the name stored in the .desktop file as the caption 191 // then it uses the name stored in the .desktop file as the caption
187 // for the main widget. This saves duplicating translations for 192 // for the main widget. This saves duplicating translations for
188 // the app name in the program and in the .desktop files. 193 // the app name in the program and in the .desktop files.
189 194
190 AppLnkSet apps( appsPath ); 195 AppLnkSet apps( appsPath );
191 196
192 QList<AppLnk> appsList = apps.children(); 197 QList<AppLnk> appsList = apps.children();
193 for ( QListIterator<AppLnk> it(appsList); it.current(); ++it ) { 198 for ( QListIterator<AppLnk> it(appsList); it.current(); ++it ) {
194 if ( (*it)->exec() == appName ) { 199 if ( (*it)->exec() == appName ) {
195 mw->setCaption( (*it)->name() ); 200 mw->setCaption( (*it)->name() );
196 return TRUE; 201 return TRUE;
197 } 202 }
198 } 203 }
199 */ 204 */
200 return FALSE; 205 return FALSE;
201 } 206 }
202 207
203 208
204 void show(QWidget* mw, bool nomax) 209 void show(QWidget* mw, bool nomax)
205 { 210 {
206 setWidgetCaptionFromAppName( mw, appName, QPEApplication::qpeDir() + "apps" ); 211 setWidgetCaptionFromAppName( mw, appName, QPEApplication::qpeDir() + "apps" );
207 nomaximize = nomax; 212 nomaximize = nomax;
208 qpe_main_widget = mw; 213 qpe_main_widget = mw;
209#ifndef QT_NO_COP 214#ifndef QT_NO_COP
210 215
211 sendQCopQ(); 216 sendQCopQ();
212#endif 217#endif
213 218
214 if ( preloaded ) { 219 if ( preloaded ) {
215 if (forceshow) 220 if (forceshow)
216 show_mx(mw, nomax); 221 show_mx(mw, nomax);
217 } 222 }
218 else if ( keep_running ) { 223 else if ( keep_running ) {
219 show_mx(mw, nomax); 224 show_mx(mw, nomax);
220 } 225 }
221 } 226 }
222 227
223 void loadTextCodecs() 228 void loadTextCodecs()
224 { 229 {
225 QString path = QPEApplication::qpeDir() + "/plugins/textcodecs"; 230 QString path = QPEApplication::qpeDir() + "/plugins/textcodecs";
226 QDir dir( path, "lib*.so" ); 231 QDir dir( path, "lib*.so" );
227 QStringList list; 232 QStringList list;
228 if ( dir. exists ( )) 233 if ( dir. exists ( ))
229 list = dir.entryList(); 234 list = dir.entryList();
230 QStringList::Iterator it; 235 QStringList::Iterator it;
231 for ( it = list.begin(); it != list.end(); ++it ) { 236 for ( it = list.begin(); it != list.end(); ++it ) {
232 TextCodecInterface *iface = 0; 237 TextCodecInterface *iface = 0;
233 QLibrary *lib = new QLibrary( path + "/" + *it ); 238 QLibrary *lib = new QLibrary( path + "/" + *it );
234 if ( lib->queryInterface( IID_QtopiaTextCodec, (QUnknownInterface**)&iface ) == QS_OK && iface ) { 239 if ( lib->queryInterface( IID_QtopiaTextCodec, (QUnknownInterface**)&iface ) == QS_OK && iface ) {
235 QValueList<int> mibs = iface->mibEnums(); 240 QValueList<int> mibs = iface->mibEnums();
236 for (QValueList<int>::ConstIterator i = mibs.begin(); i != mibs.end(); ++i) { 241 for (QValueList<int>::ConstIterator i = mibs.begin(); i != mibs.end(); ++i) {
237 (void)iface->createForMib(*i); 242 (void)iface->createForMib(*i);
238 // ### it exists now; need to remember if we can delete it 243 // ### it exists now; need to remember if we can delete it
239 } 244 }
240 } 245 }
@@ -1800,192 +1805,193 @@ bool QPEApplication::eventFilter( QObject *o, QEvent *e )
1800 new QMouseEvent( QEvent::MouseButtonRelease, me->pos(), 1805 new QMouseEvent( QEvent::MouseButtonRelease, me->pos(),
1801 RightButton, LeftButton + RightButton ) ); 1806 RightButton, LeftButton + RightButton ) );
1802 // Left released, off-widget 1807 // Left released, off-widget
1803 postEvent( d->presswidget, 1808 postEvent( d->presswidget,
1804 new QMouseEvent( QEvent::MouseMove, QPoint( -1, -1), 1809 new QMouseEvent( QEvent::MouseMove, QPoint( -1, -1),
1805 LeftButton, LeftButton ) ); 1810 LeftButton, LeftButton ) );
1806 postEvent( d->presswidget, 1811 postEvent( d->presswidget,
1807 new QMouseEvent( QEvent::MouseButtonRelease, QPoint( -1, -1), 1812 new QMouseEvent( QEvent::MouseButtonRelease, QPoint( -1, -1),
1808 LeftButton, LeftButton ) ); 1813 LeftButton, LeftButton ) );
1809 d->rightpressed = FALSE; 1814 d->rightpressed = FALSE;
1810 return TRUE; // don't send the real Left release 1815 return TRUE; // don't send the real Left release
1811 } 1816 }
1812 } 1817 }
1813 break; 1818 break;
1814 default: 1819 default:
1815 break; 1820 break;
1816 } 1821 }
1817 break; 1822 break;
1818 default: 1823 default:
1819 ; 1824 ;
1820 } 1825 }
1821 } 1826 }
1822 else if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ) { 1827 else if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ) {
1823 QKeyEvent *ke = (QKeyEvent *)e; 1828 QKeyEvent *ke = (QKeyEvent *)e;
1824 if ( ke->key() == Key_Enter ) { 1829 if ( ke->key() == Key_Enter ) {
1825 if ( o->isA( "QRadioButton" ) || o->isA( "QCheckBox" ) ) { 1830 if ( o->isA( "QRadioButton" ) || o->isA( "QCheckBox" ) ) {
1826 postEvent( o, new QKeyEvent( e->type(), Key_Space, ' ', 1831 postEvent( o, new QKeyEvent( e->type(), Key_Space, ' ',
1827 ke->state(), " ", ke->isAutoRepeat(), ke->count() ) ); 1832 ke->state(), " ", ke->isAutoRepeat(), ke->count() ) );
1828 return TRUE; 1833 return TRUE;
1829 } 1834 }
1830 } 1835 }
1831 } 1836 }
1832 return FALSE; 1837 return FALSE;
1833} 1838}
1834 1839
1835/*! 1840/*!
1836 \reimp 1841 \reimp
1837*/ 1842*/
1838void QPEApplication::timerEvent( QTimerEvent *e ) 1843void QPEApplication::timerEvent( QTimerEvent *e )
1839{ 1844{
1840 if ( e->timerId() == d->presstimer && d->presswidget ) { 1845 if ( e->timerId() == d->presstimer && d->presswidget ) {
1841 // Right pressed 1846 // Right pressed
1842 postEvent( d->presswidget, 1847 postEvent( d->presswidget,
1843 new QMouseEvent( QEvent::MouseButtonPress, d->presspos, 1848 new QMouseEvent( QEvent::MouseButtonPress, d->presspos,
1844 RightButton, LeftButton ) ); 1849 RightButton, LeftButton ) );
1845 killTimer( d->presstimer ); 1850 killTimer( d->presstimer );
1846 d->presstimer = 0; 1851 d->presstimer = 0;
1847 d->rightpressed = TRUE; 1852 d->rightpressed = TRUE;
1848 } 1853 }
1849} 1854}
1850 1855
1851void QPEApplication::removeSenderFromStylusDict() 1856void QPEApplication::removeSenderFromStylusDict()
1852{ 1857{
1853 stylusDict->remove 1858 stylusDict->remove
1854 ( ( void* ) sender() ); 1859 ( ( void* ) sender() );
1855 if ( d->presswidget == sender() ) 1860 if ( d->presswidget == sender() )
1856 d->presswidget = 0; 1861 d->presswidget = 0;
1857} 1862}
1858 1863
1859/*! 1864/*!
1860 \internal 1865 \internal
1861*/ 1866*/
1862bool QPEApplication::keyboardGrabbed() const 1867bool QPEApplication::keyboardGrabbed() const
1863{ 1868{
1864 return d->kbgrabbed; 1869 return d->kbgrabbed;
1865} 1870}
1866 1871
1867 1872
1868/*! 1873/*!
1869 Reverses the effect of grabKeyboard(). This is called automatically 1874 Reverses the effect of grabKeyboard(). This is called automatically
1870 on program exit. 1875 on program exit.
1871*/ 1876*/
1872void QPEApplication::ungrabKeyboard() 1877void QPEApplication::ungrabKeyboard()
1873{ 1878{
1874 ((QPEApplication *) qApp )-> d-> kbgrabbed = false; 1879 ((QPEApplication *) qApp )-> d-> kbgrabbed = false;
1875} 1880}
1876 1881
1877/*! 1882/*!
1878 Grabs the physical keyboard keys, e.g. the application's launching 1883 Grabs the physical keyboard keys, e.g. the application's launching
1879 keys. Instead of launching applications when these keys are pressed 1884 keys. Instead of launching applications when these keys are pressed
1880 the signals emitted are sent to this application instead. Some games 1885 the signals emitted are sent to this application instead. Some games
1881 programs take over the launch keys in this way to make interaction 1886 programs take over the launch keys in this way to make interaction
1882 easier. 1887 easier.
1883 1888
1884 \sa ungrabKeyboard() 1889 \sa ungrabKeyboard()
1885*/ 1890*/
1886void QPEApplication::grabKeyboard() 1891void QPEApplication::grabKeyboard()
1887{ 1892{
1888 ((QPEApplication *) qApp )-> d-> kbgrabbed = true; 1893 ((QPEApplication *) qApp )-> d-> kbgrabbed = true;
1889} 1894}
1890 1895
1891/*! 1896/*!
1892 \reimp 1897 \reimp
1893*/ 1898*/
1894int QPEApplication::exec() 1899int QPEApplication::exec()
1895{ 1900{
1901 d->qcopQok = true;
1896#ifndef QT_NO_COP 1902#ifndef QT_NO_COP
1897 d->sendQCopQ(); 1903 d->sendQCopQ();
1898#endif 1904#endif
1899 1905
1900 if ( d->keep_running ) 1906 if ( d->keep_running )
1901 //|| d->qpe_main_widget && d->qpe_main_widget->isVisible() ) 1907 //|| d->qpe_main_widget && d->qpe_main_widget->isVisible() )
1902 return QApplication::exec(); 1908 return QApplication::exec();
1903 1909
1904#ifndef QT_NO_COP 1910#ifndef QT_NO_COP
1905 1911
1906 { 1912 {
1907 QCopEnvelope e( "QPE/System", "closing(QString)" ); 1913 QCopEnvelope e( "QPE/System", "closing(QString)" );
1908 e << d->appName; 1914 e << d->appName;
1909 } 1915 }
1910#endif 1916#endif
1911 processEvents(); 1917 processEvents();
1912 return 0; 1918 return 0;
1913} 1919}
1914 1920
1915/*! 1921/*!
1916 \internal 1922 \internal
1917 External request for application to quit. Quits if possible without 1923 External request for application to quit. Quits if possible without
1918 loosing state. 1924 loosing state.
1919*/ 1925*/
1920void QPEApplication::tryQuit() 1926void QPEApplication::tryQuit()
1921{ 1927{
1922 if ( activeModalWidget() || strcmp( argv() [ 0 ], "embeddedkonsole" ) == 0 ) 1928 if ( activeModalWidget() || strcmp( argv() [ 0 ], "embeddedkonsole" ) == 0 )
1923 return ; // Inside modal loop or konsole. Too hard to save state. 1929 return ; // Inside modal loop or konsole. Too hard to save state.
1924#ifndef QT_NO_COP 1930#ifndef QT_NO_COP
1925 1931
1926 { 1932 {
1927 QCopEnvelope e( "QPE/System", "closing(QString)" ); 1933 QCopEnvelope e( "QPE/System", "closing(QString)" );
1928 e << d->appName; 1934 e << d->appName;
1929 } 1935 }
1930#endif 1936#endif
1931 processEvents(); 1937 processEvents();
1932 1938
1933 quit(); 1939 quit();
1934} 1940}
1935 1941
1936/*! 1942/*!
1937 \internal 1943 \internal
1938*/ 1944*/
1939void QPEApplication::installTranslation( const QString& baseName ) { 1945void QPEApplication::installTranslation( const QString& baseName ) {
1940 QTranslator* trans = new QTranslator(this); 1946 QTranslator* trans = new QTranslator(this);
1941 QString tfn = qpeDir() + "/i18n/"+baseName; 1947 QString tfn = qpeDir() + "/i18n/"+baseName;
1942 if ( trans->load( tfn ) ) 1948 if ( trans->load( tfn ) )
1943 installTranslator( trans ); 1949 installTranslator( trans );
1944 else 1950 else
1945 delete trans; 1951 delete trans;
1946} 1952}
1947 1953
1948/*! 1954/*!
1949 \internal 1955 \internal
1950 User initiated quit. Makes the window 'Go Away'. If preloaded this means 1956 User initiated quit. Makes the window 'Go Away'. If preloaded this means
1951 hiding the window. If not it means quitting the application. 1957 hiding the window. If not it means quitting the application.
1952 As this is user initiated we don't need to check state. 1958 As this is user initiated we don't need to check state.
1953*/ 1959*/
1954void QPEApplication::hideOrQuit() 1960void QPEApplication::hideOrQuit()
1955{ 1961{
1956 processEvents(); 1962 processEvents();
1957 1963
1958 // If we are a preloaded application we don't actually quit, so emit 1964 // If we are a preloaded application we don't actually quit, so emit
1959 // a System message indicating we're quasi-closing. 1965 // a System message indicating we're quasi-closing.
1960 if ( d->preloaded && d->qpe_main_widget ) 1966 if ( d->preloaded && d->qpe_main_widget )
1961#ifndef QT_NO_COP 1967#ifndef QT_NO_COP
1962 1968
1963 { 1969 {
1964 QCopEnvelope e("QPE/System", "fastAppHiding(QString)" ); 1970 QCopEnvelope e("QPE/System", "fastAppHiding(QString)" );
1965 e << d->appName; 1971 e << d->appName;
1966 d->qpe_main_widget->hide(); 1972 d->qpe_main_widget->hide();
1967 } 1973 }
1968#endif 1974#endif
1969 else 1975 else
1970 quit(); 1976 quit();
1971} 1977}
1972 1978
1973#if (__GNUC__ > 2 ) 1979#if (__GNUC__ > 2 )
1974extern "C" void __cxa_pure_virtual(); 1980extern "C" void __cxa_pure_virtual();
1975 1981
1976void __cxa_pure_virtual() 1982void __cxa_pure_virtual()
1977{ 1983{
1978 fprintf( stderr, "Pure virtual called\n"); 1984 fprintf( stderr, "Pure virtual called\n");
1979 abort(); 1985 abort();
1980 1986
1981} 1987}
1982 1988
1983#endif 1989#endif
1984 1990
1985 1991
1986#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_RAMSES) 1992#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_RAMSES)
1987 1993
1988// The libraries with the skiff package (and possibly others) have 1994// The libraries with the skiff package (and possibly others) have
1989// completely useless implementations of builtin new and delete that 1995// completely useless implementations of builtin new and delete that
1990// use about 50% of your CPU. Here we revert to the simple libc 1996// use about 50% of your CPU. Here we revert to the simple libc
1991// functions. 1997// functions.